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

时间:2017-10-25 04:43:37

标签: audio text-to-speech speech

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

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

然而,这听起来并不顺畅或自然。

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

我找了一些算法来做但没找到任何东西。

是否有一种已知方法?

感谢。

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

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

通常,block将包含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)的内容,您将拥有一个看起来很自然的声音文件。

相关问题