1. Descripción general
La API de Google Cloud Text-to-Speech permite que los desarrolladores incluyan voz sintética humana y con sonido natural como audio reproducible en sus aplicaciones. La API de Text-to-Speech convierte las entradas de texto o de lenguaje de marcación de síntesis de voz (SSML) en datos de audio, como MP3 o LINEAR16 (la codificación que se usa en los archivos WAV).
En este codelab, te enfocarás en el uso de la API de Text‐to‐Speech con Node.js. Aprenderás a generar una lista de las voces disponibles y, además, sintetizar audio a partir de texto.
Qué aprenderás
- Cómo usar Cloud Shell
- Cómo habilitar la API de Text‐to‐Speech
- Cómo autenticar solicitudes a la API
- Cómo instalar la biblioteca cliente de Google Cloud para Node.js
- Cómo obtener una lista de las voces disponibles
- Cómo sintetizar audio a partir de texto
Requisitos
Encuesta
¿Cómo usarás este instructivo?
¿Cómo calificarías tu experiencia con Node.js?
¿Cómo calificarías tu experiencia en el uso de los servicios de Google Cloud Platform?
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. (Si todavía no tienes una cuenta de Gmail o de G Suite, debes crear una).
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.
Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza” en la que se aconseja cómo cerrar recursos para no incurrir en facturación más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
Activar Cloud Shell
- En la consola de Cloud, haz clic en Activar Cloud Shell
.
Si nunca ha iniciado Cloud Shell, aparecerá una pantalla intermedia (debajo de la mitad inferior de la página) que describe qué es. Si ese es el caso, haz clic en Continuar (y no volverás a verlo). Así es como se ve la pantalla única:
El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer simplemente con un navegador o tu Chromebook.
Una vez conectado a Cloud Shell, debería ver que ya se autenticó y que el proyecto ya se configuró con tu ID del proyecto.
- En Cloud Shell, ejecuta el siguiente comando para confirmar que está autenticado:
gcloud auth list
Resultado del 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
Resultado del comando
[core] project = <PROJECT_ID>
De lo contrario, puedes configurarlo con el siguiente comando:
gcloud config set project <PROJECT_ID>
Resultado del comando
Updated property [core/project].
3. Habilita la API de Text‑to‑Speech
Antes de comenzar a usar la API de Text‐to‐Speech, debes habilitarla. Puedes habilitar la API con el siguiente comando en Cloud Shell:
gcloud services enable texttospeech.googleapis.com
4. Autentica solicitudes a la API
Para realizar solicitudes a la API de Text-to-Speech, debes usar una cuenta de servicio. Una cuenta de servicio pertenece a tu proyecto y la biblioteca cliente de Google de Node.js la usa para realizar solicitudes a la API de Text-to-Speech. Al igual que cualquier otra cuenta de usuario, una cuenta de servicio está representada por una dirección de correo electrónico. En esta sección, usarás el SDK de Cloud para crear una cuenta de servicio y, luego, crear las credenciales que necesitarás para autenticarte como la cuenta de servicio.
Primero, configura una variable de entorno con tu GOOGLE_CLOUD_PROJECT
, que usarás en este codelab:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
A continuación, crea una cuenta de servicio nueva para acceder a la API de Text‐to‐Speech con el siguiente comando:
gcloud iam service-accounts create my-text-to-speech-sa \
--display-name "my text-to-speech codelab service account"
A continuación, crea credenciales que tu código de Node.js usará para acceder como tu cuenta de servicio nueva. Crea estas credenciales y guárdalas como un archivo JSON “~/key.json” mediante el siguiente comando:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-text-to-speech-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Por último, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
, que se usa en la biblioteca de Node.js de la API de Text-to-Speech, que se explica en el siguiente paso, para encontrar tus credenciales. La variable de entorno se debe establecer en la ruta de acceso completa del archivo JSON de credenciales que creaste, con el siguiente código:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
5. Instala la biblioteca cliente de la API de Google Cloud Text-to-Speech para Node.js
Primero, crea un proyecto que usarás para ejecutar este lab de la API de Text‐to‐Speech y, luego, inicializa un nuevo paquete de Node.js en la carpeta que elijas:
npm init
NPM hace varias preguntas sobre la configuración del proyecto, como el nombre y la versión. En cada pregunta, presiona ENTER
para aceptar los valores predeterminados. El punto de entrada predeterminado es un archivo llamado index.js
.
A continuación, instala la biblioteca de Google Cloud Speech en el proyecto:
npm install --save @google-cloud/text-to-speech
Si quieres obtener más instrucciones para configurar un desarrollo de Node.js para Google Cloud, consulta la Guía de configuración.
Ya está todo listo para que uses la API de Text‐to‐Speech.
6. Enumerar voces disponibles
En esta sección, primero enumerarás todas las voces disponibles en inglés para la síntesis de audio.
Navega al archivo index.js
dentro y reemplaza el código por lo siguiente:
'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');
Dedica uno o dos minutos a estudiar el código. Ejecuta la app:
node .
Deberías ver el siguiente resultado:
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. Sintetiza audio a partir de texto
Puedes usar la API de Text-to-Speech para convertir una cadena en datos de audio. Puedes configurar el resultado de la síntesis de voz de varias maneras, como seleccionar una voz única o modular el resultado en tono, volumen, velocidad de habla y tasa de muestreo.
Navega al archivo index.js
dentro y agrega el siguiente código:
/**
* 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();
Tómate uno o dos minutos para estudiar el código y ver cómo se usa para crear un archivo de audio a partir de texto.
node .
Deberías ver el siguiente resultado:
Audio content written to file "output.mp3"
8. ¡Felicitaciones!
Aprendiste a usar la API de Text‐to‐Speech con Node.js para realizar diferentes tipos de transcripciones en archivos de audio.
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos de esta guía de inicio rápido:
- Ve a la consola de Google Cloud.
- Selecciona el proyecto que deseas cerrar y haz clic en “Borrar”. en la parte superior: esta opción programa la eliminación del proyecto.
Más información
- API de Google Cloud Text-to-Speech: https://cloud.google.com/text-to-speech/docs
- Node.js en Google Cloud: https://cloud.google.com/nodejs/
- Cliente de Node.js de Google Cloud: https://googlecloudplatform.github.io/google-cloud-node/
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.