1. Übersicht
Mit der Google Cloud Speech-to-Text API können Entwickler Audio in Text umwandeln. Dabei kommen leistungsstarke Modelle neuronaler Netze in einer nutzerfreundlichen API zum Einsatz. Die API unterstützt 120 Sprachen und Sprachvarianten.
In diesem Codelab konzentrieren Sie sich auf die Verwendung der Speech-to-Text API mit Node.js. Sie erfahren, wie Sie eine Audiodatei in Englisch und anderen Sprachen zur Transkription an die Cloud Speech-to-Text API senden.
Lerninhalte
- Speech-to-Text API aktivieren
- API-Anfragen authentifizieren
- Google Cloud-Clientbibliothek für Node.js installieren
- Audiodateien auf Englisch transkribieren
- Audiodateien mit Wortzeitstempeln transkribieren
- Audiodateien in verschiedenen Sprachen transkribieren
Voraussetzungen
- Google Cloud Platform-Projekt
- Browser, z. B. Chrome oder Firefox
- Vertrautheit mit JavaScript/Node.js
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit Node.js bewerten?
Wie würden Sie Ihre Erfahrungen mit der Verwendung von Google Cloud Platform-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- 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 eines erstellen.
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 später in diesem Codelab als PROJECT_ID bezeichnet.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“, in der Sie erfahren, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das Programm für den kostenlosen Testzeitraum mit einem Guthaben von 300$ infrage.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.
Wenn Sie Cloud Shell noch nie gestartet haben, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter. So sieht dieses Fenster aus:
Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser oder Ihrem Chromebook erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist.
- Führen Sie in der 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 müssen Sie ein Dienstkonto verwenden. Das Dienstkonto gehört zu Ihrem Projekt und wird von der Google Client Node.js-Bibliothek zum Ausführen von Speech-to-Text API-Anfragen verwendet. Wie jedes andere Nutzerkonto wird auch ein Dienstkonto durch eine E‑Mail-Adresse dargestellt. In diesem Abschnitt verwenden Sie das Cloud SDK, um ein Dienstkonto zu erstellen. Anschließend erstellen Sie die Anmeldedaten, die Sie für die Authentifizierung als Dienstkonto benötigen.
Legen Sie zuerst eine Umgebungsvariable mit Ihrer PROJECT_ID fest, die Sie in diesem Codelab verwenden werden. Wenn Sie Cloud Shell verwenden, wird diese Variable für Sie festgelegt:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Erstellen Sie als Nächstes ein neues Dienstkonto, um auf die Speech-to-Text API zuzugreifen:
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, die der Node.js-Code verwendet, um sich mit dem neuen Dienstkonto anzumelden. Erstellen Sie die 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 Speech-to-Text API Node.js-Bibliothek verwendet wird, um Ihre Anmeldedaten zu finden. Die Umgebungsvariable sollte auf den vollständigen Pfad der von Ihnen erstellten JSON-Datei mit den Anmeldedaten festgelegt werden:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Weitere Informationen zum Authentifizieren 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
NPM stellt mehrere Fragen zur Projektkonfiguration, z. B. zu 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 für das Projekt:
npm install --save @google-cloud/speech
Weitere Informationen zum Einrichten einer Node.js-Entwicklungsumgebung 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.
Rufen Sie die Datei index.js auf 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.
Beim Senden der Datei an die API gibt der Parameter Encoding Aufschluss darüber, welchen Audiocodierungstyp Sie für die Audiodatei verwenden. Flac ist der Codierungstyp für RAW-Dateien (siehe Dokumentation für den 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 auf Wortebene transkribieren
Speech-to-Text kann Zeitverschiebungswerte (Zeitstempel) für die transkribierten Audiodaten erkennen. Zeitverschiebungswerte geben den Anfang und das Ende jedes gesprochenen Wortes in den bereitgestellten Audiodaten an. Ein Zeitverschiebungswert gibt die Zeit in Schritten von 100 ms an, die seit Beginn des Audiosignals vergangen ist.
Rufen Sie die Datei index.js auf 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();
Nehmen Sie sich ein oder zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie er verwendet wird, um eine Audiodatei mit Wort-Zeitstempeln* zu transkribieren. Mit dem Parameter EnableWordTimeOffsets wird die API angewiesen, Zeitversätze 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 die Transkription in über 100 Sprachen. Eine Liste der unterstützten Sprachen finden Sie hier.
In diesem Abschnitt transkribieren Sie eine vorab aufgenommene Audiodatei auf Französisch. Die Audiodatei ist in Google Cloud Storage verfügbar.
Rufen Sie die Datei index.js auf 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. Es sollte folgende Ausgabe angezeigt werden:
maître corbeau sur un arbre perché tenait en son bec un fromage
Das ist ein Satz aus einer beliebten französischen Fabel.
Eine vollständige Liste der unterstützten Sprachen und Sprachcodes finden Sie in der Dokumentation.
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 oben auf „Löschen“. Das Projekt wird dann zum Löschen geplant.
Weitere Informationen
- Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- Node.js auf der Google Cloud Platform: https://cloud.google.com/nodejs/
- Google Cloud Node.js-Client: https://googlecloudplatform.github.io/google-cloud-node/
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.