日常会話のための生成音声モデル。
English |简体中文|日本語| Русский |スペイン語|フランセ| 한국어
注記
このリポジトリには、アルゴリズム インフラストラクチャといくつかの簡単な例が含まれています。
ヒント
拡張エンドユーザー製品については、コミュニティが管理するインデックス リポジトリ Awesome-ChatTTS を参照してください。
ChatTTS は、LLM アシスタントなどの対話シナリオ向けに特別に設計されたテキスト読み上げモデルです。
詳細な説明については、Bilibili のこのビデオを参照してください。
重要
リリースされたモデルは学術目的のみです。
2noise
組織の新しいリポジトリは歓迎されます)コードはAGPLv3+
ライセンスに基づいて公開されています。
このモデルはCC BY-NC 4.0
ライセンスに基づいて公開されています。教育および研究での使用を目的としており、商業目的または違法な目的で使用しないでください。著者は情報の正確性、完全性、信頼性を保証しません。このリポジトリで使用される情報とデータは、学術および研究目的のみに使用されます。データは公的に入手可能な情報源から取得されており、作成者はデータに対する所有権や著作権を主張しません。
ChatTTS は強力なテキスト読み上げシステムです。ただし、このテクノロジーを責任を持って倫理的に使用することが非常に重要です。 ChatTTS の使用を制限するために、40,000 時間のモデルのトレーニング中に少量の高周波ノイズを追加し、MP3 形式を使用してオーディオ品質を可能な限り圧縮し、悪意のある攻撃者が犯罪に使用する可能性を防ぎます。目的。同時に、検出モデルを社内でトレーニングし、将来的にはオープンソース化する予定です。
GitHub の問題/PR はいつでも歓迎されます。
モデルとロードマップに関する正式なお問い合わせについては、 [email protected]までご連絡ください。
ここをクリックして参加してください。
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
警告
インストールしないでください。 TransformerEngine の適応は現在開発中のため、現在は適切に実行できません。開発目的でのみインストールしてください。詳細については #672 #676 をご覧ください。
注記
インストールプロセスは非常に遅いです。
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
警告
インストールしないでください。現在、FlashAttendant-2 では、この問題に応じて生成速度が遅くなります。開発目的でのみインストールしてください。
注記
Hugging Face Doc でサポートされているデバイスを参照してください。
pip install flash-attn --no-build-isolation
以下のコマンドを実行するときは、プロジェクトのルート ディレクトリの下にいることを確認してください。
python examples/web/webui.py
オーディオを
./output_audio_n.mp3
に保存します。
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 )
男性スピーカー | 女性スピーカー |
intro_en_m.webm | intro_en_f.webm |
30 秒のオーディオ クリップの場合、少なくとも 4GB の GPU メモリが必要です。 4090 GPU の場合、1 秒あたり約 7 つのセマンティック トークンに対応するオーディオを生成できます。リアルタイム ファクター (RTF) は約 0.3 です。
これは、自己回帰モデル (樹皮と谷の場合) で通常発生する問題です。一般にそれを避けるのは困難です。適切な結果を見つけるために複数のサンプルを試すことができます。
現在リリースされているモデルでは、トークンレベルの制御ユニットは[laugh]
、 [uv_break]
、および[lbreak]
のみです。将来のバージョンでは、追加の感情制御機能を備えたモデルをオープンソース化する可能性があります。