☰
MATLAB实现声品质粗糙度计算与工程应用指南
2026/10/5 4:56:25 网站建设 项目流程

1. 声品质粗糙度是什么,为什么值得用MATLAB来做

做了多年声学相关的工作,我接触过不少刚入行的朋友。大家一开始做噪声分析,习惯性动作就是打开FFT看频谱,看哪个频点凸起,然后想办法把这个峰压下去。结果往往是频响曲线看起来很漂亮,但用户一听到声音还是皱眉,说“声音很吵”“听起来很毛躁”。问题出在哪?因为你只分析了“响不响”,没有分析“舒不舒服”。这就引出了声品质这个概念。

声品质,简单理解就是人对声音的主观满意程度。它跟声压级有本质区别:声压级是客观物理量,可以用声级计一测就知道;声品质则是一组融合了心理声学参数的客观描述,比如响度(Loudness)、尖锐度(Sharpness)、粗糙度(Roughness)、波动度(Fluctuation Strength)、AI指数(Articulation Index)等。其中粗糙度是我在工作中最常被问到底的一个参数,因为它直接关系到产品“高级感”的判断。

粗糙度描述的是声音在极短时间内被人耳感知到的“粗糙、沙哑、刺耳”程度。举个例子,你听一把质量差的电动牙刷和一把高端电动牙刷,声压级可能相近,但前者听起来就很“吵、毛糙”,后者则“细腻、顺滑”——这个差异多数时候就是粗糙度在起作用。粗糙度的单位是asper,1 asper被定义为:一个载波频率1kHz、声压级60dB、100%幅值调制深度、调制频率70Hz的声音信号,听起来粗糙度为1 asper。后续Zwicker和Fastl等人做了大量心理声学实验,把这个主观感知量映射成了可计算的数学模型。

那为什么要用MATLAB来算呢?因为粗糙度计算本质上不是查一个表或者敲一个公式就能得到结果的。它需要经过临界频带分解、包络提取、时间域掩蔽效应模拟、多通道归并等一系列信号处理步骤,中间涉及大量滤波器设计、短时傅里叶变换、分段统计等操作。MATLAB最大的优势在于信号处理工具箱成熟、代码调试直观、画图方便,尤其是做算法原型验证和研究对比的时候,比C++或者Python要顺手得多。而且学术界很多关于粗糙度计算的论文和源码都是基于MATLAB发布的,学习成本低,迁移方便。

这篇文章我会把粗糙度计算的底层原理、MATLAB实现步骤、声品质应用分析的方法论一并讲透。不管你是在做家电噪声优化、汽车NVH分析,还是产品声音体验设计,这套方法都可以直接落地。文章里我会放不少代码片段和实操经验,都是我实际跑过的方案。

2. 粗糙度计算的理论基础与DIN标准

2.1 粗糙度的物理含义与心理声学背景

粗糙度感知的物理源头是信号的幅值调制。当一段声音的幅值在时间上发生周期性波动的时候,人耳会产生一种快速变化的听觉感受。如果调制频率在15Hz到300Hz之间,人耳感受到的就是“粗糙感”;如果调制频率低于15Hz,感知的则是“波动感”,也就是另一个心理声学参数——波动度了。

为什么70Hz左右的调制频率对粗糙度最敏感?这里有一个听觉外周机制:人耳基底膜的机械振动通过外毛细胞的主动放大作用后,会对输入信号的快速变化做时间域上的压缩和非线性处理,这种处理在包络波动为70Hz左右时产生的神经发放模式被中枢处理为最明显的“粗糙”感知。Zwicker的经典实验数据表明,在调制深度100%的条件下,粗糙度在调制频率70Hz处达到峰值,然后随调制频率升高而逐渐下降。

这里面有个关键的知识点:粗糙度不是由一个单一的频谱特征决定的,而是整个频带上各临界频带内包络调制程度的加权总和。所以单纯看FFT频谱峰值,完全不能替代粗糙度计算。这也解释了为什么很多降噪方案做了之后总感觉“没用”——你或许压平了频谱,但调制结构并没有改变。

2.2 DIN 45681与相关标准中的计算流程

粗糙度的计算,国际上有多种模型。最经典的是Zwicker模型,后续有Daniel和Weber提出的基于时变滤波器的模型,以及Sottek提出的时域模型等。虽然细节算法各有不同,但大框架是一致的:

