我从麦克风接收输入并在其上应用fft。 之后,我将频率高于1KHz的频率设置为零(高通滤波器)。

我想知道如何在我将麦克风传递到fft后以及应用高通滤波器之后记录麦克风的输入。

我正在使用c#,我需要做什么? :P

有帮助吗?

解决方案

在FFT和滤波器之后,您需要进行逆FFT以将数据恢复到时域。然后,您要将该组样本添加到.WAV文件中。

就生成文件本身而言,格式是广泛记录(用于搜索“.WAV格式”应该比你有任何用途的结果更多),并且非常简单。它基本上是一个简单的标题(称为“块”),它表示它是.WAV文件(或实际上是“RIFF”文件)。然后有一个“fmt”告知样本格式(每个样本的比特数,每秒采样数,信道数等)的块然后是“数据”。包含样本本身的块。

由于听起来你将要实时做这件事,我的建议是忘记做FFT,滤波器和iFFT。 FIR滤波器将提供基本相同的结果,但通常要快得多。 FIR滤波器的基本思想是,不是将数据转换为频域,对其进行滤波,然后转换回时域,而是将滤波器系数转换为时域,并将它们(公平地)直接应用于输入数据。这就是DSP获得保留的地方:几乎所有DSP都具有乘法累加指令,可以在一条指令中实现大部分FIR滤波器。然而,即使没有它,在现代处理器上实时运行FIR滤波器也不会采取任何真正的技巧,除非您正在进行真正快速采样。在任何情况下,使FFT /滤波器/ iFFT以相同的速度运行要容易得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top