RecognitionListener
を実装するアクティビティがあります。継続させるために、onEndOfSpeech()
のたびに、リスナーを再起動します。
speech.startListening(recognizerIntent);
ただし、起動するまでに少し時間がかかります(約0.5秒)ので、この0.5秒のギャップがあり、何も聞いていません。そのため、その時差で話された言葉が恋しいです。
一方、Googleの音声入力を使用して、キーボードの代わりにメッセージを口述する場合、この時間のギャップは存在しません。意味-解決策があります。
それは何ですか?
ありがとう
CMUSphinx を使用して、音声を継続的に認識することをお勧めします。 Google音声認識APIを使用して継続的な音声認識を実現するには、バックグラウンドサービスのループに頼る必要がある場合があります。これは、リソースを大量に消費し、デバイスのバッテリーを消耗します。
一方、Pocketsphinxは本当に素晴らしい働きをします。ユーザーがデバイスに触れることなく、キーフレーズを見つけて、ロック画面の背後にある音声コマンドを認識するのに十分な速度です。そして、それはすべてこれをオフラインで行います。 デモ を試すことができます。
あなたが本当にグーグルのAPIを使いたいのなら、 これを見てください
次のようなオプションがあります。
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 2000); // value to wait
または
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 2000);
これらはJellyBean以上では機能しなくなりましたが、ICS以下では機能します-意図したものかバグかはわかりません!