ChatTTS 網路使用者介面
啟動 webui.py
python webui.py
python webui.py --server_port=8080
conda create -n chattts python=3.9
conda activate chattts
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install omegaconf vocos transformers vector-quantize-pytorch
English |中文簡體
ChatTTS是專門針對LLM助理等對話場景設計的文字轉語音模型。它支援英語和中文。我們的模型經過 100,000+ 小時的中文和英文訓練。 HuggingFace 上的開源版本是一個經過 40,000 小時預訓練的模型,沒有 SFT。
有關模型和路線圖的正式詢問,請透過 [email protected] 與我們聯繫。您可以加入我們的QQ群:808364215進行討論。添加 github 問題總是受歡迎的。
模型詳細說明可以參考bilibili視頻
此存儲庫僅用於學術目的。它旨在用於教育和研究用途,不得用於任何商業或法律目的。作者不保證資訊的準確性、完整性或可靠性。本存儲庫中使用的資訊和數據僅用於學術和研究目的。數據來自公開來源,作者不主張對數據的任何所有權或版權。
ChatTTS 是一個功能強大的文字轉語音系統。然而,負責任且合乎道德地利用這項技術非常重要。為了限制ChatTTS的使用,我們在40,000小時的模型訓練過程中添加了少量高頻噪聲,並儘可能使用MP3格式壓縮音訊質量,以防止惡意行為者可能利用它進行犯罪目的。同時,我們內部訓練了一個偵測模型,並規劃未來開源。
import ChatTTS
from IPython . display import Audio
chat = ChatTTS . Chat ()
chat . load_models ()
texts = [ "" ,]
wavs = chat . infer ( texts , use_decoder = True )
Audio ( wavs [ 0 ], rate = 24_000 , autoplay = True )
###################################
# Sample a speaker from Gaussian.
import torch
std , mean = torch . load ( 'ChatTTS/asset/spk_stat.pt' ). chunk ( 2 )
rand_spk = torch . randn ( 768 ) * std + mean
params_infer_code = {
'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 = {
'prompt' : '[oral_2][laugh_0][break_6]'
}
wav = chat . infer ( "" , 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]'
wav = chat . infer ( text , skip_refine_text = True , params_infer_code = params_infer_code )
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 [laugh]like like
[uv_break]laughter[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 = {
'prompt' : '[oral_2][laugh_0][break_4]'
}
audio_array_cn = chat . infer ( inputs_cn , params_refine_text = params_refine_text )
audio_array_en = chat . infer ( inputs_en , params_refine_text = params_refine_text )
對於 30 秒的音訊剪輯,至少需要 4GB GPU 記憶體。對於4090D GPU,它每秒可以產生對應於大約7個語義標記的音訊。實時係數 (RTF) 約為 0.65。
這是自回歸模型(對於樹皮和山谷)通常會出現的問題。一般情況下很難避免。人們可以嘗試多個樣品來找到合適的結果。
在目前發布的模型中,唯一的令牌級控制單元是 [laugh]、[uv_break] 和 [lbreak]。在未來的版本中,我們可能會開源具有額外情緒控制功能的模型。