使用 Sox,我如何将音频文件缩短 5 秒,从末尾修剪?
例如,这是从头开始修剪文件的方法:
sox input output trim 5000
这是如何在结尾添加 5 秒的静音:
sox input output pad 0 5000
语法是sox input output trim <start> <duration>
例如sox input.wav output.wav trim 0 00:35
将前 35 秒输出到output.wav
.
(你可以知道使用的长度是多少sox input -n stat
)
从命令的SoX 文档中trim
:
从音频中剪切部分内容。可以给出任意数量的位置;在到达第一个位置之前,音频不会发送到输出。然后效果在复制和丢弃每个位置的音频之间交替。对第一个位置参数使用值 0允许从音频的开头进行复制。
例如,
sox infile outfile trim 0 10
将复制前十秒,而
play infile trim 12:34 =15:00 -2:00
和
play infile trim 12:34 2:26 -2:00
将从音频的 12 分 34 秒开始播放到音频的 15 分钟(即 2 分 26 秒),然后在音频结束前两分钟继续播放。
根据dpwe 的评论,位置值被解释为相对于前一个位置,除非它们以=
(在这种情况下它们相对于文件的开头)或-
(在这种情况下它们相对于文件的结尾)开始.
因此,在结尾处修剪五秒将是sox input output trim 0 -5
上面的命令是错误的,它只会让你持续 5 秒。您实际上需要使用:
sox input output reverse trim 5 reverse
这将从文件末尾缩短 5 秒。
我是 SoX 的新手,但注意到此页面经常出现在音频修剪的搜索结果中,并且会被许多尝试做类似事情的人看到。
因此,我想提供我个人认为最好的解决方案。
我在文件末尾遇到了John Smith Optional提到的相同的“点击”。这表明短暂的淡出可以在音频结束时消除任何故障伪影,并且确实可以正常工作。接受淡出位置参数的负值来指示音频结束之前的时间是关键。
所以我看不出比这更好的方法来实现 OP 的目标:
sox full_length.wav trimmed.wav fade 0 -5 0.01
参数 1 为“0”,因此没有淡入。参数 2 删除最后 5 秒参数 3 使用 10ms 淡入