Sox: объедините два аудио файла с помощью пэда - PullRequest
7 голосов
/ 08 апреля 2011

Я использую инструмент sox и хотел бы объединить два аудиофайла , скажем long.ogg и short.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

Я бы не хотел создавать промежуточный файл.Заранее спасибо за помощь.

Ответы [ 5 ]

7 голосов
/ 05 мая 2011

Благодаря 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
7 голосов
/ 29 апреля 2011

Вы должны быть в состоянии сделать что-то вроде:

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

-p опция для sox используется для трубопровода - в основном, она сообщает sox как использовать stdout в качестве вывода. Использование - в качестве входных данных для второго sox фактически означает, что input является stdin (который является stdout предыдущего sox, поскольку мы передаем |). pad 0 6 сообщает пэду 0 секунд в начале и 6 секунд в конце.

Надеюсь, это поможет.

1 голос
/ 01 апреля 2014

Вот еще одно решение, использующее двойные кавычки.Это делает команду намного более читабельной и очень простой для расширения:

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

(протестировано на SoX 14.4.1 на Windows.)

Я почти не видел ни одногоПример SoX с использованием двойных кавычек, поэтому я надеюсь, что это кому-нибудь поможет!

0 голосов
/ 24 апреля 2015

Поскольку мне пока не разрешено комментировать, я просто хотел бы сказать, что мне нравится ответ Фабьена, потому что он также может использоваться со звуковым файлом "NULL": например,

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

Напишет1 секунда синусоидального сигнала при 300 Гц, а затем 1 секунда синусоидального сигнала при 400 Гц и запись его в файл «полезно.wav».

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

Запись только 1 секунды синусоидальной волныпри 400 Гц к файлу "farts.wav".В файле отсутствует первая синусоида на частоте 300 Гц.

0 голосов
/ 23 марта 2015

Обнаружена также команда задержки.

Вы можете сделать следующее: sox.exe -m short.ogg long.ogg задержка 6

Это объединит два файла, и short.ogg начнет 6 секунд в long.ogg

...