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

Posted

技术标签:

【中文标题】Sox : 用 pad 合并两个音频文件【英文标题】:Sox : merge two audio files with a pad 【发布时间】:2011-04-07 20:22:16 【问题描述】:

我正在使用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

我不想创建中间文件。提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

您应该能够执行以下操作:

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

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

希望这会有所帮助。

【讨论】:

谢谢!我实际上不得不添加混音选项-m,因为没有它,整个声音都会延迟。请查看我的编辑。 我没有看问题——我写的会播放 short.ogg,等待 6 秒然后播放 long.ogg,将整个结果写入 output.ogg。无论如何,很高兴你找到了解决方案!我建议将其添加为答案并正式选择作为解决方案 - 对于其他有相同问题的人。【参考方案2】:

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

【讨论】:

如何处理多个曲目? 3,4,5 轨道 对于多首曲目:sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3【参考方案3】:

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

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、silence、dva、silence、tri、silence。)

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

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

【讨论】:

【参考方案4】:

也遇到了延迟命令。

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

这将合并两个文件,short.ogg 将在 6 秒后开始进入 long.ogg

【讨论】:

【参考方案5】:

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

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

将写入 1 秒 300 Hz 的正弦音,然后写入 1 秒 400 Hz 的正弦音,并将其写入文件“useful.wav”。

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

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

【讨论】:

以上是关于Sox : 用 pad 合并两个音频文件的主要内容,如果未能解决你的问题,请参考以下文章

合并背景音频文件

使用 Sox 开始和结束音频批量修剪

Sox:使音频文件的前 100 毫秒静音,然后淡入

使用音频工具 sox,我如何确定立体声录音是不是实际上是单声道?

Sox:连接多个音频文件,中间没有间隙

SoX 不适用于 Opus 音频文件