我已经创建了一个计算机语音,我想正确地对待rate命令。
微软白皮书提到了这个比率(https://msdn.microsoft.com/en-us/library/ms717037(v=vs.85).aspx )。
速率:
速率标签控制语音的速率。标记可以是空的,在这种情况下,它适用于所有后续文本,或者它可以有内容,在这种情况下,它只适用于该内容。速率标签有两个属性,速度和AbsSpeed,其中一个必须存在。这些属性的值应该是负10到10之间的整数。此范围以外的值可能由引擎截断(但不被SAPI截断)。AbsSpeed属性控制语音的绝对速率,因此10的值总是对应于10的值,而5的值总是对应于5的值。
这篇课文应该以五种速度讲。这篇课文应以负5的速度说。下面的所有课文应以10%的速度讲。
我还没有找到任何关于实际应该转换成什么费率的指示。不过,我还是想确认一下微软的电脑声音。
我用一个例句做了一些测试。
Microsoft自己的计算机声音用一个示例语句(“这是一个测试”)产生了以下输出:
速度8: 1,15秒
速度0: 2,65秒
速度-8: 6,35秒
然而,我看不出这背后有一个真正的公式。我的尝试
float f1 = (rate / 10.0f);
float fSpeed = 1+f1;似乎根本不符合MS的输出长度。
我将这个值提供给著名的sonicChangeFloatSpeed库中的libSonic。
在速率-8,我的声音输出是~12秒,而微软的声音输出是~6秒。
有人能估计出MS语音速率背后的公式吗?
谢谢你的帮助。
发布于 2017-03-15 19:54:47
使用IVONA 2艾米(英语,英国) SAPI5语音阅读短语One Two Three Four Five.,我得到了一个严格的线性关系的持续时间与减速(负)率。但对于超速(正)率而言,两者的关系是不一样的。它可以是线性的与不同的斜率。
Rate Duration (s)
-10 3.0 150%
-9 2.9 145%
-8 2.8 140%
-7 2.7 135%
-6 2.6 130%
-5 2.5 125%
-4 2.4 120%
-3 2.3 115%
-2 2.2 110%
-1 2.1 105%
0 2.0 100%
+1 1.8 90%
+2 1.7 85%
+3 1.6 80%
+4 1.4 70%
+5 1.3 65%
+6 1.1 55%
+7 1.0 50%
+8 0.8 40%
+9 0.7 35%
+10 0.5 25%由于只有21个离散级别,所以可以避免使用公式,只需使用我在第3栏中提供的百分比查找表。

https://stackoverflow.com/questions/42819007
复制相似问题