Tortoise é um programa de conversão de texto em fala construído com as seguintes prioridades:
Este repositório contém todo o código necessário para executar o Tortoise TTS no modo de inferência.
Manuscrito: https://arxiv.org/abs/2305.07243
Uma demonstração ao vivo está hospedada no Hugging Face Spaces. Se quiser evitar fila, duplique o Espaço e adicione uma GPU. Observe que os espaços somente de CPU não funcionam para esta demonstração.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
Se desejar instalar a versão de desenvolvimento mais recente, você também pode instalá-la diretamente do repositório git:
pip install git+https://github.com/neonbjb/tortoise-tts
Estou nomeando meus repositórios relacionados à fala em homenagem à flora e fauna do deserto de Mojave. A tartaruga é um pouco irônica: este modelo é incrivelmente lento. Ele utiliza um decodificador autorregressivo e um decodificador de difusão; ambos conhecidos por suas baixas taxas de amostragem. Em um K80, espere gerar uma frase de tamanho médio a cada 2 minutos.
bem..... não é mais tão lento agora podemos obter um RTF de 0,25-0,3 em vram de 4 GB e com streaming podemos obter latência < 500 ms !!!
Consulte esta página para obter uma grande lista de exemplos de resultados.
Um aplicativo legal do Tortoise + GPT-3 (não afiliado a este repositório): https://twitter.com/lexman_ai. Infelizmente, este projeto parece não estar mais ativo.
Se quiser usar isso em seu próprio computador, você deve ter uma GPU NVIDIA.
Dica
No Windows, recomendo fortemente usar o método de instalação Conda. Disseram-me que, se você não fizer isso, perderá muito tempo perseguindo problemas de dependência.
Primeiro, instale o miniconda: https://docs.conda.io/en/latest/miniconda.html
Em seguida, execute os seguintes comandos, usando o prompt do anaconda como terminal (ou qualquer outro terminal configurado para funcionar com conda)
Isto irá:
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, o pytorch pode ser instalado no ambiente base, para que outros ambientes conda também possam utilizá-lo. Para fazer isso, basta enviar a linha conda install pytorch...
antes de ativar o ambiente tartaruga.
Observação
Quando você quiser usar o tortoise-tts, você sempre terá que garantir que o ambiente tortoise
conda esteja ativado.
Se você estiver no Windows, também pode precisar instalar o pysoundfile: conda install -c conda-forge pysoundfile
Uma maneira fácil de começar a correr e um bom ponto de partida, dependendo do seu 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
Isso fornece um terminal interativo em um ambiente pronto para fazer algumas tarefas. Agora você pode explorar as diferentes interfaces que o tortoise expõe para o tts.
Por exemplo:
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. "
No macOS 13+ com chips M1/M2 você precisa instalar a versão Nighly do PyTorch, conforme indicado na página oficial que você pode fazer:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Certifique-se de fazer isso depois de ativar o ambiente. Se você não usar conda, os comandos ficariam assim:
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 .
Esteja ciente de que o DeepSpeed está desativado no Apple Silicon porque não funciona. A sinalização --use_deepspeed
é ignorada. Pode ser necessário acrescentar PYTORCH_ENABLE_MPS_FALLBACK=1
aos comandos abaixo para fazê-los funcionar, pois o MPS não oferece suporte a todas as operações no Pytorch.
Este script permite que você fale uma única frase com uma ou mais vozes.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
escutará na porta 5000
Este script fornece ferramentas para leitura de grandes quantidades de texto.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
Este script fornece ferramentas para leitura de grandes quantidades de texto.
python tortoise/read.py --textfile < your text to be read > --voice random
Isso dividirá o arquivo de texto em frases e depois as converterá em fala, uma de cada vez. Ele produzirá uma série de clipes falados à medida que são gerados. Depois que todos os clipes forem gerados, ele irá combiná-los em um único arquivo e produzi-lo também.
Às vezes, o Tortoise estraga uma saída. Você pode gerar novamente quaisquer clipes ruins executando novamente read.py
com o argumento --regenerate.
O Tortoise pode ser usado programaticamente, assim:
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 a velocidade 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 o cache 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 executar o modelo em 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 execuções mais rápidas, use todos os três:
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 projeto recebeu mais elogios do que eu esperava. No entanto, estou apoiado nos ombros de gigantes e quero dar crédito a algumas das pessoas incríveis da comunidade que ajudaram a fazer isso acontecer:
O Tortoise foi construído inteiramente pelo autor (James Betker) usando hardware próprio. Seu empregador não estava envolvido em nenhuma faceta do desenvolvimento do Tortoise.
O Tortoise TTS é licenciado sob a licença Apache 2.0.
Se você usar este repositório ou as ideias nele contidas para sua pesquisa, cite-o! Uma entrada bibtex pode ser encontrada no painel direito do GitHub.