如果已知开始和结束时间,则使用 SoX 制作音频文件块

Making chunks of audio files using SoX if start and end times are known

我有一段 10 分钟的音频,我想按如下方式分段播放: (格式为mm:ss.frac)

 1. 1.wav -> 00.000 - 20.271
 2. 2.wav -> 20.272 - 47.550
 3. 3.wav -> 47.551 - 01:20.562

我试过像这样使用 trim 命令

sox infile outfile trim 0.000 20.271 However the format is trim start [length]

最坏的情况,我将不得不计算各个块的持续时间。还有别的办法吗?

不行,要用sox就得计算长度。您也可以使用 ffmpeg,它具有支持 start/end 次的 atrim 过滤器。

我发现最简单的解决方案是这样编写命令:

sox infile outfile start =end

在到达开始位置之前,音频不会发送到输出流,并且可以通过使用带有结束时间的“=”符号来指定结束位置。

所以代码现在是,例如:

sox forth.wav 10.wav trim 303.463 =353.790
  1. Link 到文档 http://manpages.ubuntu.com/manpages/precise/man1/sox.1.html
  2. 相关摘录:

trim start [length|=end] The optional length parameter gives the length of audio to output after the start sample and is thus used to trim off the end of the audio. Alternatively, an absolute end location can be given by preceding it with an equals sign. Using a value of 0 for the start parameter will allow trimming off the end only.