Tortoise es un programa de texto a voz construido con las siguientes prioridades:
Este repositorio contiene todo el código necesario para ejecutar Tortoise TTS en modo de inferencia.
Colab es la forma más fácil de probar esto. He reunido un cuaderno que puede usar aquí: https://colab.research.google.com/drive/1wvvqupqwidbuvewwounglpghu3hg_cbr?usp=sharing
Si desea usar esto en su propia computadora, debe tener una GPU NVIDIA.
Primero, instale pytorch usando estas instrucciones: https://pytorch.org/get-started/locally/. En Windows, recomiendo usar la ruta de instalación de Conda. Me han dicho que si no haces esto, pasarás mucho tiempo persiguiendo problemas de dependencia.
A continuación, instale Tortoise y sus dependencias:
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install Si está en Windows, también deberá instalar PySoundFile: conda install -c conda-forge pysoundfile
Este script le permite hablar una sola frase con una o más voces.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fastEste script proporciona herramientas para leer grandes cantidades de texto.
python tortoise/read.py --textfile < your text to be read > --voice randomEsto dividirá el archivo de texto en oraciones y luego las convertirá en discurso uno a la vez. ENCONTRARÁ UNA ESTACIÓN DE CLIPS SABADOS según se genere. Una vez que se generan todos los clips, los combinará en un solo archivo y salida también.
A veces, la tortuga atornilla una salida. Puede volver a generar cualquier clip de malos volviendo a Running read.py con el argumento-Regenerado.
La tortuga se puede usar programáticamente, como así:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )Tortoise fue entrenada específicamente para ser un modelo de múltiples altas. Logra esto consultando clips de referencia.
Estos clips de referencia son grabaciones de un orador que proporciona para guiar la generación del habla. Estos clips se utilizan para determinar muchas propiedades de la salida, como el tono y el tono de la voz, la velocidad de oratoria e incluso los defectos que hablan como un lisp o tartamudeo. El clip de referencia también se usa para determinar aspectos no relacionados con la voz de la salida de audio, como volumen, ruido de fondo, calidad de grabación y reverb.
He incluido una característica que genera al azar una voz. Estas voces en realidad no existen y serán aleatorias cada vez que lo ejecute. ¡Los resultados son bastante fascinantes y te recomiendo que juegues con él!
Puede usar la voz aleatoria pasando 'aleatorio' como nombre de voz. Tortoise se encargará del resto.
Para aquellos en el espacio ML: esto se crea proyectando un vector aleatorio en el espacio latente de acondicionamiento de voz.
Este repositorio viene con varias voces preenvasadas. Las voces preparadas con "Train_" vinieron del set de entrenamiento y funcionan mucho mejor que los demás. Si su objetivo es un discurso de alta calidad, le recomiendo que elija uno de ellos. Si desea ver qué puede hacer Tortoise para la imitación de cero disparos, eche un vistazo a los demás.
Para agregar nuevas voces a la tortuga, deberá hacer lo siguiente:
Como se mencionó anteriormente, sus clips de referencia tienen un profundo impacto en la producción de tortuga. Los siguientes son algunos consejos para elegir buenos clips:
La tortuga es principalmente un modelo de decodificador autorregresivo combinado con un modelo de difusión. Ambos tienen muchas perillas que se pueden girar que he abstraído en aras de la facilidad de uso. Hice esto generando miles de clips utilizando diversas permutaciones de la configuración y usando una métrica para el realismo de voz y la inteligibilidad para medir sus efectos. He establecido los valores predeterminados en la mejor configuración general que pude encontrar. Para casos de uso específicos, puede ser efectivo jugar con estas configuraciones (¡y es muy probable que me haya perdido algo!)
Estas configuraciones no están disponibles en los scripts normales empaquetados con tortuga. Están disponibles, sin embargo, en la API. Consulte api.tts para obtener una lista completa.
¡Algunas personas han descubierto que es posible hacer ingeniería rápida con tortuga! Por ejemplo, puede evocar emociones al incluir cosas como "Estoy realmente triste", antes de su texto. He creado un sistema de redacción automatizado que puede usar para aprovechar esto. Funciona al intentar redactar cualquier texto en el indicador rodeado de soportes. Por ejemplo, el mensaje "[Estoy realmente triste,] por favor alimenteme". Solo hablará las palabras "Por favor, alimentarme" (con una triste tonalidad).
La tortuga ingiere clips de referencia alimentándolos individualmente a través de un pequeño submodelo que produce un punto latente, luego tomando la media de todos los latentes producidos. La experimentación que he realizado ha indicado que estos latentes de puntos son bastante expresivos, lo que afecta todo, desde tono hasta tasa de habla, anormalidades del habla.
Esto se presta a algunos trucos ordenados. Por ejemplo, puede combinar dos voces diferentes para tortuga y generará lo que cree que suena el "promedio" de esas dos voces.
Use el script get_conditioning_latents.py para extraer los latentes de acondicionamiento para una voz que ha instalado. Este script arrojará a los latentes a un archivo .pth Pickle. El archivo contendrá una sola tupla (Autorregressessive_Latent, Diffusion_Latent).
Alternativamente, use el api.textTospeech.get_conditioning_latents () para obtener los latentes.
Después de que haya jugado con ellos, puede usarlos para generar el discurso creando un subdirectorio en voces/ con un solo archivo ".pth" que contiene los latentes de acondicionamiento en escabeche como tupla (Autorregressessive_Latent, difusión_latent).
Por preocupaciones de que este modelo podría ser mal utilizado, he construido un clasificador que le dice la probabilidad de que un clip de audio provenga de tortuga.
Este clasificador se puede ejecutar en cualquier computadora, el uso es el siguiente:
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
Este modelo tiene un 100% de precisión en el contenido de los resultados/ voces/ carpetas en este repositorio. Aún así, trate este clasificador como una "señal fuerte". Los clasificadores se pueden engañar y tampoco es imposible para este clasificador exhibir falsos positivos.
Tortoise TTS está inspirada en Dalle de OpenAi, aplicado a los datos del habla y utilizando un mejor decodificador. Está compuesto por 5 modelos separados que funcionan juntos: https://nonint.com/2022/04/25/tortoise-architectural-doc/