你们可能对谷歌的 TTS 引擎很熟悉:这里。
我对这样的东西如何能够分析输入并挑选出不同的音节/词性有一个基本的了解,但是如果我想为 TTS 系统创建一个“声音”,我应该从哪里开始呢?
你们可能对谷歌的 TTS 引擎很熟悉:这里。
我对这样的东西如何能够分析输入并挑选出不同的音节/词性有一个基本的了解,但是如果我想为 TTS 系统创建一个“声音”,我应该从哪里开始呢?
这是一个问题,我在大学花了将近一个学期的时间来学习答案,并提前一年(或更多)的课程来学习理解该过程所需的基础信号处理。整个课程都致力于语音合成,整个课程都致力于信号处理。
可以将人类的声道视为一个过滤器,将声门视为一个脉冲发生器——也就是说,语音实际上是由声道、嘴巴和鼻腔过滤的脉冲序列的结果。
对于每个音素,“过滤器”会有所不同,因此您需要一个音素库来为其生成“过滤器”。理论上,可以在音素声音剪辑库上使用逆滤波来找到“过滤”系数。Levinson-Durbin 递归通常用于查找 LPC 系数。
必须创建声门脉冲序列。一种简单的方法是将脉冲序列与正半正弦波卷积。
最后,使用与您希望创建的音素相关的“过滤器”系数过滤声门脉冲序列。
但这仅适用于有声语音。为了生成清音,一个简单的解决方案是用与清音音素相关的“过滤”系数来过滤随机噪声信号。
在此之上的抽象层,创建所需的音素列表并连接。像馅饼一样简单!
更新:
一位朋友指出Festival,一个输入文本和输出语音的“黑匣子”:http: //festvox.org/festival/