SpeechRecognition - 表示识别服务的控制器接口

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

SpeechRecognitionWeb 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 的定义
草稿 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持33 webkit 1 未知 不支持 不支持 不支持 不支持
SpeechRecognition() 构造函数33 webkit 1 未知 不支持 不支持 不支持 不支持
abort33 webkit 1 未知 不支持 不支持 不支持 不支持
audioend 事件33 不支持 不支持 不支持 不支持 不支持
audiostart 事件33 不支持 不支持 不支持 不支持 不支持
continuous33 webkit 1 未知 不支持 不支持 不支持 不支持
end 事件33 不支持 不支持 不支持 不支持 不支持
error 事件33 不支持 不支持 不支持 不支持 不支持
grammars33 webkit 1 未知 不支持 不支持 不支持 不支持
interimResults33 webkit 1 未知 不支持 不支持 不支持 不支持
lang33 webkit 1 未知 不支持 不支持 不支持 不支持
maxAlternatives33 webkit 1 未知 不支持 不支持 不支持 不支持
nomatch 事件33 不支持 不支持 不支持 不支持 不支持
onaudioend33 webkit 1 未知 不支持 不支持 不支持 不支持
onaudiostart33 webkit 1 未知 不支持 不支持 不支持 不支持
onend33 webkit 1 未知 不支持 不支持 不支持 不支持
onerror33 webkit 1 未知 不支持 不支持 不支持 不支持
onnomatch33 webkit 1 未知 不支持 不支持 不支持 不支持
onresult33 webkit 1 未知 不支持 不支持 不支持 不支持
onsoundend33 webkit 1 未知 不支持 不支持 不支持 不支持
onsoundstart33 webkit 1 未知 不支持 不支持 不支持 不支持
onspeechend33 webkit 1 未知 不支持 不支持 不支持 不支持
onspeechstart33 webkit 1 未知 不支持 不支持 不支持 不支持
onstart33 webkit 1 未知 不支持 不支持 不支持 不支持
result 事件33 不支持 不支持 不支持 不支持 不支持
serviceURI33 webkit 1 未知 不支持 不支持 不支持 不支持
soundend 事件33 不支持 不支持 不支持 不支持 不支持
soundstart 事件33 不支持 不支持 不支持 不支持 不支持
speechend 事件33 不支持 不支持 不支持 不支持 不支持
speechstart 事件33 不支持 不支持 不支持 不支持 不支持
start33 webkit 1 未知 不支持 不支持 不支持 不支持
start 事件33 不支持 不支持 不支持 不支持 不支持
stop33 webkit 1 未知 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS 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. 您需要将代码放到网络服务器上,以便识别服务能够工作。

相关链接