java实现音频信号的高通滤波器
我能够编写一个程序来捕获音频信号,消除背景噪音,应用窗口功能并可视化该信号。我的程序一直工作到这一点,没有出现错误。现在我正试图在代码中实现高通滤波器。我已经找到了这个部分的API。但我无法根据我的代码应用它。这是我的代码:
private class RecordAudio extends AsyncTask<Void, double[], Void> {
@Override
protected Void doInBackground(Void... params) {
started = true;
try {
DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(
recordingFile)));
int bufferSize = AudioRecord.getMinBufferSize(frequency,
channelConfiguration, audioEncoding);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
frequency, channelConfiguration, audioEncoding,
bufferSize);
NoiseSuppressor.create(audioRecord.getAudioSessionId());
short[] buffer = new short[blockSize];
double[] toTransform = new double[blockSize];
long t = System.currentTimeMillis();
long end = t + 15000;
audioRecord.startRecording();
while (started && System.currentTimeMillis() < end) {
int bufferReadResult = audioRecord.read(buffer, 0,
blockSize);
for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
toTransform[i] = (double) buffer[i] / 32768.0;
dos.writeShort(buffer[i]);
}
toTransform = hann(toTransform);
transformer.ft(toTransform);
publishProgress(toTransform);
}
audioRecord.stop();
dos.close();
} catch (Throwable t) {
Log.e("AudioRecord", "Recording Failed");
}
return null;
}
This是API链接
有人能帮我做这个功能吗?我真的很感激!:)
提前谢谢
# 1 楼答案
下面是我从c#中找到的库中转换为java的类。我使用它,效果很好。您也可以将该类用于低通滤波器
我就是这么用的
在得到阵列的fft后,你会看到它被过滤了。 希望有帮助