ChatTTS:终极文本转语音工具,支持API!
文本转语音(TTS)系统的发展已经取得了长足的进步。从最初的机械化、平坦的声音,到如今听起来令人惊讶的人声,ChatTTS作为这一领域的新成员,旨在改变我们与计算机的互动方式,通过自然的语音交流来实现。值得一提的是,ChatTTS在署名-非商业性使用 4.0 国际许可协议下发布,允许非商业用途和分发,同时要求对创作者进行适当的署名。
你是否对此感到好奇?以下是更多细节:
- 演示效果
- 对话聚焦与技术实力
- 超越基本功能:控制与定制的探索
- 文本预处理:在文本中嵌入控制
- 推理参数:微调输出
- 解决伦理问题与潜在滥用
- ChatTTS的实际应用:赋予文本生命
- 持续改进与社区反馈
- 结论
演示效果
- 文本输入:[‘大家好,这是一段智能语音生成的示例,文本转语音(TTS)系统的发展已经取得了长足的进步。从最初的机械化、平坦的声音,到如今听起来令人惊讶的人声,ChatTTS作为这一领域的新成员,旨在改 变我们与计算机的互动方式,通过自然的语音交流来实现。’]
- 语音输出:链接:https://pan.baidu.com/s/1rBh_y-2vjmRFsFFM2AxFCQ?pwd=nkvm 提取码:nkvm
对话聚焦与技术实力
与一些为通用用途设计的TTS系统不同,ChatTTS专门为对话而构建,非常适合用于AI助手等场景。其闭源版本经过超过10万小时的中文和英文语音训练,而开源版本则在HuggingFace上提供,受益于4万小时的庞大数据集。
ChatTTS的独特之处在于其对人类对话的理解能力。它能够生成不同的“说话者”,使对话更加真实。此外,它还融入了微妙的细节,如笑声、停顿和插入语——这些元素使对话听起来自然,而非机械。
超越基本功能:控制与定制的探索
ChatTTS不仅仅是将文本转换为语音。它为用户提供了通过两个阶段的过程来微调输出的工具:文本预处理和推理参数调整。
文本预处理:在文本中嵌入控制
在文本层面,ChatTTS使用特殊的标记作为嵌入命令。这些标记让你可以控制停顿、笑声和其他口语特征。
- 句子级控制:插入标记如
[laugh_(0–2)]
来引入笑声,[break_(0–7)]
用于不同长度的停顿,以及[oral_(0–9)]
来控制其他口语特征。 - 单词级控制:通过在特定单词旁放置
[uv_break]
和[lbreak]
来实现更细致的停顿管理。
想象一下,你正在为儿童故事应用创建一个奇幻的AI角色……你可以用ChatTTS生成这样的文本:
“从前,在一个充满会说话的胡萝卜和唱歌的土豆的地方,[uv_break] 住着一只名叫闪烁的小萤火虫。[laugh] 闪烁喜欢在月光中[uv_break] 跳舞!”
通过精心放置这些标记,你可以让ChatTTS生成一个在戏剧性效果上停顿、温暖地笑,并将那个奇幻世界带入生活的声音。
推理参数:微调输出
在音频生成过程中(推理),你可以使用传递给
chat.infer()
函数的参数进一步细化输出:
- params_infer_code:这个字典控制说话者身份(
spk_emb
)、语音变化(temperature
)和解码策略(top_P
、top_K
)等方面。 - params_refine_text:这个字典主要用于句子级控制,类似于文本中使用的标记。
这两级控制的结合,使合成语音在表现力和定制性上达到了前所未有的水平。
解决伦理问题与潜在滥用
ChatTTS的创作者意识到先进技术带来的责任。他们采取了一些措施来减少滥用的风险,特别是在生成误导性内容方面:
- 高频噪声:在训练过程中添加了一层非常细微的高频噪声。这使得不法分子更难利用音频进行有害用途(这只是他们的观点……)。
- 压缩音频质量:开源音频故意使用MP3格式进行压缩,进一步降低其整体质量(这算是一种对策!)。
虽然这些选择可能会对某些用户的音频保真度产生轻微影响(找一个真的在意的人),但它们展示了对伦理AI开发的承诺。团队还在开发一个开源工具,以检测由ChatTTS生成的合成语音,增加了另一层保护。
ChatTTS的实际应用:赋予文本生命
以下是如何使用ChatTTS的示例,展示了基本和高级用法:
import ChatTTS
from IPython.display import Audio
# 初始化ChatTTS
chat = ChatTTS.Chat()
chat.load_models()# 基本用法:
text ="你好,这里是ChatTTS在讲话!"
wav = chat.infer(text)
torchaudio.save("basic_output.wav", torch.from_numpy(wav[0]),24000)# 高级用法:# 1. 随机选择一个说话者
rand_spk = chat.sample_random_speaker()# 2. 定义推理参数
params_infer_code ={'spk_emb': rand_spk,# 使用随机选择的说话者'temperature':0.5,# 调整语音变化 }# 3. 带有嵌入控制标记的文本
text_with_tokens ="你最喜欢的颜色是什么?[uv_break][laugh]"# 4. 生成并保存音频
wav = chat.infer(text_with_tokens, params_infer_code=params_infer_code)
torchaudio.save("advanced_output.wav", torch.from_numpy(wav[0]),24000)
这个示例展示了如何使用ChatTTS进行基本的文本转语音转换,以及如何利用其高级功能自定义说话者身份、引入停顿和添加笑声。
请记住,要使用ChatTTS,您需要一台具有良好GPU的系统,建议至少4GB的显存以生成短音频片段。
持续改进与社区反馈
与任何新技术一样,ChatTTS正在不断改进。开发者积极与用户反馈互动,努力提升性能并解决改进领域。值得一提的是,未来的路线图中计划发布一个具有多情感控制和Lora训练代码的版本。
结论
ChatTTS在GitHub上发布后,迅速获得了大量关注。它是时下的热潮,还是在对话式文本转语音领域的真正变革者?试试看,表达你的看法吧😉
Github开源网址:https://github.com/2noise/ChatTTS
版权归原作者 独孤光 所有, 如有侵权,请联系我们删除。