1. ホーム
  2. android

Android(JellyBean)でのオフライン音声認識

2023-08-23 18:46:48

質問

Googleは、サードパーティアプリのために、Google Nowからオフライン音声認識を利用できるようにしたようです。 これは、次のような場合に使用されます。 Utter というアプリで使用されています。 .

このオフライン音声認識を使って簡単な音声コマンドを行う方法の実装を見たことがある人はいますか? 通常のSpeechRecognizer APIを使うだけで自動的に動作するのでしょうか?

どのように解決するのですか?

Google はその Search アップデートでオフライン認識を静かに有効にしましたが、(まだ)API もなければ SpeechRecognizer クラス . {この記事の下にある編集を参照}。 この機能は追加のコーディングなしで利用できますが、ユーザーのデバイスが動作を開始するために正しく設定される必要があり、これが問題がある場所であり、多くの開発者が「何かを見逃している」と仮定する理由だと私は想像します。

また、Google は、ハードウェアの制約により、特定の Jelly Bean デバイスがオフライン認識を使用することを制限しています。どのデバイスに適用されるかは文書化されておらず、実際、何も文書化されていないため、ユーザーのために機能を構成することは (彼らにとって) 試行錯誤の問題であることが証明されています。一部のユーザーにはすぐに機能しますが、そうでないユーザーには、これが私が提供する「ガイド」です。

  1. デフォルトの Android の音声認識機能が Google に設定されていることを確認します。 Samsung/Vlingo に設定されていることを確認します。
  2. すでにインストールされているオフライン認識ファイルをアンインストールします。 を Google 音声検索設定からアンインストールします。
  3. Android アプリケーションの設定に移動して、Google 検索と Google 音声検索のアップデートをアンインストールできるかどうかを確認します。 Google 検索および Google 音声検索アプリケーションの更新をアンインストールできるかどうか アプリケーションのアップデートをアンインストールできるかどうかを確認します。
  4. 上記を実行できない場合は、Play ストアに移動して、次のオプションがあるかどうかを確認します。 オプションがあるかどうかを確認します。
  5. 再起動(2,3,4ができた場合)
  6. Play ストアから Google 検索と Google 音声検索を更新する (3 または 4 を達成した場合、またはいずれにせよ更新が可能な場合) 3 または 4 を達成した場合、またはいずれにせよ更新が可能な場合)。
  7. 再起動する (6 を達成した場合)
  8. 英語 UK オフライン言語ファイルのインストール
  9. 再起動
  10. 使用方法 を使用します。 を使用します。
  11. 機内モードに切り替えて試してみる
  12. 一度動作すると、他の言語のオフライン認識も動作するようになります。 のオフライン認識も動作し始めるはずです。

編集: 一時的にデバイスのロケールを English UK に変更すると、一部のユーザーでこれが動作するようになるようです。

一部のユーザーは、動作し始めるまでにまだ何度も再起動しなければならなかったと報告していますが、最終的にはすべてそこに到達し、しばしば不可解なことに何が引き金だったのか、そのキーは Google 検索 APK の一部であり、パブリックドメインではありません。 AOSP .

私が確立したところでは、Google は、オフラインまたはオンラインの認識を使用するかどうかを決定する前に、接続の可用性をテストします。最初は接続が可能でも、応答前に接続が失われた場合、Google は接続エラーを提供し、オフラインにフォールバックすることはないでしょう。余談ですが、ネットワーク合成音声の要求が行われた場合、失敗してもエラーは発生せず、無音が得られます。

Google 検索のアップデートでは、Google Now の追加機能は有効にならず、実際、インターネットに接続していない状態で使用しようとすると、エラーになります。私は、この機能が登場したときと同じように静かに停止されるのではないかと思ったので、このことについて言及しました。

SpeechRecognizer クラスを使い始めるつもりなら、警告として、かなり大きな メジャー バグ があり、それを処理するために独自の実装が必要です。

オフライン = true を指定できないため、データ接続を操作しないとこの機能を制御できない。くだらない。なぜこんな簡単なことを有効にしないのかと、何百通ものユーザーからのメールが届くことでしょう!

EDITです。 APIレベル23から、新しいパラメータが追加されました。 extra_prefer_offline が追加され、Googleの認識サービスはこれを遵守しているように見えます。

以上、ご参考になれば幸いです。