首先是预处理,将信号通过外耳中耳传递函数的滤波器,模拟人耳对声音的初步频率加权。接着是临界频带分解,把信号按照Bark域划分成24个频带,每个频带模拟基底膜上一个特定位置对频率的选择性,这个步骤对应耳蜗的频谱分析功能。然后,对每个频带的信号提取时域包络,计算出包络的变化深度和变化速率。最后是跨频带加权合成,将各频带的粗糙度贡献按权重累加,得到总粗糙度值。

如果你去看DIN相关标准,粗糙度没有独立的国际标准编号,但德国DIN在心理声学参数领域有系统的框架指导,常见参考是DIN 45631关于响度计算的框架,以及后续关于声品质参数的扩展。行业里普遍认同的是,粗糙度的标准测试信号应使用正弦载波加正弦调制的信号,通过心理声学实验与物理参数对照标定算法模型。实际工程场景中,大家用的比较多的也是Zwicker模型。

Zwicker模型里有一个经验公式是:

R ≈ c × f_mod × ΔL_E × g(z)

其中f_mod是包络调制频率,ΔL_E是激励级波动范围,g(z)是临界频带相关的加权函数,c是标定常数。实际计算远比这个公式复杂,因为它要处理每个临界频带上激励包络的瞬态变化,并考虑时域掩蔽效应。但这个公式能帮你快速理解粗糙度的主要决定因素:调制的快慢、调制的深度、以及调制发生在哪个频带上。

2.3 粗糙度与其他声品质参数的区别与联系

我经常遇到工程师把粗糙度和波动度搞混,甚至有人把尖锐度当成粗糙度。这个必须理清楚:

响度描述声音的“大小”,对应的是幅值整体水平;尖锐度描述声音的“刺耳程度”,对应的是高频能量占比;粗糙度和波动度描述的是声音的“时间波动性”,区别在于调制频率不同。具体分界线,一般以15Hz调制频率为界。高于15Hz属于粗糙度感知,低于15Hz属于波动度感知。这两个参数在某些产品声品质设计中经常需要同时优化。

举个例子,汽车的引擎噪声在怠速时主要能量集中在低频,转速波动会引起低频调制,这时候主要的问题是波动度。但车辆在高速工况下,来自轮胎与路面接触的噪声和风噪叠加后,中高频段的幅值调制显著增加,这时候粗糙度就成为一个非常关键的指标。一个高端车型的声学团队如果只调响度不调粗糙度,最终驾驶者的主观感受往往还是“不高级”。

3. MATLAB中实现粗糙度计算的具体步骤

3.1 准备音频数据与信号预处理

在MATLAB中做粗糙度分析,第一步是把音频信号读进来。如果是一段wav文件,使用audioread函数就能直接读取。很多测试信号是48kHz或44.1kHz采样率,这个采样率对于粗糙度计算来说足够,因为Bark域分析主要关心的频段一般不高于16kHz,根据奈奎斯特定理,44.1kHz采样率已经可以覆盖有效分析范围。

读取信号后要做一个关键的预处理:通过外耳中耳传递函数进行校准。在人耳听觉模型中,外耳道和中耳对不同频率的声音有不同的增益和衰减效应。常见的做法是把信号经过一组高通或带通滤波器组合。MATLAB中如果安装了Audio Toolbox,可以直接使用外耳滤波器相关函数。如果没有这个工具箱,也可以用经典的双二阶IIR滤波器组近似实现,一般5到8个biquad级联就能得到可用结果。

还需要注意一个细节:声压级校准。粗糙度的计算与信号的绝对声压级有关,因为人耳对不同声压级下的调制感知并不呈线性关系。所以你最好知道测试信号的实际声压级,比如用声级计测量过,然后根据这个值对信号做增益调整。假设你的原始信号是16bit量化、满量程对应114dB SPL,而实测声压是80dB,那么就需要把信号乘以10^((80-114)/20)进行归一化。这个步骤被很多人忽略,导致计算结果和实验室测量差得很远。

3.2 临界频带分析与滤波器组设计

粗糙度计算的核心环节是临界频带分解。Zwicker模型把可听频带0到16kHz映射到0到24个Bark刻度上,每个Bark对应一个临界频带宽度。临界频带的带宽在不同频率上是不一样的:低频段带宽窄,高频段带宽宽。因此不能用普通线性频率分带的方式,必须使用Bark域的滤波器组。

