Расширяют ли расширения Chrome API WebSpeech?
Расширяются ли расширения Google Chrome с помощью API распознавания речи через веб-интерфейс Chrome Web? Я включил некоторый javascript для создания объекта распознавания речи, но когда я запускаю расширение, мне не предлагается доступ к микрофону.
Это не проблема с моим кодом. Я искал в Google, но я не могу найти никакой информации о том, поддерживают ли расширения Chrome API Web Speech. Я просто хочу ответить "да/нет".
Примечание. Я считаю, что API WebSpeech не будет работать для локальных файлов.
Ответы
Ответ 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).
});