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

时间:2011-04-07 20:22:16

标签: audio merge delay sox pad

我正在使用sox工具,我想合并两个音频文件,让我们说long.oggshort.ogg输出文件{{ 1}}。 使用output.ogg非常容易。

事情是,我希望{n}后$ sox -m long.ogg short.ogg output.ogg 播放(而short.ogg应该从头开始)。为此,我找到了 pad 效果。但我不理解只延迟long.ogg输入文件的语法,而不是short.ogg输入文件。

我找到了一种(脏)方式(n = 6):

long.ogg

我不想创建一个中间文件。在此先感谢您的帮助。

5 个答案:

答案 0 :(得分:7)

您应该可以执行以下操作:

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

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

希望这有帮助。

答案 1 :(得分:7)

感谢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

答案 2 :(得分:1)

这是另一个受益于双引号使用的解决方案。它使命令更易读,更容易扩展:

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

这将连接所有三个文件,每个文件后暂停1秒(odin,沉默,dva,沉默,三,沉默。)

应用于原帖,我们得到:

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示例,所以我希望这有助于某人!

答案 3 :(得分:0)

也可以使用延迟命令。

您可以执行以下操作: sox.exe -m short.ogg long.ogg delay 6

这将合并两个文件,short.ogg将在long.ogg

中启动6秒

答案 4 :(得分:0)

因为我还没有被允许评论,我只想说我喜欢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

只能将400 Hz的1秒正弦波写入文件“farts.wav”。该文件缺少300 Hz的第一个正弦波。