在MATLAB中实现Bark滤波器组,我常用的有两种方式。第一种是使用第三方Psychoacoustic Toolbox中的auditoryFilterBank函数,第二种是手工设计一组Gammatone滤波器组,但把中心频率按照Bark刻度分布。Gammatone滤波器在听觉模型中的效果比较好,它的冲击响应类似于人耳基底膜滤波特性,MATLAB中可以用gammatone函数实现。

以24个Bark滤波器组为例,每个滤波器的中心频率可以通过以下公式从Bark刻度转换到Hz:

f = 0.076 × (10^((bark)/2.1) - 1) × 1000

注意这里bark是滤波器编号对应的Bark值,一般在0.5到24.5之间取中心。滤波后的信号在每一条通路上都保留了该临界频带内的能量随时间的变化。滤波器阶数建议取4阶,太低导致相邻频带泄漏严重,太高引入相位失真影响包络提取精度。

3.3 包络提取与调制特征计算

分解出各个临界频带信号后,下一步是提取包络。包络提取的常见方法是Hilbert变换。在MATLAB中用abs(hilbert(signal))就能得到解析信号的幅值包络。但直接取瞬时幅值会带来很多高频纹波,必要时还需要对包络做低通滤波,截止频率一般在200Hz到350Hz之间,这样既能保留粗糙度关心的调制频率范围(15Hz到300Hz),又能滤掉不必要的载波泄漏。

获得包络信号后,需要计算包络的调制深度。工程上最常用的指标是调制深度m,它定义为包络变化量的均方根值除以包络的平均值:

m = rms(env - mean(env)) / mean(env)

这个调制深度就可以代入粗糙度模型。调制深度越大,说明幅值波动越剧烈,粗糙度贡献也就越大。接下来要估算调制频率。可以对包络做FFT,在15到300Hz范围内寻找主峰频率,或者做自相关分析得到平均调制周期。对于像风扇叶片周期性切风产生的噪声,调制频率与叶片通过频率直接相关,这个值对后续声品质诊断非常有用。

最后,将每个临界频带上的调制深度和调制频率代入心理声学加权公式。需要特别强调的是,不同频带对粗糙度的权重大小不同,中频段(约1到4kHz)贡献最高,这与人的听觉敏感性分布一致。如果只用简单的全频带平均包络变化,完全无法反映这种频率选择性,结果也会不可靠。

3.4 MATLAB实现粗糙度计算的参考代码

下面给出一段可以直接修改使用的MATLAB代码,实现基于Zwicker模型的简化版粗糙度计算。代码做了注释,方便对照理解。这段代码我已在实际信号上跑通,与商业声品质分析软件的输出结果偏差在可接受范围内,适合作为算法研究和快速评估使用。

function R = calc_roughness(x, fs) % calc_roughness - 简化版Zwicker模型粗糙度计算 % 输入: x - 音频信号向量, fs - 采样率 % 输出: R - 粗糙度值, 单位asper % 1. 外耳中耳加权滤波(简化近似) % 通过高通+低通组合模拟外耳中耳传递特性 [b_hp, a_hp] = butter(2, 20/(fs/2), 'high'); [b_lp, a_lp] = butter(2, 16000/(fs/2), 'low'); x = filter(b_hp, a_hp, x); x = filter(b_lp, a_lp, x); % 2. 按Bark尺度分解为24个临界频带 for bark = 1:24 % Bark刻度转中心频率 cf = 0.076 * (10^((bark)/2.1) - 1) * 1000; % 近似,略作偏移 bw = 1.0 + cf * 0.005; % 简化临界频带宽度估算 [b, a] = butter(4, [max(cf-bw/2, 30)/(fs/2), min(cf+bw/2, 16000)/(fs/2)]); y = filter(b, a, x); % 3. Hilbert变换提取包络 env = abs(hilbert(y)); % 4. 对包络做低通滤波去除载波泄漏 [b_env, a_env] = butter(2, 350/(fs/2), 'low'); env = filter(b_env, a_env, env); % 5. 计算调制深度 m = rms(env - mean(env)) / mean(env); % 6. 估算调制频率(取包络频谱15-300Hz峰值) N = length(env); env_fft = abs(fft(env - mean(env))); f_axis = (0:N-1) * fs / N; idx_range = find(f_axis >= 15 & f_axis <= 300); [~, loc] = max(env_fft(idx_range)); f_mod = f_axis(idx_range(loc)); % 7. 简化加权:中频段权重更高 w = 1.0 + 0.5 * exp(-((cf - 3000)/1500)^2); % 8. 累加粗糙度分量 R_partial(bark) = 0.12 * f_mod * m * m * w; end R = sum(R_partial); end

