如何使用 ffmpeg "silenceremove" 过滤器模仿 Audacity 的 "truncate silence"
How to mimic Audacity's "truncate silence" with ffmpeg "silenceremove" filter
我想用 ffmpeg 从 wav 文件中完全删除无声部分。
输入 wav 可以是这样的:
我正在使用以下 ffmpeg 命令删除静音部分 ffmpeg -i input.wav -af silenceremove=stop_periods=-1:stop_duration=0.2:stop_threshold=-45dB output.wav
因为我从 doc 了解到它将删除所有超过 0.2 秒的静音部分(静音低于 -45dB)。
但是我得到 静音部分只减少到大约 0.1 wheras 我希望它是 0(没有剩余的静音)。
在 Audacity 中,我将使用“截断音频”过滤器并选择上述参数来检测静音,在动作部分我将选择截断为 0:.
这将产生我想要的效果(即没有剩余静音部分的音频):
在 the internet 上搜索只会让我找到我已经在做的事情。
那么如何使用 ffmpeg 重现从 Audacity“Truncate Silence”过滤器获得的输出并从音频中删除所有静音部分?
编辑:silencedetect 过滤器的输出是正确的: ffmpeg -i input.wav -af silencedetect=0.2:n=-45dB -f null -
准确检测 audacity 检测的内容。
在此先感谢您的帮助
看起来与 AUdacity 的截断静音行为等效的命令如下(添加的内容以粗体显示):
ffmpeg -i input.wav -af silenceremove=start_periods=1:stop_periods=-1:stop_duration= 0.2:start_threshold=-45dB:stop_threshold=-45dBoutput.wav
我不确定为什么添加这 2 个参数会导致预期的行为,但它确实有效,尽管对于某些文件,silenceremove 可以删除比 Audacity / silencedetect detect 更多的部分。
我想用 ffmpeg 从 wav 文件中完全删除无声部分。
输入 wav 可以是这样的:
我正在使用以下 ffmpeg 命令删除静音部分 ffmpeg -i input.wav -af silenceremove=stop_periods=-1:stop_duration=0.2:stop_threshold=-45dB output.wav
因为我从 doc 了解到它将删除所有超过 0.2 秒的静音部分(静音低于 -45dB)。
但是我得到
在 Audacity 中,我将使用“截断音频”过滤器并选择上述参数来检测静音,在动作部分我将选择截断为 0:
这将产生我想要的效果(即没有剩余静音部分的音频):
在 the internet 上搜索只会让我找到我已经在做的事情。
那么如何使用 ffmpeg 重现从 Audacity“Truncate Silence”过滤器获得的输出并从音频中删除所有静音部分?
编辑:silencedetect 过滤器的输出是正确的: ffmpeg -i input.wav -af silencedetect=0.2:n=-45dB -f null -
准确检测 audacity 检测的内容。
在此先感谢您的帮助
看起来与 AUdacity 的截断静音行为等效的命令如下(添加的内容以粗体显示):
ffmpeg -i input.wav -af silenceremove=start_periods=1:stop_periods=-1:stop_duration= 0.2:start_threshold=-45dB:stop_threshold=-45dBoutput.wav
我不确定为什么添加这 2 个参数会导致预期的行为,但它确实有效,尽管对于某些文件,silenceremove 可以删除比 Audacity / silencedetect detect 更多的部分。