SAPI 费率公式评估

SAPI rate formula evaluation

我创建了一个电脑语音,我想正确对待rate命令。

Microsoft 白皮书对速率 (https://msdn.microsoft.com/en-us/library/ms717037(v=vs.85).aspx) 是这样说的:

评分:

Rate 标签控制语音的速率。标签可以是空的,在这种情况下它适用于所有后续文本,或者它可以有内容,在这种情况下它只适用于该内容。 Rate 标签有两个属性,Speed 和 AbsSpeed,其中之一必须存在。这些属性的值应该是负十到十之间的整数。超出此范围的值可能会被引擎截断(但不会被 SAPI 截断)。 AbsSpeed 属性控制语音的绝对速率,因此值 10 始终对应于值 10;值五始终对应于值五。

这段文字应以五速朗读。 这段文字应该以负五的速率朗读。 以下所有文字均应以十速率朗读。

我没有找到任何指示实际应转换成什么汇率的迹象。不过,我还是想用微软的电脑语音来确认一下。

我用例句做了一些测试。

Microsoft 自己的计算机语音生成了以下带有例句的输出 ("This is a test."):

评分 8: 1.15 秒

评分 0: 2,65 秒

评分-8: 6,35 秒

但是,我没有看到这背后的真正公式。 我的尝试

float f1 = (rate / 10.0f);
float fSpeed = 1+f1;

似乎与MS的输出长度完全不对应

我将这个值提供给著名的 libSonic 库中的 sonicChangeFloatSpeed。

在速率 -8 下,我的语音输出约为 12 秒,而 Microsoft 的语音输出约为 6 秒。

有人可以估算出 MS 语音速率背后的公式吗?

感谢您的帮助。

使用 IVONA 2 Amy(英国英语)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 列中提供的百分比 查找 table。这是图表供您检查。