倒谱分析模拟器 返回
信号处理模拟器

倒谱分析模拟器 — 语音与振动分析的基础

对数幅度谱逆傅里叶变换计算实倒谱。改变基频、采样率和谐波衰减,在 quefrency 轴上直观理解基音检测的原理。

参数设置
基频 f_0
Hz
采样率 F_s
Hz
谐波衰减率 α
噪声 σ

固定 N = 1024,直接执行 DFT。信号模型为 5 个谐波加白噪声。

计算结果
倒谱峰值 quefrency
对应时间 τ
估计基频 f_0
估计误差 |f_0 − 真值|/真值
信号·谱·倒谱

上: 时序 x[n](蓝)/ 中: 对数幅度谱 log|X[k]|(绿)/ 下: 倒谱 c[n](红、黄竖线=峰值位置)

理论与主要公式

实倒谱是对信号的对数幅度谱做逆傅里叶变换得到的量。它能在时间(quefrency)轴上分离卷积耦合的激励源与传递系统。

DFT。x[n] 为长度 N 的输入信号,X[k] 为其频率分量:

$$X[k] = \sum_{n=0}^{N-1} x[n]\,e^{-j 2\pi k n / N}$$

实倒谱。对数幅度谱的逆DFT(仅取实部):

$$c[n] = \frac{1}{N}\sum_{k=0}^{N-1} \log|X[k]|\,\cos\!\left(\frac{2\pi k n}{N}\right)$$

基本周期 quefrency 与估计基频:

$$\tau_\text{pitch} = \frac{F_s}{f_0}, \qquad \hat{f}_0 = \frac{F_s}{\tau_\text{peak}}$$

语音中,在 2~20 ms(500~50 Hz)范围内搜索倒谱峰值,并从该 quefrency 估计基音。

什么是倒谱分析模拟器

🙋
「cepstrum」看起来就是把「spectrum」的字母调换了一下,这到底是什么,有什么用?
🎓
观察得很准。把「spectrum」反过来叫「cepstrum」,把「frequency」反过来叫「quefrency」。简单说,就是对频谱再做一次傅里叶变换,在时间轴上提取信号里的「周期」。在上方模拟器里,f_0=200Hz、F_s=8000Hz 的状态下看下面的倒谱,在 quefrency=40 样本附近会出现尖锐的峰。40/8000=5ms,正好就是 1/200 秒的周期。
🙋
用普通的 FFT 也能求出基频吧,为什么要分两步呢?
🎓
问得好。频谱上基频和它的谐波是并排显示的,但像人声那样「谐波比基波还大」的情况很常见,简单挑峰会出错。倒谱能把等间距的谐波峰全部集中到「quefrency=周期」这一个点上。在模拟器里把 α 从 0 调到 0.8,频谱上谐波的形态会变,但倒谱的峰位置保持不动。
🙋
真的,峰位置不漂移。那中间为什么要取「对数」?
🎓
这就是倒谱的精髓。语音由「声带振动(激励)× 声道滤波(传递系统)」的卷积构成。变到频谱是乘积,取对数就变成加法。再做逆傅里叶变换,慢变的声道成分(低 quefrency)和带尖峰的基音成分(高 quefrency)就能在时间轴上分离。再用「lifter」切开,就能提取出语音识别用的特征量了。
🙋
把滑块 σ 调大加入噪声后,倒谱的峰会稍微变低。
🎓
对,噪声在频谱上是稀薄地铺开的,取对数后就在整个 quefrency 轴上薄薄地铺开。即便如此,对应基音周期的 40 样本处的峰仍然留着。在实务中这种特性对机械振动诊断特别有效——齿轮损伤产生的等间距边带波在倒谱上被压缩成一个峰,就能从噪声中找出损伤周期。语音分析和旋转机械诊断,表面上完全不同,骨子里是同一套数学。

常见问题

