SpeechRecognition

SpeechRecognitionWeb 语音 API 的控制器接口;它还处理来自识别服务的 SpeechRecognitionEvent

注意:在某些浏览器(如 Chrome)上,在网页上使用语音识别涉及基于服务器的识别引擎。您的音频将发送到 Web 服务进行识别处理,因此它无法离线工作。

EventTarget SpeechRecognition

构造函数

SpeechRecognition()

创建一个新的 SpeechRecognition 对象。

实例属性

SpeechRecognition 还继承了其父接口 EventTarget 的属性。

SpeechRecognition.grammars

返回并设置一个 SpeechGrammar 对象的集合,这些对象表示当前 SpeechRecognition 将理解的语法。

SpeechRecognition.lang

返回并设置当前 SpeechRecognition 的语言。如果未指定,则默认为 HTML lang 属性值,或者如果未设置该属性,则默认为用户代理的语言设置。

SpeechRecognition.continuous

控制是否为每次识别返回连续结果,或者只返回单个结果。默认为单个 (false)。

SpeechRecognition.interimResults

控制是否应返回中间结果 (true) 或不返回 (false)。中间结果是尚未最终确定的结果(例如,SpeechRecognitionResult.isFinal 属性为 false)。

SpeechRecognition.maxAlternatives

设置每个结果提供的 SpeechRecognitionAlternative 的最大数量。默认值为 1。

实例方法

SpeechRecognition 还继承了其父接口 EventTarget 的方法。

SpeechRecognition.abort()

停止语音识别服务监听传入音频,并且不尝试返回 SpeechRecognitionResult

SpeechRecognition.start()

启动语音识别服务监听传入音频,并意图识别与当前 SpeechRecognition 关联的语法。

SpeechRecognition.stop()

停止语音识别服务监听传入音频,并尝试使用迄今为止捕获的音频返回 SpeechRecognitionResult

事件

使用 addEventListener() 或通过为该接口的 oneventname 属性分配事件监听器来监听这些事件。

audiostart

当用户代理开始捕获音频时触发。也可通过 onaudiostart 属性获得。

audioend

当用户代理完成捕获音频时触发。也可通过 onaudioend 属性获得。

end

当语音识别服务断开连接时触发。也可通过 onend 属性获得。

error

当发生语音识别错误时触发。也可通过 onerror 属性获得。

nomatch

当语音识别服务返回最终结果但没有显著的识别时触发。这可能涉及一定程度的识别,但未达到或超过 confidence 阈值。也可通过 onnomatch 属性获得。

result

当语音识别服务返回结果时触发——已识别出一个单词或短语,并已将其传回应用程序。也可通过 onresult 属性获得。

soundstart

当检测到任何声音(可识别的语音或非语音)时触发。也可通过 onsoundstart 属性获得。

soundend

当检测到任何声音(可识别的语音或非语音)停止时触发。也可通过 onsoundend 属性获得。

speechstart

当语音识别服务检测到被识别为语音的声音时触发。也可通过 onspeechstart 属性获得。

speechend

当语音识别服务检测到被识别为语音的声音停止时触发。也可通过 onspeechend 属性获得。

start

当语音识别服务开始监听传入音频,并意图识别与当前 SpeechRecognition 关联的语法时触发。也可通过 onstart 属性获得。

示例

在我们的简单 语音颜色更改器 示例中,我们使用 SpeechRecognition() 构造函数创建了一个新的 SpeechRecognition 对象实例,创建了一个新的 SpeechGrammarList,并将其设置为 SpeechRecognition 实例将识别的语法,使用 SpeechRecognition.grammars 属性。

在定义其他一些值后,我们将其设置为在单击事件发生时启动识别服务(请参阅 SpeechRecognition.start())。当成功识别结果时,将触发 result 事件,我们从事件对象中提取口述的颜色,然后将 <html> 元素的背景颜色设置为该颜色。

js
const grammar =
  "#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;";
const recognition = new SpeechRecognition();
const speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;
recognition.continuous = false;
recognition.lang = "en-US";
recognition.interimResults = false;
recognition.maxAlternatives = 1;

const diagnostic = document.querySelector(".output");
const bg = document.querySelector("html");

document.body.onclick = () => {
  recognition.start();
  console.log("Ready to receive a color command.");
};

recognition.onresult = (event) => {
  const color = event.results[0][0].transcript;
  diagnostic.textContent = `Result received: ${color}`;
  bg.style.backgroundColor = color;
};

规范

规范
Web 语音 API
# speechreco-section

浏览器兼容性

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

另请参阅