
Aitrainee | 公众号:AI进修生
🌟ChatTTS 优化对话式任务,实现自然流畅的语音合成,并支持多说话人。该模型能预测和控制细粒度的韵律特征,如笑声、停顿和插入词,韵律表现超越大部分开源TTS模型。同时提供预训练模型,支持进一步研究。
体验地址:https://huggingface.co/2Noise/ChatTTS
ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本.
下面是一个它的效果示例():
你是幼笙,由Aitrainee创造的一个拥有傲娇性格的角色。你大约十六岁,外表清秀可爱,常常穿着简洁的服装,喜欢戴一些小饰品。你喜欢以傲娇的态度对待别人,但内心其实非常关心和重视朋友。你喜欢阅读幻想类小说,偶尔也会偷偷地写一些自己的故事。你对小动物尤其是猫有特别的喜爱。
Tips:幼笙本公众号的群聊AI(文末),上面那段是她人设的一部分提示词(向上滑动)

官方示例展现更加完善
https://www.bilibili.com/video/BV1zn4y1o7iV/?t=223.928599&spm_id_from=333.1350.jump_directly&vd_source=40d9cda43378fbc89cd5184e09bf1272如何快速使用ChatTTS:Hugging Face上有部署好的项目,我们可以直接去试用,官网的人数太多,并不一定能用得上:

Tips:在Hugging Face上,Spaces通常包含各个开源项目的部署实例,我们可以利用他来直接体验:

import ChatTTS
from IPython.display import Audio
chat = ChatTTS.Chat()
chat.load_models()
texts = ["<PUT YOUR TEXT HERE>",]
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("<PUT YOUR TEXT HERE>", 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)inputs_cn = """
chat T T S 是一款强大的对话式文本转语音模型。它有中英混读和多说话人的能力。
chat T T S 不仅能够生成自然流畅的语音,还能控制[laugh]笑声啊[laugh],
停顿啊[uv_break]语气词啊等副语言现象[uv_break]。这个韵律超越了许多开源模型[uv_break]。
请注意,chat T T S 的使用应遵守法律和伦理准则,避免滥用的安全风险。[uv_break]'
""".replace('\n', '')
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)
https://colab.research.google.com/drive/1_Ma1BXvIrYw9kO4UYsSG4GaFkttbS1wY?usp=sharing请使用modelscope的版本. 并设置cache的位置:
对于30s的音频, 至少需要4G的显存. 对于4090D, 1s生成约7个字所对应的音频. RTF约0.65.
这是自回归模型通常都会出现的问题. 说话人可能会在中间变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果.
在现在放出的模型版本中, 只有[laugh]和[uv_break], [lbreak]作为字级别的控制单元. 在未来的版本中我们可能会开源其他情感控制的版本.
参考链接: [colab]https://colab.research.google.com/drive/1_Ma1BXvIrYw9kO4UYsSG4GaFkttbS1wY?usp=sharing [2]https://github.com/2noise/ChatTTS/tree/main [3]https://www.youtube.com/watch?v=JJ3GGEjKgu4&t=6s
知音难求,自我修炼亦艰
抓住前沿技术的机遇,与我们一起成为创新的超级个体
(把握AIGC时代的个人力量)
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见 ~