2

我正在将 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;
    }
4

1 回答 1

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);

然后只需将语言更改为您需要的任何语言(即美式英语等)。您可以从上面列出的 voices 变量中获取列表,并可以在您的开发人员工具中进行探索。

于 2015-11-27T14:35:15.370 回答