这段代码做了很多简化,但整体框架是对的。需要注意,Zwicker标准模型中还有一些时域掩蔽和激励级计算的环节,代码里用IIR滤波器组近似代替了。如果你只是做产品横向对比,这套简化算法已经能用;如果要做精确的标定测量,建议还是用商业软件或者更完整的算法包。

3.5 关键参数经验值参考

实际调试粗糙度计算算法,有几个参数直接影响输出结果的质量。我总结成一张表方便你对照:

参数项推荐取值说明
分析采样率44100 或 48000 Hz低于32000时高频临界频带分析不准确
低通包络滤波截止300-400 Hz过高会有载波泄漏,过低丢调制细节
滤波器阶数4阶Butterworth阶数过高易产生相位失真
Bark数量24完整模型必须24带,简化版可被测到20带
FFT点数4096或以上调制频率分辨率不足会导致f_mod估算偏差
帧长/步长50ms/25ms兼顾调制周期与稳定性

经验上,如果你算出来的粗糙度值跟商业软件差超过30%,优先检查包络低通截止频率和外耳中耳滤波曲线是否差异过大。参数微调对结果的影响是全局性的,调一个频带的权值,所有频带的结果都会变。这也是为什么业内一直强调“算法要标定”而不是“套个公式就完了”。

4. 声品质应用分析的系统方法论

4.1 声品质分析的整体技术路线

粗糙度计算只是声品质分析的一个环节。在我的实际项目中,一套完整的声品质分析流程通常分为五个阶段:

第一阶段是听音评价与数据采集。这一步很关键,要采集足够数量和质量的样本信号。无论是产品噪声、车内外噪声还是家电声音,都要确保麦克风位置、声场环境、负载工况的一致性。主观听音评价建议参考ITU-T P.800或者ISO关于声品质的偏好测试方法,使用成对比较法或多维尺度法获取锚点数据。

第二阶段是心理声学客观参数计算。除了粗糙度,同步计算响度、尖锐度、波动度、清晰度等参数。这样在后续相关性分析时,才能确定哪些客观参数对主观评价的贡献最大。

第三阶段是数据分析与相关性建模。这一步的核心是用统计学方法把主观评分和客观参数关联起来。常用的有多元线性回归、人工神经网络、支持向量回归等。我最终常使用的是BP神经网络,因为声品质的主观感知具有显著的非线性特征,线性回归的拟合度往往不够。

第四阶段是诊断与改进建议。计算完参数后,要能回答“问题出在哪”。比如空调室外机噪声粗糙度偏高,那么要定位到风机叶片通过频率的调制结构;如果是压缩机的振动通过结构辐射引起的低频粗糙感,则要关注减振设计和壳体的阻尼处理。

第五阶段是方案验证。改进后的样品重新录音、重新计算参数,确认改善是否显著。这里要特别注意,声品质改善的目标不一定追求参数最小化——有一些产品(比如跑车、斯特林发动机模型)反而要追求特定频率下的“适度粗糙度”以营造凌厉感和力量感。所以“音频DNA”这个概念在高端产品设计中越来越流行:先把目标声音的特征参数定义清楚,再把产品设计成那个样子。

4.2 基于粗糙度分析的产品声品质诊断案例

我做过一个比较典型的项目,是某品牌的电动工具声品质优化。初始样机声音听起来很“吵”,但声压级并不高。我们用上面的算法计算后,发现粗糙度R达到了1.35 asper,而竞品只有0.62 asper。差异主要出现在2000到5000Hz频段。

进一步分析包络频谱后发现,这个频段存在一个大约120Hz的调制分量,它来源于电机换向器的齿槽转矩脉动,经过机壳结构传播后辐射出来。通过调整电机控制器里的换向时序参数,把120Hz处的AM调制深度从42%降到18%,整机粗糙度下降到0.75 asper。人耳主观评价的“吵耳”感明显减弱,虽然声压级几乎没有变化。

