我创建了一个计算机语音,我想正确处理速率命令。SAPI速率公式评估
微软白皮书说,这对率(0):
率:
的价格标签控制声音的速度。标签可以是空的,在这种情况下,它可以应用于所有后续文本,也可以包含内容,在这种情况下,该标签仅适用于该内容。 Rate标签有两个属性Speed和AbsSpeed,其中一个必须存在。这些属性的值应该是负10和10之间的整数。超出此范围的值可能会被引擎截断(但不会被SAPI截断)。 AbsSpeed属性控制语音的绝对速率,所以十的值总是对应于十的值;五的值总是对应于五的值。
这段文字应该用五种语言说出。 这段文字应该以5的速率说出。 接下来的所有文字都应该以10的速度说出。
我还没有找到任何指示应该实际转换为什么比率。不过,我想继续确认微软的电脑语音。
我用一个例子做了一些测试。
微软自己的计算机语音产生与样品句子下面输出( “这是一个测试”):
率8: 1,15秒
评分0: 2,65秒
率-8: 6,35秒
不过,我看不出这背后真正的公式。 我的尝试
float f1 = (rate/10.0f);
float fSpeed = 1+f1;
似乎不符合MS的输出长度。
我将此值提供给着名的libSonic库中的sonicChangeFloatSpeed。
速率为-8时,我的语音输出为〜12秒,而微软的语音输出为〜6秒。
有人可以估计MS的语音速率背后的公式吗?
谢谢你的帮助。
微软有不少SAPI5声音 - 您使用作为您的参考哪一个?您可能会发现使用非MS语音作为参考更有用,因为有些功能要好得多 - 而且他们可能更注意细节,例如一致的速率变化。国际海事组织伊万娜做英语声音。 – GavinBrelstaff
@GavinBrelstaff我可以向你保证,作为一名开发人员,微软在他们的声音上表现出色。支持任何标签,所有事件触发,所有数据转换都非常出色。 Ivona在我尝试过的语言中并不擅长。 – tmighty