我正在使用Web Speech API进行文本到语音转换,并且需要能够确定默认语音。为此,我调用speechSynthesis.getVoices()
并枚举声音以找到默认为真的声音。
我在美国使用美国英语语言环境在我的所有设备上。在Windows和Mac上的Chrome中,返回的默认语音是Google美国英语。但是,在Chromebook上,返回的默认语音是Chrome OS德语版。 这真的是正确的默认设置吗?
我错过了Chromebook上的其他区域设置吗?我尝试更改ChromeVox的默认语音(在我更改之前也是Chrome OS德语),但没有运气。
或者有没有办法将语言传递给getVoices()
?
HTML
我页面的HTML语言设置为美国英语。
<!DOCTYPE html>
<html lang="en-US">
我已经尝试了lang =“en”,删除了DOCTYPE声明等,没有任何变化。
的Javascript
var _voices = [];
speechSynthesis.onvoiceschanged = listVoices;
function listVoices() {
_voices = speechSynthesis.getVoices();
}
function getDefaultVoice() {
var voice = '';
_voices.some(function(v) {
if (v.default) {
voice = v.name;
return true;
}
});
return voice;
}
答案 0 :(得分:0)
我想出来了。我的默认设置为德语。 Treehouse的这本指南解释了这个过程:
http://blog.teamtreehouse.com/getting-started-speech-synthesis-api
明确地你做了这样的事情:
var utterance = new SpeechSynthesisUtterance('Hello Treehouse');
var voices = window.speechSynthesis.getVoices();
utterance.voice = voices.filter(function(voice) { return voice.lang == 'en-GB'; })[0];
window.speechSynthesis(utterance);
然后只需将语言更改为您需要的语言(即美国英语等)。您可以从上面列出的声音变量中获取列表,并可以在开发人员工具中进行探索。