Tortoise es un programa de conversión de texto a voz creado con las siguientes prioridades:
Este repositorio contiene todo el código necesario para ejecutar Tortoise TTS en modo de inferencia.
Manuscrito: https://arxiv.org/abs/2305.07243
Se ofrece una demostración en vivo en Hugging Face Spaces. Si desea evitar una cola, duplique el espacio y agregue una GPU. Tenga en cuenta que los espacios solo para CPU no funcionan para esta demostración.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
Si desea instalar la última versión de desarrollo, también puede instalarla directamente desde el repositorio de git:
pip install git+https://github.com/neonbjb/tortoise-tts
Voy a nombrar mis repositorios relacionados con el discurso en honor a la flora y fauna del desierto de Mojave. La tortuga es un poco irónica: este modelo es increíblemente lento. Aprovecha tanto un decodificador autorregresivo como un decodificador de difusión; ambos conocidos por sus bajas tasas de muestreo. En un K80, espere generar una oración de tamaño mediano cada 2 minutos.
bueno... ya no es tan lento, ahora podemos obtener un RTF de 0,25-0,3 en 4 GB de vram y con la transmisión podemos obtener una latencia < 500 ms .
Consulte esta página para obtener una lista grande de resultados de ejemplo.
Una aplicación interesante de Tortoise + GPT-3 (no afiliada a este repositorio): https://twitter.com/lexman_ai. Desafortunadamente, este proyecto parece ya no estar activo.
Si desea utilizar esto en su propia computadora, debe tener una GPU NVIDIA.
Consejo
En Windows, recomiendo utilizar el método de instalación Conda. Me han dicho que si no haces esto, pasarás mucho tiempo persiguiendo problemas de dependencia.
Primero, instale miniconda: https://docs.conda.io/en/latest/miniconda.html
Luego ejecute los siguientes comandos, usando el indicador anaconda como terminal (o cualquier otro terminal configurado para funcionar con conda)
Esto:
conda create --name tortoise python=3.9 numba inflect
conda activate tortoise
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install transformers=4.29.2
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install
Opcionalmente, pytorch se puede instalar en el entorno base, para que otros entornos conda también puedan usarlo. Para hacer esto, simplemente envíe la línea conda install pytorch...
antes de activar el entorno tortuga.
Nota
Cuando desee utilizar tortoise-tts, siempre deberá asegurarse de que el entorno tortoise
conda esté activado.
Si está en Windows, es posible que también necesite instalar pysoundfile: conda install -c conda-forge pysoundfile
Una manera fácil de comenzar a trabajar y un buen punto de partida dependiendo de su caso de uso.
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
docker build . -t tts
docker run --gpus all
-e TORTOISE_MODELS_DIR=/models
-v /mnt/user/data/tortoise_tts/models:/models
-v /mnt/user/data/tortoise_tts/results:/results
-v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface
-v /root:/work
-it tts
Esto le brinda una terminal interactiva en un entorno que está listo para realizar algunos tts. Ahora puedes explorar las diferentes interfaces que expone tortuga para tts.
Por ejemplo:
cd app
conda activate tortoise
time python tortoise/do_tts.py
--output_path /results
--preset ultra_fast
--voice geralt
--text " Time flies like an arrow; fruit flies like a bananna. "
En macOS 13+ con chips M1/M2 necesitas instalar la versión cercana de PyTorch, como se indica en la página oficial, puedes hacer:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Asegúrate de hacerlo después de activar el entorno. Si no usas conda, los comandos se verían así:
python3.10 -m venv .venv
source .venv/bin/activate
pip install numba inflect psutil
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
pip install transformers
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
pip install .
Tenga en cuenta que DeepSpeed está desactivado en Apple Silicon porque no funciona. La bandera --use_deepspeed
se ignora. Es posible que deba anteponer PYTORCH_ENABLE_MPS_FALLBACK=1
a los siguientes comandos para que funcionen, ya que MPS no admite todas las operaciones en Pytorch.
Este script te permite pronunciar una sola frase con una o más voces.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
escuchará en el puerto 5000
Este script proporciona herramientas para leer grandes cantidades de texto.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
Este script proporciona herramientas para leer grandes cantidades de texto.
python tortoise/read.py --textfile < your text to be read > --voice random
Esto dividirá el archivo de texto en oraciones y luego las convertirá en voz de una en una. Generará una serie de clips hablados a medida que se generen. Una vez que se generan todos los clips, los combinará en un solo archivo y también lo generará.
A veces, Tortoise arruina una salida. Puede volver a generar cualquier clip defectuoso volviendo a ejecutar read.py
con el argumento --regenerate.
Tortoise se puede utilizar mediante programación, 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' )
Para usar velocidad profunda:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
Para usar caché kv:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( kv_cache = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
Para ejecutar el modelo en float16:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
para carreras más rápidas use los tres:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True , kv_cache = True , half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
Este proyecto ha recibido más elogios de los que esperaba. Sin embargo, estoy sobre los hombros de gigantes y quiero dar crédito a algunas de las personas increíbles de la comunidad que han ayudado a que esto suceda:
Tortoise fue construida íntegramente por el autor (James Betker) utilizando su propio hardware. Su empleador no participó en ninguna faceta del desarrollo de Tortoise.
Tortoise TTS tiene la licencia Apache 2.0.
Si utiliza este repositorio o las ideas que contiene para su investigación, ¡cítelo! Se puede encontrar una entrada de bibtex en el panel derecho de GitHub.