FFmpeg - 锐化高通滤波器

问题描述 投票:0回答:2

我正在编写重新采样音频文件并向其添加高通滤波器的命令。

在我使用的软件中,高通滤波器非常锐利 - 问题是我不知道如何锐化 FFmpeg 中的滤波器。

我尝试了一些选项但没有成功。我怎样才能实现这一目标?

ffmpeg -i "Audio.wav" -ar 44100 -af highpass=f=5000 "Audio_HP.wav" -y
FFmpeg 的作用 我想要什么
audio ffmpeg highpass-filter
2个回答
1
投票

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
,但这应该是配置它的正确方法。


0
投票

使用

firequalizer
过滤器。

highpass=f=5000
替换为
firequalizer=gain='if(gt(f,5000),0,-INF)'
。这将在 5 kHz 处实现非常非常激进的高通,并具有非常陡峭的滚降。

© www.soinside.com 2019 - 2024. All rights reserved.