2017-03-15 98 views
0

我創建了一個計算機語音,我想正確處理速率命令。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的語音速率背後的公式嗎?

謝謝你的幫助。

+0

微軟有不少SAPI5聲音 - 您使用作爲您的參考哪一個?您可能會發現使用非MS語音作爲參考更有用,因爲有些功能要好得多 - 而且他們可能更注意細節,例如一致的速率變化。國際海事組織伊萬娜做英語聲音。 – GavinBrelstaff

+0

@GavinBrelstaff我可以向你保證,作爲一名開發人員,微軟在他們的聲音上表現出色。支持任何標籤,所有事件觸發,所有數據轉換都非常出色。 Ivona在我嘗試過的語言中並不擅長。 – tmighty

回答

1

使用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欄上面這裏是提供您檢查的情節。

Plot of duration v. rate

+0

你確定嗎?這可以放入公式中嗎? – tmighty

+0

@tmighty而不是一個公式我給你一個查找表,你可以使用找到你需要的乘數,以21種不同的速率 – GavinBrelstaff