[英]Odd behaviour in Google Web Speech API
我正在使用Google Chrome瀏覽器(55.0.2883.87)使用Google的Web Speech API,並且遇到了一些非常奇怪的行為。
嘗試說出姓名后跟一個數字(例如John 4
)時,通常只說出姓名和數字, 就應該說出來-但是對於某些名稱,它會在名稱和數字之間加上chapter
一詞,因此, Daniel 4
成為Daniel Chapter 4
。
我選擇了一些隨機名稱,並使用以下代碼對其進行了測試:
<script> var names = ['Brian', 'John', 'Mike', 'Julia', 'Daniel', 'Michael', 'David', 'Jason', 'Jack']; names.forEach(function(name) { var msg = new SpeechSynthesisUtterance(name + ' 4'); window.speechSynthesis.speak(msg); }); </script>
使用console.log()
記錄時, msg
變量不包含單詞Chapter。
在這9個名字中, John
和Daniel
的名字之間帶有chapter
一詞。
為什么會發生這種情況,以及由哪些條件決定哪些名稱受到影響?
我不認為這是“復活節彩蛋”:
通常,語音合成引擎通常嘗試以某種有意義的方式來解釋文本片段,例如,如果該片段“看起來”像日期,則以標點符號的形式讀取數字。
說明
對於Google,我想他們會嚴重依賴統計信息來決定是否應以一種或另一種方式解釋文本片段。
實際上,由於某些原因,這可能會因特定情況而失敗:例如,如果特定情況確實是某種特殊情況; 如果沒有足夠的“上下文”來推導正確的/預期的含義(對於非常短的句子/片段尤其如此); 如果用於導出統計信息的(文本)語料庫在普遍使用中不均衡...
建議
根據引擎的不同,通常可以通過不同地設置輸入文本的格式來控制行為。
例如,在Chrome中測試您的代碼段:如果您寫出數字(用"four"
代替4
),或者在名稱后插入逗號(即name + ', 4'
),則語音引擎不會插入"chapter"
( 請注意,逗號還會引起短暫的停頓 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.