常数Q转换
在数学和信号处理中,常数Q转换(英语:Constant-Q transform,CQT)和变Q转换(英语:Variable-Q transform,VQT)将信号变换到频域,与短时距傅立叶转换一样为重要时频分析工具。其与傅里叶转换相关,与复莫莱小波密切相关[1],并适用于音乐信号的分析,这个转换产生的频谱最大的特色是在于频率轴为对数标度(log scale)而不是线性标度(linear scale),且窗口长度(window length)会随着频率而改变。
常数Q转换由一系列以对数尺度分布在频域的滤波器fk,构成,其中第k个滤波器的频带宽度δ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 左右。 所以在线性标度的转换下(比方说傅立叶转换),低音部分频域的分辨率会很差,这在判断音高上造成极大的不便。
低频部分窗口长度加长,这样可以改善低频频域的分辨率,避免音高的误判,但改善分辨率的唯一缺点是会牺牲低频部分时域的分辨率。
第二个原因是他在频域轴上是对数标度,这会比线性标度更符合人耳听觉系统,且产生出来的时频图较容易阅读。
参考资料
- Judith C. Brown, Calculation of a constant Q spectral transform (页面存档备份,存于互联网档案馆), J. Acoust. Soc. Am., 89(1):425–434, 1991.
- ^ 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."