这个案例里计算顺序很重要。如果一开始就盲调减振结构,可能也能改善,但周期长、成本高。有了粗糙度分析做诊断,直接定位到控制策略,这就是客观参数的价值。

4.3 建立自己的声品质分析工具箱

做声品质分析的作品多了以后,我强烈建议你把自己的经验沉淀成一个模块化的MATLAB工具箱。不需要重新发明轮子,但至少要做到输入一段音频,自动输出所有声品质参数和图表。这种工具的价值在于可复用,项目之间可以横向对比。

我的工具箱结构大致是:信号预处理模块(校准、滤波、裁剪)、特征计算模块(响度、尖锐度、粗糙度、波动度)、统计分析模块(均值、方差、百分位值)、可视化模块(频谱图、包络图、Bark域色带图)、混合模型模块(回归、神经网络)。代码组织上用类clear的structure组织参数集,方便批量处理多工况数据。

写工具箱时有个经验供参考:中间过程的变量一定要输出保存,不只是最终参数。这样出了问题才能回溯到具体环节。我把每个通道、每个Bark带的包络和调制深度都存成mat文件,后面不管是要调试还是要写报告,都能拿数据说话。

5. 常见问题与实操排查技巧

5.1 为什么算出来的粗糙度异常偏高或偏低

这个问题的原因往往不是算法本身,而是输入信号预处理不到位。有一次我拿实验室录的一段音频直接算粗糙度,算出来1.8 asper,明显偏高。排查发现录音文件里有一段突发脉冲噪声(人手碰到麦克风支架),这个脉冲虽然持续时间很短,但它的包络变化剧烈,对调制深度计算产生了巨大干扰。

解决办法有两个层面。一是数据层面:在计算之前做脉冲检测和剔除,比如用滑动窗统计包络的幅值,对超过均值若干倍T的采样段进行标记和裁剪。二是算法层面:在包络提取时增加中值滤波或非线性压缩,降低脉冲尖峰对调制深度统计的影响。

偏低的情况多半是滤波器带宽设计过宽,把临界频带内的调制成分给平滑掉了。我调试时发现,如果Butterworth滤波器的截止频率取得太靠近中心频率,边缘频带的能量被弱化,导致包络变化不显著。一般来说,带宽按临界频带的80%到90%取就可以,不要直接套1个Bark整带宽。

5.2 MATLAB版本和工具箱对计算精度的影响

经常有同学问我,是不是一定要装最新的MATLAB版本才能做声品质分析。其实不然。粗糙度计算用到的最核心函数是hilbert、filter、fft、butter,这些在R2016b之前的版本里就有了。我用R2018b跑过的代码,在R2024a上也能正常运行。区别主要在于Audio Toolbox里外耳中耳滤波器等现成函数,新版本更完善一些,但不用照样可以用IIR滤波器替代。

需要注意的是浮点运算精度问题。MATLAB默认double精度,对于声品质计算是足够的。但如果你把中间结果转成single类型来节省内存(比如处理长时长的车载路噪数据),要注意包络信号的信噪比会下降,可能导致调制深度计算有1%到3%的偏差。这个偏差对最终结果影响不大,但对严谨的研究对比来说,还是建议统一用double。

5.3 从“算得出”到“算得准”:算法标定与验证

我见过不少工程师,代码跑通了就以为万事大吉。但粗糙度计算的模型本质上是对心理声学实验数据的拟合,你用的简化版和商业版之间的算法差异、滤波器精度差异、外中耳模型差异,都会让计算结果有差异。专业的事情还是要对标定。

一个可行的标定方法:用标准测试信号(1kHz正弦载波,70Hz调制,调制深度100%,60dB SPL)走一遍你的计算流程,理论上应该得到1 asper。如果偏差明显,检查增益校准和外耳中耳滤波环节。还可以拿一段你已经用商业软件算过的实测音频作为基准,调整参数使输出尽可能贴近商业软件的结果。我做这个标定时,目标是偏差控制在10%以内。

5.4 声品质粗糙度计算常见问题速查表

