以下の記事で正常にオフライン音声認識できていたアプリをそのまま安価なAndroidタブレットで動かそうとしたのですが、
E/SpeechRecognizer: no selected voice recognition service
というエラーが吐き出されました。
このタブレットにはGMS認証されていないAOSPのAndroid 6.0がインストールされており、通常のAndroidとは違うという視点でAOSP、SpeechRecognizer、エラーメッセージをキーワードにして色々調査しました。
AOSPは"Android Open Source Project"の略で、オープンソースのAndroidです。
目次
GMS認証とは
GMS認証は"Google Mobile Service"の略で、Google の人気アプリや API を Android 搭載端末にプリインストールできるサービスです。
普通のスマホにあるGoogle検索、Chrome、YouTube、Google Play Store等です。
https://www.android.com/intl/ja_jp/gms/
GMSはAOSPには含まれておらず、Googleとのライセンス契約が必要です。
なので超安価の中国製タブレット等にはGMS認証されていないAOSPのみの端末が多いです。
SpeechRecognizerの依存関係
調査していくとStack Overflowでそれっぽい回答があるトピックが2件見つかりました。
SpeechRecognizer: no selected voice recognition service
Android Speech Recognizer on different Devices
この中で気になったのが以下の2件の回答です。
This is a fundamentally wrong solution: "googlequicksearchbox" might not be installed, or might not be installed in the future, or might not be what the user wants to use. The correct solution is to inform the user that no recognizer is installed/selected and then open a dialog helping the user with the installation/selection. – Kaarel
これは根本的に間違った解決策です。 "googlequicksearchbox"がインストールされていない、将来インストールされない、またはユーザーが使用したいものではない可能性があります。正しい解決策は、認識機能がインストール/選択されていないことをユーザーに通知してから、インストール/選択を支援するダイアログを開くことです。
Yes there is a dependency on the "Google" app (which has the ID com.google.android.googlequicksearchbox):
you could check if the device has it installed, and if not, install it from Google's Play Store.はい、 "ID"を持つ "Google"アプリに依存していますcom.google.android.googlequicksearchbox。
デバイスにインストールされているかどうかを確認し、インストールされていない場合はGoogleのPlayストアからインストールできます。
どうもcom.google.android.googlequicksearchbox
というパッケージが必要なようです。
adb shell pm list package
で調べた所、普通のスマホにはインストールされており、AOSPのタブレットにはインストールされていませんでした。
apkのインストール
という訳でcom.google.android.googlequicksearchbox
をインストールしましょう。
PCで.apkをダウンロードし、adb経由でインストールします。
apkをダウンロードできるサイトはいくつかあるようですが、私は以下のサイトからダウンロードしました。
https://www.apkmonk.com/app/com.google.android.googlequicksearchbox/
オフライン音声認識用ファイルのダウンロード
apkでインストールしただけではダメで、前述の記事と同様にオフライン音声認識用のファイルを端末にダウンロードする必要があります。
しかし、AOSPのAndroidはcom.google.android.googlequicksearchbox
をインストールしても音声入力の項目がありません。
音声入力が無効になっているので、有効にしてやる必要があります。
現在のキーボード -> キーボードの選択 -> Google音声入力を無効→有効にしてください。
するとGoogle音声入力の項目が出現するので、あとは普通にオフラインの音声認識からダウンロードするだけです。
GMS認証されていないAOSPのAndroidに触れる機会は少ないかもしれませんが、誰かの参考になれば幸いです。