SpeechRecognitionResult - 表示一个识别匹配项

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

SpeechRecognitionResultWeb Speech API 的接口表示一个识别匹配项,其中可能包含多个 SpeechRecognitiontionAlternative 对象。

属性

SpeechRecognitionResult.isFinal 只读

一个 Boolean,声明此结果是否为最终结果(truefalse)- 如果是,则这是该结果的最终值;如果不是,则此结果为临时结果,以后可以更新。

SpeechRecognitionResult.length 只读

返回结果中包含的 “数组” 的长度 - SpeechRecognitionAlternative 对象的数量(也称为 “ n 个最佳替代项”。)

方法

SpeechRecognitionResult.item

一个标准的 getter,它允许通过数组语法访问结果中的 SpeechRecognitionAlternative 对象。

实例

此代码摘自我们的语音颜色更改器实例。

recognition.onresult = function(event) {
  // SpeechRecognitionEventresults 属性返回一个 SpeechRecognitiontionResultList 对象
  // SpeechRecognitionResultList 对象包含了多个 SpeechRecognitionResultResult 对象。
  // 它具有 getter,因此可以像数组一样进行访问
  // 第一个 [0] 返回位置 0 处的 SpeechRecognitionResult。
  // 每个 SpeechRecognitionResult 对象都包含具有单独结果的 SpeechRecognitionAlternative 对象。
  // 它们也有 getter ,因此可以像数组一样对其进行访问。
  // 第二个 [0] 返回位置 0 处的 SpeechRecognitionAlternative。
  // 然后,我们返回 SpeechRecognitionAlternative 对象的 transcript 属性
  var color = event.results[0][0].transcript;
  diagnostic.textContent = '收到结果:' + color + '。';
  bg.style.backgroundColor = color;
}

规范

规范 状态 备注
Web Speech API
SpeechRecognitionResult 的定义
草稿 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持33 webkit 1≤79 webkit 1 不支持 不支持 不支持 不支持
isFinal33 webkit 1≤79 webkit 1 不支持 不支持 不支持 不支持
item33 webkit 1≤79 webkit 1 不支持 不支持 不支持 不支持
length33 webkit 1≤79 webkit 1 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 webkit 1 支持 webkit 1 未知 不支持 未知 不支持 不支持
isFinal 支持 webkit 1 支持 webkit 1 未知 不支持 未知 不支持 不支持
item 支持 webkit 1 支持 webkit 1 未知 不支持 未知 不支持 不支持
length 支持 webkit 1 支持 webkit 1 未知 不支持 未知 不支持 不支持

1. 您需要将代码放到网络服务器上,以便识别服务能够工作。

Firefox OS 权限

要在应用中使用语音识别,您需要在 manifest 中指定以下权限:

"permissions": {
  "audio-capture" : {
    "description" : "Audio capture"
  },
  "speech-recognition" : {
    "description" : "Speech recognition"
  }
}

您还需要一个特权应用程序,因此您还需要包括以下内容:

  "type": "privileged"

相关链接