README 补 SADIE II 来源(约克大学 H4, Zenodo DOI); 更新已修的残留描述(块间插值/限幅阈值); 记下'峰值失真纯音测不出'的教训

This commit is contained in:
lou
2026-09-19 19:28:21 +08:00
parent b154ac46c1
commit 927309b1a9
+28 -2
View File
@@ -88,8 +88,34 @@ HRIR 峰值 **17 dB**、房间混响 IR **16.5 dB**, 都不可能推高峰
修后实测: EQ 入峰值 **+5.16 → 15.57 dBFS**; 600 Hz 谐波 **9.9 → 28.9 dB**; 软限幅不再触发。
残留(未修, 待定): 归一化的增益是**逐块更新**的, 块与块之间的台阶仍会产生约 29 dB 的谐波。
要彻底消掉需要做**块间增益插值**(逐样本平滑过渡)。音乐内容下一般被掩蔽, 放纯音仔细听才察觉得到。
已修(2026-09-19): 归一化的增益原来是**逐块更新**的, 块间台阶产生约 29 dB 的谐波。
现已改为**块内逐样本线性插值**(上一块增益 → 本块增益的斜坡), 谐波(相对基频) +0/+6 dB
12.1 / 15.9 dB 降到 **90.1 / 70.6 dB**。
## 限幅阈值定太低的坑(2026-09-19 修)
EQ 输出级的软限幅原来设 `ceiling = 0.891 / knee = 0.25`, 介入点低到 **3.9 dBFS**。
后果: **纯音**峰值因子只有 3 dB, 峰值落在 −11 dBFS —— **测不出问题**; 而**音乐**峰值因子 10~14 dB,
归一化到 −14 dBFS RMS 后峰值就在 **4 ~ 0 dBFS**, 正好长期落在限幅区里被压 → 中低频谐波 → 沙沙。
所以才会"纯音测干净、一放音乐就犯"。
现改为 `ceiling = 0.99 / knee = 0.06`(介入点 **0.63 dBFS**): 平时完全透明, 只在真要削波时介入。
实测(高峰值因子素材): 常规段增益精确 **+6.00 dB**; 仅瞬态尖峰(入 2.21 dBFS)被压到 0.09 dBFS。
**教训: 峰值相关的失真纯音测不出来, 必须用高峰值因子素材** —— 见 `测试/test_limit.py`
## 空间数据来源
| 用途 | 数据 | 来源 |
|---|---|---|
| 双耳 HRTF | **SADIE II** 受试者 **H4**, 96 kHz / 24 bit / 512 tap, 每条截取 4800 tap(约 50 ms) | University of York 音频实验室, [Zenodo DOI 10.5281/zenodo.12092466](https://doi.org/10.5281/zenodo.12092466) |
| 房间混响 | 自家房间模型程序化生成的双耳 IR | 本项目 `reverb/` |
- `hrir/` 的 12 条 = H4 的 6 个方向 × 左右耳(BL / BR / FC / FL / FR / LFE);
链路实际用**前左 + 前右**共 4 条(`FL_L` / `FL_R` / `FR_L` / `FR_R`)做双耳化。
- SADIE II 为**真人受试者**测量: 2818 个方向, 仰角 ±90°, 测距 1.2 m。
- 房间混响 IR 是**未归一化**的原始响应 —— 所以混响 convolver 必须带 `gain = 0.126` 标定
(见下文"中低频沙沙声的根因")。
## 实测(2026-09-19)