En este instructivo, se muestra cómo usar el lenguaje de marcación de síntesis de voz (SSML) para que se pronuncie un archivo de texto de direcciones. Puedes marcar una string de texto con etiquetas SSML a fin de personalizar el audio sintético de Text-to-Speech.
Texto sin formato | Procesamiento SSML de texto sin formato |
---|---|
123 Street Ln |
<speak>123 Street Ln</speak> |
1 Number St |
<speak>1 Number St</speak> |
1 Piazza del Fibonacci |
<speak>1 Piazza del Fibonacci</speak> |
Objetivo
Envía una solicitud de voz sintética a Text-to-Speech con SSML y las bibliotecas cliente de Text-to-Speech.
Costos
Para obtener información sobre los costos, consulta la página de precios de Text-to-Speech.
Antes de comenzar
- Asegúrate de tener un proyecto de texto a voz en Google Cloud Console.
- Con este instructivo, puedes usar Java, Node.js o Python. Si planeas usar Java, descarga y, luego, instala Maven. Si planeas usar Node.js, descarga npm.
Descarga las muestras de código
Para descargar las muestras de código, clona las muestras de GitHub de Google Cloud correspondientes al lenguaje de programación que pretendes usar.
Java
En este instructivo, se usa código en el directorio texttospeech/cloud-client/src/main/java/com/example/texttospeech/
de las muestras de Java de Google Cloud Platform.
Para descargar y navegar hasta el código de este instructivo, ejecuta los siguientes comandos desde la terminal.
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/texttospeech/cloud-client/src/main/java/com/example/texttospeech/
Node.js
En este instructivo, se usa código en el directorio nodejs-text-to-speech/samples
del repositorio de googleapis.
Para descargar y navegar hasta el código de este instructivo, ejecuta los siguientes comandos desde la terminal.
git clone https://github.com/googleapis/nodejs-text-to-speech.git cd nodejs-text-to-speech/samples/
Python
En este instructivo, se usa código en el directorio samples/snippets
de la Biblioteca de Text-to-Speech de Python.
Para descargar y navegar hasta el código de este instructivo, ejecuta los siguientes comandos desde la terminal.
git clone https://github.com/googleapis/python-texttospeech.git cd samples/snippets
Instala la biblioteca cliente
En este instructivo, se usa la biblioteca cliente de Text-to-Speech.
Java
En este instructivo, se usan las siguientes dependencias.
Node.js
Desde la terminal, ejecuta el siguiente comando.
npm install @google-cloud/text-to-speech
Python
Desde la terminal, ejecuta el siguiente comando.
pip install --upgrade google-cloud-texttospeech
Configura tus credenciales de Google Cloud Platform
Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
para proporcionar credenciales de autenticación al código de la aplicación. Esta variable se aplica solo a tu sesión de shell actual. Si quieres que la variable se aplique a sesiones de shell futuras, configura la variable en tu archivo de inicio de shell, por ejemplo, en el archivo ~/.bashrc
o ~/.profile
.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Por ejemplo:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Para PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Por ejemplo:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Para el símbolo del sistema:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
Reemplaza KEY_PATH
por la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio.
Importa las bibliotecas
En este instructivo, se usan las siguientes bibliotecas cliente y del sistema.
Java
Node.js
Python
Usa la API de Text-to-Speech
La siguiente función toma una string de texto etiquetado con SSML y el nombre de un archivo MP3. En esta función, se usa el texto etiquetado con SSML para generar audio sintético. La función guarda el audio sintético con el nombre de archivo MP3 designado como parámetro.
Toda la entrada de SSML puede ser leída por una sola voz.
Puedes configurar la voz en el objeto VoiceSelectionParams
.
Java
Node.js
Python
Personaliza el audio sintético
Con la siguiente función, se toma el nombre de un archivo de texto y se convierte el contenido del archivo en una string de texto etiquetado con SSML.
Java
Node.js
Python
Combina todas las opciones
En este programa, se usa la siguiente entrada.
123 Street Ln, Small Town, IL 12345 USA 1 Jenny St & Number St, Tutone City, CA 86753 1 Piazza del Fibonacci, 12358 Pisa, Italy
Cuando se pasa el texto anterior a text_to_ssml()
, se genera el siguiente texto etiquetado.
<speak>123 Street Ln, Small Town, IL 12345 USA <break time="2s"/>1 Jenny St & Number St, Tutone City, CA 86753 <break time="2s"/>1 Piazza del Fibonacci, 12358 Pisa, Italy <break time="2s"/></speak>
Ejecuta el código
Para generar un archivo de audio de voz sintética, ejecuta el siguiente código desde la línea de comandos.
Java
Linux o MacOS
En el directorio java-docs-samples/texttospeech/cloud-client/
, ejecuta el siguiente comando en la línea de comandos.
$ mvn clean package
Windows
En el directorio java-docs-samples/texttospeech/cloud-client/
, ejecuta el siguiente comando en la línea de comandos.
$ mvn clean package
Node.js
Linux o MacOS
En el archivo hybridGlossaries.js
, quita el comentario de las variables comentadas de TODO (developer)
.
En el siguiente comando, reemplaza projectId por el ID de tu proyecto de Google Cloud.
En el directorio nodejs-text-to-speech/samples
, ejecuta el siguiente comando en la línea de comandos.
$ node ssmlAddresses.js projectId
Windows
En el archivo hybridGlossaries.js
, quita el comentario de las variables comentadas de TODO (developer)
.
En el siguiente comando, reemplaza projectId por el ID de tu proyecto de Google Cloud.
En el directorio nodejs-text-to-speech/samples
, ejecuta el siguiente comando en la línea de comandos.
$env: C:/Node.js/node.exe C: ssmlAddresses.js projectId
Python
Linux o MacOS
En el directorio python-texttospeech/samples/snippets
, ejecuta el siguiente comando en la línea de comandos.
$ python ssml_addresses.py
Windows
En el directorio python-texttospeech/samples/snippets
, ejecuta el siguiente comando en la línea de comandos.
$env: C:/Python3/python.exe C: ssml_addresses.py
Comprueba el resultado
Este programa genera un archivo de audio example.mp3 de voz sintética.
Java
Navega al directorio java-docs-samples/texttospeech/cloud-client/resources/
.
Busca en el directorio resources
el archivo example.mp3.
Node.js
Navega al directorio nodejs-text-tospeech/samples/resources/
.
Busca en el directorio resources
el archivo example.mp3.
Python
Navega hasta python-texttospeech/samples/snippets/resources
.
Busca en el directorio resources
el archivo example.mp3.
Escucha el siguiente clip de audio para comprobar que tu archivo example.mp3 suene igual.
Solución de problemas
Si olvidas configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la línea de comandos, se genera el siguiente mensaje de error:
The Application Default Credentials are not available.
Si pasas el nombre de un archivo inexistente a
text_to_ssml()
, se genera el mensaje de error:IOError: [Errno 2] No such file or directory
Pasar
ssml_to_audio()
un parámetro ssml_text que contenga None genera el mensaje de error:InvalidArgument: 400 Invalid input type. Type has to be text or SSML
Asegúrate de que estás ejecutando el código desde el directorio correcto.
¿Qué sigue?
- Explora otras etiquetas de SSML.
- Obtén información sobre cómo proporcionar funciones de traducción de voz a tu app para Android.
- Aprende a usar SSML con Translation y Vision
Realiza una limpieza
A fin de evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo, usa Google Cloud Console para borrar tu proyecto si no lo necesitas.
Borra tu proyecto
- En la consola, ve a la página Proyectos.
- En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar.
- En el cuadro de diálogo, escribe el ID del proyecto y haz clic en Cerrar para borrar el proyecto.