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



我正在使用sox工具,我想合并两个音频文件,让我们说long.oggshort.ogg输出一个文件output.ogg。这是非常容易使用$ sox -m long.ogg short.ogg output.ogg

事情是,我希望short.ogg在n秒后播放(而long.ogg应该从一开始就开始)。为此,我发现了pad效果。但是我不理解语法,只延迟short.ogg输入文件,而不是long.ogg输入文件。

我发现了一个(肮脏的)方法来做这件事(n=6):

$ sox short.ogg delayed.ogg pad 6
$ sox -m long.ogg delayed.ogg output.ogg

我不希望创建中间文件。谢谢你的帮助。

您应该能够做如下操作:

sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
sox的

-p选项用于管道—基本上,它告诉sox使用stdout作为输出。使用-作为第二个sox的输入实际上是说输入是标准输入(它恰好是前一个sox的标准输出,因为我们正在使用|)。pad 0 6告诉pad开始0秒,结束6秒。

感谢icyrock,我设法找到了一个解决方案。我使用:

$ sox short.ogg -p pad 6 0 | sox - -m long.ogg output.ogg

对于多轨(感谢奥兰多):

$ sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3

下面是得益于双引号的另一个解决方案。它使命令更具可读性,并且非常容易扩展:

sox −−combine sequence  "|sox input/odin.wav -p pad 0 1" "|sox input/dva.wav -p pad 0 1" "|sox input/tri.wav -p pad 0 1" output/test.wav

这将连接所有三个文件,并在每个文件(odin、silence、dva、silence、tri、silence.)之后暂停1秒

应用于原始帖子,我们将得到:

sox −−combine sequence  "|sox long.ogg -p pad 0 6" "|sox short.ogg -p pad 0 1" newfile.ogg

(在Windows上的SoX 14.4.1上测试正常)

我几乎没有看到任何SoX的例子使用双引号,所以我希望这有助于别人!

因为我还不允许评论,我只想说我喜欢Fabien的回答,因为它也可以与"NULL"声音文件一起使用:例如,

sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav

将在300 Hz下写入1秒正弦音,然后在400 Hz下写入1秒正弦音,并将其写入文件"useful.wav"。

sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400

将只写入1秒的正弦波在400赫兹的文件"屁。wav"。文件缺少300 Hz的第一个正弦波

运行跨延迟命令

你可以这样做:Sox.exe -m short。ogg长。Ogg delay 6

这将合并两个文件和短。Ogg将开始6秒进入long.ogg

最新更新