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