我从麦克风接收输入,然后在其上应用 fft。之后,我将高于 1KHz 的频率设为零(高通滤波器)。
我想知道在将麦克风输入传递给 fft 并应用高通滤波器之后如何记录麦克风的输入。
我正在使用 c#,我需要做什么?:P
在您的 FFT 和过滤之后,您需要执行逆 FFT 以将数据返回到时域。然后您想将该组样本添加到您的 .WAV 文件中。
就生成文件本身而言,该格式已被广泛记录(谷歌搜索“.WAV 格式”应该会得到比您有用的更多的结果),而且非常简单。它基本上是一个简单的标题(称为“块”),表示它是一个 .WAV 文件(或实际上是一个“RIFF”文件)。然后是一个“fmt”块,它讲述了样本的格式(每个样本的位数、每秒样本数、通道数等)。然后是一个包含样本本身的“数据”块。
由于听起来您将要实时执行此操作,因此我的建议是忘记执行 FFT、滤波器和 iFFT。FIR 滤波器将给出基本相同的结果,但通常要快得多。FIR 滤波器的基本思想是,不是将数据转换为频域,对其进行滤波,然后再转换回时域,而是将滤波器系数转换为时域,并将它们(公平地)直接应用于输入数据。这就是 DSP 的优势所在:几乎所有的 DSP 都有乘法累加指令,可以在一条指令中实现大部分 FIR 滤波器。然而,即使没有这个,让 FIR 滤波器在现代处理器上实时运行也不需要任何真正的技巧,除非你真的在做快速采样。无论如何,让 FFT/滤波器/iFFT 以相同的速度运行要容易得多。