【问题标题】:Android AudioRecord disable gain filterAndroid AudioRecord 禁用增益过滤器
【发布时间】:2013-07-01 15:30:04
【问题描述】:

我正在尝试对语音检测器进行编程。到目前为止,我可以使用 audiorecord 读取音频数据,但我得到了一个奇怪的频率响应。

我正在这样读取数据:

private int channelConfiguration = AudioFormat.CHANNEL_IN_MONO;
private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
private int sampleRate = 44100;
private int frameByteSize = 1024;
short[] buffer;

int recBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfiguration, audioEncoding);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfiguration, audioEncoding, recBufSize);
buffer = new short[frameByteSize];

audioRecord.read(buffer, 0, frameByteSize);

为了校准,我使用 FFT 将输入音频转换到频域并获得最大值。 然后,我在 Matlab 中创建音频音调,就像这里How do you generate dual tone frequencies in MATLAB? 一样,我播放它们。我在 300 到 20000 Hz 范围内获得了良好的读数。在 300 Hz 之前,我没有得到好的结果,只是振荡值。这让我觉得有某种带状滤波器。

另外,我一直面临着其他问题。频率响应在低频也有增益。

我用完全静音、语音和背景噪音录制音频,这是频率响应。

当我在静音场景下录制时,我得到了这个:

录制语音时我得到这个:

从图中可以看出,从 1000 到 7000Hz 的增益很小。

我的问题是,是否有办法避免或禁用 android 默认具有的可能增益或过滤器。

注意:我尝试将媒体记录器更改为语音识别 (MediaRecorder.AudioSource.VOICE_RECOGNITION),它具有相同的行为。

注意:我使用的是 NEXUS 7 设备。

【问题讨论】:

    标签: android audio filter audiorecord


    【解决方案1】:

    您可以使用低通滤波器或任何其他平滑滤波器来滤除尖峰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-11
      • 2012-06-10
      • 1970-01-01
      • 2012-12-31
      • 2012-09-23
      • 2012-07-02
      • 1970-01-01
      • 2014-12-06
      相关资源
      最近更新 更多