Google云语音停顿
Google cloud speech pause
我在使用 Google Cloud Speech 时遇到问题。我无法暂停 Google Cloud Speech,以暂停识别我目前正在关闭 SpeechRecognizer,当我再次需要它时,我会重新启动它。但是这样,停止需要很多时间才能停止,我必须在后台线程中 运行。有时它会及时停止,但并非总是如此。几天来,我在主线程上使用它,我没有遇到任何问题,但现在它开始跳帧,所以我移动了它。我需要它立即停止,因为在停止之后是语音到文本,如果我等到识别停止,即使我在后台线程上移动它,流程也会看起来很滞后。
我正在使用他们示例中的代码来启动和停止它:
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();
}
}
}
有什么办法可以暂停识别吗?
我找到了解决方案:
// Simply delete synchronized (mLock)
public void stop() {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}
我在使用 Google Cloud Speech 时遇到问题。我无法暂停 Google Cloud Speech,以暂停识别我目前正在关闭 SpeechRecognizer,当我再次需要它时,我会重新启动它。但是这样,停止需要很多时间才能停止,我必须在后台线程中 运行。有时它会及时停止,但并非总是如此。几天来,我在主线程上使用它,我没有遇到任何问题,但现在它开始跳帧,所以我移动了它。我需要它立即停止,因为在停止之后是语音到文本,如果我等到识别停止,即使我在后台线程上移动它,流程也会看起来很滞后。 我正在使用他们示例中的代码来启动和停止它:
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();
}
}
}
有什么办法可以暂停识别吗?
我找到了解决方案:
// Simply delete synchronized (mLock)
public void stop() {
if (mThread != null) {
mThread.interrupt();
mThread = null;
}
dismiss();
if (mAudioRecord != null) {
mAudioRecord.stop();
}
}