Utilizzo dell'API Speech-to-Text con Node.js

Utilizzo dell'API Speech-to-Text con Node.js

Informazioni su questo codelab

subjectUltimo aggiornamento: dic 15, 2022
account_circleScritto da: Anu Srivastava

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 di Google Cloud per Node.js
  • Come trascrivere file audio in inglese
  • Come trascrivere i file audio con timestamp delle parole
  • Come trascrivere file audio in diverse lingue

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 giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?

2. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID.

  1. Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.

Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma di prova senza costi di 300$.

Avvia Cloud Shell

Anche se Google Cloud può essere utilizzato 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

  1. Dalla console Cloud, fai clic su Attiva Cloud Shell H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LXZWQdLgLz.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Se non hai mai avviato Cloud Shell, ti verrà mostrata una schermata intermedia (below the fold) in cui viene illustrato di cosa si tratta. In tal caso, fai clic su Continua (e non la vedrai più). Ecco come appare quella singola schermata:

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

Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto semplicemente con un browser o 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.

  1. 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&#39;API Speech-to-Text

Prima di poter iniziare a utilizzare l'API Speech-to-Text, devi abilitare l'API. Puoi abilitare l'API utilizzando il comando seguente in Cloud Shell:

gcloud services enable speech.googleapis.com

4. Autentica le richieste API

Per effettuare richieste all'API Speech-to-Text, devi utilizzare un account di servizio. Un account di servizio appartiene al progetto ed è utilizzato dalla libreria Node.js del client Google per effettuare richieste API Speech-to-Text. Come qualsiasi altro account utente, un account di servizio è rappresentato da un indirizzo email. In questa sezione utilizzerai Cloud SDK per creare un account di servizio e quindi creare le credenziali necessarie per l'autenticazione come account di servizio.

Per prima cosa, imposta una variabile di ambiente con il tuo PROJECT_ID che utilizzerai in questo codelab. Se usi Cloud Shell, verrà impostata automaticamente:

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

Quindi, crea un nuovo account di servizio 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 come nuovo account di servizio. Crea le seguenti credenziali e salvale come file JSON ~/key.json utilizzando il comando seguente:

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, descritta nel passaggio successivo, per trovare le tue credenziali. La variabile di ambiente deve essere impostata sul percorso completo del file JSON delle credenziali che hai creato utilizzando:

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

Scopri di più sull'autenticazione dell'API Speech-to-Text.

5. Installa la libreria client dell&#39;API Google Cloud Speech-to-Text per Node.js

Innanzitutto, crea un progetto che utilizzerai per eseguire questo lab dell'API Speech-to-Text e inizializza un nuovo pacchetto Node.js in una cartella a tua scelta:

npm init

Gestione dei partner di rete pone varie domande sulla configurazione del progetto, ad esempio il nome e la versione. Per ogni domanda, premi ENTER per accettare i valori predefiniti. Il punto di ingresso predefinito è un file denominato index.js.

Quindi, 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 è tutto pronto per utilizzare l'API Speech-to-Text.

6. Trascrivi file audio

In questa sezione trascriverai un file audio preregistrato in inglese. Il file audio è disponibile su Google Cloud Storage.

Accedi al file index.js all'interno della cartella e sostituisci il codice con il codice 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
();

Prenditi un minuto o due per studiare il codice e vedere che viene utilizzato per trascrivere un file audio.*.*

Il parametro Encoding indica all'API il tipo di codifica audio utilizzato per il file audio. Flac è il tipo di codifica per i file .raw (per ulteriori dettagli, consulta il documento relativo al tipo di codifica).

Nell'oggetto RecognitionAudio, puoi passare all'API l'URI del nostro file audio in Cloud Storage o il percorso del file locale. In questo caso stiamo utilizzando un URI di Cloud Storage.

Esegui il programma:

node .

Dovresti vedere l'output seguente:

how old is the Brooklyn Bridge

7. Trascrivi con timestamp delle parole

Speech-to-Text è in grado di rilevare l'offset temporale (timestamp) per l'audio trascritto. Gli offset temporali mostrano l'inizio e la fine di ogni parlato nell'audio fornito. Il valore di offset di tempo rappresenta la quantità di tempo trascorso dall'inizio dell'audio, in incrementi di 100 ms.

Accedi al file index.js all'interno della cartella e sostituisci il codice con il codice 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
();

Prenditi un minuto o due per studiare il codice e vedere che viene utilizzato per trascrivere un file audio con timestamp*.* Il parametro EnableWordTimeOffsets indica all'API di abilitare gli offset temporali (per maggiori dettagli, consulta il documento).

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 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.

Accedi al file index.js all'interno della cartella e sostituisci il codice con il codice 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. Dovresti vedere l'output seguente:

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

Questa è una frase di una famosa racconto per bambini francesi.

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 con Node.js per eseguire diversi tipi di trascrizione sui 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 di Cloud Platform.
  • Seleziona il progetto che vuoi chiudere e fai clic su "Elimina". in alto: in questo modo viene pianificata l'eliminazione del progetto.

Scopri di più

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.