Для тех, кто наткнется на эту высоко оцененную ветку в поисках способа уклониться от середины аудиофайла:
Я играл с SoX целую вечность, и построенный мной метод использует конвейеры для обработки каждой части без создания всех этих временных файлов!
Результатом является однострочное решение, хотя вам нужно будет установить тайминги, и поэтому, если ваши тайминги затухания не будут одинаковыми для всех файлов, может быть полезно сгенерировать строку с помощью алгоритма.
Мне было приятно, что трубопровод работает, так как я знаю, что этот аспект оказался трудным для других. Параметры командной строки могут быть трудными для настройки. Однако мне очень не понравились дополнительные файлы в качестве альтернативы.
Используя функцию смешивания и позиционируя каждую часть с помощью пэда, а затем задавая каждому разделу обрезку и затухание, мы также можем избежать использования здесь «сращивания». Я действительно не был фанатом.
Рабочий однострочный пример, протестированный в SoX 14.4.2 Windows:
Он затухает (утки) на -6 дБ за 2 секунды, возвращаясь к 0 дБ через 5 секунд (с использованием линейных затуханий 0,4 секунды):
sox -m -t wav "|sox -V1 inputfile.wav -t wav - fade t 0 2.2 0.4" -t wav "|sox -V1 inputfile.wav -t wav - trim 1.8 fade t 0.4 3.4 0.4 gain -6 pad 1.8" -t wav "|sox -V1 inputfile.wav -t wav - trim 4.8 fade t 0.4 0 0 pad 4.8" outputfile.wav gain 9.542
Давайте сделаем это здесь более читабельным, разбив его на разделы:
Раздел 1 = полный объем, Раздел 2 = приглушенный, Раздел 3 = полный объем
sox -m
-t wav "|sox -V1 inputfile.wav -t wav - fade t 0 2.2 0.4"
-t wav "|sox -V1 inputfile.wav -t wav - trim 1.8 fade t 0.4 3.4 0.4 gain -6 pad 1.8"
-t wav "|sox -V1 inputfile.wav -t wav - trim 4.8 fade t 0.4 0 0 pad 4.8"
outputfile.wav gain 9.542
Теперь, чтобы разбить это, очень тщательно
'-m' .. говорит, что мы собираемся смешать (это автоматически снижает усиление, см. последний параметр)
'-t wav' .. говорит, что следующая за конвейером команда вернет WAV (похоже, что заголовок WAV теряется в конвейере)
Затем .. ПЕРВАЯ трубная часть (полный объем до утка)
'-V1' ... указывает игнорировать предупреждения - будет предупреждение о том, что длина выходного файла для этого конкретного раздела не известна, поскольку он выводится по конвейеру, но других предупреждений от этой операции быть не должно.
затем имя входного файла
'-t wav' .. принудительно устанавливает тип вывода
'-' .. - это стандартное имя передаваемого по конвейеру вывода, который возвращается в командную строку SoX.
'fade t 0 2.2 0.4'… затемняет всю часть громкости. t = линейный. 0 плавно появляется. Затем (поскольку мы хотим, чтобы промежуточная точка кроссфейда была на 2 секундах), мы исчезаем на 2,2 секунды, с затуханием на 0,4 секунды (параметр постепенного затухания предназначен для того, когда плавное затухание ЗАКОНЧИВАЕТСЯ!)
'-t wav' .. чтобы указать тип следующей части - как указано выше
Затем .. ВТОРАЯ трубопроводная часть (загнутый участок)
'-V1' .. снова, чтобы игнорировать предупреждение о длине вывода - см. выше, тогда то же имя входного файла
'-t wav' .. форсирует тип вывода, как указано выше
'-' .. для конвейерного вывода см. выше
'trim 1.8' ... потому что эта средняя часть попадет в середину перехода через 2 секунды, поэтому (с кроссфейдом 0,4 секунды) приглушенный аудиофайл начнется за 0,2 секунды до этого.
'fade t 0,4 3,4 0,4 ' ... для исчезновения в приглушенной части и снова для исчезновения. Итак, постепенное увеличение на 0,4. Затем (самая сложная часть), поскольку следующий кроссфейд закончится через 5,2 секунды, мы должны взять это число за вычетом обрезанного количества для этого раздела, поэтому 5,2-1,8 = 3,4 (опять же, потому что положение плавного затухания имеет дело с время окончания затухания)
"усиление -6" - это величина в дБ, на которую мы должны пригнуться
"pad 1.8" ... должен соответствовать приведенному выше значению обрезки, чтобы в начале было вставлено количество тишины, чтобы синхронизировать его при смешивании разделов.
'-t wav' .. чтобы указать тип следующей части - как указано выше
Затем .. ТРЕТЬЯ трубопроводная часть (возврат на полный уровень)
'-V1' .. снова - см. выше
тогда то же имя входного файла
-t wav '.. чтобы указать тип вывода, как указано выше
- '.. для конвейерного вывода см. выше
trim 4.8 '.. этот последний раздел начнется через 5 секунд, но (с кроссфейдом 0,4 секунды) звук начнется за 0,2 секунды до этого.
'fade t 0.4 0 0' ... просто переходите к этому разделу полной громкости. Нет исчезновения
'pad 4.8' .. должно соответствовать приведенному выше значению обрезки, как описано выше, а затем имя файла вывода.
'gain 9,542' ... выглядит сложным, но в основном, когда вы "-m" смешиваете 3 файла, SoX уменьшает громкость до 1/3 (одной трети), чтобы дать запас места.
Вместо того, чтобы победить это, мы увеличиваем до 300%. По формуле 20 * log (3) / log (10) мы получаем величину 9,542 дБ.
Если вы скопируете и вставите одну строчку куда-нибудь, вы сможете легко все увидеть, это намного менее страшно, чем объяснение!
И последнее: сначала я был обеспокоен тем, должны ли кроссфейды быть логарифмическими, а не линейными, но в моем случае, слушая результаты, линейность определенно дала звук, которого я ожидал.
Возможно, вы захотите попробовать более длинные кроссфейды или сделать точку перехода раньше или позже, но я надеюсь, что эта единственная строка дает надежду любому, кто думал, что потребуется много временных файлов!
Дайте мне знать, если помогут дополнительные разъяснения!
осциллограмма смелости
person
dingles
schedule
07.10.2015