2015-04-28 66 views
0

我有一個使用HTML5語音合成API的Web應用程序,它可以工作 - 但只能使用本機語音。這裏是我的代碼:HTML5語音合成API - 只能使用「原生」語音

var msg = new SpeechSynthesisUtterance(); 
var voices; 

window.speechSynthesis.onvoiceschanged = function() { 
    voices = window.speechSynthesis.getVoices(); 
}; 

$("#btnRead").click(function() { 
     speak(); 
}); 

function speak(){ 
    msg = new SpeechSynthesisUtterance(); 
    msg.rate = 0.8; 
    msg.text = $("#contentView").html(); 
    msg.voice = voices[10]; 
    msg.lang = 'en-GB'; 
    window.speechSynthesis.speak(msg); 
} 

聲音[10]僅僅是工作的聲音,當我把它登錄到控制檯我可以看到,它是原生的聲音 - 這似乎表明,其他的聲音不被正確加載,但是當它登陸到控制檯,你可以在這裏看到它們仍出現聲音數組中:

Screenshot of console

人有什麼想法?我相信我可能錯過了一些相對簡單的事情,但我現在已經對此摔跤了!據我所知,我使用Google Chrome版本42.0.2311.90,它應該支持語音合成API。

+0

請發佈您收到的錯誤消息,或者說明它是如何工作的。 –

回答

1

剛開始玩speechSynthesis,所以沒有花太多時間在它上面。我偶然發現了你的問題,我相信答案是你選擇的語音不支持你給它的語言,你會得到一個回退。

如果你閱讀文檔,並檢查你如何(至少在我的電腦) https://developers.google.com/web/updates/2014/01/Web-apps-that-talk-Introduction-to-the-Speech-Synthesis-API?hl=en

var msg = new SpeechSynthesisUtterance('Awesome!'); 
msg.voice = speechSynthesis.getVoices().filter(function(voice) { 
     return voice.name == 'Google UK English Male'; 
})[0]; 

// now say it like you mean it: 
speechSynthesis.speak(msg); 

希望這有助於你或其他人尋找它選擇它的工作原理聲音。