SpeechSynthesisErrorEvent:error 属性

Baseline 已广泛支持

此特性已成熟稳定,适用于多种设备和浏览器版本。自 2018 年 10 月起,它已在各浏览器中可用。

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 (const voice of voices) {
    if (voice.name === selectedOption) {
      utterThis.voice = voice;
    }
  }

  synth.speak(utterThis);

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

  inputTxt.blur();
};

规范

规范
Web Speech API
# dom-speechsynthesiserrorevent-error

浏览器兼容性

另见