我正在尝试使用TarsosDSP库(以及最小的Android库来过滤Android立体声音频(使用AudioRecord录制)中的特定频率,但此处不包含此代码)。
我想要建议有两个问题。
以下是两个问题的代码。
float bandPassCentreFreq = 10000,
bandPassWidth = 20;
BandPass bandPass=new BandPass(bandPassCentreFreq, bandPassWidth, (float) RECORDER_SAMPLERATE);
TarsosDSPAudioFormat audioFormat = new TarsosDSPAudioFormat((float)RECORDER_SAMPLERATE,16,2,true,false);
AudioEvent audioEvent = new AudioEvent(audioFormat);
//readings shorts data and splitting to 2 channels from the mic of the smartphone (I am using a stereo recording)
recorder.read(sData, 0, BufferElements2Rec);
for (int i = 0; i < BufferElements2Rec; i++) {
if (i % 2 == 0)
camcorderData[i / 2] = sData[i];
else
micData[(i - 1) / 2] = sData[i];
}
//apply the bandpass filter to the recorded data
float[] camFloat = Utils.short2Float(camcorderData);
float[] micFloat = Utils.short2Float(micData);
//Apply filter to first channel data
audioEvent.setFloatBuffer(camFloat);
bandPass.process(audioEvent);
camFloat=audioEvent.getFloatBuffer();
//Apply filter to second channel data
audioEvent.setFloatBuffer(micFloat);
bandPass.process(audioEvent);
micFloat=audioEvent.getFloatBuffer();
//convert data back to the shorts form
camcorderData = Utils.float2Short(camFloat);
micData = Utils.float2Short(micFloat);
我希望只能看到指定的带通频率,但它会显示2个完全不需要的频率。关于这里发生了什么的任何想法?
P.S。 - 我是Signal Processing公司的新手。