Tortoise est un programme de synthèse vocale construit avec les priorités suivantes :
Ce dépôt contient tout le code nécessaire pour exécuter Tortoise TTS en mode inférence.
Manuscrit : https://arxiv.org/abs/2305.07243
Une démo en direct est hébergée sur Hugging Face Spaces. Si vous souhaitez éviter une file d'attente, veuillez dupliquer l'espace et ajouter un GPU. Veuillez noter que les espaces réservés au processeur ne fonctionnent pas pour cette démo.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
Si vous souhaitez installer la dernière version de développement, vous pouvez également l'installer directement depuis le dépôt git :
pip install git+https://github.com/neonbjb/tortoise-tts
Je nomme mes dépôts liés au discours d'après la flore et la faune du désert de Mojave. La tortue est un peu ironique : ce modèle est incroyablement lent. Il exploite à la fois un décodeur autorégressif et un décodeur de diffusion ; tous deux connus pour leurs faibles taux d’échantillonnage. Sur un K80, attendez-vous à générer une phrase de taille moyenne toutes les 2 minutes.
eh bien..... plus si lent maintenant, nous pouvons obtenir un RTF de 0,25 à 0,3 sur 4 Go de vram et avec le streaming, nous pouvons obtenir une latence < 500 ms !!!
Consultez cette page pour une grande liste d’exemples de sorties.
Une application sympa de Tortoise + GPT-3 (non affiliée à ce référentiel) : https://twitter.com/lexman_ai. Malheureusement, ce projet ne semble plus être actif.
Si vous souhaitez l'utiliser sur votre propre ordinateur, vous devez disposer d'un GPU NVIDIA.
Conseil
Sous Windows, je recommande fortement d'utiliser la méthode d'installation Conda. On m’a dit que si vous ne le faites pas, vous passerez beaucoup de temps à rechercher des problèmes de dépendance.
Tout d'abord, installez miniconda : https://docs.conda.io/en/latest/miniconda.html
Exécutez ensuite les commandes suivantes, en utilisant l'invite anaconda comme terminal (ou tout autre terminal configuré pour fonctionner avec conda)
Cela va :
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
En option, pytorch peut être installé dans l'environnement de base, afin que d'autres environnements conda puissent également l'utiliser. Pour ce faire, envoyez simplement la ligne conda install pytorch...
avant d'activer l'environnement tortue.
Note
Lorsque vous souhaitez utiliser tortoise-tts, vous devrez toujours vous assurer que l'environnement tortoise
conda est activé.
Si vous êtes sous Windows, vous devrez peut-être également installer pysoundfile : conda install -c conda-forge pysoundfile
Un moyen simple de démarrer et un bon point de départ en fonction de votre cas d’utilisation.
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
Cela vous donne un terminal interactif dans un environnement prêt à faire quelques tts. Vous pouvez maintenant explorer les différentes interfaces exposées par la tortue pour tts.
Par exemple:
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. "
Sur macOS 13+ avec puces M1/M2, vous devez installer la version nocturne de PyTorch, comme indiqué sur la page officielle, vous pouvez le faire :
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Assurez-vous de le faire après avoir activé l'environnement. Si vous n'utilisez pas conda, les commandes ressembleraient à ceci :
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 .
Sachez que DeepSpeed est désactivé sur Apple Silicon puisqu'il ne fonctionne pas. L'indicateur --use_deepspeed
est ignoré. Vous devrez peut-être ajouter PYTORCH_ENABLE_MPS_FALLBACK=1
aux commandes ci-dessous pour les faire fonctionner car MPS ne prend pas en charge toutes les opérations dans Pytorch.
Ce script vous permet de prononcer une seule phrase avec une ou plusieurs voix.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
j'écouterai au port 5000
Ce script fournit des outils pour lire de grandes quantités de texte.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
Ce script fournit des outils pour lire de grandes quantités de texte.
python tortoise/read.py --textfile < your text to be read > --voice random
Cela divisera le fichier texte en phrases, puis les convertira en parole une par une. Il produira une série de clips parlés au fur et à mesure de leur génération. Une fois tous les clips générés, il les combinera en un seul fichier et le produira également.
Parfois, Tortoise gâche une sortie. Vous pouvez régénérer tous les clips défectueux en réexécutant read.py
avec l'argument --regenerate.
Tortoise peut être utilisé par programmation, comme ceci :
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' )
Pour utiliser la vitesse profonde :
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' )
Pour utiliser le 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' )
Pour exécuter le modèle dans 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' )
pour des courses plus rapides, utilisez les trois :
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' )
Ce projet a reçu plus d’éloges que prévu. Cependant, je me tiens sur les épaules de géants et je tiens à remercier quelques-unes des personnes extraordinaires de la communauté qui ont contribué à ce que cela se produise :
Tortoise a été entièrement construit par l'auteur (James Betker) en utilisant son propre matériel. Leur employeur n'était impliqué dans aucune facette du développement de Tortoise.
Tortoise TTS est sous licence Apache 2.0.
Si vous utilisez ce dépôt ou les idées qu'il contient pour votre recherche, veuillez le citer ! Une entrée Bibtex peut être trouvée dans le volet de droite sur GitHub.