首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索克斯:沉默时分割音频,但保持沉默。

索克斯:沉默时分割音频,但保持沉默。
EN

Unix & Linux用户
提问于 2016-10-22 15:38:49
回答 1查看 13.6K关注 0票数 9

我有存储在大型mp3s中的多本有声读物。我正在尝试将这些大型mp3s分解成多个较小的文件。

我已经找到了一个工具,它可以检测音频文件中的静音和基于这个“分隔符”的分割音频文件。

下面是一个示例:

代码语言:javascript
复制
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.mp3audiobook_part_002.mp3,.静音>= 0.5秒。

现在的问题是,这个命令不仅拆分了文件,而且还消除了沉默。

因此,当您在播放列表中播放新文件时,曲目/段落的声音被压缩在一起。

那么,您如何告诉sox只分割文件,但保持沉默(在每个轨道的末尾)?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-11-02 11:27:41

您可以通过一些小的更改来保留拆分部分中的所有静音。从原始命令开始:

代码语言:javascript
复制
silence 1 0.5 0.1%   1 0.5 0.1% 

值的第一个三重奏意味着消除沉默,如果有的话,在开始时,直到.5秒以上的声音.1%。第二个三重奏意味着停止,当至少有.5秒的沉默低于.1%。命令的其余部分,: newfile : restart,然后启动一个新的输出文件,并在开始时再次开始查找声音。因此,第一个文件在沉默开始时结束,第二个文件将在沉默结束时启动。

可以改进这一点的最简单的选项是silence -l。它将保留触发文件结束的.5秒的沉默。不幸的是,任何更多的沉默都将被删除,因为它是下一个文件的开始。保持较长间隔的一个简单方法是将-l与较长的检测时间(如2秒)结合起来:

代码语言:javascript
复制
silence -l  1 0.5 0.1%   1 2.0 0.1%

现在只有在沉默至少2秒的情况下,你才会分裂,但你将保留间隔的前2秒。为了避免失去所有的沉默,只需在一开始就去掉沉默的检测。您需要用一个0替换三胞胎:

代码语言:javascript
复制
silence -l  0   1 2.0 0.1%

如果您想使用简单的声音文件来查看sox如何处理情况,您可以轻松地创建2个声音文件,一个由1秒的音调组成,另一个由1秒的沉默组成,然后按照您的意愿将它们结合在一起,然后将结果显示为silence效果的输入。例如,创建:

代码语言:javascript
复制
sox -n gap.wav   trim 0 1
sox -n tone.wav  synth 1.001t sine C5

然后加入gap-音调-间隙-音调,使用您的效果创建out.wav并听取结果:

代码语言:javascript
复制
sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wav
票数 13
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/318164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档