Constant Q变换 – 可视化指南
摘要
一个互动可视化指南,解释了常量Q变换(CQT),其对数频率几何结构、与FFT的比较、内核构建和高效计算,专为音乐和音高分析而设计。
暂无内容
查看缓存全文
缓存时间: 2026/06/02 01:46
# 恒定Q变换 — 可视化指南
来源:https://brendanjameslynskey.github.io/ConstantQ-Transform/
一本关于频率变换的可视化互动指南,它能像我们人类一样感知音乐——以匹配音高结构的对数分辨率呈现。
▼
### 第一章
## 01 核心直觉
“恒定Q值”意味着每个频率区间的中心频率与其带宽之比是**恒定**的。低音使用较宽的分析窗口(频率分辨率好);高音使用较窄的窗口(时间分辨率好)。
这恰好与音乐音高的运作方式一致。在一架钢琴上,C3到C4的距离与C5到C6涵盖了相同的感官音程,尽管后者覆盖的赫兹范围是前者的四倍。CQT将其频率区间按对数方式排列以匹配这一点,通常每八度设置12、24、36或更多个区间。
每八度频带数:24 八度数:5
CQT频率区间——每个条代表一个区间。注意带宽如何随频率增长,但Q = f/Δf保持不变。
**Q因子:** Q = f_k / Δf_k。在标准FFT中,Q值会变化——低频区间窄(高Q),高频区间宽(低Q)。在CQT中,每个区间的Q值相同。这就是为什么音乐音符在CQT频谱图中看起来间隔均匀。
### 第二章
## 02 FFT与CQT对比
FFT使用线性间隔的频率区间。音乐音符是对数间隔的。这种不匹配使得用FFT进行音高分析非常别扭——CQT直接解决了这个问题。
考虑一个包含C3、E4和G5音符的信号。在FFT中,这三个音符在频谱上分布不均匀,低音几乎被挤在很少的几个区间里。在CQT中,每个音符占据的比例宽度相同。
三音符和弦:C3 (130.8 Hz) + E4 (329.6 Hz) + G5 (784 Hz)
FFT——线性频率轴。低音被压缩在一个极小的区域里。
CQT——对数频率轴。每个音符获得相等的视觉权重。
**根本区别:** FFT区间间隔为 Δf = f_s/N(以Hz为单位恒定)。CQT区间间隔为 Δf_k = f_k · (2^{1/B} − 1)(与频率成正比)。这使得CQT天然适合任何涉及音乐音高、语音共振峰或对数频率结构的应用。
### 第三章
## 03 对数频率几何
CQT将频率映射到对数轴上,使得八度之间等距。这与西方半音阶完美对齐——也与人类的音高感知一致。
动画钢琴卷帘式CQT频谱图——在琶音播放时,观察音符在对数频率轴上亮起
**每八度频带数(B):** 当B=12时,每个区间代表一个半音。B=24提供四分之一音分辨率。B=36提供八分之一音。更高的B意味着更精细的音高区分,但在低频时需要更长的分析窗口。
f_k = f_min · 2^{k/B} 对于 k = 0, 1, ..., K−1,其中 K = B · num_octaves
### 第四章
## 04 CQT核
每个CQT区间使用不同长度的分析窗口。低频区间使用长窗口以获得精确的音高分辨率;高频区间使用短窗口以获得精确的时间分辨率。
区间k的窗口长度为 N_k = Q · f_s / f_k。这是恒定Q特性的核心——无论频率如何,窗口始终包含相同数量的振荡周期。
N_k = ⌈ Q · f_s / f_k ⌉,其中 Q = 1 / (2^{1/B} − 1)
区间索引:0
所选区间的CQT分析核——实部(顶部)和幅度包络(底部)。拖动滑块查看窗口长度如何在较高频率下缩小。
1 根据Q和f_k计算每个区间的窗口长度N_k
2 生成一个在f_k处的加窗复指数
3 将信号与此核相乘并求和——这就是一个CQT系数
4 对所有K个区间和所有时间帧重复
### 第五章
## 05 计算CQT
朴素CQT计算量很大——每帧 O(KN)。高效算法基于FFT实现,要么通过频谱核,要么通过递归降采样。
速度:
逐帧构建CQT频谱图——每列代表一次跳步,每行代表一个对数频率区间
**高效CQT(Brown & Puckette,1992):** 通过FFT预计算频谱核 K̂_k。对于每一帧,对信号片段 X̂ 进行FFT,然后CQT系数就是 X̂ · K̂_k^* 的点积。这整个变换变成了稀疏矩阵-向量乘法,通常比朴素方法快10–100倍。
CQT(k, n) = Σ_j x(n + j) · w_k(j) · e^{−i2πf_k j / f_s}
其中 w_k(j) 是长度为N_k的窗口函数。关键洞察是每个区间看到的信号样本数**不同**,而FFT中所有区间使用相同的窗口。
### 第六章
## 06 从CQT到色度图
将CQT的对数频率区间折叠到单个八度内,就能得到**色度图**——一个12维的和谐内容表示,非常适合和弦识别与调性检测。
如果CQT每八度有B=36个区间,跨越5个八度(共180个区间),那么色度图会将所有八度上每第3个区间(对应12个半音类)求和,将180个区间压缩成12个。
和弦:
CQT频谱图(顶部)折叠成12区间的色度图(底部)。切换和弦查看色度轮廓如何变化。
**八度不变性:** 色度图将C3、C4和C5视为相同的音高类“C”。这使得它对音区变化具有鲁棒性,让算法专注于识别和谐身份而非绝对音高。
### 第七章
## 07 实际应用
CQT是现代音乐信息检索、音频合成和智能音频处理的骨干。
信号:
不同音乐信号的实时CQT频谱图——注意有音高内容如何表现为明显的水平条纹
🎵 **音高追踪**——自动转谱、旋律提取、调音器应用
🎸 **和弦识别**——通过CQT→色度图流程实现实时和弦检测
🎛 **音频合成**——具有感知一致频率分辨率的相位声码器
🤖 **深度学习**——CQT频谱图作为音乐分类、源分离和生成模型的输入特征
**神经网络中的CQT:** 许多最先进的音乐AI系统(Demucs、OpenL3、CREPE)使用CQT或类CQT表示作为输入特征,而不是Mel频谱图,因为恒定Q分辨率与它们建模的数据结构相匹配。
相似文章
快速傅里叶变换 第一部分:库利-图基算法
本文详细推导了库利-图基快速傅里叶变换算法的数学原理,并解释了它如何降低离散傅里叶变换的复杂度。
通用量子变换器
本文介绍了通用量子变换器(UQT),这是一种量子原生架构,利用多量子比特系统实现精确数学推理,在模运算和置换群上达到确定性泛化,同时绕过了经典过参数化和二次注意力瓶颈,并已部署在IBM Quantum硬件上。
Qift: 移位友好的无零点W2训练后量化,用于旋转W2A4/KV4大语言模型推理
本文介绍了Qift,一种固定的无零点两位权重量化层级集,专为Hadamard旋转的大语言模型设计,通过利用旋转权重的近零中心高斯类分布,实现了改进的W2A4/KV4推理。在LLaMA-2-7B和LLaMA-3.1-8B上的实验显示,相比于标准W2量化,困惑度持续提升。
Channel-wise Vector Quantization
通道级向量量化(Channel-wise Vector Quantization, CVQ)用通道级标记替换块级标记进行图像标记化,实现了一个下一通道预测框架(CAR),该框架通过逐步细化视觉细节生成图像,在重建和文本到图像生成性能上表现出色。
更多QAT内容以及毛茸茸的tick
作者发布了Gemma 4模型(12B和31B)改进后的GGUF量化版本,采用了更精确的量化感知训练过程,相比原版量化实现了更低的KLD和更高的同top百分比。