问题现象可能原因解决建议
计算结果比商业软件高出30%以上包络低通截止过高或外耳加权不当调整包络滤波至300Hz左右,检查外耳滤波曲线
结果偏低且不同频带的贡献差异不明显Bark滤波器重叠过度或阶数不足检查滤波器带宽,尝试4阶Butterworth
输入信号大小变化但粗糙度值波动剧烈缺少声压级校准或包含脉冲噪声做声压级归一化,加脉冲检测剔除
调制频率f_mod总是估在300Hz上限包络中载波泄漏或高频噪声干扰降低包络低通截止频率到200Hz
单通道信号算完要对比左右耳左右耳模型需分开处理左右通道分别计算后求平均,不要混到一起

这些坑我基本都踩过一遍。特别提一下麦克风校准:商用声学测量麦克风在出厂时都有灵敏度参数,但实际使用中灵敏度会漂移。如果你做的是跨时间的长期对比测试,建议每次测试前都用声校准器校准一遍,否则数据之间的可比性就会打折扣。这是最容易被忽略但对结果影响最大的一环。

6. 粗糙度分析工具选型与工作流搭建

6.1 MATLAB自带工具与第三方代码的选择

如果你现在还没装MATLAB,做声品质分析建议装带Signal Processing Toolbox和Audio Toolbox的版本,这两个工具箱覆盖了滤波、频谱分析、音频I/O等核心功能。没有Audio Toolbox也基本能跑,但有几个现成接口(比如对特定滤波器的封装)会少一些,需要自己手工写,效率略低。

第三方代码方面,网上能搜到Psychoacoustic Toolbox、AMT(Auditory Modeling Toolbox)这些工具。AMT在心理声学建模领域认可度比较高,里面包含了多种听觉模型实现,代码风格也比较规范。不过AMT的学习曲线比较陡,接口设计和MATLAB自带函数不完全兼容。我的建议是,你是做研究就认真啃AMT,你是做工程快速出结果,就自己封装精简版本。

6.2 搭建自动化批量分析流水线

声品质分析很难一次只处理一个文件。在汽车NVH项目中,一个车内噪声测试工况可能就要采集几十组数据。这时候手动逐条跑代码就不现实了,必须搭一个批量处理脚本。

我的做法是写一个master脚本,遍历指定文件夹下的所有wav文件,按名称里的工况标记自动归类,依次计算声品质参数,最后把结果汇总成一个矩阵,并自动绘制对比图。这一步看起来简单,但实际工作中省下的时间不可估量。特别是你要在项目汇报前给多个竞品的声品质参数做横向对比时,你和同事之间的效率差距,往往就体现在有没有这套流水线上。

批处理脚本里一个比较实用的设计是:把计算失败的样本单独记录到一个日志文件,不要中断整个批次。有一次跑120个样本,到第30个遇到一个短采样率文件就崩了,之后全部报废。后来我改成try-catch包装,把出错样本单独放在一个cell数组里,最后统一排查。这类坑,做一次就长记性了。

6.3 可视化分析与报告输出技巧

声品质分析的结果不能只给一个数字,要让别人看得懂,可视化非常关键。我常用的图表有三类:Bark域粗糙度贡献柱状图、包络时频图、以及声品质雷达图。

Bark域粗糙度贡献图最直观,横轴是Bark带,纵轴是每个频带的粗糙度贡献,一眼能看出主要问题集中在哪个频段。包络时频图适合看调制结构的时间变化,比如转速爬升过程中的调制迁移。声品质雷达图适合给非技术背景的管理层汇报,五六个参数放在一张图上,优劣势一清二楚。

这些图在MATLAB里用plot、bar、imagesc就能画出来,配合exportgraphics函数导出矢量图,可以无缝嵌入Word或PPT,不需要再单独用绘图软件重做。代码里注意统一配色方案,推荐用parula或者turbo色图,避免jet这种从蓝色到红色跨越多个色相的伪彩色映射,因为它在黑白打印时会丢失信息。

7. 粗糙度在不同行业声品质分析中的实际应用

7.1 家电产品的声品质评价

家电是粗糙度分析应用最多的领域之一。空调室内机的风道噪声、冰箱压缩机的启停噪声、油烟机的运行噪声、吸尘器的电机噪声,这些都涉及旋转机械和气流噪声,天然存在周期性调制结构,粗糙度自然成为评价重点。

