Speech-to-Text API mit Node.js verwenden

Speech-to-Text API mit Node.js verwenden

Informationen zu diesem Codelab

subjectZuletzt aktualisiert: Dez. 15, 2022
account_circleVerfasst von Anu Srivastava

1. Übersicht

Mit der Google Cloud Speech-to-Text API können Entwickler Audio in Text in 120 Sprachen und Varianten umwandeln. Dabei kommen leistungsstarke Modelle neuronaler Netze in einer nutzerfreundlichen API zum Einsatz.

In diesem Codelab konzentrieren wir uns auf die Verwendung der Speech-to-Text API mit Node.js. Sie erfahren, wie Sie Audiodateien in Englisch und anderen Sprachen zur Transkription an die Cloud Speech-to-Text API senden.

Aufgaben in diesem Lab

  • Speech-to-Text API aktivieren
  • API-Anfragen authentifizieren
  • Google Cloud-Clientbibliothek für Node.js installieren
  • So transkribiert man Audiodateien auf Englisch
  • Audiodateien mit Wortzeitstempeln transkribieren
  • So transkribieren Sie Audiodateien in verschiedenen Sprachen

Voraussetzungen

  • Google Cloud Platform-Projekt
  • Browser, z. B. Chrome oder Firefox
  • Vertrautheit mit JavaScript/Node.js

Umfrage

<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">

Wie möchten Sie diese Anleitung nutzen?

Wie würden Sie Ihre Erfahrung mit Node.js bewerten?

Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud Platform-Diensten bewerten?

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie ein Konto erstellen.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID bezeichnet.

  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.

Dieses Codelab sollte ohne großen Aufwand betrieben werden. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer können an einem kostenlosen Testzeitraum mit 300$Guthaben teilnehmen.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtZWQFrF.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Wenn Sie Cloud Shell zum ersten Mal verwenden, wird ein Zwischenbildschirm (below the fold) angezeigt, in dem beschrieben wird, worum es sich dabei handelt. Klicken Sie in diesem Fall auf Weiter. Der Chat wird nie wieder angezeigt. So sieht dieser einmalige Bildschirm aus:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können Sie ganz einfach mit einem Browser oder Ihrem Chromebook erledigen.

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list

Befehlsausgabe

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:

gcloud config set project <PROJECT_ID>

Befehlsausgabe

Updated property [core/project].

3. Speech-to-Text API aktivieren

Bevor Sie die Speech-to-Text API verwenden können, müssen Sie sie aktivieren. Sie können die API mit dem folgenden Befehl in Cloud Shell aktivieren:

gcloud services enable speech.googleapis.com

4. API-Anfragen authentifizieren

Für Anfragen an die Speech-to-Text API benötigen Sie ein Dienstkonto. Ein Dienstkonto gehört zu Ihrem Projekt und wird von der Google Client Node.js-Bibliothek verwendet, um Speech-to-Text API-Anfragen zu senden. Wie jedes andere Nutzerkonto wird auch ein Dienstkonto durch eine E-Mail-Adresse repräsentiert. In diesem Abschnitt verwenden Sie das Cloud SDK, um ein Dienstkonto zu erstellen. Anschließend erstellen Sie Anmeldedaten, die Sie als Dienstkonto authentifizieren müssen.

Legen Sie zuerst eine Umgebungsvariable mit Ihrer PROJECT_ID fest, die Sie in diesem Codelab verwenden werden. Wenn Sie Cloud Shell verwenden, wird dies automatisch festgelegt:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

Erstellen Sie als Nächstes ein neues Dienstkonto für den Zugriff auf die Speech-to-Text API. Verwenden Sie dazu folgenden Befehl:

gcloud iam service-accounts create my-speech-to-text-sa \
 
--display-name "my speech-to-text codelab service account"

Erstellen Sie als Nächstes Anmeldedaten, mit denen Ihr Node.js-Code sich als neues Dienstkonto anmeldet. Erstellen Sie diese Anmeldedaten und speichern Sie sie mit dem folgenden Befehl als JSON-Datei ~/key.json:

gcloud iam service-accounts keys create ~/key.json \
 
--iam-account  my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

Legen Sie schließlich die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS fest, die von der Node.js-Bibliothek der Speech-to-Text API verwendet wird, die im nächsten Schritt beschrieben wird, um Ihre Anmeldedaten zu finden. Die Umgebungsvariable sollte auf den vollständigen Pfad der JSON-Datei mit den Anmeldedaten festgelegt werden, indem Sie Folgendes verwenden:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

Weitere Informationen finden Sie unter Authentifizierung der Speech-to-Text API.

5. Google Cloud Speech-to-Text API-Clientbibliothek für Node.js installieren

Erstellen Sie zuerst ein Projekt, mit dem Sie dieses Speech-to-Text API-Lab ausführen, und initialisieren Sie ein neues Node.js-Paket in einem Ordner Ihrer Wahl:

npm init

In NPM werden verschiedene Fragen zur Projektkonfiguration gestellt, z. B. Name und Version. Drücken Sie für jede Frage ENTER, um die Standardwerte zu übernehmen. Der Standardeinstiegspunkt ist eine Datei mit dem Namen index.js.

