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]。在未来的版本中,我们可能会开源具有额外情绪控制功能的模型。