SpeechSynthesisErrorEvent: error 属性

error 属性是 SpeechSynthesisErrorEvent 接口的一部分,它返回一个错误代码,指示语音合成尝试中出现的问题。

包含错误原因的字符串。可能的值包括:

canceled

一个 SpeechSynthesis.cancel 方法调用导致 SpeechSynthesisUtterance 在开始播放之前从队列中移除。

interrupted

一个 SpeechSynthesis.cancel 方法调用导致 SpeechSynthesisUtterance 在开始播放之后但尚未完成之前被中断。

audio-busy

此时无法完成操作,因为用户代理无法访问音频输出设备(例如,用户可能需要通过关闭其他应用程序来解决此问题)。

audio-hardware

此时无法完成操作,因为用户代理无法识别音频输出设备(例如,用户可能需要连接扬声器或配置系统设置)。

network

此时无法完成操作,因为某些必要的网络通信失败。

synthesis-unavailable

此时无法完成操作,因为没有可用的合成引擎(例如,用户可能需要安装或配置合成引擎)。

synthesis-failed

操作失败,因为合成引擎引发了错误。

language-unavailable

SpeechSynthesisUtterance.lang 中设置的语言没有可用的合适语音。您可以使用 window.speechSynthesis.getVoices() 方法来确定用户浏览器支持哪些语音和语言。

voice-unavailable

SpeechSynthesisUtterance.voice 中设置的语音不可用。

text-too-long

SpeechSynthesisUtterance.text 属性的内容过长,无法合成。

invalid-argument

SpeechSynthesisUtterance.rateSpeechSynthesisUtterance.pitchSpeechSynthesisUtterance.volume 属性的内容无效。

not-allowed

不允许操作开始。

示例

js
const synth = window.speechSynthesis;

const inputForm = document.querySelector("form");
const inputTxt = document.querySelector("input");
const voiceSelect = document.querySelector("select");

const voices = synth.getVoices();

// ...

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

  const utterThis = new SpeechSynthesisUtterance(inputTxt.value);
  const selectedOption =
    voiceSelect.selectedOptions[0].getAttribute("data-name");
  for (let i = 0; i < voices.length; i++) {
    if (voices[i].name === selectedOption) {
      utterThis.voice = voices[i];
    }
  }

  synth.speak(utterThis);

  utterThis.onerror = (event) => {
    console.error(
      `An error has occurred with the speech synthesis: ${event.error}`,
    );
  };

  inputTxt.blur();
};

规范

规范
Web 语音 API
# dom-speechsynthesiserrorevent-error

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