我有存储在大型mp3s中的多本有声读物。我正在尝试将这些大型mp3s分解成多个较小的文件。
我已经找到了一个工具,它可以检测音频文件中的静音和基于这个“分隔符”的分割音频文件。
下面是一个示例:
sox -V3 audiobook.mp3 audiobook_part_.mp3 \
silence 1 0.5 0.1% 1 0.5 0.1% : newfile : restart这基本上会把audiobook.mp3分成audiobook_part_001.mp3,audiobook_part_002.mp3,.静音>= 0.5秒。
现在的问题是,这个命令不仅拆分了文件,而且还消除了沉默。
因此,当您在播放列表中播放新文件时,曲目/段落的声音被压缩在一起。
那么,您如何告诉sox只分割文件,但保持沉默(在每个轨道的末尾)?
发布于 2016-11-02 11:27:41
您可以通过一些小的更改来保留拆分部分中的所有静音。从原始命令开始:
silence 1 0.5 0.1% 1 0.5 0.1% 值的第一个三重奏意味着消除沉默,如果有的话,在开始时,直到.5秒以上的声音.1%。第二个三重奏意味着停止,当至少有.5秒的沉默低于.1%。命令的其余部分,: newfile : restart,然后启动一个新的输出文件,并在开始时再次开始查找声音。因此,第一个文件在沉默开始时结束,第二个文件将在沉默结束时启动。
可以改进这一点的最简单的选项是silence -l。它将保留触发文件结束的.5秒的沉默。不幸的是,任何更多的沉默都将被删除,因为它是下一个文件的开始。保持较长间隔的一个简单方法是将-l与较长的检测时间(如2秒)结合起来:
silence -l 1 0.5 0.1% 1 2.0 0.1%现在只有在沉默至少2秒的情况下,你才会分裂,但你将保留间隔的前2秒。为了避免失去所有的沉默,只需在一开始就去掉沉默的检测。您需要用一个0替换三胞胎:
silence -l 0 1 2.0 0.1%如果您想使用简单的声音文件来查看sox如何处理情况,您可以轻松地创建2个声音文件,一个由1秒的音调组成,另一个由1秒的沉默组成,然后按照您的意愿将它们结合在一起,然后将结果显示为silence效果的输入。例如,创建:
sox -n gap.wav trim 0 1
sox -n tone.wav synth 1.001t sine C5然后加入gap-音调-间隙-音调,使用您的效果创建out.wav并听取结果:
sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wavhttps://unix.stackexchange.com/questions/318164
复制相似问题