2012-03-12 1 views

ответ

33

Синтаксис является sox input output trim <start> <duration>

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

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

С SoX documentation по команде trim:

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

Например,

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 секунд), затем возобновите воспроизведение за две минуты до конца au Dio.

Пер dpwe's comment, то положение значения интерпретируются как по отношению к предыдущему позиции, если они не начинают с = (в этом случае они являются относительно начала файла) или - (в которой если они относятся к концу файла).

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

+0

Это разрезает файл на хорошую длину, но это добавляет раздражающий шум щелчка в конце. –

+3

Вы можете использовать 'выходной входной сигнал sox ', или 'sox input output trim = '. Полный синтаксис 'trim' принимает любое количество пар аргументов' ', которые по умолчанию интерпретируются как относительные по отношению к предыдущей позиции или относятся к началу файла, если ему предшествует '=', или относительно конца файл (если известен), если ему предшествует «-». Выводится только звук между каждой парой позиций. – dpwe

+1

Посмотрите мое решение ниже, чтобы избежать щелчка в конце, используя крошечное увядание. – dingles

10

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

sox input output reverse trim 5 reverse 

который вырезает 5 секунд с конца файла.

+13

Я понял, что есть более простой способ сделать это. Добавление минуса сделает все остальное. Следующее вырезает последние 5 сек. 'sox входной выходной обрезки 0 -5' – get8p

+0

Давайте не будем обращать в два раза больше аудиопотока, просто чтобы получить его конец. –

5

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

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

Я испытал тот же «щелчок» в конце файла, о котором упомянул John Smith Optional. Это предполагает, что кратковременное исчезновение может удалить любые артефакты скрепления, поскольку звук заканчивается и, конечно же, он работает. Принимается отрицательное значение для параметра позиции затухания, указывающее время до окончания звука - это ключ.

Так что я не вижу лучшего способа для достижения цели в OP, чем это:

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

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

+0

Предоставление отрицательного значения времени останова 'fade' для меня не работает на SoX v14.4.1. –

+0

@dingles вы можете помочь с https://stackoverflow.com/questions/48161567/silence-out-regions-of-audio-based-on-a-list-of-time-stamps-using-sox-and -pyth –

 Смежные вопросы

  • Нет связанных вопросов^_^