2noise/ChatTTS 项目
最近,有个AI项目,从5月底开始,几乎天天上榜。它就是由国内的 2noise
团队发布的 ChatTTS
项目。因为突破了开源TTS的天花板,逼真度大幅提升,几乎听不出来是AI的声音,所以一发布就持续霸榜。
ChatTTS是一个专为对话场景设计的文本到语音模型,适用于像大型语言模型助手这样的应用。它支持英文和中文两种语言,并经过了超过10万小时的中英文训练。
目前在HuggingFace上开源的版本是一个4万小时预训练的模型,没有进行二次微调。最大的模型使用了10万小时以上的中英文数据进行训练,但似乎还没有开源。
因为目前使用它只能通过Python代码,为了方便更多的人,jianchang512
把它做成了一个带 WebUI 的 ChatTTS-ui
项目,这个开源项目,也跟着一起火了😂 不过目前本地使用,还是需要有GPU,最小显存4G。感兴趣的,可以在报脸书上试用。
ChatTTS Demo
先来听几段官方放出的音频:
男生版介绍:
女生版介绍:
它的惊艳主要来自如下3个特点:
对话式TTS:ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。 精细控制:该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词等。 更佳韵律:ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。
使用方法
在线体验:
最方便的方法:https://huggingface.co/spaces/Dzkaka/ChatTTS
不能访问的话,就只能本地部署了:
本地 基础用法示例:
import ChatTTS
from IPython.display import Audio
chat = ChatTTS.Chat()
chat.load_models(compile=False) # 设置为True以获得更快速度
texts = ["在这里输入你的文本",]
wavs = chat.infer(texts, use_decoder=True)
torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000)
本地 高级用法示例:
###################################
# Sample a speaker from Gaussian.
rand_spk = chat.sample_random_speaker()
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(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code)
###################################
# For word level manual control.
# use_decoder=False to infer faster with a bit worse quality
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, use_decoder=False)
torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000)
常见问题
连不上HuggingFace怎么办?
请使用modelscope的版本. 并设置cache的位置: chat.load_models(source='local', local_path='你的下载位置')
需要多少显存?Infer的速度如何?对于30s的音频, 至少需要4G的显存. 对于4090, 1s生成约7个字所对应的音频. RTF约0.3. 模型稳定性似乎不够好, 会出现其他说话人或音质很差的现象.
这是自回归模型通常都会出现的问题. 说话人可能会在中间变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果.
除了笑声还能控制什么吗?还能控制其他情感吗?
在现在放出的模型版本中, 只有 [laugh] 和 [uv_break],[lbreak] 作为字级别的控制单元. 在未来的版本中可能会开源其他情感控制的版本。
注意事项
仅供学术目的,用于教育和研究,不得用于商业或法律目的。 作者不对信息的准确性、完整性或可靠性负责。 请负责任和道德地使用ChatTTS技术,已在40,000小时模型训练中添加高频噪声,音频质量压缩至MP3格式,防止恶意使用。
商业咨询
如需就模型进行正式商业咨询,请发送邮件至 open-source@2noise.com。对于中文用户,可以加入他们的QQ群:808364215 (已满) 230696694 (二群) 进行讨论。同时欢迎在GitHub上提出问题。如果遇到无法使用 HuggingFace 的情况,可以在 modelscope 上进行下载。
jianchang512/ChatTTS-ui 项目
这个开源项目提供了一个网页界面,让用户可以通过Web UI操作 ChatTTS 来合成语音,并支持API调用。项目提供了Windows预打包版下载,以及Linux和MacOS的源码部署指南。用户可以根据需要配置环境,安装依赖,并启动服务。此外,还提供了修改默认http地址的说明,以及如何通过API请求进行语音合成的详细参数和示例代码。项目还提到了在pyVideoTrans软件中如何使用ChatTTS webUI进行语音合成的步骤。
看下输出结果:
该作者还做了一个叫pyVideoTrans
的工具,可以一键实现语音识别->字幕翻译->配音 = 带字幕和配音的新视频,也可以跟 ChatTTS 结合起来使用。对于视频搬运工来说,应该是必备工具了🤣
感兴趣的,看作者Github上的项目官网:jianchang512/pyvideotrans