语音合成 TTS 相关的一些总结

没专门学过也没做过就完全靠零散的概念记录吧

参考资料

TTS背后的技术原理——前端和后端系统

音频基础

uv: 表示清音还是浊音,清音的话几乎没基频
能量: mel 谱 第一维加和求平均
aac 编码: 它和直接PCM的音频编码后有一定的时间差,不过应该是因为FFT的时候补数据造成的。比如分帧不够的时候需要补上数据,一般应该在最后差一点。

声码器:
lcp/mgc 系数是基于信号学的, 应该需要基频进行辅助
现在一般直接恢复mel谱

基础

主要分为三部分:
前端模型、声学模型、声码器
其中声学模型可能还包括时长模型,不过得看具体的算法了。
除了以前的拼接式方法,现在主流的 TTS 有两类:

  • 基于 tacotron 这种没有对齐信息
  • 基于fast-speech ,需要有个时长预测模型
    上面主要是按照声学模型区分开。

声学模型:

主要是把语音层面的模型变到mel 特征或者类似的语音特征
这里其实是之前研究的重点,主要也是各种深度网络可以发挥作用的地方。

声码器:

把声学模型输出恢复到最终的采样点
有基于信号的,也有基于神经网路的。
一般为了快就是用lpcnet,深度学习上面就有很多, wavnet, mel-gan, paralle-wav-gan 这些

前端:

前端的内容也比较多,可以想象一下,输入是非常多样的,如何抽取必要的信息用于生成语音就是前端做的事情。
基本的前端输出就是音素序列,最好还得加入一些韵律边界(prosody) 因为需要让合成的语音有抑扬顿挫的感觉。

韵律词、韵律短语、语调短语、分词边界
前端还要解决多音字这些的问题。

对于英文一般目前使用G2P_en (grapheme to phoneme) 这个库就行。(一般写在 preprocess_english 这个函数里)
但是中文的话就需要分词模型,多音字模型,之类的。

高级

前端中最好能加入词级别的信息,这样生成的音色更好。或者针对特定语言加入一些其他的特征。
还有如果要达到对话的效果,比如”延音“和”有声停顿“,可以做这方面的预测然后加入到输入特征中。

声码器这里可以加入风格信息,帮助产生某种类型风格的语音。 如 GST 等。

VC 这个方向是希望尽可能分离原始语音的各种特征,把内容信息拿出来,然后再加入其它特征,获得与原始输入时间一样的输出。 一般都用KL,主要是希望尽可能丢掉音频相关信息保留文本信息。

拓展应用

虚拟人

TTS是文本预测mel 谱之类的声学系数,如果能预测唇形系数之类的就能做虚拟人人了。

当然上面那种做法需要的数据量比较大,一般不会这么做,往往是通过语音识别模型过一些无标注的干净的视频数据,获得文本和表情对齐的数据,然后训练一个音素到表情的模型P2E。而TTS主要是在测试的时候知道播报语音的时长就能使用P2E模型预测出表情系数的。至于如何获得,如果使用tacotron模型的话,建模粒度小一些,获得音频frame与phone的 attention 信息后做一个维特比解码就行。
类似这样
在这里插入图片描述

phone 帧率对齐,可以防止出现累计误差:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TTS即文本语音合成(Text-to-Speech),是一种将计算机生成的文本转换为自然语音的技术。而Python语言是一种非常流行的编程语言,因其易学易用的特点,被广泛应用于各种领域。 在Python中,我们可以使用第三方库来实现TTS功能。其中,最常用的库是pyttsx3。使用pyttsx3库,我们可以加载指定的语音引擎,并设置其属性,如语速、语调等。接下来,我们可以调用其say()方法,并传入文本内容,即可实现语音合成。 使用pyttsx3库进行TTS语音合成功能的实现,我们需要先安装该库。可以通过以下命令在终端中进行安装: ``` pip install pyttsx3 ``` 安装完成后,我们可以编写Python代码来实现TTS语音合成功能。例如,下面是一个简单的示例: ```python import pyttsx3 def text_to_speech(text): engine = pyttsx3.init() engine.say(text) engine.runAndWait() if __name__ == '__main__': text_to_speech('欢迎使用TTS语音合成!') ``` 在上述示例中,我们导入了pyttsx3库,并定义了一个text_to_speech()函数用于接收文本内容并进行语音合成。在main函数中,我们调用text_to_speech()函数,并传入欢迎语句进行合成。 当我们运行上述代码时,语音合成引擎会将输入的文本内容转换成自然语音,并播放出来。同时,我们还可以通过使用更多的参数和方法,对语音引擎的属性进行设定,以实现更加个性化的语音合成效果。 总之,Python的TTS语音合成功能可以通过pyttsx3库来实现,为我们提供了便捷的文本转语音的方式,可以应用于语音导航、语音交互等各种场景中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值