我正在开发一个应用程序,需要对从麦克风捕获的原始PCM音频执行识别算法.在我测试过的所有Android设备上,PCM数据都是可用的(即原始音频数据).对于新的Sprint EVO,情况并非如此.
Sprint EVO在麦克风上有AGC(自动增益控制),它会破坏数据,使我们的识别算法不再有效.
我相信这是HTC为此设备(以及可能未来的设备)添加到操作系统中的一项功能.我已经在使用相同操作系统版本(2.1)的其他几个设备上测试了我们的应用程序,而这些其他设备的行为正常.
很遗憾,HTC尚未发布此设备上使用的代码.我希望我可能不得不使用JNI来绕过这个特定的设备,我愿意这样做,但是如果没有访问HTC源,我就不知道从哪里开始.
没有办法扭转AGC的影响,所以我一直试图解决它.
更具体的信息:
我正在使用AudioRecorder来访问原始PCM数据.我尝试了一些使用MediaRecorder记录AMR数据的程序,这些记录也表现出相同的AGC属性.
我还有一件事要做,就是编写自己的例程来使用MediaRecorder并使用setAudioSource(AudioSource.VOICE_RECOGNITION).我在这个标志上可以找到的唯一文档来自Android参考,它简单地说明"如果可用的话,调整用于语音识别的麦克风音频源,其行为就像DEFAULT".这可能是我需要的,但是需要额外的步骤来解码AMR数据以获得PCM数据(如果必须的话,我会这样做.)
如果有人知道这个新的"功能",任何信息将不胜感激.具体来说,如果我得到以下任何问题的答案,我的生活会好得多:
任何其他线索,提示,提示将不胜感激.