2015-04-28 62 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); 

希望这有助于你或其他人寻找它选择它的工作原理声音。