Расширяют ли расширения Chrome API WebSpeech? - программирование
Подтвердить что ты не робот

Расширяют ли расширения Chrome API WebSpeech?

Расширяются ли расширения Google Chrome с помощью API распознавания речи через веб-интерфейс Chrome Web? Я включил некоторый javascript для создания объекта распознавания речи, но когда я запускаю расширение, мне не предлагается доступ к микрофону.

Это не проблема с моим кодом. Я искал в Google, но я не могу найти никакой информации о том, поддерживают ли расширения Chrome API Web Speech. Я просто хочу ответить "да/нет".

Примечание. Я считаю, что API WebSpeech не будет работать для локальных файлов.

4b9b3361

Ответ 1

Обновление: На основе RobW answer этот ответ устарел, а API веб-речи теперь можно использовать внутри расширений, (К сожалению, я не могу удалить этот ответ, если OP не принимает его.)


Ответ еще не. Страницы, к которым обращаются через chrome-extension:, не могут обращаться к API-интерфейсам ввода-вывода, включая speechRecognition и getUserMedia. Любая попытка использования API сразу же вызовет обратный вызов ошибки.

Я изначально думал, что speechRecognition может работать как API geolocation API: расширение не может запрашивать разрешение на геолокацию, но chrome-extension: страницы, загруженные как полные страницы браузера, могут запрашивать разрешение, как обычную страницу. Однако медиа API не ведут себя таким образом; они не работают независимо от того, является ли страница всплывающей или полной.

Существует отчет об ошибке чтобы исправить это и разрешить разработчикам указывать разрешения доступа к медиа в манифесте. Когда эта ошибка исправлена, расширения могут иметь разрешение на наличие манифеста, которое предоставляет им автоматический доступ к микрофону/видео, поэтому невозможность запросить разрешение станет не-проблемой (и, следовательно, расширения с соответствующими разрешениями манифеста смогут свободно использовать Speech API).

Ответ 2

API веб-речи уже может использоваться расширениями Chrome, даже в фоновой странице и всплывающих окнах расширения. Тот факт, что он работает, не обязательно является намеченной особенностью, и я ранее объяснял, как он работает и почему он работает в этом ответе на Как использовать расширение браузера gobrtc insde?. Предыдущее объяснение касается WebRTC, но оно в равной степени относится к Web Speech и может использоваться следующим образом:

  • Создайте экземпляр webkitSpeechRecognition и начните запись.
  • Если обнаружена ошибка разрешения (onerror запускается с помощью event.error === 'not-allowed'), откройте страницу расширения (chrome-extension://[ID]/yourpage.html). Эта страница расширения может быть открыта в новом окне, вкладке или iframe.
  • На этой странице запросите доступ к микрофону. 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).
    });