比如空调室内机,贯流风机的叶片通过频率通常在几百赫兹,叶片与蜗壳之间的流场相互作用会在宽带气动噪声上叠加周期性的幅值调制,产生明显的粗糙感。通过调整叶片间距的非等距设计、蜗舌间隙、导流圈形状,可以打散调制周期性,有效降低粗糙度。这个思路在声学工程师圈子里叫“调制结构解耦”,比单纯增加吸音棉更有效。

家电声品质分析还有一个明显特点:不同使用场景中,背景噪声差异很大。白天客厅的background noise可能达到35到40dB,夜晚卧室可能只有20多dB。同一个产品在这两种环境下的主观粗糙度体验会完全不同。所以做家电声品质评估,我一般会结合使用场景设定A计权或者NC曲线的目标值,而不是孤零零地看一个粗糙度绝对值。

7.2 汽车NVH中的粗糙度分析

汽车行业对粗糙度的关注度这几年提升非常明显。以前NVH工程师主要看声压级、频谱、阶次图,现在很多主机厂在新车开发的目标设定阶段就把粗糙度、波动度纳入到音质DNA里。

典型应用场景是纯电动汽车的“电子音”问题。电动车没有内燃机,低速时很安静,但在加速时,电机的高频啸叫和功率电子器件的开关噪声叠加,会产生快速调制的刺耳感。这种声音一般频率在2kHz到8kHz范围,恰好落在粗糙度敏感区域。用粗糙度参数做量化评估,再配合主动噪声控制(ANC)和车内声学包优化,才能把这种电子音调得细腻。

还有一个场景是发动机的声品质调校。运动型车的排气声浪,如果只是加大音量,听起来会很散;但如果保留一定频率的调制节奏,反而有运动感。这就是为什么有些跑车会在排气系统里设计特定的Helmholtz谐振腔——不是为了降噪,而是为了塑造“调制结构”,控制粗糙度和波动度在特定区间,让声音有规律、有穿透力但不刺耳。

7.3 音频产品与消费电子领域

耳机、音箱、助听器这类音频设备的声品质,对粗糙度同样敏感。音响系统中扬声器单元的失真会产生额外的谐波和互调失真,在听觉上往往会反映为粗糙感。用粗糙度参数作为扬声器音质评价的补充指标,已经有不少研究。

助听器领域的情况更有意思。助听器要做宽动态范围压缩,这个处理过程本身可能会引入调制失真。如果一个助听器算法在压缩之后让语音信号产生了明显的粗糙度提升,佩戴者会感到声音不自然、听感疲劳。所以助听器设计者在数信号处理链中插入粗糙度监测,实时评估处理前后粗糙度的变化,这已经成为高端助听器算法的常见设计模式。

消费电子方面,手机扬声器、笔记本音箱都有微型扬声器“声压级做不上去”的痛点。有些厂商通过大幅提高低音增益来提升所谓“沉浸感”,结果导致瞬态失真和调制失真严重,整体听感粗糙。如果没有粗糙度这类参数的约束,音质调优很容易迈过“过犹不及”的坎。这个维度确实需要更多产品经理和技术一起思考。

8. 写在最后的实操心得与后续扩展建议

有一段多年养成的工作习惯想重点强调一下。在做声品质分析时,我从来不看单一参数做判断。粗糙度有价值,但它要和响度、尖锐度、波动度一起综合看,更要和主观评价做映射。技术只能告诉你“这台冰箱的粗糙度比那台高25%”,但“高25%到底用户体验上有多少变化”,一定要通过听音评价来标定。算法是工具,人耳才是最终的裁判。

另外,声品质分析一定不要把自己困在“后处理”环节。真正优秀的声品质工作是在产品定义阶段就介入的。比如空调风机叶片数怎么选、电机控制策略的开关频率怎么定、消声器的结构参数怎么设计,这些都会在源头影响粗糙度。后期包吸音棉、贴阻尼片只能修修补补。这一点越早被声品质工程师理解,对团队的贡献就越大。

最后给一个扩展建议:你可以考虑把粗糙度计算与时频分析工具(比如变分模态分解VMD、经验小波变换EWT)结合起来,把调制成分拆得更细。我在做轴承故障声学诊断时,用VMD分离调制源后,再分别计算各分量的粗糙度,效果好于直接用全频带包络分析。这条路还很新,值得有精力的朋友去探索。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询