Удалить тишину из аудио файлов, оставляя пробелы

16

В настоящее время мы используем эту команду в сценарии оболочки, чтобы удалить тишину из аудиофайлов:

ffmpeg -i $INFILE -af silenceremove=0:0:0:-1:1:${NOISE_TOLERANCE}dB -ac 1 $SILENCED_FILE -y

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

Как это можно сделать, оставляя две или три секунды между каждым фрагментом звука?

Решение должно быть очень эффективным, так как мы будем обрабатывать много аудио и использовать инструмент, который можно довольно легко установить как в Linux, так и в OSX, например, ffmpeg или sox.

Натан Восстановить Моника Артур
источник

Ответы:

25

Лучший способ, который я видел, это добавить -lфлаг в тишину следующим образом:

sox in.wav out6.wav silence -l 1 0.1 1% -1 2.0 1%

Я скопировал эту команду из Примера 6 этого очень полезного поста в блоге под названием The Sox of Silence

Бен Т
источник
Проверено, и делает именно то, что мне нужно. Спасибо!
Натан ReinstateMonica Артур
Наконец решение о том, как это работает. Благодарю.
vr_driver
Я хотел бы сделать это для видео и обрезать тишину - сработает ли SoX? Какова лучшая альтернатива?
zero_cool