1
Googleクラウドスピーチに問題があります。 Google Cloud Speechを一時停止して認識を一時停止することはできません。私は現在SpeechRecognizerを停止しています。もう一度それが必要になったら、もう一度起動します。しかし、この方法では、停止は停止するのに多くの時間がかかり、バックグラウンドスレッドで実行する必要があります。何度か、それは時間通りに止まるが、必ずしもそうではない。私は数日間、メインスレッドで使用しましたが、問題はありませんでしたが、現在はフレームをスキップして移動しました。私はそれが瞬時に停止する必要があります。なぜなら、停止後にテキストに音声が続き、認識が停止するまで待っていれば、バックグラウンドスレッドで動かしても、流れが遅く見えるからです。 は、私はそれを起動および停止するために、そのサンプルからのコードを使用しています:Googleクラウド音声ポーズ
認識を開始private void stopVoiceRecorder() {
mNotifyForVoiceEnd.start();
if (mVoiceRecorder != null) {
mVoiceRecorder.stop();
}
isListening = false;
runOnUiThread(new Runnable() {
@Override
public void run() {
appBar.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.primary));
}
});
}
:
private void startVoiceRecorder() {
mNotifyForVoiceStart.start();
if (mVoiceRecorder != null) {
mVoiceRecorder.stop();
mVoiceRecorder = null;
}
mVoiceRecorder = new VoiceRecorder(mVoiceCallback);
mVoiceRecorder.start();
isListening = true;
runOnUiThread(new Runnable() {
@Override
public void run() {
appBar.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.tab_not_hearing));
}
});
}
私はTraceViewを使用して多くの仕事をして問題が
mVoiceRecorder.stop();
です
のコードと.stop()のコード
public void stop() {
synchronized (mLock) {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}
}
認識を一時停止する方法はありますか?