SpeechSynthesisVoice - 表示系统支持的声音

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

SpeechSynthesisVoiceWeb Speech API 的接口,表示系统支持的声音。每个 SpeechSynthesisVoice 都有自己的相对语音服务,包括有关语言,名称和 URI 的信息。

属性

SpeechSynthesisVoice.default 只读

一个 Boolean,表示语音是否为当前应用语言的默认语音。

SpeechSynthesisVoice.lang 只读

返回指示语音语言的 BCP 47 语言标记。

SpeechSynthesisVoice.localService 只读

一个 Boolean,表示语音是由本地语音合成器服务(true)还是由远程语音合成器服务(false)提供的。

SpeechSynthesisVoice.name 只读

返回代表语音的人类可读名称。

SpeechSynthesisVoice.voiceURI 只读

返回此语音的 URI 类型和语音合成服务的位置。

实例

以下摘录摘自我们的语音合成器实例

function populateVoiceList() {
  voices = synth.getVoices();

  for(i = 0; i < voices.length ; i++) {
    var option = document.createElement('option');
    option.textContent = voices[i].name + ' (' + voices[i].lang + ')';

    if(voices[i].default) {
      option.textContent += ' -- DEFAULT';
    }

    option.setAttribute('data-lang', voices[i].lang);
    option.setAttribute('data-name', voices[i].name);
    voiceSelect.appendChild(option);
  }
}

populateVoiceList();
if (speechSynthesis.onvoiceschanged !== undefined) {
  speechSynthesis.onvoiceschanged = populateVoiceList;
}

inputForm.onsubmit = function(event) {
  event.preventDefault();

  var utterThis = new SpeechSynthesisUtterance(inputTxt.value);
  var selectedOption = voiceSelect.selectedOptions[0].getAttribute('data-name');
  for(i = 0; i < voices.length ; i++) {
    if(voices[i].name === selectedOption) {
      utterThis.voice = voices[i];
    }
  }
  utterThis.pitch = pitch.value;
  utterThis.rate = rate.value;
  synth.speak(utterThis);

  utterThis.onpause = function(event) {
    var char = event.utterance.text.charAt(event.charIndex);
    console.log('语音在 "' + event.utterance.text + '" 的第 ' + event.charIndex + ' 个字符处暂停,字符是 "' + char + '"。');
  }

  inputTxt.blur();
}

规范

规范 状态 备注
Web Speech API
SpeechSynthesisVoice 的定义
草稿 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持33≤1849 不支持217
default331449 不支持217
lang331449 不支持217
localService331449 不支持217
name331449 不支持217
voiceURI331449 不支持217

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持4.4.333 未知

62

61 — 62

未知 不支持7
default4.4.333 未知

62

61 — 62

未知 不支持7
lang4.4.333 未知

62

61 — 62

未知 不支持7
localService4.4.333 未知

62

61 — 62

未知 不支持7
name4.4.333 未知

62

61 — 62

未知 不支持7
voiceURI4.4.333 未知

62

61 — 62

未知 不支持7

相关链接