用于将语音音频连接到连续声音的算法



我正在构建一个简单的程序,用人的声音说出电话号码。

为此,我预先录制了每个数字(具有不同的语调),当我得到一个数字时,我会加入音频文件并将它们一起播放,并在数字之间添加一些静音。

但是,这听起来并不流畅或自然。

我试图对文件进行增益和速度规范化,但感觉我需要以某种"智能"的方式加入它们,以便过渡听起来很自然。

我寻找了一些算法来做到这一点,但没有找到任何东西。

有没有已知的方法?

谢谢。

该算法称为PSOLA。有像TD-PSOLA这样的变体。

总的来说,这里有很多东西 - 如何根据声学属性、声源语调和所需的目标语调决定加入哪些项目。实现起来非常复杂,因此最好使用现有的开源TTS系统和现有的合成器,它们涵盖了所有内容。您可以查看 festvox 或 Openmary。

人类正在按数字块拼写电话号码。

通常块将包含 1 到 4 个数字,有时一个电话号码会组合不同的大小类型。

为了生成像自然语音一样拼写电话号码的内容,您需要定义至少两个不同的静音变量:

  • dtNumber = 静默应用了一个块中的两个数字

  • dtBlock = 在两个数字块之间应用的静音

首先将电话号码拆分为阻止列表:

01-12-13-14-15 => [01,12,13,14,15]

1-888-452-1505 => [1,888,452,1505]

遍历所有块(等待 dtBlock 秒杀其中两个块):

&

遍历每个块的编号(等待 dtNumber 秒)。

如果你应用像dtBlock>= 2 x(dtNumber)这样的东西,你将得到一个看起来很自然的声音文件。

最新更新