我正在使用 TarsosDSP 库对 wav 文件应用低通滤波器。这是代码。
private void eq2(File file) throws FileNotFoundException {
new AndroidFFMPEGLocator(this);
InputStream inputStream = new FileInputStream(file);
TarsosDSPAudioFormat format = new TarsosDSPAudioFormat(16000,16,2,true,false);
AudioDispatcher adp = new AudioDispatcher(new UniversalAudioInputStream(inputStream,format),2048,0);
adp.addAudioProcessor(new LowPassFS(100,16000));
RandomAccessFile raf = null;
raf = new RandomAccessFile(Environment.getExternalStorageDirectory()+ "/cibiodLogs/audioFiltered1.wav", "rw");
adp.addAudioProcessor(new WriterProcessor(format,raf));
adp.run();
Thread audioThread = new Thread(adp, "Audio Thread");
audioThread.start();
}
它提供了输出,但输出不稳定,甚至没有经过过滤。 这里看一下原始wav文件和输出wav文件。
我尝试了 2 - 4096 之间的不同缓冲区大小,但每次输出都不稳定或音频未过滤。有人可以指出我这里可能出了什么问题吗?
这个问题现在已经解决了! TarsosDSP 不支持双通道音频处理,因此算法会与两个音频通道混淆,从而给出不稳定的结果。
对于单通道或多通道,您可以使用格式为(采样率 * 通道数)的采样率参数,并将通道数参数保留为 1。