常数Q转换

在数学和信号处理中,常数Q转换(英语:Constant-Q transform,CQT)和变Q转换(英语:Variable-Q transform,VQT)将信号变换到频域,与短时距傅立叶转换一样为重要时频分析工具。其与傅里叶转换相关,与复莫莱小波密切相关[1],并适用于音乐信号的分析,这个转换产生的频谱最大的特色是在于频率轴为对数标度(log scale)而不是线性标度(linear scale),且窗口长度(window length)会随着频率而改变。

常数Q转换由一系列以对数尺度分布在频域的滤波器fk,构成,其中第k个滤波器的频带宽度英语Spectral_widthδfk与前一个滤波器的带宽相关:

其中δfk是第k个滤波器的带宽,fmin是最低频滤波器的中心频率,n是每八度中滤波器数量。

基本概念

十二平均律告诉我们,一个音会与其高八度的的音频率相差两倍,我们以比率 将一个八度平均分为十二等分(十二个半音),换句话说在一个八度中,十二个音的频率会呈现等比数列,公比为  (约为1.06),如今各式各样的音乐类型均符合十二平均律,所以常数Q转换可说是十分适用于分析各种不同的音乐类型。

常数Q转换是根据十二平均律,在频率轴上每个八度均用12n格来表示,也就是说每个八度中十二个音均会被分到n格。另一方面来说,常数Q转换其实就是一个1/(12n)th-oct 滤波器组(filter bank),第k个滤波器的带宽会是前一个滤波器的带宽乘上一个倍数,也就是说

 

换句话说,

 

其中 为时频图上显示的最小频率。

计算方式

常数Q转换的计算方式大致与短时距傅立叶转换相同,唯一的两个差异是

1. 所使用的窗口(window)长度会随着频率而改变。

2. 频率轴为对数标度(log scale)。

以下为短时距傅立叶转换运算式,若要改成常数Q转换只要将N与k作修正即可。

 

前面提过,这个转换可视为滤波器组,其中第k个滤波器的带宽为 

我们定义品质因子Q, 

Q的值为常数,不会因为 而改变,顺带一提,此转换的名称便是从这里来的。

 是第k个滤波器的中心频率,也是时频图上第k格所代表的频率 而窗口长度N表示如下

 

其中 为取样频率,所以频率越高,窗口长度越短。

除此之外,我们用 来取代 ,目的是要让频率轴上每个八度均用12n格来表示。

所以常数Q转换

 

转换结果除以N(窗口长度)的原因是要作一个归一化(normalization),这是由于不同频率窗口长度不同的缘故。

特性

常数Q转换可说是为音乐讯号设计的,其中第一个原因是它让窗口长度随着频率改变,进而提高低频在频域的分辨率。

下表为C和C#在不同八度时的频率:

Midi number C2 C#2 C5 C#5
Frequency 65.4 Hz 69.2 Hz 523.3 Hz 554.4 Hz

其中C2和C#2为低音,两者间的频率差不到4 Hz,然而C5和C#5为高三个八度的音,两者间频率差增加30 Hz 左右。 所以在线性标度的转换下(比方说傅立叶转换),低音部分频域的分辨率会很差,这在判断音高上造成极大的不便。

低频部分窗口长度加长,这样可以改善低频频域的分辨率,避免音高的误判,但改善分辨率的唯一缺点是会牺牲低频部分时域的分辨率。

第二个原因是他在频域轴上是对数标度,这会比线性标度更符合人耳听觉系统,且产生出来的时频图较容易阅读。

参考资料

  1. ^ Continuous Wavelet Transform "When the mother wavelet can be interpreted as a windowed sinusoid (such as the Morlet wavelet), the wavelet transform can be interpreted as a constant-Q Fourier transform. Before the theory of wavelets, constant-Q Fourier transforms (such as obtained from a classic third-octave filter bank) were not easy to invert, because the basis signals were not orthogonal."