Allgemeine Einführung
F5-TTS ist ein neuartiges nicht-autoregressives Text-to-Speech (TTS)-System, das auf einem Stream-matched Diffusion Transformer (DiT) basiert. Das System verbessert die Synthesequalität und -effizienz erheblich, indem es das ConvNeXt-Modell verwendet, um die Textdarstellung zu optimieren und die Anpassung an die Sprache zu erleichtern. F5-TTS unterstützt das Training auf mehrsprachigen Datensätzen mit sehr natürlichen und ausdrucksstarken Null-Sample-Fähigkeiten, nahtlosem Code-Wechsel und Effizienz bei der Geschwindigkeitskontrolle. Das Projekt ist quelloffen und zielt darauf ab, die Entwicklung in der Gemeinschaft zu fördern.
Dieses Modell verzichtet auf die komplexen Module traditioneller TTS-Systeme, wie z.B. Dauer-Modelle, Phonem-Alignment und Text-Encoder, und erreicht stattdessen die Spracherzeugung durch Auffüllen des Textes auf die gleiche Länge wie die Eingangssprache und die Anwendung von Entrauschungsmethoden.
Eine der wichtigsten Innovationen des F5-TTS ist Sway-Probenahme Strategie, die die Effizienz in der Inferenzphase erheblich verbessert und Echtzeitverarbeitungsmöglichkeiten ermöglicht. Diese Funktion eignet sich für Szenarien, die eine schnelle Sprachsynthese erfordern, wie z. B. Sprachassistenten und interaktive Sprachsysteme.
F5-TTS-Unterstützung Null-Proben-SprachklonenEs bietet auch die Möglichkeit, eine breite Palette von Stimmen und Akzenten zu erzeugen, ohne dass große Mengen von Trainingsdaten benötigt werden. emotionale Kontrolle im Gesang antworten Geschwindigkeitsanpassung Merkmale. Mit seiner starken Unterstützung für mehrere Sprachen eignet sich das System besonders gut für Anwendungen, die die Erstellung unterschiedlicher Audioinhalte erfordern, wie z. B. Hörbücher, E-Learning-Module und Marketingmaterialien.
Funktionsliste
- Text-zu-Sprache-Umwandlung: Wandeln Sie den eingegebenen Text in natürliche und flüssige Sprache um.
- Zero-Sample-Generierung: Generieren Sie qualitativ hochwertige Sprache ohne vorab aufgenommene Samples.
- Emotionale Reproduktion: Unterstützung bei der Erzeugung von Sprache mit Emotionen.
- Geschwindigkeitskontrolle: Der Benutzer kann die Geschwindigkeit der Spracherzeugung steuern.
- Mehrsprachige Unterstützung: unterstützt die Spracherzeugung in mehreren Sprachen.
- Offener Quellcode: Vollständiger Code und Modellprüfpunkte werden zur Verfügung gestellt, um die Nutzung und Entwicklung durch die Gemeinschaft zu erleichtern.
Hilfe verwenden
Ablauf der Installation
conda create -n f5-tts python=3.10 conda activate f5-tts sudo apt update sudo apt install -y ffmpeg pip uninstall torch torchvision torchaudio transformers # PyTorch installieren (mit CUDA-Unterstützung) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # Transformatoren installieren pip install transformers git clone https://github.com/SWivid/F5-TTS.git cd F5-TTS pip install -e . # Starten einer Gradio-Anwendung (Weboberfläche) f5-tts_infer-gradio # Geben Sie den Port/Host an f5-tts_infer-gradio --port 7860 --host 0.0.0.0 # Starten einer Freigabeverbindung f5-tts_infer-gradio --share
F5-TTS Ein-Klick-Installationsbefehl
conda create -n f5-tts python=3.10 -y && \ conda activate f5-tts && \\ sudo apt update && sudo apt install -y ffmpeg && \ pip uninstall -y torch torchvision torchaudio transformers && \ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 transformers && \ git clone https://github.com/SWivid/F5-TTS.git && \ \ cd F5-TTS && \ pip install -e . pip install -e . && \ f5-tts_infer-gradio --port 7860 --host 0.0.0.0
F5-TTS google Colab läuft
Hinweis: Die ngrok-Registrierung ist erforderlich, um einen Schlüssel für die Intranet-Penetration zu beantragen.
!pip install pyngrok transformers gradio # Importieren Sie die erforderlichen Bibliotheken os importieren von pyngrok importieren ngrok !apt-get update && apt-get install -y ffmpeg !pip uninstall -y torch torchvision torchaudio transformers !pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 transformers # Klonen und installieren Sie das Projekt !git clone https://github.com/SWivid/F5-TTS.git F5-TTS !pip install -e . !ngrok config add-authtoken 2hKI7tLqJVdnbgM8pxM4nyYP7kQ_3vL3RWtqXQUUdwY5JE4nj # Konfigurieren von ngrok und gradio importiere gradio als gr von pyngrok importieren ngrok importieren threading importiere Zeit importieren Socket importiere Anfragen def is_port_in_use(port): with socket.socket(socket.AF_INET, socket. with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:: return s.connect_ex(('localhost', port)) == 0 return s.connect_ex(('localhost', port)) == 0 def wait_for_server(port, timeout=60): start_time = time. start_time = time.time() while time.time() - start_time < timeout. if is_port_in_use(port). start_time = time. response = requests.get(f'http://localhost:{port}') if response.status_code == 200:: if response.status_code == 200 return True außer. pass time.sleep(2) return False # Stellen Sie sicher, dass ngrok nicht läuft ngrok.kill() # Gradio in einem neuen Thread starten def run_gradio(): import sys importiere f5_tts.infer.infer_gradio sys.argv = ['f5-tts_infer-gradio', '--port', '7860', '--host', '0.0.0.0'] f5_tts.infer.infer_gradio.main() thread = threading.Thread(target=run_gradio) thread.daemon = True thread.start() # Warten auf den Start des Gradio-Dienstes print("Warten auf den Start des Gradio-Dienstes...") print("Warten auf den Start des Gradio-Dienstes...") if wait_for_server(7860). print("Gradio-Dienst gestartet") # Start von ngrok public_url = ngrok.connect(7860) print(f"\n=== Zugangsinformationen ===") print(f "Ngrok URL: {public_url}") print("===============\n") print(f "Ngrok-URL: {öffentliche_URL}") print("Zeitüberschreitung beim Start des Gradio-Dienstes") # Die Anwendung weiterlaufen lassen while True. time.sleep(1) time.sleep(1) except KeyboardInterrupt: ngrok.kill() ngrok.kill() ngrok.kill() !f5-tts_infer-cli \ ---model "F5-TTS" \\ --ref_audio "/content/test.MP3" \ --ref_text "Willkommen im Chief AI Sharing Circle,Microsoft hat OmniParser veröffentlicht, ein großes, modellbasiertes Screen-Parsing-Tool.Dieses Tool wurde entwickelt, um die Automatisierung der Benutzeroberfläche zu verbessern." \ --gen_text "Willkommen im Chief AI Sharing Circle, heute wird eine ausführliche Demonstration eines weiteren Open-Source-Sprachklonprojekts gezeigt."
Verwendung Prozess
Ausbildungsmodelle
- Konfigurieren Sie die Beschleunigungseinstellungen, z. B. die Verwendung mehrerer GPUs und FP16:
Konfiguration beschleunigen
- Ausbildung einleiten:
Beschleunigen Sie den Start von test_train.py
Inferenz
- Laden Sie vorab trainierte Modellprüfpunkte herunter.
- Einzige Begründung:
- Ändern Sie die Konfigurationsdatei, um die Anforderungen zu erfüllen, z. B. feste Dauer und Schrittgröße:
python test_infer_single.py
- Ändern Sie die Konfigurationsdatei, um die Anforderungen zu erfüllen, z. B. feste Dauer und Schrittgröße:
- Begründung der Charge:
- Bereiten Sie den Testdatensatz vor und aktualisieren Sie den Pfad:
bash test_infer_batch.sh
- Bereiten Sie den Testdatensatz vor und aktualisieren Sie den Pfad:
Detaillierte Vorgehensweise
- Text-zu-Sprache-Umwandlung::
- Sobald der Text eingegeben ist, wandelt das System ihn automatisch in Sprache um, und der Benutzer kann verschiedene Sprachstile und Emotionen auswählen.
- Erzeugung von Nullproben::
- Der Benutzer muss keine voraufgezeichneten Hörproben zur Verfügung stellen, und das System erzeugt auf der Grundlage des eingegebenen Textes qualitativ hochwertige Sprache.
- emotionale Reproduktion::
- Der Benutzer kann verschiedene Emotionsbezeichnungen auswählen, und das System erzeugt Sprache mit der entsprechenden Emotion.
- Geschwindigkeitskontrolle::
- Der Benutzer kann die Geschwindigkeit der Spracherzeugung steuern, indem er die Parameter an die Anforderungen der verschiedenen Szenarien anpasst.
- Mehrsprachige Unterstützung::
- Das System unterstützt die Spracherzeugung in mehreren Sprachen, und die Benutzer können je nach Bedarf verschiedene Sprachen auswählen.