我有一个web应用程序,它使用了HTML5语音合成应用程序接口,它可以工作-但只能使用原生语音。下面是我的代码:
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);
}
voices10是唯一可以正常工作的语音,当我将它登录到控制台时,我可以看到它是本机语音-这似乎表明其他语音没有正确加载,但当它登录到控制台时,它们仍然出现在语音数组中,正如您可以在这里看到的:
有谁有什么想法吗?我确信我可能遗漏了一些相对简单的东西,但是我已经在这个问题上挣扎了一段时间了!我使用的是Google Chrome版本42.0.2311.90,据我所知,它应该支持语音合成API。
发布于 2015-11-11 06:18:09
刚刚开始使用speechSynthesis,所以没有花太多时间在上面。我偶然发现了你的问题,我相信答案是你选择的声音不支持你给它的语言,你得到了一个后备。
如果您阅读文档并检查您如何选择语音,它的工作方式(至少在我的pc上) 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);
希望这对你或其他正在寻找它的人有所帮助。
https://stackoverflow.com/questions/29920285
复制相似问题