Acerca de este codelab
1. Descripción general
La API de Google Cloud Speech-to-Text permite que los desarrolladores conviertan audio en texto en 120 idiomas y variantes mediante la aplicación de potentes modelos de redes neuronales en una API fácil de usar.
En este codelab, te enfocarás en el uso de la API de Speech-to-Text con Node.js. Aprenderás a enviar un archivo de audio en inglés y otros idiomas a la API de Cloud Speech-to-Text para su transcripción.
Qué aprenderás
- Cómo habilitar la API de Speech-to-Text
- Cómo autenticar solicitudes a la API
- Cómo instalar la biblioteca cliente de Google Cloud para Node.js
- Cómo transcribir archivos de audio en inglés
- Cómo transcribir archivos de audio con marcas de tiempo de palabras
- Cómo transcribir archivos de audio en diferentes idiomas
Requisitos
- Un proyecto de Google Cloud Platform
- Un navegador como Chrome o Firefox
- Conocimientos de JavaScript o Node.js
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 Speech-to-Text
Antes de comenzar a usar la API de Speech-to-Text, debes habilitarla. Puedes habilitar la API con el siguiente comando en Cloud Shell:
gcloud services enable speech.googleapis.com
4. Autentica solicitudes a la API
Para realizar solicitudes a la API de Speech-to-Text, 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 Speech-to-Text. 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 PROJECT_ID que usarás durante este codelab. Si usas Cloud Shell, se configurará por ti:
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 Speech-to-Text con el siguiente comando:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text 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
con el siguiente comando:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-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 Speech-to-Text, 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"
Puedes obtener más información sobre cómo autenticar la API de Speech-to-Text.
5. Instala la biblioteca cliente de la API de Google Cloud Speech-to-Text para Node.js
Primero, crea un proyecto que usarás para ejecutar este lab de la API de Speech-to-Text 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/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 Speech-to-Text.
6. Transcribir archivos de audio
En esta sección, transcribirás un archivo de audio pregrabado en inglés. El archivo de audio está disponible en Google Cloud Storage.
Navega al archivo index.js
dentro y reemplaza el código por lo siguiente:
// 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();
Tómate uno o dos minutos para estudiar el código y comprobar que se usa para transcribir un archivo de audio.**
El parámetro Encoding
le indica a la API qué tipo de codificación de audio usas para el archivo de audio. Flac
es el tipo de codificación para archivos sin procesar (consulta el documento para conocer el tipo de codificación y obtener más detalles).
En el objeto RecognitionAudio
, puedes pasar a la API el URI de nuestro archivo de audio en Cloud Storage o la ruta de acceso local del archivo. Aquí, usamos un URI de Cloud Storage.
Ejecuta el programa:
node .
Deberías ver el siguiente resultado:
how old is the Brooklyn Bridge
7. Transcribir con marcas de tiempo de palabras
Speech-to-Text puede detectar la compensación horaria (marca de tiempo) para el audio transcrito. Las compensaciones horarias muestran el principio y el final de cada palabra pronunciada en el audio suministrado. Un valor de compensación horaria representa la cantidad de tiempo que transcurrió desde el comienzo del audio, en incrementos de 100 ms.
Navega al archivo index.js
dentro y reemplaza el código por lo siguiente:
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();
Tómate uno o dos minutos para estudiar el código y ver que se usa para transcribir un archivo de audio con marcas de tiempo de palabras*.* El parámetro EnableWordTimeOffsets
le indica a la API que habilite las compensaciones horarias (consulta el documento para obtener más detalles).
Vuelve a ejecutar el programa:
node .
Deberías ver el siguiente resultado:
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. Transcribe diferentes idiomas
La API de Speech-to-Text admite transcripciones en más de 100 idiomas. Consulta la lista de idiomas admitidos aquí.
En esta sección, transcribirás un archivo de audio pregrabado en francés. El archivo de audio está disponible en Google Cloud Storage.
Navega al archivo index.js
dentro y reemplaza el código por lo siguiente:
// 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();
Vuelve a ejecutar el programa. Deberías ver el siguiente resultado:
maître corbeau sur un arbre perché tenait en son bec un fromage
Esta es una frase de un popular cuento infantil francés.
Para ver la lista completa de idiomas y códigos de idiomas admitidos, consulta la documentación aquí.
9. ¡Felicitaciones!
Aprendiste a usar la API de Speech-to-Text 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 Speech-to-Text: https://cloud.google.com/speech-to-text/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.