17

google Chrome 扩展是否支持 Chrome 的 Web Speech 语音识别 API?我已经包含了一些 javascript 来创建语音识别对象,但是当我启动我的扩展程序时,没有提示我访问麦克风。

这不是我的代码的问题。我在 google 上搜索过,但找不到任何关于 Chrome 扩展是否支持 Web Speech API 的信息。我只想要一个是/否的答案。

注意:我相信 WebSpeech API 不适用于本地文件。

4

2 回答 2

16

Chrome 扩展程序已经可以 使用Web Speech API ,即使在后台页面和扩展程序按钮弹出窗口中也是如此。它工作的事实不一定是预期的功能,我之前已经解释了它是如何工作的以及为什么它在这个答案中工作如何使用 webrtc insde google chrome extension? . 前面的解释是关于 WebRTC 的,但它同样适用于 Web Speech,可以如下使用:

  1. 实例化一个webkitSpeechRecognition实例并开始录制。
  2. 如果检测到权限错误(onerror由 触发event.error === 'not-allowed'),请打开扩展页面 ( chrome-extension://[ID]/yourpage.html)。此扩展页面可以在新窗口、选项卡或 iframe 中打开。
  3. 从此页面请求访问麦克风。getUserMedia 和 SpeechRecognition 都共享(持久)音频权限,因此要检测是否允许录音,您可以使用getUserMedia请求权限而不激活语音识别。例如:

    navigator.webkitGetUserMedia({
        audio: true,
    }, function(stream) {
        stream.stop();
        // Now you know that you have audio permission. Do whatever you want...
    }, function() {
        // Aw. No permission (or no microphone available).
    });
    
于 2015-06-09T11:50:35.420 回答
12

更新:根据RobW 的回答,这个回答现在已经过时了,Web Speech API 现在可以在扩展中使用。(不幸的是,除非 OP 不接受,否则我无法删除此答案。


答案还没有。通过chrome-extension:URL 访问的页面无法访问任何媒体输入 API,包括speechRecognitiongetUserMedia. 任何使用 API 的尝试都会立即触发错误回调。

我最初认为speechRecognition可以像geolocationAPI 一样工作:扩展弹出窗口无法提示地理定位权限,但chrome-extension:作为完整浏览器页面加载的页面可以像普通页面一样提示权限。但是,媒体 API 的行为方式并非如此;无论页面是弹出窗口还是整页,它们都会失败。

有一个错误报告来解决这个问题,并允许开发人员在清单中指定媒体访问权限。修复此错误后,扩展程序可以具有清单设置权限,授予它们自动麦克风/视频访问权限,因此无法提示权限将成为非问题(因此具有适当清单权限的扩展程序将能够自由使用语音 API)。

于 2013-07-30T18:38:31.603 回答