Google サーバーで音声を認識するために、この質問に対するStephanの回答で提案されているように、SpeechRecognizer クラスを RecognitionListener と組み合わせて使用します。さらに、次のように RecognitionListener から onBufferReceived() コールバックを使用して、認識されているオーディオ信号をキャプチャしようとします。
byte[] sig = new byte[500000] ;
int sigPos = 0 ;
...
public void onBufferReceived(byte[] buffer) {
System.arraycopy(buffer, 0, sig, sigPos, buffer.length) ;
sigPos += buffer.length ;
}
...
SpeechRecognizer が Google サーバーへの接続に失敗した場合、音声のチャンクが上記のsig
配列にコピーされず、HTTP 接続タイムアウト例外がスローされた場合を除いて、これは正常に機能しているようです。SpeechRecognizer は最終的に Google サーバーに接続し、認識結果は完全な音声信号が受信されたことを示します。配列だけにsig
いくつかのオーディオ チャンクがありません。
誰も同じ問題を経験していますか? 解決のヒントはありますか?ありがとうございました!