当前位置:   article > 正文

AI语音:ChatTTS 真有点东西啊!_在非refine text情况下, 流式生成音频

在非refine text情况下, 流式生成音频

今天要介绍一个最近刚出的语音合成项目,效果非常惊艳

发布三天已经有9K的Star了,听过的都说好。

演示视频

这效果怎么样?逼真吗?

这个项目的名字叫ChatTTS,一个充满情感的语音合成项目!

简介

ChatTTS是一款专为对话场景设计的语音生成模型,适用于AI助手对话、对话语音和视频介绍,支持中英文。

它优化了对话任务,实现自然流畅的多说话人语音合成,并能控制细粒度的韵律特征,如笑声、停顿和插入词。

ChatTTS在韵律方面表现卓越,提供预训练模型,支持进一步研究。

亮点

  • 对话式TTS: ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。
  • 细粒度控制:该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词等。
  • 更好的韵律:ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。

这些亮点,在同类型开源项目中却是非常突出。

用法

项目主页提供了一些代码实例,便于快速体验。运行下面代码前记得克隆项目,安装req文件里面的依赖。

基本用法

  1. #导入库:import ChatTTS和from IPython. display import Audio。
  2. import ChatTTS
  3. from IPython.display import Audio
  4. #初始化ChatTTS:创建一个ChatTTS对象chat= ChatTTS. Chat()。
  5. chat = ChatTTS.Chat()
  6. #加载模型:使用chat. load_models()加载预训练模型。
  7. chat.load_models()
  8. #设置文本:定义要转换为语音的文本列表texts=["< PUT YOUR TEXT HERE>",]。
  9. texts = ["<PUT YOUR TEXT HERE>",]
  10. #生成语音:使用chat. infer( texts, use_decoder= True)将文本转换为语音波形数据。
  11. wavs = chat.infer(texts, use_decoder=True)
  12. #播放语音:通过Audio( wavs[0], rate=24_000, autoplay= True)播放生成的语音。
  13. Audio(wavs[0], rate=24_000, autoplay=True)

基本用法总共7行代码,全是使用默认参数,非常简单。如果需要自定义一些参数,可以参考进阶代码。

进阶用法

  1. ###################################
  2. # Sample a speaker from Gaussian.
  3. import torch
  4. std, mean = torch.load('ChatTTS/asset/spk_stat.pt').chunk(2)
  5. rand_spk = torch.randn(768) * std + mean
  6. params_infer_code = {
  7. 'spk_emb': rand_spk, # add sampled speaker
  8. 'temperature': .3, # using custom temperature
  9. 'top_P': 0.7, # top P decode
  10. 'top_K': 20, # top K decode
  11. }
  12. ###################################
  13. # For sentence level manual control.
  14. # use oral_(0-9), laugh_(0-2), break_(0-7)
  15. # to generate special token in text to synthesize.
  16. params_refine_text = {
  17. 'prompt': '[oral_2][laugh_0][break_6]'
  18. }
  19. wav = chat.infer("<PUT YOUR TEXT HERE>", params_refine_text=params_refine_text, params_infer_code=params_infer_code)
  20. ###################################
  21. # For word level manual control.
  22. # use_decoder=False to infer faster with a bit worse quality
  23. text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
  24. wav = chat.infer(text, skip_refine_text=True, params_infer_code=params_infer_code, use_decoder=False)

进阶代码主要加载了一个pt文件,然后构建了params_refine_text和params_infer_code这两个参数。
通过参数设置,可以更加精准的控制生成效果。

计划路线

  •  开源4w小时基础模型和spk_stats文件
  •  开源VQ encoder和Lora训练代码
  •  在非refine text情况下,流式生成音频*
  •  开源多情感可控的4w小时版本
  •  ChatTTS.cpp maybe? (欢迎社区PR或独立的新repo)

从介绍中可以看到,已经开源了4万小时的基础模型和spk_stats文件。

接下来还有开源编码器和微调代码,包括流式生成,多情感可控版本,设置可能会有更高效的C代码版本。

可以期待一下啊。

常见问题

以下是官方总结的一些常见问题,可以参考一下。

连不上HuggingFace

请使用modelscope的版本。并设置cache的位置

我要存多少钱?Infer的速度是怎么样的?

对于30s的音频,至少需要4G的显存。对于4090D,1s生成约7个字所对应的音频。RTF约0.65。

模型稳定性似乎不够好,会出现其他说话人或音质很差的现象。

这是自回归模型通常都会出现的问题。说话人可能会在中间变化,可能会采样到音质非常差的结果,这通常难以避免。可以多采样几次来找到合适的结果。

除了笑声还能控制什么吗?还能控制其他情感吗?

现在放出的模型版本中,只有[ laugh]和[ uv_break],[ lbreak]作为字级别的控制单元。在未来的版本中我们可能会开源其他情感控制的版本。

相关资源

整理了一些扩展内容。包括官方完整的演示视频,在线体验地址,和Colab笔记本。

官方演示视频:

突破开源天花板!ChatTTS:对话式高可控的语音合成模型_哔哩哔哩_bilibili

在线体验地址:

https://huggingface.co/spaces/Dzkaka/ChatTTS

Colab笔记本:

https://github.com/dream80/TonyColab

最后强调一下,这个项目真不错!值得研究一下!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/743719
推荐阅读
相关标签
  

闽ICP备14008679号