上一期我们聊完了Tone-to-Noise Ratio算法,这一期我们来聊Tonality和Prominence Ratio。
Tonality
Tonality 应该是这一系列里面最知名的函数了,因为名称好记,朗朗上口,有时候翻译为音调度。常规的Tonality函数实际上包含了两种不同的算法:DIN 45681 Tonality和Psychoacoustic tonality,计算结果完全不同,工程师需要区分清楚。
DIN45681 Tonality
DIN 45681规定了Tonality的完整计算流程。DIN我们都很熟悉了,德国国家标准组织,在心理声学参数标准方面那绝对是领先的了。DIN 45681 Tonality实际上和我们前面讲的ECMA-74 TNR计算过程是一样的,结果也差不多,基本上可以看作同一个函数。所以,DIN 45681 Tonality的特点和TNR是一样的,仅适用于稳定的离散单频信号。两者的主要区别在于一些细节,比如说峰值的识别方法、频率分辨率的要求、是否计权等等。对结果比较有影响的有两点:
一是对于同一个临界频带内的多个峰值,DIN 45681 Tonality会将这些峰值合成一组显示在结果中。如图1所示红色曲线。
图1 DIN 45681 Tonality和ECMA-74 TNR结果对比
二是结果数值显示不同。TNR的结果是峰值声压和该临界频带剩下声压的差值,如果超过图2显示的阈值,则认定为突出的单频噪音。而DIN 45681 Tonality则没有这样的阈值规定,这个算法用了Penalty这个概念,即差值数据调整。计算出来的声压差值如果比较大,就加上一个惩罚值,最大6dB,让这个单频噪音看起来更明显。可参考图1中210 Hz的单频噪音结果。
图2 ECMA-74建议的TNR和PR的阈值
还有一点需要注意的是,这两种算法结果都是以dB表示,是没有量纲的!
Psychoacoustictonality (Tonality: Aures/Terhardt)
这个可以说是最有迷惑性的方法了。首先,该方法基于心理声学参数,考虑了响度的影响计算得到Tonality结果,比其他方法要更符合人的主观判断。其次,该方法定义了一个新的单位:tu。宽频噪声是0 tu,纯正弦波是1 tu。整个算法的实现是通过计算所有tonal信号的响度,所有其它噪声信号的响度,并考虑掩蔽效应等影响,借助不同的权重系数计算得到其结果。因为这个算法是从整体进行考虑的,所以只能得到每个时间点所有声音信号的总体结果。如图3所示,横轴是时间,纵轴是音调度tu值。显示结果不太容易理解和分析,因此在日常使用的时候,只能简单用于数据对比,不能进一步指导深入研究,比如,到底那些频率引起了tonal噪声,影响的程度是多少等等。
图3 Tonality: Aures/Terhardt计算结果
ProminenceRatio (PR: ECMA-74, ISO 7779)
Prominence Ratio也被翻译为突出比,在ECMA-74和ISO 7779里面有详细的算法介绍。PR的基本概念和TNR是一样的,所以过程就不再罗嗦了。我们来看看PR和其他算法的一些区别吧。
- PR和TNR的主要区别是,TNR考虑的是峰值和对应的一个临界频带的关系,而PR考虑的是峰值所在临界频带和周边两个临界频带的关系,所以计算的声压差是当前临界频带的声压级和周围两个临界频带声压级均值的差。
- 基于ECMA-74的PR适用条件和TNR是完全一样的。标准里面明确规定了,这些方法仅能用于稳定的离散单频噪声,所以计算的结果也和TNR结果类似,是没有量纲的dB值,阈值曲线如图2所示。而且,和TNR受到的规定一致,对于每个算出来的tonal信号,都要经过主观听觉评价。
- PR的计算涉及到三个临界频带,这要比TNR的范围宽多了。所以如果我们不严格按照ECMA-74的要求来使用,有一些不是单频噪声的tonal信号,比如阻尼比较小的共振等,通过计算也可以得到突出比的结果。这样一来,适应面更广,结果也更有用了。在软件里面有一项专门的设置,如图4所示。
虽然PR可以适用于非单频信号的分析,但是仍然受制于以上这几种算法的限制:基于FFT的非心理声学函数。所以,只能用于稳态信号,或者缓变信号,不能明确指示出人耳对不同tonal噪声的感受。另外,前面提到的各种算法由于FFT本身的要求,谱线数、重叠率、窗函数等等参数都是需要工程师手工设置的,不同的参数数值对结果的影响非常大,如图5所示。对同一个信号,当设置的谱线数不同时(从左到右依次为:16384、8192、4096),计算的结果完全不一样。那到底哪一个才是我们需要的正确结果呢?
图5 不同谱线数计算结果
HSA高分辨率谱分析
HSA的全称是High-resolution Spectral Analysis,高分辨率谱分析。估计各位小伙伴看到这里有点摸不到头脑了,怎么忽然出来一个新的名词,莫非公众号也是按字数给稿费的吗?我觉得这个是好主意,下面我准备接着写量子速读和全脑开发了!
我们前面说过,常规的tonal算法需要考虑突出的音调、单频成分,因此频率分辨率就是一个很关键的参数。各种标准上都有明确的限制,必须有足够精细的频率分辨率,才能准确地识别出来突出的单频峰值,进而计算得到准确的结果。
而我们都知道,频率分辨率和时间分辨率成反比例关系。频率分辨率越精细,相应的时间块越长。所以,用常规的FFT频谱去找突出单频的时候,如果想得到准确的结果,包括单频的幅值和频率,就必须有足够长且稳定的信号才可以。这就是为什么常规的tonal算法仅能用于分析稳态音调的原因。鱼与熊掌,不可兼得啊。
怎么样才能全都要呢?为了优化常规tonal算法,扩展其用途,我们引入了HSA高分辨率谱分析算法。HSA算法是对于常规FFT的优化,主要通过去卷积运算,去掉FFT窗函数的影响,识别信号中的主要音调成分的准确频率和幅值。
HSA算法的实施过程大概是这个样子的:首先找到信号中最主要的单频成分,并对此成分进行整周期分析。我们知道,如果能够整周期地进行FFT运算,能量没有泄露,不用加窗函数,计算的频率值和幅值都会非常好。HSA算法可以通过设置迭代次数,依次考虑不同的单频成分,抑制非周期成分,从而在不需要延长时间信号的情况下,极大的提高单频信号的分辨率和精度。
怎么样,看出来一些端倪了吧,常规的TNR分析基于FFT分析结果,如果我们用HSA替代FFT的过程,同样的时间长度,频率分辨率就会提高,相应的对于瞬态tonal信号识别和处理的能力也就提高了。比如图6的扫频信号,如果用常规的TNR算法,根本无法识别其中的tonal成分(图6中),如果采用HSA算法,计算效果拔群(图6右)。
图6 从左到右:FFT vs. Time; TNR with FFT; TNR with HAS
好了,以上就是今天的内容了,需要细细品味才能get到其中的差异哦。
未完待续,还有一个大招等着你~
关于我们
海德声科(HEAD acoustics China)是全球领先的声学解决方案及声音与振动分析领域供应商HEAD acoustics GmbH在中国设立的子公司。HEAD acoustics凭借其在声学领域的专业性和相关软硬件研发的先驱地位,在NVH、声学和语音音频质量的测量、分析和优化领域广受赞誉。其产品和服务广泛用于汽车、电信,IT设备、办公用品和家电行业的制造商和研究机构,以及在声音环保领域的企业与院所等。