Электрон не работает с веб-речевым API? - PullRequest
0 голосов
/ 03 марта 2020
mounted() {
 window.SpeechRecognition = window.webkitSpeechRecognition || 
 window.SpeechRecognition;
 let finalTranscript = "";
 let recognition = new window.SpeechRecognition();

 recognition.interimResults = true;
 recognition.maxAlternatives = 10;
 recognition.continuous = true;

recognition.onresult = event => {
  let interimTranscript = "";
  for (
    let i = event.resultIndex, len = event.results.length;
    i < len;
    i++
  ) {
    let transcript = event.results[i][0].transcript;
    if (event.results[i].isFinal) {
      finalTranscript += transcript;
    } else {
      interimTranscript += transcript;
    }
  }

  console.log(finalTranscript + interimTranscript);
};
recognition.start();
}

Невозможно заставить API веб-речи работать в моем электронном приложении, такой же код хорошо работает в браузере. Любые возможные причины? Я использую vue js с электроном, и речевая часть вызывается при монтировании компонента.

1 Ответ

0 голосов
/ 03 марта 2020

Как вы, возможно, уже знаете, Electron построен на основе браузера с открытым исходным кодом Chromium .

Это несоответствие между браузером и Electron связано с тем, что Chromium не включает ключи Google API, необходимые для запуска определенных веб-сервисов (например, Speech, Geolocation), в то время как Chrome делает (источник: Браузер Chromium против Google Chrome).

На сегодняшний день существует переменная окружения GOOGLE_API_KEY, которая добавляет ключ API для вашего приложения, но работает только для веб-службы Geolocation. Вы можете проверить это в исходном коде Electron , где эта переменная подключена только к функции ElectronBrowserClient::GetGeolocationApiKey().

На данный момент, вам лучше всего было бы рассмотреть реализацию этих встроенные API Google.

...