4
4

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.

AndroidのSpeechRecognizerでコールバック返って来ない問題

Last updated at Posted at 2017-03-01

概要

AndroidにおけるSpeechRecognizerに不具合がでてるようです。
自分のアプリケーションに対して特に変更していないのに、急にユーザーから苦情がきたので気づきました。

再現方法

2017年2月下旬における最新版Googleアプリ(6.12.25.21.arm)にアップデートしていた場合、再現が可能です。
※AndroidのSpeechRecognizerの認識処理はGoogleアプリで行われているため

  1. デバイスをオフラインにします
  2. SpeechRecognizerでstartListeningをします
  3. わざと認識失敗します。(なにも喋らなければOK)
  4. 認識失敗の音がなります
  5. :boom: onErrorのコールバックが返ってきません

回避策

  • オフラインでの音声認識を制限方法
    これはユーザービリティに関わるのであまりやりたくないのですが、コールバック待ちでフリーズする問題は防げます。

  • SpeechRecognizerにTimeoutを設定する方法
    SpeechRecognizerをRx化してる場合は特にTimeout設定すると簡単に出来ます。SpeechRecognizerは連続音声認識ではないので、十数秒でTimeoutを設定すれば十分なlistening durationがkeep出来ます。

最後に

Googleアプリは日々アップデートされますが、SpeechRecognizer周りも結構変更があるので、Googleアプリをダウングレードするなどして確認できる環境を整える必要があると感じました。

余談

認識失敗時の音もならなくなったようです。認識成功時の音は変わらず。認識をキャンセルするときは失敗時の音がなります。

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?