我正在将 Web Speech API 用于文本到语音,并且需要能够确定默认语音。为此,我调用speechSynthesis.getVoices()
并枚举声音以找到默认为真的声音。
我在美国,在我的所有设备上都使用美国英语语言环境。在 Windows 和 Mac 上的 Chrome 中,返回的默认语音是 Google 美国英语。然而,在 Chromebook 上,返回的默认语音是 Chrome OS German。这真的是正确的默认值吗?
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;
}