Tortoise ist ein Text-to-Speech-Programm, das mit den folgenden Prioritäten erstellt wurde:
Dieses Repo enthält den gesamten Code, der zum Ausführen von Tortoise TTS im Inferenzmodus erforderlich ist.
Manuskript: https://arxiv.org/abs/2305.07243
Eine Live-Demo wird auf Hugging Face Spaces gehostet. Wenn Sie eine Warteschlange vermeiden möchten, duplizieren Sie bitte den Space und fügen Sie eine GPU hinzu. Bitte beachten Sie, dass reine CPU-Speicherplätze für diese Demo nicht funktionieren.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
Wenn Sie die neueste Entwicklungsversion installieren möchten, können Sie diese auch direkt aus dem Git-Repository installieren:
pip install git+https://github.com/neonbjb/tortoise-tts
Ich benenne meine sprachbezogenen Repos nach der Flora und Fauna der Mojave-Wüste. Tortoise ist etwas ironisch: Dieses Modell ist wahnsinnig langsam. Es nutzt sowohl einen autoregressiven Decoder als auch einen Diffusionsdecoder; beide sind für ihre niedrigen Abtastraten bekannt. Erwarten Sie auf einem K80, dass alle 2 Minuten ein mittelgroßer Satz generiert wird.
Naja..... nicht mehr so langsam, jetzt können wir ein 0,25-0,3 RTF auf 4 GB VRAM bekommen und mit Streaming können wir eine Latenz von < 500 ms erreichen!!!
Auf dieser Seite finden Sie eine umfangreiche Liste von Beispielausgaben.
Eine coole Anwendung von Tortoise + GPT-3 (nicht mit diesem Repository verbunden): https://twitter.com/lexman_ai. Leider scheint dieses Projekt nicht mehr aktiv zu sein.
Wenn Sie dies auf Ihrem eigenen Computer verwenden möchten, müssen Sie über eine NVIDIA-GPU verfügen.
Tipp
Unter Windows empfehle ich dringend die Verwendung der Conda-Installationsmethode. Mir wurde gesagt, dass Sie viel Zeit damit verbringen werden, Abhängigkeitsproblemen nachzujagen, wenn Sie dies nicht tun.
Installieren Sie zunächst Miniconda: https://docs.conda.io/en/latest/miniconda.html
Führen Sie dann die folgenden Befehle aus und verwenden Sie dabei die Anaconda-Eingabeaufforderung als Terminal (oder ein anderes Terminal, das für die Arbeit mit Conda konfiguriert ist).
Dies wird:
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
Optional kann Pytorch in der Basisumgebung installiert werden, sodass es auch von anderen Conda-Umgebungen verwendet werden kann. Senden Sie dazu einfach die Zeile conda install pytorch...
bevor Sie die Tortoise-Umgebung aktivieren.
Notiz
Wenn Sie tortoise-tts verwenden möchten, müssen Sie immer sicherstellen, dass die tortoise
Conda-Umgebung aktiviert ist.
Wenn Sie Windows verwenden, müssen Sie möglicherweise auch pysoundfile installieren: conda install -c conda-forge pysoundfile
Eine einfache Möglichkeit, sofort durchzustarten und je nach Anwendungsfall ein guter Ausgangspunkt.
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
Dadurch erhalten Sie ein interaktives Terminal in einer Umgebung, die für einige Aufgaben bereit ist. Jetzt können Sie die verschiedenen Schnittstellen erkunden, die Tortoise für TTS bereitstellt.
Zum Beispiel:
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. "
Auf macOS 13+ mit M1/M2-Chips müssen Sie die nächsthöhere Version von PyTorch installieren, wie auf der offiziellen Seite angegeben, können Sie Folgendes tun:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Tun Sie dies unbedingt, nachdem Sie die Umgebung aktiviert haben. Wenn Sie Conda nicht verwenden, würden die Befehle so aussehen:
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 .
Beachten Sie, dass DeepSpeed auf Apple Silicon deaktiviert ist, da es nicht funktioniert. Das Flag --use_deepspeed
wird ignoriert. Möglicherweise müssen Sie den folgenden Befehlen PYTORCH_ENABLE_MPS_FALLBACK=1
voranstellen, damit sie funktionieren, da MPS nicht alle Vorgänge in Pytorch unterstützt.
Mit diesem Skript können Sie eine einzelne Phrase mit einer oder mehreren Stimmen sprechen.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
wird an Port 5000 lauschen
Dieses Skript bietet Tools zum Lesen großer Textmengen.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
Dieses Skript bietet Tools zum Lesen großer Textmengen.
python tortoise/read.py --textfile < your text to be read > --voice random
Dadurch wird die Textdatei in Sätze zerlegt und diese dann einzeln in Sprache umgewandelt. Es wird eine Reihe gesprochener Clips ausgegeben, sobald diese generiert werden. Sobald alle Clips generiert sind, werden sie in einer einzigen Datei zusammengefasst und auch ausgegeben.
Manchmal vermasselt Tortoise einen Ausgang. Sie können fehlerhafte Clips neu generieren, indem Sie read.py
mit dem Argument --regenerate erneut ausführen.
Tortoise kann programmgesteuert verwendet werden, etwa so:
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' )
So verwenden Sie Deepspeed:
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' )
So verwenden Sie den KV-Cache:
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' )
So führen Sie das Modell in float16 aus:
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' )
Für schnellere Läufe verwenden Sie alle drei:
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' )
Dieses Projekt hat mehr Lob erhalten, als ich erwartet hatte. Ich stehe jedoch auf den Schultern von Giganten und möchte einigen der großartigen Leute in der Community danken, die dazu beigetragen haben, dass dies möglich wurde:
Tortoise wurde vollständig vom Autor (James Betker) mit eigener Hardware erstellt. Ihr Arbeitgeber war an keinerlei Aspekt der Entwicklung von Tortoise beteiligt.
Tortoise TTS ist unter der Apache 2.0-Lizenz lizenziert.
Wenn Sie dieses Repo oder die darin enthaltenen Ideen für Ihre Forschung verwenden, zitieren Sie es bitte! Eine Bibtex-Einleitung finden Sie im rechten Bereich auf GitHub.