Texto a voz (TTS) offline con Python

En este tutorial de programación con Python te mostraré cómo convertir texto a voz/audio usando Python y un paquete que trabaja totalmente fuera de línea, es decir, sin conexión a internet.

Anteriormente ya te había mostrado un tutorial pero en ese caso usábamos la API de Google para convertir texto a audio usando Python, ahora te mostraré lo mismo pero usando un paquete que no necesita internet.

De este modo podrás reproducir audio a partir de determinado texto, además de guardar la voz en un archivo de audio MP3.

Instalando librería

Vamos a usar la librería pyttsx3; para ello debes contar con Python y PIP. Una vez que los tengas, ejecuta:

pip install pyttsx3

Dependiendo de tu sistema operativo se van a descargar varias dependencias. Yo te cuento que en Windows funciona perfectamente y pip se encargó de instalar todo.

Según el repositorio oficial esto debería funcionar correctamente en Windows y Linux.

Convertir texto a voz con Python

Veamos el primer ejemplo en donde vamos a convertir el texto a voz y después reproducir el sonido a través de Python. El código queda así:

Primero importamos la librería y creamos un motor. Podemos invocar a setProperty para cambiar varios aspectos (puedes leer la documentación del repositorio). En este caso cambio el rate que controla la velocidad del audio.

Después invocamos a engine.say para encolar un texto que el motor convertirá a audio. Podemos invocar varias veces a say, y el motor va a convertir el texto a audio en ese orden.

Finalmente invocamos a engine.runAndWait para que el motor “arranque” y espere a que se reproduzca el audio.

Convertir texto a audio y guardar en archivo MP3

TTS en Python – Convertir texto a audio usando Python y pyttsx3

Para terminar este tutorial de Python y TTS veamos cómo convertir texto a audio pero guardar el resultado en un archivo MP3. Ahora en lugar de invocar a say, invocamos a save_to_file con dos argumentos: el texto que se guardará dentro del archivo, y el nombre del archivo de salida.

El código queda como se ve a continuación:

En este caso el código es muy parecido, solo que ahora lo guardamos a un archivo. Es importante invocar runAndWait al final para que los archivos sean creados.

Al ejecutar el código vamos a tener un archivo de audio con el texto que indicamos.

Conclusión

Con este paquete podemos hacer varias cosas como crear APIs que devuelvan el archivo, o, por ejemplo, saltar algunas limitantes que tiene JavaScript (el hecho de no poder reproducir audio sin la interacción del usuario).

La ventaja de pyttsx3 sobre otros paquetes es que éste es totalmente fuera de línea, offline o como le digas. De este modo solo debes asegurarte de instalar la dependencia y luego podrás usarla sin problemas y sin límites.

Recuerda que vas a encontrar toda la documentación en el repositorio oficial. Te dejo aquí con más posts sobre Python.

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.

3 comentarios en “Texto a voz (TTS) offline con Python”

Dejar un comentario