用FFmpeg修改音色
调整音色是音频后期中塑造声音质感和氛围的关键技术:
- 人声优化:通过均衡器提升中频(1~4kHz)可增强人声的清晰度和穿透力;衰减低频(100~300Hz)可减少录音中的人声浑浊感。通常 2~5dB 的微调即可显著改善听感。
- 音乐混音:多段均衡器superequalizer适合精细分频调整——提升低频(65Hz以下)增强震撼力,提升高频(8kHz以上)增加空气感和亮度,同时衰减嘈杂的中频段。
- 不同设备适配:手机扬声器高频衰减严重,可适当提升3~8kHz提升清晰度;车载音响低音饱满,可适当降低100~200Hz避免轰头感。
- 降噪与去齿音:通过衰减特定频段(如4~6kHz的齿音区)可减少刺耳感;通过高通滤波去除50~100Hz的低频嗡声(空调、路面噪声),让声音更干净。
FFmpeg音色处理原理详解
音色(Timbre)是声音区别于其他声音的本质特征,即使音高和响度相同,不同乐器发出的声音仍能被人耳区分,这正是因为它们的频率响应不同。频率响应描述了音频信号中不同频率成分的增益特性,是决定音色的核心因素。
一、equalizer 均衡器
equalizer 是 FFmpeg 中最基础的音色调整滤镜,其参数格式为 equalizer=f=中心频率:width_type=带宽类型:width=带宽:g=增益。
- f=1000:中心频率(Hz),指定要调整的频段中心点。1000Hz 位于中频区,人耳对此频段最为敏感。
- width_type=h:带宽类型。h 表示以 Hz 为绝对单位;还可选 q(品质因数)、o(倍频程)等。
- width=200:带宽(Hz),配合 width_type=h 使用,表示以中心频率 ±100Hz 的范围进行增益调整。
- g=5:增益(dB),正值提升该频段,负值衰减。±5dB 以内是常见的微调范围。
操作原理:equalizer 基于 IIR(无限冲激响应)数字滤波器设计,在频域上对指定频段进行精确的增益或衰减,从而改变声音的明亮度、厚实感或清晰度。例如提升 3kHz~5kHz 可增强临场感,衰减 200Hz~400Hz 可减少浑浊感。
二、superequalizer 多段均衡器
superequalizer 提供更精细的 8 段均衡控制,参数格式为 superequalizer=1b=值:1.5b=值:2b=值:...:8b=值。
- 1b(低音):65Hz 以下,控制超低频,影响震撼感和冲击力。
- 1.5b:约 125Hz,控制低频中段,影响声音的饱满度。
- 2b:约 250Hz,控制低频上段,影响声音的温暖感。
- 3b:约 500Hz,控制中低频,影响声音的厚度。
- 4b:约 1kHz,控制中频,影响声音的主体和清晰度。
- 5b:约 2kHz,控制中高频,影响临场感。
- 6b:约 4kHz,控制高频中段,影响细节和亮度。
- 7b:约 8kHz,控制高频上段,影响空气感和清脆度。
- 8b(高音):16kHz 以上,控制极高频,影响精细细节和泛音。
每段取值 -12~12 dB,0 表示不处理。superequalizer 比普通 equalizer 更适合需要精细分频的音乐混音场景。
三、vibrato 颤音效果
vibrato 是对音高进行周期性调制的效果,参数格式为 vibrato=f=振荡频率:d=深度。
- f=5:振荡频率(Hz),即每秒颤音波动的次数。5Hz 约等于每秒颤 5 次,是人声颤音的典型范围(4~8Hz)。
- d=0.5:深度(0~1),表示音高调制的幅度。0.5 意味着中等程度的音高偏移。
原理:vibrato 通过低频振荡器(LFO)控制延迟线的插值位置,实现音高的周期性变化,模拟人声或乐器演奏中的自然颤音效果。
四、频率响应与音色的关系
人类的听觉系统可感知 20Hz~20kHz 的频率范围,不同频段对音色感知的影响如下:
| 频段 | 频率范围 | 对音色的影响 |
|---|---|---|
| 超低频 | 20~60 Hz | 震撼感、冲击力,过多则浑浊 |
| 低频 | 60~250 Hz | 饱满度、厚实感,过多则轰头 |
| 中低频 | 250~500 Hz | 温暖感、力度,过多则混浊 |
| 中频 | 500~2000 Hz | 主体感、清晰度,人耳最敏感区域 |
| 中高频 | 2000~6000 Hz | 临场感、细节,过多则刺耳 |
| 高频 | 6000~12000 Hz | 亮度、空气感,过多则尖锐 |
| 极高频 | 12000~20000 Hz | 精细泛音、空间感,人耳感知上限 |
通过 equalizer 和 superequalizer,可以精确调整每个频段的增益,从而重塑音频的音色。例如:提升低频和超低频可让声音更浑厚有力;提升中高频可增强人声的清晰度和穿透力;适当削减 300Hz 附近频段可减少浑浊感。vibrato 则从时间维度引入音高变化,为音色增添动态表情。
{{v.name}}
使用均衡器(Equalizer)调整频率响应,代码如下
$ ffmpeg -i input.wav -af "equalizer=f=1000:width_type=h:width=200:g=5" output.wav
使用 superequalizer 进行多段均衡,代码如下
$ ffmpeg -i input.wav -af "superequalizer=1b=1:1.5b=2:2b=1" output.wav
添加颤音(vibrato),代码如下
$ ffmpeg -i input.wav -af "vibrato=f=5:d=0.5" output.wav
添加合唱效果(chorus),代码如下
$ ffmpeg -i input.wav -af "chorus=0.5:0.9:50:0.4:0.25:2" output.wav
添加相位效果(aphaser),代码如下
$ ffmpeg -i input.wav -af "aphaser=speed=0.5:decay=0.8" output.wav
调整音高(Pitch),使用现代的 rubberband 滤镜,代码如下
$ ffmpeg -i input.wav -af "rubberband=pitch=1.5" output.wav
调整音高(Pitch),使用传统的 asetrate 与 aresample,代码如下
$ ffmpeg -i input.wav -af "asetrate=44100*1.2, aresample=44100, atempo=1/1.2" output.wav
使用滤镜链,代码如下
$ ffmpeg -i input.wav -af "equalizer=f=300:width_type=h:width=100:g=-3, equalizer=f=3000:width_type=h:width=1000:g=2, chorus=0.5:0.9:50:0.4:0.25:2" output.wav