SpeechRecognition
SpeechRecognition
是 Web 语音 API 的控制器接口;它还处理来自识别服务的 SpeechRecognitionEvent
。
注意:在某些浏览器(如 Chrome)上,在网页上使用语音识别涉及基于服务器的识别引擎。您的音频将发送到 Web 服务进行识别处理,因此它无法离线工作。
构造函数
SpeechRecognition()
-
创建一个新的
SpeechRecognition
对象。
实例属性
SpeechRecognition
还继承了其父接口 EventTarget
的属性。
SpeechRecognition.grammars
-
返回并设置一个
SpeechGrammar
对象的集合,这些对象表示当前SpeechRecognition
将理解的语法。 SpeechRecognition.lang
-
返回并设置当前
SpeechRecognition
的语言。如果未指定,则默认为 HTMLlang
属性值,或者如果未设置该属性,则默认为用户代理的语言设置。 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>
元素的背景颜色设置为该颜色。
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 的浏览器中加载。