2013-07-30 184 views
17

Google Chrome擴展程序支持Chrome的Web Speech語音識別API嗎?我已經包含了一些javascript來創建語音識別對象,但是當我啓動我的擴展時,我不會提示輸入麥克風。Chrome擴展是否支持WebSpeech API?

這不是我的代碼問題。我在谷歌搜索,但我無法找到關於Chrome擴展是否支持Web Speech API的任何信息。我只想要一個是/否的答案。

注意:我相信WebSpeech API不適用於本地文件。

回答

11

更新:基於RobW's answer,這個答案現在已經過時了,和Web語音API現在是擴展的內部使用。 (不幸的是,我不能,除非OP未接受它刪除這個答案。


答案是尚未。通過chrome-extension:網址訪問的網頁無法訪問任何媒體輸入API,包括speechRecognitiongetUserMedia。任何使用API​​的嘗試都會立即觸發錯誤回調。

我本來以爲speechRecognition可以工作像geolocation API:擴展彈出窗口不能提示地理位置許可,但加載完整的瀏覽器頁面chrome-extension:可以提示權限就像一個正常的頁面。但是,媒體API不會以這種方式運行;無論頁面是彈出式還是整頁,它們都會失敗。

有一個bug report to fix this並允許開發人員在清單中指定媒體訪問權限。當這個錯誤得到解決後,擴展可以擁有一個清單設置權限,授予他們自動麥克風/視頻訪問權限,所以無法提示權限將成爲一個無問題(因此具有適當清單權限的擴展將能夠自由使用Speech API)。

+0

感謝您的答覆,但我對Chrome的本機Web Speech API的信息看具體。如果我沒有得到任何其他答覆,那麼我會接受你的! –

+0

@MichaelZhao您能否澄清我的答案可以更加具體地討論Chrome的語音API?這正是我的回答所談論的(即[webkitSpeechRecognition' API](http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech- API);規範[here](https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html))。您希望我解決API的其他方面嗎?或者我錯誤地理解了你的API是什麼意思? – apsillers

+0

我的印象是bug報告引用了另一個JS語音API。儘管如此,這非常有幫助。 –

15

Web Speech API可以已經被Chrome擴展可以使用,甚至在後臺頁面和延伸按鈕彈出。它的工作原理並不一定是預期的功能,我之前已經解釋了它是如何工作的以及爲什麼它在this answerHow to use webrtc insde google chrome extension?中工作。前面的解釋是關於WebRTC,但它同樣適用於Web Speech,並且可以如下使用:

  1. 實例化一個webkitSpeechRecognition實例並開始記錄。
  2. 如果檢測到許可錯誤(使用event.error === 'not-allowed'觸發onerror),請打開擴展頁面(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). 
    });