Usuń ciszę z plików audio, pozostawiając luki

16

Obecnie używamy tego polecenia w skrypcie powłoki, aby usunąć ciszę z plików audio:

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

Działa to dobrze, ale usuwa całą ciszę, powodując ściśnięcie pozostałego dźwięku.

Jak można to zrobić, pozostawiając dwie lub trzy sekundy między poszczególnymi utworami?

Rozwiązanie musi być bardzo wydajne, ponieważ będziemy przetwarzać dużo dźwięku i powinno używać narzędzia, które można dość łatwo zainstalować zarówno w systemie Linux, jak i OSX, takie jak ffmpeg lub sox.

Nathan Reinstate Monica Arthur
źródło

Odpowiedzi:

25

Najlepszym sposobem, jaki widziałem, jest dodanie -lflagi do wyciszenia w następujący sposób:

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

Skopiowałem to polecenie z przykładu 6 tego bardzo przydatnego postu na blogu o nazwie The Sox of Silence

Ben T.
źródło
Testowany i robi dokładnie to, czego potrzebuję. Dziękuję Ci!
Nathan Reinstate Monica Arthur
Wreszcie rozwiązanie, jak to działa. Dzięki.
vr_driver
Chciałbym to zrobić dla filmu i uciszyć ciszę - czy SoX zadziała? Jaka jest najlepsza alternatywa?
zero_cool