17

Google Chrome 확장 프로그램은 Chrome의 웹 음성 인식 API를 지원합니까? 음성 인식 개체를 만들 수있는 자바 스크립트가 포함되어 있지만 내 확장 프로그램을 시작할 때 마이크 액세스를 요청하는 메시지가 표시되지 않습니다.Chrome 확장 프로그램은 WebSpeech API를 지원합니까?

내 코드에는 문제가 없습니다. Google에서 검색했지만 Chrome 확장 프로그램이 Web Speech API를 지원하는지 여부에 대한 정보를 찾을 수 없습니다. 나는 단지 예/아니오 대답을 원합니다.

참고 : WebSpeech API가 로컬 파일에 대해 작동하지 않는다고 생각합니다.

답변

11

업데이트 :RobW's answer에 의하면,이 대답은 오래된 지금, 그리고 웹 음성 API는 이제 확장의 내부 사용할 수 있습니다. (영업 이익이 그것을 해제 허용하지 않는 불행하게도, 나는이 대답을 삭제할 수 없습니다.)


대답은 아직 하지입니다. chrome-extension:을 통해 액세스 한 페이지의 URL은 speechRecognitiongetUserMedia을 포함한 모든 미디어 입력 API에 액세스 할 수 없습니다. API를 사용하려고 시도하면 오류 콜백이 즉시 트리거됩니다.

나는 원래 speechRecognitiongeolocation API처럼 일할 수있는 생각 : 확장 팝업이 위치 정보 권한에 대한 메시지를 표시 할 수는 없지만 chrome-extension: 페이지는 전체 브라우저 페이지로로드 할 수있는 단지 일반 페이지와 같은 허가 프롬프트. 그러나 미디어 API는 이런 식으로 동작하지 않습니다.; 페이지가 팝업인지 전체 페이지인지에 관계없이 실패합니다.

bug report to fix this이 있으며 개발자가 매니페스트에서 미디어 액세스 권한을 지정할 수 있습니다. 이 버그가 수정되면 확장 프로그램에 자동 마이크/비디오 액세스 권한을 부여하는 매니페스트 설정 권한이있을 수 있으므로 권한을 요청할 수 없다는 것은 문제가되지 않습니다. 따라서 적절한 매니페스트 권한을 가진 확장 프로그램을 사용하면 자유롭게 사용할 수 있습니다 Speech API).

+0

감사합니다,하지만 난 크롬의 기본 웹 음성 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

나는 버그 보고서가 다른 JS 음성 API를 언급한다는 인상을 받고있다. 그럼에도 불구하고 매우 도움이된다. –

15

Web Speech API은 백그라운드 페이지 및 확장 프로그램 버튼 팝업에서도 Chrome 확장 프로그램에서 이미 사용됩니다. 사실 그것이 작동한다는 것은 반드시 의도 한 기능이 아니며 이전에 작동하는 이유와 작동하는 이유를 설명했습니다. this answer ~ How to use webrtc insde google chrome extension?. 앞의 설명은 WebRTC에 대해이지만, 웹 음성에 동일하게 적용, 다음과 같이 사용할 수 있습니다

  1. webkitSpeechRecognition 인스턴스를 초기화하고 녹음을 시작합니다.
  2. 사용 권한 오류가 발견 된 경우 (onerrorevent.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). 
    }); 
    
관련 문제