Затенение группы аудио файлов с помощью sox splice - PullRequest
4 голосов
/ 21 января 2012

Я могу соединять и накладывать два аудиофайла с помощью SoX, например, так:

sox file1.wav file2.wav outfile.wav splice -q `soxi -D file1.wav`,0.5

, где подстановка soxi извлекает длительность file1, а 0,5 - это длина перекрестного замирания.Сейчас я пытаюсь расширить это на произвольное количество файлов, чтобы связать их вместе с короткими перекрестными переходами между ними.Казалось бы, есть 2 подхода: трубопровод и сценарии.У Sox есть опция -p, указывающая на то, что он должен обрабатывать вывод как канал (вместо записи файла).Но при наличии большого количества входных данных и аргументов для каждой команды неясно, как эти выходные данные ( и входные данные? ) назначаются в последующих командах.Пока у меня есть строка ниже, которая не работает , пытаясь расширить до 3 файлов.

sox -p file1.wav file2.wav splice -q `soxi -D file1.wav`,0.5 | sox -p file3.wav outfile.wav splice -q `soxi -D file3.wav`,0.5

Буду очень признателен за советы по работе с сценариями и сценариям.

1 Ответ

2 голосов
/ 23 января 2012

Я прошел большую часть пути с

sox --combine concatenate *.wav _merge.wav splice -q 3,1

Эффект сращивания в конце помещает начало перекрестного затухания через 3 секунды в первый файл и использует 1 секунду в качестве перекрестногодлительность замирания (полсекунды в начале и конце двух файлов).Этот метод является временным исправлением, так как я могу выбрать для включения только ~ 3 секундные файлы в мои выходные данные (используя другие методы).Лучшим ответом было бы выяснить, как получить длительность текущего файла и заменить ее вместо 3.

sox --combine concatenate *.wav _merge.wav splice -q $(soxi −D {}),1

Если {} здесь выбрать текущий элемент (как в find), это будетсделай это.Но это не похоже на работу.

...