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

Publicado por parzibyte en

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

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.

Instalar gTTS con PIP

Comienza instalando Python y PIP. Después ejecuta:

pip install gTTS

1 - Instalar paquete gTTS con pip

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

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.

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.

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.

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:

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í:

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.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: