SpeechRecognition - 表示识别服务的控制器接口
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
SpeechRecognition
是 Web Speech API 的接口,表示识别服务的控制器接口;它还将处理从识别服务发送的 SpeechRecognitionEvent
。
注意:在某些浏览器(例如 Chrome)上,在网页上使用语音识别功能涉及基于服务器的识别引擎。您的音频将发送到网络服务进行识别处理,因此它将无法离线工作。
构造函数
SpeechRecognition.SpeechRecognition()
创建一个新的 SpeechRecognition
对象。
属性
SpeechRecognition
还从其父接口 EventTarget
继承了属性。
SpeechRecognition.grammars
用于返回和设置 SpeechGrammar
对象的集合,这些对象表示当前的 SpeechRecognition
将理解的语法。
SpeechRecognition.lang
返回和设置当前 SpeechRecognition
的语言。如果未指定,则默认为 HTML lang
属性值,如果该属性也未设置,则为用户代理(user agent)的语言。
SpeechRecognition.continuous
控制是针对每个识别返回连续结果,还是仅返回单个结果。默认为单个(false
)。
SpeechRecognition.interimResults
控制是否应返回中期结果(true
)或不返回(false
)。中期结果是尚未最终确定的结果(例如 SpeechRecognitionResult.isFinal
属性为 false
。)
SpeechRecognition.maxAlternatives
设置每个结果提供的 SpeechRecognitionAlternative
的最大数量。预设值为 1
。
SpeechRecognition.serviceURI
指定当前 SpeechRecognition
用于处理实际识别的语音识别服务的位置。默认值为用户代理的默认语音服务。
方法
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.grammars
属性将其设置为 SpeechRecognition
实例要识别的语法。
在定义了其他一些值之后,我们设置到其中,以便在发生点击事件时启动识别服务(请参见 SpeechRecognition.start()
)。成功识别结果后, SpeechRecognition.onresult
处理程序将触发,我们提取从事件对象说出的颜色,然后将 <html>
元素的背景色设置为该颜色。
var 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 ;'
var recognition = new SpeechRecognition();
var speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;
recognition.continuous = false;
recognition.lang = 'en-US';
recognition.interimResults = false;
recognition.maxAlternatives = 1;
var diagnostic = document.querySelector('.output');
var bg = document.querySelector('html');
document.body.onclick = function() {
recognition.start();
console.log('准备接收颜色命令。');
}
recognition.onresult = function(event) {
var color = event.results[0][0].transcript;
diagnostic.textContent = '收到结果:' + color;
bg.style.backgroundColor = color;
}
规范
规范 | 状态 | 备注 |
---|---|---|
Web Speech API SpeechRecognition 的定义 |
草稿 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
SpeechRecognition() 构造函数 | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
abort | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
audioend 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
audiostart 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
continuous | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
end 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
error 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
grammars | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
interimResults | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
lang | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
maxAlternatives | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
nomatch 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
onaudioend | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onaudiostart | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onend | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onerror | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onnomatch | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onresult | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onsoundend | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onsoundstart | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onspeechend | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onspeechstart | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
onstart | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
result 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
serviceURI | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
soundend 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
soundstart 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
speechend 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
speechstart 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
start | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
start 事件 | 33 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
stop | 33 webkit 1 | 未知 | 不支持 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
SpeechRecognition() 构造函数 | 37 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
abort | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
audioend 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
audiostart 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
continuous | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
end 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
error 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
grammars | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
interimResults | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
lang | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
maxAlternatives | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
nomatch 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onaudioend | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onaudiostart | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onend | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onerror | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onnomatch | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onresult | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onsoundend | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onsoundstart | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onspeechend | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onspeechstart | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
onstart | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
result 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
serviceURI | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
soundend 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
soundstart 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
speechend 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
speechstart 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
start | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
start 事件 | 支持 | 支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
stop | 支持 webkit 1 | 支持 webkit 1 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
1. 您需要将代码放到网络服务器上,以便识别服务能够工作。