python

Conversión de texto a voz (TTS) con Python y gTTS

Anteriormente vimos cómo usar la tecnología TTS en JavaScript, ahora veremos cómo hacerlo con Python.

La conversión de texto a voz con Python ofrece más características, por ejemplo, podemos guardar la salida en un archivo de MP3 y no hay un límite definido.

Texto a voz (TTS) con Python y gTTS

Para hacerlo vamos a instalar gtts, es un paquete de Python que usa la API de Google (Google Text-to-Speech) para convertir el texto a audio.

Obviamente se necesita internet, pero tranquilo, que si quieres usarlo de manera offline puedes guardar los archivos con palabras comunes y luego reproducirlas.

Nota: he creado un post mostrándote una librería para convertir texto a voz usando Python de manera offline.

Instalar gTTS con PIP

Comienza instalando Python y PIP. Después ejecuta:

pip install gTTS

1 – Instalar paquete gTTS con pip

Espera a que se termine de instalar. Si es necesario, cierra la consola y vuelve a abrirla.

Opcionalmente vamos a listar los lenguajes que soporta, para asegurarnos de que el español está entre ellos.

El comando es gtts-cli --all.

2 – Comprobar lenguajes instalados

Lo importante aquí es la clave: es-es, es-us, es. Ahora vamos a comenzar a programar.

Visión general de gTTS con Python

Voy a dar una pequeña explicación y al final dejaré ejemplos completos.

Para importar la librería usamos:

from gtts import gTTS

Para crear un objeto de gTTS llamamos a la función y como primer argumento le pasamos el texto.

Adicionalmente acepta otros parámetros en forma de kwargs, entre los que destacan slow que es un booleano indicando si la pronunciación debería ser lenta o no, y lang, que es una cadena en la que el texto será pronunciado (por eso vimos al inicio los idiomas disponibles).

Para guardar el texto convertido a audio en un archivo existen dos métodos: save y write_to_fp. El primero recibe el nombre del archivo de salida, el segundo un “flujo” de un archivo.

Este método de write_to_fp puede ser llamado con distintos tts, ahí la ventaja, pues podemos concatenar el audio ya sea en distintos lenguajes o a distintas velocidades.

Ejemplo 1 con TTS y Python: hola mundo

Tenemos el primer ejemplo que muestra las capacidades básicas de gtts.

See the gist on github.

Estamos indicando que queremos el español de Estados Unidos, pues a mi parecer es el que más se asemeja al español de México entre todos los listados.

Ejemplo 2: Escribir a file object

Anteriormente no tuvimos que preocuparnos por abrir el archivo, simplemente llamamos a save. Ahora veremos cómo escribirlo a un archivo que abrimos con open.

See the gist on github.

Es casi lo mismo, pero usando write_to_fp. Como lo dije anteriormente: esto permite escribir al mismo archivo distintas salidas de gTTS.

Ejemplo 3: escribir distintos idiomas en mismo archivo

En el siguiente ejemplo convertimos texto a voz con Python en 3 idiomas: español, inglés y francés. Creamos 3 objetos, abrimos el archivo con open y escribimos.

See the gist on github.

Estamos definiendo 3 distintos idiomas, aunque podríamos igualmente cambiar la velocidad con el argumento de slow.

TTS con Python, ejemplo 4: reproducir audio

El archivo MP3 generado se puede reproducir con cualquier, valga la redundancia, reproductor. Pero si quieres reproducirlo directamente desde Python puedes ver este post para instalar playsound.

Veamos el ejemplo en donde el audio generado con TTS es reproducido:

See the gist on github.

De esa manera se puede reproducir el archivo. No es el único método pero es un ejemplo.

Ejemplo 5 de conversor de texto a voz

Para terminar voy a ejemplificar cómo cambiar la velocidad a slow para que sea un poco más lenta. Queda así:

See the gist on github.

Conclusión

Esta librería parece simple, pero podemos usarla para distintas cosas. Podríamos agregar muchísimas características a nuestros programas, agregar accesibilidad, entre otras.

Cabe mencionar que al instalar el paquete con PIP se han instalado algunos “binarios” que sirven para hacer conversiones sin necesidad de Python, todo ejecutándose desde la línea de comandos, pero eso es para otro post.

Como referencia dejo la documentación oficial.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

5 días hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

5 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

6 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.