16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

electronでWebSpeecAPIの音声認識を利用するときの注意点

Last updated at Posted at 2016-03-15

結論

electronはChromeじゃなくてあくまでもChromium。

内容

electronでwebSpeechAPIを使ったアプリケーションを書いていました。
色々はしょりますが、こんな感じです。

const speech = new webkitSpeechRecognition();
speech.lang = 'ja-JP';

speech.onresult = event => {
    const results = event.results;
    if (results[0] && results[0][0]) {
        const said = results[0][0].transcript.trim();
        console.log(said);
    }
};

しかし、途中から以下のようなエラーが発生しました。

SpeechRecognitionError {error: "network", message: "", type: "error" ...

ネットワークのエラー?エラーメッセージは空ですし何だかよくわからりません。
とりあえず、Chromeで同様のコードを実行。すると、普通に動きます。
一瞬、すわElectron固有の問題か、と思いましたが、少し前まで動いていたはずです。
調べると、ネットワークエラーはどうやらAPI制限のエラーらしいです。

参考

Web Speech APIはChromeから使う分には無制限だけど、ElectronはChromiumだから50リクエストだよということらしいです。
ChromiumからWebSpeecAPIを使うにはAPIを取得して設定するらしいですが、我らがElectronにもprocess.envを見るとやはりGOOGLE_API_KEYが設定されています。

electronのソースから確認できます。

まとめ

Chromeだと思ってelectronアプリケーションを書いているとハマることがあるよという話でした。
また、electronの音声認識アプリケーションは現状ちょっと厳しいのかなというのが私の結論です。
まあ音声認識アプリケーションにどの程度需要があるがわかりませんが。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?