Как обрезать конец аудиофайла с помощью SoX?

Как с помощью Sox сократить аудиофайл на 5 секунд, обрезая его с конца?

Например, вот как обрезать файл с самого начала:

    sox input output trim 5000

Вот как добавить в конец 5 секунд тишины:

    sox input output pad 0 5000

person get8p    schedule 12.03.2012    source источник


Ответы (3)


Синтаксис sox input output trim <start> <duration>

например sox input.wav output.wav trim 0 00:35 выведет первые 35 секунд в output.wav.

(вы можете узнать, какая длина используется sox input -n stat)

Из документации SoX по команде trim:

Вырезает части из звука. Может быть задано любое количество позиций; звук не отправляется на выход, пока не будет достигнута первая позиция. Затем эффект чередуется между копированием и отбрасыванием звука в каждой позиции. Использование значения 0 для первого параметра position позволяет копировать звук с начала.

Например,

sox infile outfile trim 0 10

скопирует первые десять секунд, а

play infile trim 12:34 =15:00 -2:00

и

play infile trim 12:34 2:26 -2:00

оба будут воспроизводить звук с 12 минут 34 секунд до 15 минут (то есть длительностью 2 минуты 26 секунд), а затем возобновят воспроизведение за две минуты до окончания звука.

Согласно комментарию dpwe, < значения em> position интерпретируются как относящиеся к предыдущему положению, если только они не начинаются с = (в этом случае они относятся к началу файла) или - (в этом случае они относятся к концу файла).

Таким образом, обрезка пяти секунд до конца будет sox input output trim 0 -5

person yonix    schedule 02.05.2012
comment
Это сокращает файл до нужной длины, но добавляет раздражающий щелчок в конце. - person John Smith Optional; 19.03.2015
comment
Вы можете использовать sox input output trim <start> <duration> или sox input output trim <start> =<end>. Полный синтаксис trim принимает любое количество пар <position> аргументов, которые по умолчанию интерпретируются относительно предыдущей позиции или относительно начала файла, если им предшествует '=', или относительно конца файла (если известное), если ему предшествует '-'. Выводится только звук между каждой парой позиций. - person dpwe; 17.05.2015
comment
Смотрите мое решение ниже, чтобы узнать, как избежать щелчка в конце, используя крошечное затухание. - person dingles; 24.12.2016
comment
@yonix Мне бы хотелось, чтобы ваши мысли о: stackoverflow.com/questions/48161567/ - person kRazzy R; 11.01.2018

Вышеуказанная команда неверна, она даст вам только последние 5 секунд. На самом деле вам нужно использовать:

sox input output reverse trim 5 reverse 

что отрежет 5 секунд от конца файла.

person tamerzg    schedule 15.02.2013
comment
Я подумал, что есть более простой способ сделать это. Остальное сделает добавление минуса. Далее будут вырезаны последние 5 секунд sox input output trim 0 -5 - person get8p; 15.02.2013
comment
Давайте не будем дважды реверсировать аудиопоток, просто чтобы его закончить. - person gb.; 18.03.2016

Я новичок в SoX, но заметил, что эта страница часто появляется в результатах поиска для обрезки звука, и ее увидят многие, пытающиеся делать аналогичные вещи.

Таким образом, я хотел предложить то, что лично я считаю лучшим решением.

Я испытал тот же «щелчок» в конце файла, который Джон Смит Необязательно. Это говорит о том, что кратковременное затухание может удалить любые артефакты сбоев, когда звук закончится, и, конечно же, он работает. Ключевым моментом является принятие отрицательного значения для параметра позиции постепенного затухания, чтобы указать время до окончания звука.

Поэтому я не вижу лучшего способа достичь цели ОП, чем это:

sox full_length.wav trimmed.wav fade 0 -5 0.01

Параметр 1 равен «0», поэтому нарастание сигнала отсутствует. Параметр 2 удаляет последние 5 секунд, параметр 3 использует затухание 10 мс.

person dingles    schedule 07.07.2015
comment
Предоставление отрицательного значения времени остановки fade у меня не работает на SoX v14.4.1. - person joelostblom; 19.05.2017
comment
@dingles, можете ли вы помочь с stackoverflow.com/questions/48161567/ - person kRazzy R; 11.01.2018