从您通过startActivityForResult()调用它开始到显示其对话框准备讲话之前,Google语音搜索都会有很大的延迟。

这就要求用户在讲话之前始终注视屏幕,等待对话框显示。

因此,我正在考虑通过实现RecognitionListener并在onReadyForSpeech()中发出DTMF音来生成声音信号而不是对话框,如以下代码 fragment 所示:

  @Override
  public void onReadyForSpeech(Bundle params) {
    Log.d(LCTAG, "Called when the endpointer is ready for the user to start speaking.");
    mToneGenerator.startTone(ToneGenerator.TONE_DTMF_1);
    try {
      Thread.sleep(50);
    } catch (InterruptedException e) {
      Log.e(LCTAG, "InterruptedException while in Thread.sleep(50).");
      e.printStackTrace();
    } // SystemClock.sleep(50);
    mToneGenerator.stopTone();
  }

声音听起来很漂亮,但是……它也被麦克风“听到”,到达语音识别服务并始终生成识别错误 ERROR_NO_MATCH

有办法解决这个问题吗?

最佳答案

这是一个随机的想法,很可能行不通。

您可以在播放提示音时尝试禁用麦克风(也许通过AudioManager.setMicrophoneMute)吗?

关于android - RecognitionListener.onReadyForSpeech()中的DTMF音误认为是语音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5734555/

10-12 03:45