ChatTTS ist ein fortgeschrittenes Text-to-Speech (TTS)-Modell, das speziell für Dialogszenarien entwickelt wurde. Entwickelt vom Team bei 2Noise, zielt dieses Modell darauf ab, eine natürliche und ausdrucksstarke Sprachsynthese zu liefern, was es ideal für Anwendungen wie virtuelle Assistenten, interaktive Sprachantwortsysteme und mehr macht. Dieser Artikel geht darauf ein, was ChatTTS ist, wie es funktioniert und bietet eine umfassende Anleitung zur Installation und Verwendung.
Dann darfst du Anakin AI nicht verpassen!
Anakin AI ist eine All-in-One-Plattform für die Automatisierung deines Arbeitsablaufs. Erstelle leistungsstarke KI-Apps mit dem nutzerfreundlichen No-Code-App-Builder, mit Llama 3, Claude, GPT-4, Uncensored LLMs, Stable Diffusion und mehr.
Erstelle deine Traum-KI-App innerhalb von Minuten, nicht Wochen mit Anakin AI!
Was ist ChatTTS?
ChatTTS ist ein generatives Sprachmodell, das für dialogbasierte Aufgaben optimiert ist. Im Gegensatz zu herkömmlichen TTS-Systemen, die oft roboterhaft klingen und die Fähigkeit fehlen, subtile Elemente menschlicher Sprache zu vermitteln, zeichnet sich ChatTTS durch die Produktion lebensechter Gesprächserfahrungen aus. Es unterstützt sowohl englische als auch chinesische Sprachen und wurde mit mehr als 100.000 Stunden Daten trainiert. Die Open-Source-Version, die auf HuggingFace verfügbar ist, wurde mit 40.000 Stunden Daten trainiert.
Hauptmerkmale von ChatTTS
- Konversationelles TTS: Optimiert für dialogbasierte Aufgaben, ermöglicht natürliche und ausdrucksstarke Sprachsynthese mit Unterstützung für mehrere Sprecher.
- Feinabstimmung: Die Fähigkeit, fein abgestimmte prosodische Merkmale wie Lachen, Pausen und Einwürfe vorherzusagen und zu kontrollieren.
- Verbesserte Prosodie: Übertrifft die meisten Open-Source-TTS-Modelle in Bezug auf Prosodie und liefert eine wirklich natürliche Erfahrung.
Wie funktioniert ChatTTS?
ChatTTS nutzt fortgeschrittene maschinelle Lernalgorithmen, um Sprache zu erzeugen, die menschliche Konversation imitiert. Das Modell ist darauf ausgelegt, die Feinheiten des Dialogs zu behandeln, einschließlich Intonation, Pausen und emotionaler Ausdrücke. Hier ist eine Aufschlüsselung seiner Kernkomponenten:
Modellarchitektur von ChatTTS
ChatTTS verwendet eine Kombination aus autoregressiven und nicht-autoregressiven Modellen zur Generierung von Sprache. Die autoregressive Komponente hilft dabei, den Gesprächsfluss aufrechtzuerhalten, während der nicht-autoregressive Teil sicherstellt, dass die Sprache schnell und effizient generiert wird.
Trainingsdaten von ChatTTS
Das Modell wird auf einem massiven Datensatz trainiert, der mehr als 100.000 Stunden englische und chinesische Sprache umfasst. Dieses umfangreiche Training ermöglicht es ChatTTS, die Feinheiten des menschlichen Dialogs zu verstehen und wiederzugeben.
Feinabstimmung
Eines der herausragenden Merkmale von ChatTTS ist seine Fähigkeit zur Steuerung feinabgestimmter prosodischer Merkmale. Dadurch kann es Lachen, Pausen und andere Einwürfe an geeigneten Stellen einfügen, was dazu führt, dass die generierte Sprache natürlicher und ansprechender klingt.
Wie man ChatTTS verwendet: Ein Schritt-für-Schritt-Anleitung
ChatTTS ist eine leistungsstarke Text-to-Speech-Bibliothek, mit der du hochwertigen Ton aus Texteingabe generieren kannst. Es bietet eine einfache und intuitive API, um die Sprachsynthese in deine Python-Projekte zu integrieren. In diesem Abschnitt werden wir erkunden, wie man ChatTTS mit Codebeispielen und Schritt-für-Schritt-Anleitungen verwendet.
ChatTTS installieren
Um mit ChatTTS zu beginnen, musst du die erforderlichen Abhängigkeiten installieren. Führe den folgenden Befehl aus, um die erforderlichen Pakete zu installieren:
pip install omegaconf torch tqdm einops vector_quantize_pytorch transformers vocos IPython
Importiere dann die erforderlichen Module in dein Python-Skript:
import torch
import ChatTTS
from IPython.display import Audio
Setze die folgenden Konfigurationsoptionen für PyTorch:
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')
Modelle mit ChatTTS laden
Erstelle eine Instanz der Klasse ChatTTS.Chat
und lade die vorab trainierten Modelle:
chat = ChatTTS.Chat()
chat.load_models()
Wenn die Modellgewichte aktualisiert wurden, verwende den Parameter force_redownload=True
:
chat.load_models(force_redownload=True)
Wenn du die Gewichte manuell heruntergeladen hast, gib den lokalen Pfad mit den Parametern source
und local_path
an:
chat.load_models(source='local', local_path='DEIN LOKALER PFAD')
Wie man ChatTTS-Inferenz verwendet
Batch-Inferenz mit ChatTTS
Du kannst eine Batch-Inferenz durchführen, indem du eine Liste von Texten an die Methode infer
übergibst:
texts = ["So haben wir festgestellt, dass Wettbewerbsfähigkeit und Zusammenarbeit eine große Motivationsquelle für unsere Ziele sind. Eine Person anzurufen, wenn du scheiterst, eine Person, die dich wieder auf den richtigen Weg bringt, und dann eine Person, mit der du die Aktivität tatsächlich durchführst.",]*3 \
+ ["Als Programmierer haben wir alle eine Vorliebe für Open Source, oder? Ich meine, es ist einfach ein so cooles Konzept. Aber hier ist die Sache - alle wirklich innovativen, bahnbrechenden Technologien? Sie werden von diesen großen Unternehmen gehortet, und sie werden sie sicherlich nicht so schnell mit dem Rest von uns teilen."]*3
wavs = chat.infer(texts)
Du kannst dann den generierten Ton mit der Funktion Audio
von IPython abspielen:
Audio(wavs[0], rate=24_000, autoplay=True)
Audio(wavs[3], rate=24_000, autoplay=True)
Verwendung von benutzerdefinierten Parametern mit ChatTTS
Du kannst die Inferenzparameter anpassen, indem du params_infer_code
und params_refine_text
angibst:
params_infer_code = {'prompt':'[speed_5]', 'temperature':.3}
params_refine_text = {'prompt':'[oral_2][laugh_0][break_6]'}
wav = chat.infer('Einige der besten Restaurants in Singapur sind das mit drei Michelin-Sternen ausgezeichnete Odette, bekannt für seine exquisite französische Küche, das Restaurant Labyrinth, das innovative moderne Singapurische Gerichte serviert, und Cloudstreet, ein modernes Restaurant mit zwei Michelin-Sternen von Küchenchef Rishi Naleendra.', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
Verwendung eines zufälligen Sprechers mit ChatTTS
Du kannst Audio mit einem zufälligen Sprecher generieren, indem du eine zufällige Sprecher-Einbettung abrufst:
rand_spk = chat.sample_random_speaker()
params_infer_code = {'spk_emb' : rand_spk, }
wav = chat.infer('Einige der bekanntesten und beliebtesten Gerichte in Singapur sind Hühnchenreis, wobei Tian Tian eines der bekanntesten ist, Chili-Krabben, wobei Restaurants wie Jumbo Seafood sehr beliebt sind, und Peranakan-Küche, wobei das mit einem Michelin-Stern ausgezeichnete Candlenut-Restaurant ein Top-Spot ist, um authentische Peranakan-Aromen zu probieren.', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
Zweistufige Steuerung mit ChatTTS implementieren
ChatTTS ermöglicht es dir, die Textverfeinerung und die Audiogenerierung separat mit den Parametern refine_text_only
und skip_refine_text
zu steuern:
text = "So haben wir festgestellt, dass Wettbewerbsfähigkeit und Zusammenarbeit eine große Motivationsquelle für unsere Ziele sind. Eine Person anzurufen, wenn du scheiterst, eine Person, die dich wieder auf den richtigen Weg bringt, und dann eine Person, mit der du die Aktivität tatsächlich durchführst."
chat.infer(text, refine_text_only=True)
text = 'Also haben wir festgestellt, dass Wettbewerbsfähigkeit und Zusammenarbeit eine große Motivationsquelle [uv_break] für unsere Ziele sind. Also [uv_break] eine Person, die dich anruft, [uv_break] wenn du scheiterst, eine Person, [uv_break] die dich wieder auf den richtigen Weg bringt, [uv_break] und dann eine Person, [uv_break] mit der du die Aktivität [uv_break] tatsächlich durchführst.'
wav = chat.infer(text, skip_refine_text=True)
Integration von LLMs mit ChatTTS
ChatTTS kann mit Sprachmodellen (LLMs) integriert werden, um Text auf der Grundlage von Benutzerfragen zu generieren. Hier ist ein Beispiel mit der DeepSeek-API:
from ChatTTS.experimental.llm import llm_api
API_KEY = ''
client = llm_api(api_key=API_KEY,
base_url="https://api.deepseek.com",
model="deepseek-chat")
user_question = 'Was sind die besten Restaurants in Singapur?'
text = client.call(user_question, prompt_version = 'deepseek')
print(text)
text = client.call(text, prompt_version = 'deepseek_TN')
print(text)
Du kannst dann Audio mit dem generierten Text generieren:
params_infer_code = {'spk_emb' : rand_spk, 'temperature':.3}
wav = chat.infer(text, params_infer_code=params_infer_code)
Verwendung der ChatTTS-Webbenutzeroberfläche
ChatTTS bietet auch eine webbasierte Benutzeroberfläche zum Generieren von Audio. Du kannst die Webbenutzeroberfläche mithilfe des Skripts webui.py
starten:
python webui.py --server_name 0.0.0.0 --server_port 8080 --local_path /path/to/local/models
Mit der Webbenutzeroberfläche kannst du interaktiv Text eingeben, Parameter anpassen und Audio generieren.
Das ist es! Du hast jetzt eine umfassende Anleitung, wie du ChatTTS in Python verwendest. Mit diesen Beispielen und Schritten kannst du ChatTTS in deine Projekte integrieren und hochwertige Sprache aus Texteingabe generieren. Fühle dich frei, weitere fortgeschrittene Funktionen zu erkunden und mit verschiedenen Parametern zu experimentieren, um das generierte Audio an deine Bedürfnisse anzupassen.
Fazit
ChatTTS ist ein bahnbrechendes Text-to-Speech-Modell, das der Konversations-KI eine neue Realitätsstufe verleiht. Mit seiner Fähigkeit, mehrere Sprachen zu unterstützen, feinabgestimmte Steuerung über prosodische Merkmale und Unterstützung für mehrere Sprecher ist es ein leistungsstarkes Werkzeug für Entwickler und Forscher gleichermaßen. Indem du den Installations- und Verwendungsrichtlinien folgst, kannst du ChatTTS für deine eigenen Projekte nutzen und zur laufenden Entwicklung dieser aufregenden Technologie beitragen.