这个范围对应人声的基音。20 ms 对应 50 Hz(成年男性低音域的下限附近),2 ms 对应 500 Hz(女性、儿童高音域的上限附近)。低 quefrency 一侧有来自声道滤波的大成分,若不限制就会被误判为基音。把搜索限制在生理上合理的范围内可避免这种误判。机械振动诊断中则根据对象设备的转速调整搜索范围。
实倒谱只使用对数幅度 log|X[k]|,舍弃相位信息。本模拟器计算的就是实倒谱,对基音检测和谐波结构分析已足够。复倒谱使用 log X[k](复对数),保留相位信息,可用于信号的完全重构(同相分解等)。但需要相位展开,实现较难,应用受限。
本工具计算 log(|X[k]| + ε),加一个微小值 ε=1e-10。理论上由于噪声存在,|X[k]| 完全为 0 的情况很罕见,但带有频谱零点的合成信号可能发散。实务中常给信号加一点白噪声,或在取对数前以最大值的 1e-6 倍作为底值进行截断。
教学用途和 N=1024 级别的单次计算用直接 DFT 完全够(O(N²) ≈ 100 万次运算,瞬时计算)。但若是实时处理、长信号或连续帧处理,则必须使用 FFT(O(N log N))。WebAudio API 和 DSP 库中 FFT 是标准实现,将本模拟器的计算逻辑直接替换为 FFT 结果不变,只是速度更快。

实际应用

语音分析与语音识别:倒谱是语音处理的核心工具。基频(基音)估计、清浊音判定、共振峰(声道共振)提取,都通过对倒谱低 quefrency 区域与高 quefrency 区域进行「lifter」切分来实现。MFCC(梅尔频率倒谱系数)是其延伸,在语音识别、说话人识别、语音合成的各种场景中作为标准特征量使用。

机械振动诊断与旋转机械的预知保全:齿轮断齿或滚动轴承损伤时,频谱上会出现大量与损伤周期对应的等间距边带波。这些直接难以读取,但做倒谱后,边带波群被压缩为单个峰,能一目了然地判定损伤的存在与周期。在风力发电机、涡轮机、大型电机的状态监测中广泛使用,已成为 IoT 时代预知保全的基础技术。

地震学与反射波分析:地震波和反射地震勘探中,地下反射面发生多次反射,同一波形在固定延迟时间反复出现。做倒谱后,该延迟时间对应的 quefrency 处会出现峰,可用于估计地层结构。声学回波分析中也以同样原理测量房间混响时间和到反射面的距离。

生物信号分析:心音、呼吸音、肌电图等生理性周期信号的分析也应用倒谱。心音的 S1·S2 周期、心率变异中隐藏的周期成分、吞咽音的模式分类等,能揭示时域或频域单独看不到的结构。在临床诊断支持和可穿戴生命体征传感器的信号处理中正在推进实现。

常见误解与注意事项

最常见的误解是认为「倒谱的横轴是频率」。横轴是具有时间量纲的 quefrency(样本数或秒),值越大对应「周期越长的成分」,即更低的频率。在模拟器里把 f_0 从 200 Hz 调到 400 Hz,倒谱的峰会向左而不是向右移动,这是因为周期 T_0=F_s/f_0 变短了。「倒谱上向右=高频」这种直觉不适用,请注意。

其次常见的错误是忽略峰值位置的整数倍。除了对应基本周期 T_0 的 n=T_0 之外,n=2T_0、3T_0…处也会出现小峰。这不是基本周期的「倍音」,而是对数谱的周期结构(基频的整数倍上排列的谐波)再次傅里叶变换时自然出现的现象。在模拟器里把 α 调小(增强谐波),就能看到倒谱的 2 倍、3 倍位置出现副峰。不只是挑最大峰,还要正确拾取基本峰的算法(避免八度误差)是实现上的难点。

最后,请注意倒谱并非万能的周期检测器。当信号非平稳(基音随时间变化)时,长分析窗会混入多个基音,导致峰变模糊。实用中用短窗(20~40 ms 左右)分帧,对每帧计算倒谱得到基音轨迹。无周期性的信号(爆破音、冲击响应)则根本不会出现峰。请理解倒谱是对「周期性强的信号」发挥威力的工具来使用。