使用 Sox 开始和结束音频批量修剪

Posted

技术标签:

【中文标题】使用 Sox 开始和结束音频批量修剪【英文标题】:Audio batch trim beginning and end using Sox 【发布时间】:2016-11-26 14:24:57 【问题描述】:

如何合并两者,以便处理多个文件,每个文件从开始修剪 15 秒,在结束时修剪 15 秒:

@echo off
cd E:\trim\multiplefiles
mkdir trimmed

rem trims 15 seconds from end of each file, and creates a snipped file in 
rem trimmed folder

FOR %%A IN (*.wav) DO sox "%%A" "trimmed\%%~nxA" reverse trim 15 reverse

@echo off
cd E:\trim\multiplefiles
mkdir trimmed

rem trims 15 seconds from beginning of each file, and creates a snipped file in rem trimmed folder

FOR %%A IN (*.wav) DO sox "%%A" "trimmed\%%~nxA" trim 15

【问题讨论】:

请返回dostips并回复您的问题已解决。 How do you trim the audio file's end using SoX?的可能重复 【参考方案1】:

SoX 修剪效果允许您指定开始和持续时间,负持续时间指定从文件末尾开始测量的结束点。所以sox infile outfile trim 15 -15 将从文件中删除前 15 秒和最后 15 秒。

@echo off
cd E:\trim\multiplefiles
mkdir trimmed

rem trims 15 seconds from beginning and end of each file, putting result in trimmed folder

FOR %%A IN (*.wav) DO sox "%%A" "trimmed\%%A" trim 15 -15

请注意,输出规范中不需要~nx

【讨论】:

【参考方案2】:

我假设您可以先从文件末尾修剪 15 秒,然后从结果开始修剪 15 秒。然后您可以将所有内容放在一个循环中并使用这样的临时文件:

@echo off

cd E:\trim\multiplefiles
mkdir trimmed

FOR %%A IN (*.wav) DO (
    rem trim 15 seconds from end and put it in temporary file
    sox "%%A" "trimmed\temp_%%~nxA" reverse trim 15 reverse
    rem trim 15 seconds from beginning of the temporary file
    sox "trimmed\temp_%%~nxA" "trimmed\%%~nxA" trim 15
    rem delete temporary file
    del "trimmed\temp_%%~nxA"
)

【讨论】:

谢谢!完美运行。 太棒了!很高兴听到!祝你好运@vicki! ;) 这比它需要的复杂得多,因为 SoX 可以一次修剪开头和结尾。见my answer。

以上是关于使用 Sox 开始和结束音频批量修剪的主要内容,如果未能解决你的问题,请参考以下文章

修剪音频文件并获得静音之间的部分

使用 SoX 更改音频文件中某个时间范围的音量级别

如何在 iOS 中从开始时间到结束时间修剪或播放音频?

Audiokit 修剪音频

使用 FFMPEG 批量删除音频结尾

Sox : 用 pad 合并两个音频文件