Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chrome扩展是否支持WebSpeechAPI?_Google Chrome_Google Chrome Extension_Voice Recognition - Fatal编程技术网

Google chrome Chrome扩展是否支持WebSpeechAPI?

Google chrome Chrome扩展是否支持WebSpeechAPI?,google-chrome,google-chrome-extension,voice-recognition,Google Chrome,Google Chrome Extension,Voice Recognition,google Chrome扩展是否支持Chrome的Web语音识别API?我已经包含了一些javascript来创建语音识别对象,但是当我启动扩展时,并没有提示我访问麦克风 这不是我的代码的问题。我在谷歌上搜索过,但我找不到任何关于Chrome扩展是否支持Web语音API的信息。我只想得到一个肯定/否定的答案 注意:我相信WebSpeech API对本地文件不起作用。更新:基于,这个答案现在已经过时,Web Speech API现在可以在扩展中使用。(不幸的是,除非OP un接受,否则我无法删除

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

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


注意:我相信WebSpeech API对本地文件不起作用。

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


答案是,还没有。通过
chrome扩展访问的页面:
url无法访问任何媒体输入api,包括
speechRecognition
getUserMedia
。任何使用API的尝试都将立即触发错误回调

我最初认为
speechRecognition
可以像
geolocation
API那样工作:扩展弹出窗口不能提示输入geolocation权限,但是
chrome扩展:
作为完整浏览器页面加载的页面可以像普通页面一样提示输入权限。但是,媒体API不会以这种方式运行;无论页面是弹出页面还是完整页面,它们都会失败

存在允许开发人员在清单中指定媒体访问权限的选项。修复此错误后,扩展可以拥有清单集权限,授予其自动麦克风/视频访问权限,因此无法提示权限将成为一个问题(因此具有适当清单权限的扩展可以自由使用语音API)。

Chrome扩展已经可以使用,甚至可以在后台页面和扩展按钮弹出窗口中使用。它工作的事实并不一定是一个预期的特性,我之前已经解释了它是如何工作的以及为什么它在中工作的。前面的解释是关于WebRTC的,但它同样适用于Web语音,可以按如下方式使用:

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

    navigator.webkitGetUserMedia({
    音频:是的,
    },函数(流){
    stream.stop();
    //现在你知道你有音频权限了。想做什么就做什么。。。
    },函数(){
    //Aw.没有许可(或没有麦克风可用)。
    });
    

  • 感谢您的回复,但我正在专门寻找有关Chrome原生Web语音API的信息。如果我没有得到任何其他的回应,那么我会接受你的@MichaelZhao您能澄清一下我的回答在哪些方面可以更具体地描述Chrome的语音API吗?这正是我的答案所说的(即;规范)。您是否希望我介绍API的其他方面?或者我误解了你说的是哪种API了?我的印象是bug报告引用了另一种JS语音API。非常有用。@MichaelZhao确认:1)在我的答案中,有一个标记为“重复”的链接,它明确表示“Web语音API”,并链接到该线程,其OP试图在其代码中使用
    webkitSpeechRecognition
    。2) 我链接到的bug已将“”列为它正在阻止的bug;这阻止了指向@apsillers的bug链接。我正在尝试确认有关
    铬扩展的部分://
    。我将它加载到那里,所有操作都会一直进行到行
    recognition.start()
    ,此时我不会被提示访问麦克风。有什么想法吗?