引言
音响市场在过去几年快速增长,但多数爱好者面临的现实是:调音仍依赖经验,缺乏客观测量依据。专业声学测量工具(如 REW、Smaart)需要外置音频接口、校准麦克风和 PC 端安装程序,成本高昂且门槛较高。
本系统尝试解决一个实际问题:让用户用随身携带的手机,在浏览器里完成一次足够可靠的声学测量,并据此给出校准建议。现代浏览器已支持 48 kHz 全双工音频流与 32 位浮点 FFT,这意味着在浏览器里做精密声学测量不再是「不可能」,而是需要解决一系列真实的工程问题。
本白皮书系统阐述本副本(本地版)的技术实现。全部信号生成与声学分析均在浏览器本地完成,无需服务器,无使用次数限制。
第一章 核心层:同步、扫频与频谱提取
1.1 对数扫频信号选择
系统使用对数扫频(Logarithmic Sweep)作为测量信号,时域表达式为:
本系统采用 f₁ = 20 Hz,f₂ = 20 kHz,T = 10 s,故 L ≈ 1.448 s。瞬时频率随时间指数增长:f(t) = f₁ · e^(t/L)。
对数扫频的核心特性是恒定的倍频程能量密度:单位时间内每个倍频程获得的激励能量相等。这意味着低频段(20~40 Hz)与高频段(10~20 kHz)获得相等的激励时间。在家居和车内噪声环境中,低频段通常受环境噪声影响最大,对数扫频通过延长低频激励时间,提升了该频段的信噪比。
完整校准信号共 38 秒,结构如下:
→ 2.5~12.5s 扫频① → 13.5~23.5s 扫频② → 24.5~34.5s 扫频③(各段间 1s 静音)
→ 35.5~36.0s 1kHz 结束触发 → 36.0~38.0s 静音
三段重复扫频用于:① 平均以压制随机噪声;② 通过段间一致性评估测量可信度(见 2.3)。
1.2 触发同步
播放端与接收端物理分离、时钟独立。接收端通过归一化互相关定位 1 kHz 触发信号:
算法采用两级搜索:第一级以 100 采样步进粗定位,第二级在峰值邻域内以原始采样率全精度互相关精确定位触发起点。由于本系统仅使用幅度谱(magnitude-only),触发定位的少量时间误差只会引起相位旋转,不影响频响幅度结果,因此对同步精度要求宽容。
结束触发用于估算时钟漂移:漂移因子 = 实测触发间隔 / 理论触发间隔 − 1(以 ppm 输出)。该指标在报告中以「时钟漂移」展示。
1.3 窗函数与 FFT
对每段 10 秒扫频,使用 32768 点 Hann 窗、50% 重叠的短时傅里叶变换,取幅度平方后按段平均:
随后以相同管线计算参考扫频(本地合成)的功率谱,通过频域除法得到系统频响:
这样录制信号中的扫频自身形状、窗函数泄漏与频谱泄漏效应被完整归一化,剩余即为「扬声器 + 房间 + 麦克风」的系统响应。
1.4 可变倍频程平滑
原始频响存在大量梳状滤波纹波,直接用于 EQ 建议会造成过拟合。系统对 dB 曲线应用 1/3 倍频程平滑:对每个频率点 f,取其上下半倍频程带宽(f·e^(±Δ/2))内的平均值:
平滑后在 31 个 ISO 标准 1/3 倍频程中心频率(20 Hz ~ 20 kHz)处线性插值采样,得到校准频段表。
第二章 决策层:校准建议与质量评估
2.1 EQ 校准建议
EQ 补偿增益取平滑后响应的相反数:Gain(f) = −S(f)。为可靠性考虑,施加以下约束:
- 30 Hz 以下与 16 kHz 以上视为不可靠频段,校准增益归零;
- 增益限幅在 ±10 dB 以内,避免极端 EQ 造成过载;
- 低频专业设备频率(20/31/45/63/80 Hz)在报告中特别标注,提示设备不支持时应保持 0 校准。
2.2 哈曼目标曲线
「最佳听感优化」模式在平直校准基础上叠加心理声学目标偏移(Harman Target 风格):低频提升约 +1 dB,中高频部分频段轻微提升,4 kHz 附近 −0.5 dB 柔化齿音,10 kHz 附近 +1 dB 增加空气感。该模式仅适用于音乐欣赏场景,不适用于音乐制作。
2.3 质量评分
系统输出 0~100% 的「录音质量可信度」,综合以下指标:
- 削波比例:扫频段样本绝对值超过 0.98 的比例,超过一定量显著扣分;
- 信噪比:扫频段 RMS 与段间静音底噪的差值,低于 5 dB 时开始扣分;
- 一致性:三段扫频在 100 Hz~8 kHz 之间响应的平均标准差,标准差越小越好;
- 信号电平:扫频段 RMS 过低说明增益不足或距离过远,同样扣分。
第三章 工具链
3.1 实时频谱分析(RTA)
4096 点 FFT,20 Hz~20 kHz 对数横轴,叠加 3 dB/oct 高频倾斜补偿以获得视觉平坦的「响度感知」曲线。支持线状与 1/3 倍频程柱状两种视图,并带有 60 秒瀑布图(频谱历史)与峰值音名检测。
3.2 混响时间检测(RT60)
拍手法:监测瞬态峰值(阈值 −30 dBFS),触发后录制 2 秒衰减曲线,采用 T20 测量法——从峰值回落 5 dB 到回落 25 dB 的时间差 ×3 即 RT60。底噪由触发前滚动缓存估计,结果附带质量评估与声学处理建议。
3.3 房间模态计算器(CALC)
矩形房间驻波模态频率:f = (c/2)·√((p/L)² + (q/W)² + (r/H)²),遍历阶数至 300 Hz。轴向(1.0)、切向(0.707)、斜向(0.5)权重不同;并考虑声源激励强度与听音位压力耦合(余弦因子乘积),输出「智能合并诊断报告」与 Schroeder 频率。
3.4 音调仪 / 延时 / 相位 / 通讯
- 音调仪:自相关(ACF)音高检测,覆盖 C2~C6,钢琴卷帘可视化,偏差音分显示;
- 延时:多声道距离→延时换算(343 m/s,48 kHz DSP 步进取整),附声场结象感知测试;
- 相位:Chirp 同步 + 粉噪互相关提取脉冲响应,FFT 求幅度/相位/相干;
- 声学通讯:16-FSK 音频调制解调,UTF-8 文本编码,支持 WAV 导出与实时解码。
第四章 部署层
4.1 测量环境约束
- 接收端必须关闭蓝牙,使用手机主麦克风(底部开孔);
- 播放端与接收端必须是两台独立设备,不得连接;
- 播放端所有 EQ、音效、响度增强必须处于「原始/关闭」状态;
- 测试时保持环境安静,请勿播放音乐;
- 手机电量建议高于 20%(麦克风增益会随低电量漂移)。
4.2 校准部署方案
- 音乐爱好者:在设备自带均衡器或音乐播放器中按数值校正;
- 音频制作者:将校正参数以多段 EQ(Q 值约 3.7)挂于 DAW 总线或声卡总输出;
- 校准文件:报告支持导出原始数据 JSON,供第三方工具与数据归档。
附录 A:算法伪代码
samples ← 采集 38s 单声道 Float32 音频(48kHz)
triggerPos ← CrossCorrelate(samples[0..8s], 1kHz_Trigger)
for i in 0..2:
seg ← samples[triggerPos + (1.5 + i·11.0)s : +10s]
P_m[i] ← AvgPowerSpectrum(seg, 32768, Hann, 50% overlap)
P_r ← AvgPowerSpectrum(SynthSweep(10s))
resp ← 10·log10(P_m_avg / P_r)
smooth ← ThirdOctaveSmooth(resp, 20Hz..20kHz)
for f in ISO_FREQS:
gain[f] ← clamp(−sampleAt(smooth, f), ±10dB)
if f < 30 or f > 16000: gain[f] ← 0
score ← QualityScore(clipRatio, snr, consistency, level)
return { eq_bands, diagnostics }
— END OF DOCUMENT —