Chrome扩展程序是否支持WebSpeech API?

Mic*_*hao 17 google-chrome voice-recognition google-chrome-extension

谷歌Chrome扩展程序是否支持Chrome的网络语音识别API?我已经包含了一些javascript来创建语音识别对象,但是当我启动扩展时,我不会被提示进行麦克风访问.

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

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

Rob*_*b W 15

网络语音API 可以已经通过Chrome扩展可以使用,甚至在后台页面和延伸按钮弹出.它工作的事实不一定是预期的功能,我之前已经解释了它是如何工作的以及为什么它在如何使用webrtc insde google chrome扩展的答案中有效.前面的解释是关于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).
    });
    
    Run Code Online (Sandbox Code Playgroud)


aps*_*ers 12

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


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

我原本认为speechRecognition可以像geolocationAPI 一样工作:扩展弹出窗口无法提示地理位置权限,但是chrome-extension:作为完整浏览器页面加载的页面可以像普通页面一样提示权限.但是,媒体API不会这样做 ; 无论页面是弹出窗口还是整页,它们都会失败.

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