Installieren Sie als Nächstes die Google Cloud Speech-Bibliothek im Projekt:

npm install --save @google-cloud/speech

Weitere Informationen zum Einrichten einer Node.js-Entwicklung für Google Cloud finden Sie im Einrichtungsleitfaden.

Jetzt können Sie die Speech-to-Text API verwenden.

6. Audiodateien transkribieren

In diesem Abschnitt transkribieren Sie eine vorab aufgezeichnete Audiodatei auf Englisch. Die Audiodatei ist in Google Cloud Storage verfügbar.

Gehen Sie zur Datei index.js im Code und ersetzen Sie den Code durch Folgendes:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map(result => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie er zum Transkribieren einer Audiodatei verwendet wird.*

Der Parameter Encoding teilt der API mit, welche Art der Audiocodierung Sie für die Audiodatei verwenden. Flac ist der Codierungstyp für RAW-Dateien .Weitere Informationen finden Sie in der Dokumentation zum Codierungstyp.

Im RecognitionAudio-Objekt können Sie der API entweder den URI der Audiodatei in Cloud Storage oder den lokalen Dateipfad für die Audiodatei übergeben. Hier verwenden wir einen Cloud Storage-URI.

Führen Sie das Programm aus:

node .

Es sollte folgende Ausgabe angezeigt werden:

how old is the Brooklyn Bridge

7. Mit Zeitstempeln von Wörtern transkribieren

Speech-to-Text kann einen Zeitversatz (Zeitstempel) für die transkribierten Audiodaten erkennen. Zeitverschiebungen zeigen den Anfang und das Ende jedes gesprochenen Worts in den bereitgestellten Audiodaten an. Ein Zeitverschiebungswert gibt die Zeit in Schritten von 100 ms an, die seit Beginn des Audiosignals vergangen ist.

Gehen Sie zur Datei index.js im Code und ersetzen Sie den Code durch Folgendes:

const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
    enableWordTimeOffsets
: true,
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
  response
.results.forEach((result) => {
    result
.alternatives.forEach((alternative) => {
      console
.log(`Transcript: ${alternative.transcript}`);
      console
.log(`Word details:`);
      console
.log(` Word count ${alternative.words.length}`);
      alternative
.words.forEach((item) => {
        console
.log(`  ${item.word}`);
       
const s = parseInt(item.startTime.seconds) +
         item
.startTime.nanos/1000000000;
        console
.log(`   WordStartTime: ${s}s`);
       
const e = parseInt(item.endTime.seconds) +
        item
.endTime.nanos/1000000000;
        console
.log(`   WordEndTime: ${e}s`);
     
});
   
});
 
});
}

quickstart
();

Sehen Sie sich den Code genau an, um zu sehen, wie er zum Transkribieren einer Audiodatei mit Zeitstempeln verwendet wird.* Der Parameter EnableWordTimeOffsets weist die API an, Zeitverschiebungen zu aktivieren. Weitere Informationen finden Sie in der Dokumentation.

Führen Sie das Programm noch einmal aus:

node .

Es sollte folgende Ausgabe angezeigt werden:

Transcript: how old is the Brooklyn Bridge
Word details:
 
Word count 6
  how
   
WordStartTime: 0s
   
WordEndTime: 0.3s
  old
   
WordStartTime: 0.3s
   
WordEndTime: 0.6s
 
is
   
WordStartTime: 0.6s
   
WordEndTime: 0.8s
  the
   
WordStartTime: 0.8s
   
WordEndTime: 0.9s
 
Brooklyn
   
WordStartTime: 0.9s
   
WordEndTime: 1.1s
 
Bridge
   
WordStartTime: 1.1s
   
WordEndTime: 1.4s

8. Verschiedene Sprachen transkribieren

Die Speech-to-Text API unterstützt Transkriptionen in über 100 Sprachen. Eine Liste der unterstützten Sprachen finden Sie hier.

In diesem Abschnitt transkribieren Sie eine vorab aufgezeichnete Audiodatei auf Französisch. Die Audiodatei ist in Google Cloud Storage verfügbar.

Gehen Sie zur Datei index.js im Code und ersetzen Sie den Code durch Folgendes:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'FLAC',
    languageCode
: 'fr-FR',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map((result) => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

Führen Sie das Programm noch einmal aus. Sie sollten die folgende Ausgabe sehen:

maître corbeau sur un arbre perché tenait en son bec un fromage

Dies ist ein Satz aus einer beliebten französischen Kindergeschichte.

Eine vollständige Liste der unterstützten Sprachen und Sprachcodes finden Sie hier.

9. Glückwunsch!

Sie haben gelernt, wie Sie die Speech-to-Text API mit Node.js verwenden, um verschiedene Arten von Transkriptionen für Audiodateien durchzuführen.

Bereinigen

So vermeiden Sie, dass Ihr Google Cloud Platform-Konto für die in diesem Schnellstart verwendeten Ressourcen belastet wird:

  • Rufen Sie die Cloud Platform Console auf.
  • Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie auf „Löschen“. oben: Dadurch wird das Projekt zum Löschen vorgemerkt.

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.