3

我目前正在使用 pocketsphinx 库识别热门词(如“ok google”)。该应用程序运行良好,只是它始终只使用手机的麦克风来识别语音。我的用例是这样的:

  1. 我听一个热门词并使用 MediaPlayer 播放一些音乐。
  2. 继续听下一个命令,同时保持播放音乐并做出相应的反应。

该应用程序运行良好,通过蓝牙耳机播放音乐,同时识别语音,但它始终使用手机的麦克风。即使蓝牙耳机已连接或未连接,它仍然使用手机的麦克风。

我尝试使用:

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),即使在听音乐时,我也可以通过蓝牙耳机录制音频。

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

请帮帮我。提前致谢。

4

1 回答 1

1

启动SCO模式是正确的,之后pocketsphinx会监听蓝牙耳机。

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

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

于 2015-04-15T21:19:09.603 回答