La moda de la IA va para largo, y hoy se habla mucho de Vall-E y su futura combinación con GPT-3. Pero hay que recordar que todos estos productos de Inteligencia Artificial provienen de investigaciones colaborativas que han sido de código abierto, por lo que siempre encontraremos un equivalente de software libre, y deberíamos estar agradecidos por ello.
Es el caso de TorToiSe-TTS (text to speech), un generador de voz a partir de texto mediante IA totalmente gratuito para usar en tu ordenador.
https://github.com/neonbjb/tortoise-tts
Aquí te dejo un anticipo de la voz de Morgan Freeman:
Instalación
Lo más fácil es usar el script en la nube de Google Collab que ha habilitado su desarrollador:
https://colab.research.google.com/drive/1wVVqUPqwiDBUVeWWOUNglpGhU3hg_cbR?usp=sharing
Solo tendremos que iniciar sesión e ir dándole al "play" ▶ para ejecutar cada bloque de código.
Pero seguro que quieres ejecutar TorToiSe-TTS de forma local, sin necesidad de internet, y guardar los audios en tu disco duro, así que seguimos.
Instalar python3
Como muchas aplicaciones de IA, TorToiSe-TTS se ejecuta en python, por lo que debes instalar python3 en tu ordenador. Ya sabes que yo siempre recomiendo el uso de Linux, pero podrás ejecutarlo también en un terminal de Windows.
https://www.python.org/downloads/
En Linux podrás instalarlo desde el repositorio de tu distribución:
sudo apt-get update
sudo apt-get install python3.11
Y también necesitarás el módulo venv para virtualizar un entorno de python (en Windows suele venir con el instalador):
sudo apt-get install python3.11-venv
Descargar repositorio
Deberás descargar el repositorio oficial:
https://github.com/neonbjb/tortoise-tts
Bien como archivo comprimido:
O usando git:
git clone https://github.com/neonbjb/tortoise-tts
También puedes descargar mi repositorio, donde añado instrucciones más detalladas, un lanzador de interfaz en terminal y las voces de prueba de Ultrón (si, el androide maligno de Tony Stark) que verás más abajo.
https://github.com/TheRoam/tortoise-tts-linuxLauncher
Crear entorno virtual de python
A continuación tendremos que instalar una serie de módulos necesarios para arrancar TorToiSe-TTS, pero antes vamos a crear una versión virtual de python, para que la instalación de esos módulos no afecte al resto de la instalación de python. Verás que al final esto es muy útil cuando utilizas diferentes apps de IA que utilizan distintas versiones de cada módulo.
En un terminal escribimos lo siguiente, de forma que creamos el entorno "TTS":
cd tortoise-tts
python3 -m venv TTS
Y lo activamos así:
source TTS/bin/activate
Ahora verás que tu terminal hace referencia al entorno TTS:
(TTS) abc@123:~$ |
Instalar módulos de python
Vamos a instalar los módulos de python necesarios, siguiendo las indicaciones del collab:
pip3 install -U scipy
pip3 install transformers==4.19.0
pip3 install -r requirements.txt
python3 setup.py install
Con esto podemos probar a ejecutar TorToiSe-TTS, pero te adelantó que fallarán algunas librerías, dependiendo de tu instalación de python:
python3 scripts/tortoise_tts.py "This is The Roaming Workshop" -v "daniel" -p "fast" -o "test1.wav"
Probamos el comando anterior hasta que no falle. En mi caso he tenido que añadir los siguientes módulos:
pip3 install torch
pip3 install torchaudio
pip3 install llvmlite
pip3 install numpy==1.23
Y listo, ese test1.wav suena así en la voz de daniel (que resulta ser Daniel Craig):
Uso de TorToiSe-TTS
El programa más sencillo de TorToiSe-TTS se encuentra en la carpeta scripts/tortoise_tts.py
y estos son sus principales argumentos:
python3 scripts/tortoise_tts.py "texto" -v "voz" -V "ruta/a/carpeta/de/voces" --seed semilla -p "fast" -o "fichero-de-salida.wav"
"texto"
: cadena de texto que se convertirá en voz-v
: voz a utilizar para convertir el texto. Debe ser el nombre de una de las carpetas disponibles en/tortoise/voices/
-V
: especifica una carpeta para las voces, para el caso de usar una personalizada. Podemos crear nuevas carpetas en/tortoise/voices/
--seed
: semilla para caracterizar el algoritmo (cualquier número vale)-p
: modo predefinido para determinar la calidad ("ultra_fast", "fast", "standard", "high_quality").-o
: ruta y nombre del fichero de salida. Se debe especificar el formato del archivo, que será.wav
Si usas el script de mi repositorio TTS.sh
se te pedirán estos argumentos por pantalla y se ejecutará el algoritmo automáticamente.
Añade tus propias voces
Puedes añadir más voces a TurToiSe-TTS. Yo por ejemplo he querido añadir la voz de Ultrón, el supervillano de Marvel, siguiendo las indicaciones del desarrollador Neonbjb:
- Debes recopilar unas 3 grabaciones "limpias" (sin ruidos de fondo ni música, preferiblemente) de unos 10 segundos de duración.
- El formato debe ser WAV de 16bits de coma flotante con 22500 de frecuencia de muestreo (puedes usar Audacity)
- Crea una nueva carpeta en la ruta
/tortoise/voices
(o realmente donde quieras) y guarda ahí las grabaciones. - Al ejecutar TorToiSe-TTS, deberás indicar la ruta de la carpeta de voces con el argumento
-V
y la nueva voz con el argumento-v
Por ejemplo, para usar mis grabaciones de Ultrón:
python3 sripts/tortoise_tts.py "This is The Roaming Workshop" -V "./tortoise/voices" -v "ultron-en" -p "fast" --seed 17 -o "./wavs/TRW_ultron3.wav"
Que suena así:
Yo he tomado recortes de una escena de Vengadores: la era de Ultrón, tanto en inglés (ultron-en) como en español (ultron-es) que puedes descargar de mi repositorio.
Por ahora el modelo de TorToiSe-TTS está entrenado solo en inglés, por lo que solo funciona adecuadamente en este idioma.
Puedes introducir texto en otro idioma, y la IA intentará leerlo, aunque usará la pronunciación que ha aprendido del inglés y sonará bastante extraño.
Si te animas a entrenar un modelo para tu idioma (necesitas mucha GPU y varios meses), contacta con el desarrollador, ya que tiene bastante interés en ampliar el proyecto.
Mientras tanto, puedes dejar tus dudas y comentarion en 🐦 Twitter o 🐤 Koo!