我正在使用android中的AudioRecord类。在我的应用程序中,我想测量耳机麦克风捕获的声音,而不需要预过滤或均衡化。我知道为了达到这个结果,我必须正确地设置AudioRecord会话的音频源,但是在不同的设备上尝试我的代码,我得到了不同的结果。例如,使用Galaxy Note3时,我设法用MediaRecorder.AudioSource.VOICE_RECOGNITION记录了原始的麦克风数据,而使用MediaRecorder.AudioSource.MIC时,我得到了经过滤波的波。另一方面,使用Galaxy s4时,我不得不反过来工作。我的错误在哪里?有没有一种独特的方法可以访问麦克风的原始数据?这是我用来初始化音频记录实例的代码行:
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, recordBufferSize);
附言:在我所有的尝试中,我已经关闭了设置页面上所有可用的声音预均衡。我也尝试过使用MediaRecorder.AudioSource.DEFAULT,但它不会改变任何东西。
发布于 2018-07-31 06:08:37
现在可以使用MediaRecorder.AudioSource.UNPROCESSED
了。这将始终提供来自麦克风的未经处理的信号。注意,正如WoodyDev指出的那样,并不是所有的设备都支持这一点。
有关详细信息,请参阅the Android docs。
发布于 2022-01-29 06:53:37
使用AudioFormat.CHANNEL_IN_STEREO以物理方式关闭自动增益控制或降噪(占用降噪麦克风)
https://stackoverflow.com/questions/25366093
复制相似问题