news 2026/8/22 14:08:42

Acoular滤波器组与频率计权:1/3倍频程、A/C计权处理完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Acoular滤波器组与频率计权:1/3倍频程、A/C计权处理完整指南

Acoular滤波器组与频率计权:1/3倍频程、A/C计权处理完整指南

【免费下载链接】acoularAcoustic testing and source mapping software项目地址: https://gitcode.com/gh_mirrors/ac/acoular

Acoular 是一款开源的声学测试与声源定位软件,除波束形成外,它还提供完整的时域信号处理链。本指南带你快速掌握 Acoular 的滤波器组与频率计权功能:包括 1/3 倍频程带通滤波(FiltOctaveFiltFiltOctave)、整组倍频程滤波器组(OctaveFilterBank)、A/C/Z 计权滤波(FiltFreqWeight)以及指数时间平均(TimeExpAverage),全部实现位于 acoular/tprocess.py 中。

为什么倍频程滤波是声学分析的基础?

声呐与风洞试验中,原始麦克风信号是连续的时间波形。要分析噪声,通常需要:

  • 按频带拆分:把信号切分成倍频程(Octave)或 1/3 倍频程(Third octave)频带,逐带分析声压级;
  • 计权处理:按人耳听觉特性施加 A 计权、C 计权(IEC 61672 标准);
  • 时间平均:对声压平方做指数或算术平均,得到稳定的声级数据。

Acoular 把这三类操作做成可"串链"的类:每个类的source指向上一级的输出,按需惰性计算,改参数后自动重算,非常适合交互式分析。

快速上手:一行代码完成 1/3 倍频程滤波

FiltOctave(acoular/tprocess.py 第 1477 行起)实现了 IIR 倍频程/1/3 倍频程带通滤波器,关键参数:

参数默认值说明
band1000频带中心频率(Hz)
fraction'Octave''Octave''Third octave'
order3IIR 滤波器阶数

滤波器边缘频率按 ANSI 1.11 标准做了修正,保证频带内的功率带宽准确,而不仅仅是 -3 dB 带宽正确。一个典型用法:

import acoular as ac ts = ac.TimeSamples(file='three_sources.h5') f1 = ac.FiltOctave(source=ts, band=4000, fraction='Third octave')

官方示例 examples/io_and_signal_processing_examples/example_filter.py 演示了如何对比多个相邻倍频程带滤波后的功率谱,并与未滤波谱求和进行验证。

需要零相位?用 FiltFiltOctave

FiltOctave是因果滤波器,会带来相位延迟。FiltFiltOctave(第 1518 行起)采用正向 + 反向两次滤波(sosfiltfilt),实现零相位滤波,对双程滤波还做了额外带宽修正。注意它会一次性缓存全部样本,内存占用较大,因此只适合对时间信号离线处理。

风洞桨叶时间域波束形成示例 examples/wind_tunnel_examples/example_airfoil_in_open_jet_time_domain_methods.py 就是用它锁定 4 kHz 的 1/3 倍频程频带,再送入BeamformerTime/BeamformerCleant等时域方法成像:

cfreq = 4000 ft = ac.FiltFiltOctave(source=calib, band=cfreq) # 4 kHz 1/3 倍频程

上图为 Acoular 在 8000 Hz、1/3 倍频程带宽下对三个声源的定位结果,三个局部极大值即对应模拟声源位置。

用 OctaveFilterBank 一次生成全部倍频程通道

逐个建FiltOctave对象比较繁琐。OctaveFilterBank(第 1719 行起)是并行的滤波器组,一次把所有频带的滤波结果按通道拼接输出:

参数默认值说明
lband21最低频带索引(21 → 125 Hz)
hband40最高频带索引(40 → 8000 Hz)
fraction'Octave'倍频程或 1/3 倍频程

频带中心频率按 $10^{i/10}$ 生成,1/3 倍频程模式时步长为 1,倍频程模式步长为 3。输出通道数为num_bands × 输入通道数,即每个频带、每个麦克风各占一列,可无缝接给后续的PowerSpectra等类。

A/C/Z 频率计权:FiltFreqWeight 的用法

FiltFreqWeight(第 1615 行起)按 IEC 61672 标准实现频率计权滤波器:

  • weight='A'A 计权,模拟人耳对中低频的衰减,用于 LAeq 等环境噪声评价;
  • weight='C'C 计权,低频衰减较小,常用于峰值/冲击声测量;
  • weight='Z'Z 计权,平直响应,即不做计权。

内部使用双线性变换把 s 域标准系数离散化为 SOS 形式,采样率取自数据源,因此对任意采样频率都能生成正确的数字滤波器。

时间计权与指数平均:TimeExpAverage 补充

声级计除了频率计权还有时间计权TimeExpAverage(第 1589 行起)按 IEC 61672-1 实现指数平均:

  • weight='F':Fast,时间常数 125 ms;
  • weight='S':Slow,时间常数 1 s;
  • weight='I':Impulse,35 ms(非标准扩展)。

把它接在FiltFreqWeight之后,就得到一条与手持声级计等价的"计权 + 时间平均"链路。

串链思路小结 📋

Acoular 的时域处理链是"乐高式"组合,常见组合方式:

  1. 倍频程分析TimeSamples → FiltFiltOctave → PowerSpectra / TimePower → Average
  2. 全频带扫描TimeSamples → OctaveFilterBank → PowerSpectra(所有频带一次算完)
  3. 声级评价TimeSamples → FiltFreqWeight(A/C) → TimeExpAverage(F/S) → TimePower
  4. 波束形成预处理Calib → FiltFiltOctave(4 kHz, 1/3 oct) → BeamformerTime

所有类的完整参数说明可参考 API 参考文档 docs/source/api_ref/index.rst,更多示例见 examples/io_and_signal_processing_examples/ 目录。

掌握以上四个类,你就能在 Acoular 中完成从原始时域信号到倍频程声谱、A/C 计权声级的全部标准处理,并进一步接入它的波束形成与声源定位功能。

【免费下载链接】acoularAcoustic testing and source mapping software项目地址: https://gitcode.com/gh_mirrors/ac/acoular

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:01:11

三步解包微信小程序:unwxapkg 解 wxapkg 工具完整指南

三步解包微信小程序:unwxapkg 解 wxapkg 工具完整指南 【免费下载链接】unwxapkg WeChat applet .wxapkg decoding tool 项目地址: https://gitcode.com/gh_mirrors/un/unwxapkg 这篇文章写给从没碰过微信小程序解包、连 .wxapkg 是什么都搞不清的你。我会手…

作者头像 李华
网站建设 2026/8/22 14:01:07

3分钟装好:7大平台视频下载器完整教程

3分钟装好:7大平台视频下载器完整教程 【免费下载链接】Video-Downloader 下载youku,letv,sohu,tudou,bilibili,acfun,iqiyi等网站分段视频文件,提供mac&win独立App。 项目地址: https://gitcode.com/gh_mirrors/vi/Video-Downloader 周末想离…

作者头像 李华
网站建设 2026/8/22 13:56:42

用 QClaw 创作宝可梦4格漫画的AI 创意应用实践

前言作为一个宝可梦老粉,我的手机相册里存了几百张皮卡丘的表情包,每逢宝可梦新作我必追,甚至连“小智为什么永远10岁”这种问题都认真思考过。一直都想创作点属于自己的宝可梦内容,发小红书跟同好们乐呵乐呵,但是苦于…

作者头像 李华