我正在编写重新采样音频文件并向其添加高通滤波器的命令。
在我使用的软件中,高通滤波器非常锐利 - 问题是我不知道如何锐化 FFmpeg 中的滤波器。
我尝试了一些选项但没有成功。我怎样才能实现这一目标?
ffmpeg -i "Audio.wav" -ar 44100 -af highpass=f=5000 "Audio_HP.wav" -y
FFmpeg 的作用 | 我想要什么 |
---|---|
highpass
仅限于一阶或二阶(大概是 IIR)滤波器。您需要设计自己的数字滤波器来实现具有更清晰截止的滤波器。为此,我会使用 aiir
过滤器。但你需要系数...
虽然我(一名 DSP 工程师)使用 Matlab/Python-Scipy 来设计滤波器,但我发现 这个网站 很有用。如果您输入滤波器规格,它会显示滤波器的 C 代码。显示“N阶”实现的代码,并将系数复制到ffmpeg命令中,如下所示:
aiir=k=[gain]:z=[bcoef]:p=[acoef]:f=tf:r=d
用 IIR 滤波器资源管理器中的名称替换
[...]
作为空格分隔的系数。 (请参阅文档中的示例)
在设计滤波器时,SB-Ripple 控制低于 5kHz 的信号被抑制程度(尝试从 -20 或 -40 开始)并保持滤波器顺序合理(例如最大 10)。阶数太高可能会导致数值不稳定。
免责声明:我自己从未运行过
aiir
,但这应该是配置它的正确方法。
firequalizer
过滤器。
将
highpass=f=5000
替换为 firequalizer=gain='if(gt(f,5000),0,-INF)'
。这将在 5 kHz 处实现非常非常激进的高通,并具有非常陡峭的滚降。