“淡入淡出”是看似简单实际分层的概念——50ms 的淡入淡出和 3s 的淡入淡出做的是完全不同的事。这篇讲清四个层次的时长选择、为什么线性曲线听起来不自然、什么场景反而不应该加淡入淡出。
为什么需要淡入淡出:截断 click 的物理原因
直接剪掉音频两端会”啪”一声,原因是波形在非零位置被瞬间切断:
原始波形: /\ /\ /\ /\
截断位置: ↑
截断后: /\ /\ /
↓
从 +0.6 振幅直接跳到 0
这一跳是个阶跃信号,频域上覆盖直流到奈奎斯特频率的全带宽能量——人耳听到就是高频 click。
两种解法:
| 方法 | 难度 | 效果 |
|---|---|---|
| 找零交叉点(zero crossing)切 | 需要精确定位 | 几乎完美消除 click |
| 加 10–50ms 极短淡入淡出 | 拖滑块即可 | 通用方案,完全消除 |
本工具走第二条。
淡入淡出时长的四个层次
| 时长 | 用途 | 听感 |
|---|---|---|
| 10–50ms | 工程目的:消除 click | 听不出淡入淡出本身 |
| 100–500ms | 柔和起停 | 感觉”开始 / 结束” |
| 1–3s | 自然过渡 | 进入 / 退出场景 |
| 3–10s | 艺术化 | 营造情绪 |
| >10s | 慢起慢落 | 氛围 / 冥想 |
判断方法:你希望听众注意到这个过渡吗?
- 不希望 → 50ms 以下
- 希望感到开始/结束但不喧宾夺主 → 0.5–2s
- 希望过渡本身成为情绪的一部分 → 3s+
常见场景推荐表
| 场景 | 开头淡入 | 结尾淡出 | 备注 |
|---|---|---|---|
| 截断 click 修复 | 30ms | 30ms | 听不出来 |
| Podcast 段落 | 100–300ms | 200–500ms | 段落感清晰 |
| Podcast intro/outro | 1–2s | 3–5s | 专业感 |
| 短视频 BGM(15–60s) | 0.3–0.5s | 0.5–1s | 不浪费篇幅 |
| YouTube 长视频 | 1–2s | 2–3s | 配画面淡黑 |
| 铃声 / 通知音 | 0ms | 50–100ms | 反应速度优先 |
| 闹铃 | 0ms | 100ms | 不要”温柔淡入” |
| 电影配乐 | 3–10s | 5–30s | 跟随场景节奏 |
| 助眠 / ASMR | 5–30s | 30–60s | 越慢越好 |
| Lo-fi / 氛围乐 | 3–8s | 5–15s | 专辑级 |
为什么线性曲线听起来不自然
人耳响度感知是对数的,不是线性的:
| 振幅 | dB | 听感 |
|---|---|---|
| 1.0 | 0dB | 全响 |
| 0.5 | -6dB | 中等响度 |
| 0.1 | -20dB | ”很轻” |
| 0.01 | -40dB | ”几乎没有” |
| 0.001 | -60dB | 听不到 |
线性淡入从 0 升到 1,前半段(0→0.5)你几乎听不到,后半段(0.5→1)声音”突然爆出来”——感觉”前面静,后面突然来”。
对策:
- 50ms 以下:听不出差异,用线性即可(默认)
- 3s 以上:用
curve=log或curve=qsin才接近”自然渐入” - 本工具默认走 tri(线性),需要其他曲线请用命令行
afade 内部做了什么
本工具背后的 ffmpeg 命令:
afade=t=in:st=0:d=3 # 从 0s 开始,3 秒淡入
afade=t=out:st=57:d=3 # 从 57s 开始(总长 60s),3 秒淡出
参数:
| 参数 | 含义 |
|---|---|
t | type,in 或 out |
st | start time,开始时刻(秒) |
d | duration,时长(秒) |
curve | 曲线类型(默认 tri) |
实时试听 vs 实际导出:
| 行为 | 引擎 | 曲线 |
|---|---|---|
| 拖滑块即听 | <audio>.volume 线性 | tri |
| 点”开始处理” | ffmpeg afade | tri(默认) |
本工具两边都是线性,听感一致——但 3s 以上时长两边都会感觉”前面静后面陡”,这是预期的。
什么时候反而不要加淡入淡出
- 鼓点 / 强攻击开头的音乐:淡入会破坏第一拍的冲击力
- 铃声 / 通知音的开头:延迟感知,违背工具本意
- DJ 切歌的硬切点:刻意保留瞬态
- 极短素材(<3s):加了 fade 占比太大,整段都变了
- 已经做过 fade 的素材:再加一次会变成”双重淡入”,听起来像缓启动故障
输出格式与 generation loss
淡入淡出本身在 PCM 层完成,但保存时要重新编码:
| 输出格式 | 第二代编码损失 | 适用 |
|---|---|---|
| MP3 192k/320k | 有,轻微高频损失 | 单次处理直接用 |
| AAC / M4A | 有,与 MP3 类似 | iOS 生态友好 |
| WAV | 无 | 还要继续编辑 |
| FLAC | 无(压缩比约 50%) | 存档 / 母带 |
反复处理多次的话每一代叠加损失——先导 WAV 编辑、最后再压 MP3。
重叠的边界处理
工具限制 fade_in + fade_out ≤ duration(滑块上限 = min(10, duration/2)),避免两端重叠。
实际建议更保守:淡入 + 淡出 ≤ 时长的 50%,留至少一半给满音量段——否则就不是”淡入淡出”,而是”音量包络”了。
一句话总结
淡入淡出 50ms 解决爆音、500ms 柔和切换、3s 自然过渡、10s 艺术情绪;线性曲线在 3s 以上会觉得”前轻后重”,那是人耳响度感知对数曲线的体现——不是 bug;铃声、强攻击开头、极短素材反而不要加。