1. Panoramica
L'API Google Cloud Speech-to-Text consente agli sviluppatori di convertire l'audio in testo in 120 lingue e varianti applicando efficaci modelli di rete neurale in un'API semplice da usare.
In questo codelab, ti concentrerai sull'utilizzo dell'API Speech-to-Text con Node.js. Imparerai a inviare un file audio in inglese e in altre lingue all'API Cloud Speech-to-Text per la trascrizione.
Cosa imparerai a fare
- Come abilitare l'API Speech-to-Text
- Come autenticare le richieste API
- Come installare la libreria client Google Cloud per Node.js
- Come trascrivere file audio in inglese
- Come trascrivere file audio con timestamp a livello di parola
- Come trascrivere file audio in lingue diverse
Che cosa ti serve
- Un progetto Google Cloud
- Un browser, ad esempio Chrome o Firefox
- Familiarità con l'utilizzo di JavaScript/Node.js
Sondaggio
Come utilizzerai questo tutorial?
Come valuteresti la tua esperienza con Node.js?
Come valuti la tua esperienza di utilizzo dei servizi Google Cloud Platform?
2. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Attiva Cloud Shell
- Nella console Cloud, fai clic su Attiva Cloud Shell
.
Se non hai mai avviato Cloud Shell, viene visualizzata una schermata intermedia (sotto la piega) che ne descrive le funzionalità. In questo caso, fai clic su Continua e non comparirà più. Ecco come si presenta la schermata intermedia:
Bastano pochi istanti per eseguire il provisioning e connettersi a Cloud Shell.
Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Gran parte del lavoro per questo codelab, se non tutto, può essere svolto semplicemente con un browser o con Chromebook.
Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
3. Abilita l'API Speech-to-Text
Prima di poter iniziare a utilizzare l'API Speech-to-Text, devi abilitarla. Puoi abilitare l'API utilizzando il seguente comando in Cloud Shell:
gcloud services enable speech.googleapis.com
4. Autenticare le richieste API
Per effettuare richieste all'API Speech-to-Text, devi utilizzare un service account. Un service account appartiene al tuo progetto e viene utilizzato dalla libreria client Node.js di Google per effettuare richieste all'API Speech-to-Text. Come qualsiasi altro account utente, un service account è rappresentato da un indirizzo email. In questa sezione utilizzerai Cloud SDK per creare un service account e poi creare le credenziali necessarie per l'autenticazione come service account.
Innanzitutto, imposta una variabile di ambiente con il PROJECT_ID che utilizzerai durante questo codelab. Se utilizzi Cloud Shell, questa variabile verrà impostata automaticamente:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Successivamente, crea un nuovo service account per accedere all'API Speech-to-Text utilizzando:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Successivamente, crea le credenziali che il codice Node.js utilizzerà per accedere al nuovo service account. Utilizza il seguente comando per creare le credenziali e salvarle in un file JSON ~/key.json:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Infine, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS, utilizzata dalla libreria Node.js dell'API Speech-to-Text, trattata nel passaggio successivo, per trovare le tue credenziali. Il valore della variabile di ambiente deve essere il percorso completo del file JSON delle credenziali che hai creato, utilizzando:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Puoi scoprire di più sull'autenticazione dell'API Speech-to-Text.
5. Installa la libreria client dell'API Google Cloud Speech-to-Text per Node.js
Innanzitutto, crea un progetto che utilizzerai per eseguire questo lab dell'API Speech-to-Text, inizializza un nuovo pacchetto Node.js in una cartella a tua scelta:
npm init
NPM pone diverse domande sulla configurazione del progetto, ad esempio nome e versione. Per ogni domanda, premi ENTER per accettare i valori predefiniti. L'entry point predefinito è un file denominato index.js.
Poi, installa la libreria Google Cloud Speech nel progetto:
npm install --save @google-cloud/speech
Per ulteriori istruzioni su come configurare uno sviluppo Node.js per Google Cloud, consulta la guida alla configurazione.
Ora puoi utilizzare l'API Speech-to-Text.
6. Trascrivere i file audio
In questa sezione, trascriverai un file audio preregistrato in inglese. Il file audio è disponibile su Google Cloud Storage.
Vai al file index.js all'interno e sostituisci il codice con il seguente:
// 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();
Dedica un minuto o due a studiare il codice e a capire come viene utilizzato per trascrivere un file audio.*
Il parametro Encoding indica all'API quale tipo di codifica audio stai utilizzando per il file audio. Flac è il tipo di codifica per i file RAW (per ulteriori dettagli, consulta la documentazione relativa al tipo di codifica).
Nell'oggetto RecognitionAudio, puoi trasmettere all'API l'URI del nostro file audio in Cloud Storage o il percorso del file locale per il file audio. Qui utilizziamo un URI Cloud Storage.
Esegui il programma:
node .
Dovresti vedere l'output seguente:
how old is the Brooklyn Bridge
7. Trascrivere con i timestamp a livello di parola
Speech-to-Text è in grado di rilevare l'offset temporale (timestamp) dell'audio trascritto. Gli offset temporali mostrano l'inizio e la fine di ogni parola pronunciata nell'audio fornito. Un valore di offset temporale rappresenta il tempo trascorso dall'inizio dell'audio, in incrementi di 100 ms.
Vai al file index.js all'interno e sostituisci il codice con il seguente:
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();
Dedica un minuto o due allo studio del codice e scopri come viene utilizzato per trascrivere un file audio con i timestamp delle parole*. Il parametro EnableWordTimeOffsets indica all'API di abilitare gli offset temporali (per ulteriori dettagli, consulta la documentazione).
Esegui di nuovo il programma:
node .
Dovresti vedere l'output seguente:
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. Trascrivere in lingue diverse
L'API Speech-to-Text supporta la trascrizione in oltre 100 lingue. Puoi trovare un elenco delle lingue supportate qui.
In questa sezione, trascriverai un file audio preregistrato in francese. Il file audio è disponibile su Google Cloud Storage.
Vai al file index.js all'interno e sostituisci il codice con il seguente:
// 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();
Esegui di nuovo il programma e dovresti vedere l'output seguente:
maître corbeau sur un arbre perché tenait en son bec un fromage
Questa è una frase tratta da un famoso racconto per bambini francese.
Per l'elenco completo delle lingue e dei codici lingua supportati, consulta la documentazione qui.
9. Complimenti!
Hai imparato a utilizzare l'API Speech-to-Text utilizzando Node.js per eseguire diversi tipi di trascrizione su file audio.
Esegui la pulizia
Per evitare che al tuo account Google Cloud Platform vengano addebitate le risorse utilizzate in questa guida rapida, procedi come segue.
- Vai alla console Cloud Platform.
- Seleziona il progetto che vuoi chiudere, quindi fai clic su "Elimina" in alto: il progetto verrà pianificato per l'eliminazione.
Scopri di più
- API Google Cloud Speech-to-Text: https://cloud.google.com/speech-to-text/docs
- Node.js su Google Cloud Platform: https://cloud.google.com/nodejs/
- Client Node.js di Google Cloud: https://googlecloudplatform.github.io/google-cloud-node/
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.