Ein generatives Sprachmodell für den täglichen Dialog.
Englisch |简体中文|日本語| Russisch | Spanisch | Französisch | 한국어
Notiz
Dieses Repo enthält die Algorithmus-Infrastruktur und einige einfache Beispiele.
Tipp
Informationen zu den erweiterten Endbenutzerprodukten finden Sie im Index-Repo Awesome-ChatTTS, das von der Community verwaltet wird.
ChatTTS ist ein Text-to-Speech-Modell, das speziell für Dialogszenarien wie den LLM-Assistenten entwickelt wurde.
Eine ausführliche Beschreibung finden Sie in diesem Video auf Bilibili .
Wichtig
Das veröffentlichte Modell dient ausschließlich akademischen Zwecken.
2noise
org ist willkommen) Der Code wird unter AGPLv3+
-Lizenz veröffentlicht.
Das Modell wird unter CC BY-NC 4.0
Lizenz veröffentlicht. Es ist für Bildungs- und Forschungszwecke bestimmt und sollte nicht für kommerzielle oder illegale Zwecke verwendet werden. Die Autoren übernehmen keine Gewähr für die Richtigkeit, Vollständigkeit oder Zuverlässigkeit der Informationen. Die in diesem Repo verwendeten Informationen und Daten dienen ausschließlich akademischen und Forschungszwecken. Die Daten stammen aus öffentlich zugänglichen Quellen und die Autoren erheben keinen Anspruch auf Eigentums- oder Urheberrechte an den Daten.
ChatTTS ist ein leistungsstarkes Text-to-Speech-System. Es ist jedoch sehr wichtig, diese Technologie verantwortungsvoll und ethisch zu nutzen. Um die Verwendung von ChatTTS einzuschränken, haben wir während des Trainings des 40.000-Stunden-Modells eine kleine Menge hochfrequenten Rauschens hinzugefügt und die Audioqualität mithilfe des MP3-Formats so weit wie möglich komprimiert, um zu verhindern, dass böswillige Akteure sie möglicherweise für Kriminelle nutzen Zwecke. Gleichzeitig haben wir intern ein Erkennungsmodell trainiert und planen, es in Zukunft als Open Source bereitzustellen.
GitHub-Probleme/PRs sind immer willkommen.
Für formelle Anfragen zum Modell und zur Roadmap kontaktieren Sie uns bitte unter [email protected] .
Melden Sie sich an, indem Sie hier klicken.
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
pip install --upgrade -r requirements.txt
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt
pip install safetensors vllm==0.2.7 torchaudio
Warnung
NICHT INSTALLIEREN! Die Anpassung von TransformerEngine befindet sich derzeit in der Entwicklung und kann derzeit NICHT ordnungsgemäß ausgeführt werden. Installieren Sie es nur zu Entwicklungszwecken. Weitere Einzelheiten finden Sie unter #672 #676
Notiz
Der Installationsprozess ist sehr langsam.
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
Warnung
NICHT INSTALLIEREN! Derzeit verlangsamt FlashAttention-2 aufgrund dieses Problems die Generierungsgeschwindigkeit. Installieren Sie es nur zu Entwicklungszwecken.
Notiz
Weitere Informationen zu unterstützten Geräten finden Sie im Hugging Face Doc.
pip install flash-attn --no-build-isolation
Stellen Sie sicher, dass Sie sich im Stammverzeichnis des Projekts befinden, wenn Sie die folgenden Befehle ausführen.
python examples/web/webui.py
Es wird Audio in
./output_audio_n.mp3
speichern
python examples/cmd/run.py " Your text 1. " " Your text 2. "
pip install ChatTTS
pip install git+https://github.com/2noise/ChatTTS
pip install -e .
import ChatTTS
import torch
import torchaudio
chat = ChatTTS . Chat ()
chat . load ( compile = False ) # Set to True for better performance
texts = [ "PUT YOUR 1st TEXT HERE" , "PUT YOUR 2nd TEXT HERE" ]
wavs = chat . infer ( texts )
for i in range ( len ( wavs )):
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
try :
torchaudio . save ( f"basic_output { i } .wav" , torch . from_numpy ( wavs [ i ]). unsqueeze ( 0 ), 24000 )
except :
torchaudio . save ( f"basic_output { i } .wav" , torch . from_numpy ( wavs [ i ]), 24000 )
###################################
# Sample a speaker from Gaussian.
rand_spk = chat . sample_random_speaker ()
print ( rand_spk ) # save it for later timbre recovery
params_infer_code = ChatTTS . Chat . InferCodeParams (
spk_emb = rand_spk , # add sampled speaker
temperature = .3 , # using custom temperature
top_P = 0.7 , # top P decode
top_K = 20 , # top K decode
)
###################################
# For sentence level manual control.
# use oral_(0-9), laugh_(0-2), break_(0-7)
# to generate special token in text to synthesize.
params_refine_text = ChatTTS . Chat . RefineTextParams (
prompt = '[oral_2][laugh_0][break_6]' ,
)
wavs = chat . infer (
texts ,
params_refine_text = params_refine_text ,
params_infer_code = params_infer_code ,
)
###################################
# For word level manual control.
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wavs = chat . infer ( text , skip_refine_text = True , params_refine_text = params_refine_text , params_infer_code = params_infer_code )
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
try :
torchaudio . save ( "word_level_output.wav" , torch . from_numpy ( wavs [ 0 ]). unsqueeze ( 0 ), 24000 )
except :
torchaudio . save ( "word_level_output.wav" , torch . from_numpy ( wavs [ 0 ]), 24000 )
inputs_en = """
chat T T S is a text to speech model designed for dialogue applications.
[uv_break]it supports mixed language input [uv_break]and offers multi speaker
capabilities with precise control over prosodic elements like
[uv_break]laughter[uv_break][laugh], [uv_break]pauses, [uv_break]and intonation.
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[uv_break]
""" . replace ( ' n ' , '' ) # English is still experimental.
params_refine_text = ChatTTS . Chat . RefineTextParams (
prompt = '[oral_2][laugh_0][break_4]' ,
)
audio_array_en = chat . infer ( inputs_en , params_refine_text = params_refine_text )
torchaudio . save ( "self_introduction_output.wav" , torch . from_numpy ( audio_array_en [ 0 ]), 24000 )
männlicher Sprecher | weibliche Sprecherin |
intro_en_m.webm | intro_en_f.webm |
Für einen 30-sekündigen Audioclip sind mindestens 4 GB GPU-Speicher erforderlich. Für die 4090-GPU kann sie Audio erzeugen, das etwa 7 semantischen Token pro Sekunde entspricht. Der Echtzeitfaktor (RTF) liegt bei etwa 0,3.
Dies ist ein Problem, das typischerweise bei autoregressiven Modellen (für Bark und Valle) auftritt. Es ist im Allgemeinen schwer zu vermeiden. Man kann mehrere Proben ausprobieren, um ein passendes Ergebnis zu finden.
Im aktuell veröffentlichten Modell sind die einzigen Steuereinheiten auf Token-Ebene [laugh]
, [uv_break]
, und [lbreak]
. In zukünftigen Versionen werden wir möglicherweise Open-Source-Modelle mit zusätzlichen emotionalen Kontrollfunktionen veröffentlichen.