在播放音乐时通过蓝牙耳机在Android中进行语音识别

时间:2015-04-15 19:01:09

标签: android audio bluetooth speech-recognition pocketsphinx-android

我目前正在使用pocketsphinx库识别Hot word(如“ok google”)。 该应用程序工作正常,但它始终只使用手机的麦克风来识别语音。 我的用例是这样的:

  1. 我听热门词并使用MediaPlayer播放一些音乐。
  2. 在保持音乐播放的同时继续听下一个命令并做出相应的反应。
  3. 该应用程序工作正常,音乐通过蓝牙耳机播放,语音也同时被识别,但它总是使用手机的麦克风。即使蓝牙耳机已连接或未连接,它仍然使用手机的麦克风。

    我尝试使用:

    AudioManager mAudioManager = 
    (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    mAudioManager.setMode(AudioManager.MODE_IN_CALL); 
    mAudioManager.startBluetoothSco();
    

    我尝试使用:

    AudioManager mAudioManager = 
    (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 
    mAudioManager.startBluetoothSco();
    

    在这两种方法中,它都会切断音乐,并在蓝牙麦克风中进行聆听。

    我需要一种方法,音乐播放器不是从蓝牙耳机上剪下来的,但我仍然可以通过蓝牙耳机识别语音。

    例如: 我正在通过蓝牙耳机听音乐。 我打开了录音应用程序(https://play.google.com/store/apps/details?id=com.andrwq.recorder) 即使在听音乐的时候,我也可以通过蓝牙耳机录制音频。

    这让我觉得有可能,但我不知道如何。

    请帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

启动SCO模式是正确的,之后pocketphinx将收听蓝牙耳机。

要在sco模式下禁用手机麦克风,请使用am.setMicrophoneMute(true);

要通过SCO播放音频,您需要播放器通过STREAM_VOICE_CALL播放。也许在SCO切换后必须重新启动播放器。