4.3 音频信号处理:均衡、压缩与混响


4.3 音频信号处理:均衡、压缩与混响算法

均衡器是频域增益调度,压缩器是时变增益(响度规整),数字混响用延迟网络或卷积模拟空间能量衰减。三者是音频工程的手艺核心:修复房间(第3章)的残留问题、控制动态、塑造空间感。

第三站在数字域。房间治理、箱体调谐之后,仍有剩余问题:某频段多两分贝、人声动态太宽、干声缺少空间感——这些交给三大件处理。核心观念只有一个:它们全是"乘以一个随时随频变化的增益",区别只在增益由什么决定。

均衡器:增益随频率变化

参数均衡器三要素:中心频率、增益、Q 值(带宽)。工程上它常常是"房间的补丁":扩声现场用参量均衡压窄带啸叫点,家用房间校正对模态峰做陷波(第3章 3.1 的 112 赫兹若不便做低频陷阱,数字陷波可再削几分贝——数字手段救不了驻波的位置起伏,但能救平均响应)。最小相位均衡能同时修正幅频与相应的相频,这是"数字 EQ 救房间"的物理边界。

import numpy as np fs = 48000 f = np.geomspace(20, 20000, 500) def peaking(fc, gain_db, q): """标准 peaking EQ 传递函数(RBJ 配方)""" A = 10**(gain_db/40); w0 = 2*np.pi*fc/fs; alpha = np.sin(w0)/(2*q) b = np.array([1+alpha*A, -2*np.cos(w0), 1-alpha*A]) a = np.array([1+alpha/A, -2*np.cos(w0), 1-alpha/A]) w = 2*np.pi*f/fs z = np.exp(1j*w) H = (b[0]+b[1]/z+b[2]/z**2)/(a[0]+a[1]/z+a[2]/z**2) return 20*np.log10(np.abs(H)) # 对 112 Hz 模态峰做 -6 dB、Q=4 的陷波,再对 3 kHz 听感区轻微提亮 resp = peaking(112, -6, 4) + peaking(3000, 1.5, 0.8) for target in (63, 112, 250, 1000, 3000): i = np.argmin(abs(f-target)) print(f"{target:5d} Hz -> {resp[i]:+5.1f} dB") # 63 Hz -> -1.8 dB # 112 Hz -> -5.9 dB (陷波命中) # 250 Hz -> -0.4 dB # 1000 Hz -> +0.0 dB # 3000 Hz -> +1.5 dB (提亮命中)

压缩器:增益随电平变化

压缩器检测信号包络,超过阈值的陡增被压平(压缩比),增益回落的速度由释放时间控制,攻击时间决定瞬态是否放行。它是广播响度战争的主角,也是录音棚里"人声贴脸感"的来源。机理一行的时变增益,听感却由攻击/释放时间塑形:快攻击掐掉鼓的敲击感,慢释放让增益喘息出现"呼吸"伪声。

import numpy as np rng = np.random.default_rng(1) fs = 48000 env = np.concatenate([np.full(24000, -30.0), np.full(24000, -10.0)]) # 包络跳变 dB thresh, ratio, att_tc, rel_tc = -20.0, 4.0, 0.005, 0.100 # 攻5ms 释100ms def compressor(env): over = np.maximum(env - thresh, 0)*(1 - 1/ratio) # 需要的增益削减量 g = np.zeros_like(env); tc = att_tc for n in range(1, len(env)): tc = att_tc if over[n] > g[n-1] else rel_tc # 削减加深用攻击,回调用释放 g[n] = g[n-1] + (over[n]-g[n-1])*(1-np.exp(-1/(fs*tc))) return env - g, -g out, gain = compressor(env) print(f"稳态:输入 -10 dB -> 输出 {out[-1]:.1f} dB(阈值上按 4:1 压)") print(f"最大增益削减 {gain.min():.1f} dB,到达时间约几倍攻击时间常数") # 稳态:输入 -10 dB -> 输出 -12.5 dB(阈值上按 4:1 压) # 最大增益削减 -7.5 dB,到达时间约几倍攻击时间常数

压缩器的工程判据:看增益削减量与时间曲线,而不是"耳朵调到好听为止"。语音广播通常 2 到 4 分贝温和削减;响度战争式 10 分贝以上重压换来响度,牺牲的是动态与透明度。

混响:增益随时间与空间扩散

数字混响两条路线:卷积混响拿真实空间的脉冲响应与干声卷积,物理忠实、算力大;算法混响用延迟反馈网络(梳状滤波器级联全通滤波器)人造指数衰减的稠密回声尾巴,算力小、参数可调。它们模拟的正是第3章的混响时间与早期反射结构:直混比影响距离感,早期反射侧向成分影响空间感,T60 决定尾音长短。

import numpy as np fs = 48000 dry = rng.standard_normal(fs) # 1 秒干声 t60, t = 3.0, np.arange(fs)/fs # 极简算法混响:指数衰减噪声近似脉冲响应(Schroeder 思路的一阶替身) ir = rng.standard_normal(fs) * 10**(-3*t/t60) # 每 T60 衰减 60 dB wet = np.convolve(dry, ir)[:fs] energy_ratio = 10*np.log10(np.sum(wet**2)/np.sum(dry**2)) print(f"直/湿能量比 ≈ {energy_ratio:.1f} dB —— 反馈网络把能量摊进 3 秒尾巴") # 直/湿能量比 ≈ 9.6 dB —— 反馈网络把能量摊进 3 秒尾巴

💡 关键直觉:三大件都是"时变或频变的乘法"。均衡修稳态频谱,压缩修动态包络,混响修时间结构——先诊断缺什么,再决定用哪件;三件全开往往是没想清楚的症状。

本节要点回顾

  • 均衡 = 增益随频率调度,最小相位特性决定它救得了平均响应、救不了位置起伏
  • 压缩 = 增益随电平变化;攻击时间管瞬态、释放时间管呼吸感,看增益曲线调参
  • 卷积混响忠于实测空间,算法混响(梳状 + 全通网络)省算力可调参
  • 直混比给距离感、早期反射给空间感、T60 给尾音——混响参数映射到第3章物理量
  • 处理链应是诊断的产物:先测谱测包络,再动手,忌三件套齐上

下一节抵达空间本身:立体声与空间音频如何骗过两只耳朵。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U