【问题标题】:Can someone here has a sample of high pass filter for PCM audio data?这里有人可以提供 PCM 音频数据的高通滤波器样本吗?
【发布时间】:2011-08-15 07:46:01
【问题描述】:

美好的一天。 我对DSP很穷。我很难理解算法。 我有一个 c# 应用程序,一个记录声波的记录器功能 但这个声音是所有声音的混合。具体来说,当我收到 数据我将过滤此数据以仅保存过滤后的高频音频数据, 示例截止频率为 15khz。 对于这个过滤器,给出的是 具有大小的数据样本, 和截止频率

C/C++ 很好

在我收到数据样本时,应用高通滤波器,然后将结果保存到 wav。

-丁字裤

【问题讨论】:

    标签: c++ c filter signal-processing pcm


    【解决方案1】:

    在设计合适的滤波器之前,您需要了解采样率并对滤波器规格有一个合理的了解。仅指定 15 kHz 截止频率是不够的,例如你可能想要这样的东西:

    Sample rate: 44.1 kHz
    Stop-band: < 12 kHz
    Stop-band rejection: > 80 dB
    Pass-band: > 15 kHz
    Passband ripple: +/- 1 dB
    

    然后您可以将这些参数输入到滤波器设计包中,这将为您提供所有滤波器系数等。

    请注意,过滤器的复杂性(即过滤器顺序 = 阶段数或“抽头”)将高度依赖于过滤器规范,因此理想情况下,您希望使用一个过滤器设计包,让您可以使用该规范轻松地让您可以在设计要求与所需的计算带宽之间进行权衡。

    您还需要确定相位和/或群延迟是否对您很重要 - 使用线性相位 FIR 获得恒定群延迟(更昂贵)或递归 IIR 如果相位/延迟不重要(便宜得多实施)。

    请注意,有免费的在线过滤器设计包可用,例如http://www-users.cs.york.ac.uk/~fisher/mkfilter/ 看起来不错(它甚至可以为您生成 C 代码滤波器实现),尽管在选择滤波器类型等方面可能至少需要初学者级别的信号处理知识。


    为了帮助理解基本的滤波器设计参数,下面是来自http://dspguru.com 的有用图表。请注意,这适用于低通滤波器,但相同的参数适用于高通情况。

    【讨论】:

    • 感谢您提供的非常有用的信息。我收到的样本是 44.1kHz,我不知道通带和阻带。我不确定阻带和通带是否用于带通滤波器。在 C++ 中,我收到了 waveInProc 回调中的数据……基本上,这些音频数据是不同频率声音的混合。我将对这个具有 15kHz(示例)截止频率的音频数据应用高通滤波器。这样15khz以上的频率只会保存在wav文件中。
    • @tongy:您需要了解的重要一点是,没有完美或理想过滤器之类的东西 - 这就是我们定义阻带的原因 和一个通带,在它们之间有一个过渡带(即在上面的示例中,介于 12 和 15 kHz 之间)。在创建合适的过滤器规范之前,您需要充分了解您想要实现的目标。
    • 先生。保罗,谢谢。我明白了...根据我的理解,我认为高通滤波器不需要通带纹波或阻带。
    • @tongy:这是不正确的 - 每个 物理上可实现的滤波器都有一个通带和一个阻带(否则它就不是一个滤波器!)。通带中总是会出现增益(又名波纹)变化。阻带中的增益也有变化,但通常我们只是指定阻带的最大增益(或最小阻带抑制)。在开始尝试设计过滤器之前,您需要了解这些基本参数。
    • @tongy :只有完美且无限长的高通滤波器才会没有通带。所以如果你愿意等到你死了,宇宙结束了,你的过滤器才能完成运行……否则,选择一个通带。
    猜你喜欢
    • 2015-04-02
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多