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

1. Panoramica

L'API Cloud Text-to-Speech di Google consente agli sviluppatori di includere nelle loro applicazioni la sintesi vocale naturale e dal suono naturale come audio riproducibile. L'API Text-to-Speech converte testo o input Speech Synthesis Markup Language (SSML) in dati audio come MP3 o LINEAR16 (la codifica utilizzata nei file WAV).

In questo codelab, ti concentrerai sull'utilizzo dell'API Text-to-Speech con Node.js. Imparerai a elencare le voci disponibili e a sintetizzare l'audio dal testo.

Cosa imparerai a fare

  • Come utilizzare Cloud Shell
  • Come abilitare l'API Text-to-Speech
  • Come autenticare le richieste API
  • Come installare la libreria client di Google Cloud per Node.js
  • Come elencare le voci disponibili
  • Come sintetizzare l'audio dal testo

Che cosa ti serve

  • Un progetto Google Cloud
  • Un browser, ad esempio Chrome o Firefox
  • Dimestichezza nell'utilizzo di Node.js

Sondaggio

Come utilizzerai questo tutorial?

Solo lettura Leggilo e completa gli esercizi

Come valuteresti la tua esperienza con Node.js?

Principiante Livello intermedio Eccellente

Come giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?

Principiante Livello intermedio Eccellente

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

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Se non hai mai avviato Cloud Shell, verrà visualizzata una schermata intermedia (below the fold) in cui viene descritto 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'API Text-to-Speech

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

gcloud services enable texttospeech.googleapis.com

4. Autentica le richieste API

Per effettuare richieste all'API Text-to-Speech, devi utilizzare un account di servizio. Un account di servizio appartiene al progetto ed è utilizzato dalla libreria Node.js del client Google per effettuare le richieste API Text-to-Speech. 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.

Innanzitutto, imposta una variabile di ambiente con GOOGLE_CLOUD_PROJECT che utilizzerai in questo codelab:

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

Successivamente, crea un nuovo account di servizio per accedere all'API Text-to-Speech utilizzando:

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

Successivamente, crea le credenziali che il codice Node.js utilizzerà per accedere come nuovo account di servizio. Crea le credenziali e salvale come file JSON "~/key.json" utilizzando il seguente comando:

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

Infine, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS, utilizzata dalla libreria Node.js dell'API Text-to-Speech, 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"

5. Installa la libreria client dell'API Google Cloud Text-to-Speech per Node.js

Innanzitutto, crea un progetto che utilizzerai per eseguire questo lab dell'API Text-to-Speech, inizializzando 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/text-to-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 Text-to-Speech.

6. Elenco voci disponibili

In questa sezione, elenca innanzitutto tutte le voci disponibili in inglese per la sintesi audio.

Accedi al file index.js all'interno della cartella e sostituisci il codice con il codice seguente:

'use strict';

/**
 * Lists available voices for the specified language.
 *
 * @param {string} languageCode - The language code.
 */
async function listVoices(languageCode) {
  const textToSpeech = require('@google-cloud/text-to-speech');

  const client = new textToSpeech.TextToSpeechClient();

  const [result] = await client.listVoices({languageCode});
  const voices = result.voices;

  voices.forEach((voice) => {
    console.log(`${voice.name} (${voice.ssmlGender}): ${voice.languageCodes}`);
  });
}

listVoices('en');

Prenditi un minuto o due per studiare il codice. Eseguire l'applicazione:

node . 

Dovresti vedere l'output seguente:

en-US-Standard-A (MALE): en-US
en-US-Standard-B (MALE): en-US
en-US-Standard-C (FEMALE): en-US
en-US-Standard-D (MALE): en-US
en-US-Standard-E (FEMALE): en-US
en-US-Standard-F (FEMALE): en-US
...

7. Sintetizza audio dal testo

Puoi utilizzare l'API Text-to-Speech per convertire una stringa in dati audio. Puoi configurare l'output della sintesi vocale in diversi modi, ad esempio selezionando una voce univoca o modulando l'output in termini di tonalità, volume, velocità del parlato e frequenza di campionamento.

Vai al file index.js all'interno della sezione e aggiungi il seguente codice:

/**
 * Sythesizes sample text into an .mp3 file.
 */
async function synthesize() {
  const textToSpeech = require('@google-cloud/text-to-speech');
  const fs = require('fs');
  const util = require('util');

  const client = new textToSpeech.TextToSpeechClient();

  const text = 'This is a demonstration of the Google Cloud Text-to-Speech API';

  const request = {
    input: {text: text},
    voice: {languageCode: 'en-US', ssmlGender: 'NEUTRAL'},
    audioConfig: {audioEncoding: 'MP3'},
  };

  const [response] = await client.synthesizeSpeech(request);
  // Write the binary audio content to a local file
  const writeFile = util.promisify(fs.writeFile);
  await writeFile('output.mp3', response.audioContent, 'binary');
  console.log('Audio content written to file: output.mp3');
}

synthesize();

Prenditi un minuto o due per studiare il codice e vedere come viene utilizzato per creare un file audio a partire dal testo.

node .

Dovresti vedere l'output seguente:

Audio content written to file "output.mp3"

8. Complimenti!

Hai imparato a utilizzare l'API Text-to-Speech utilizzando 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.