Оказывается, это вполне возможно сделать с SoX, даже с помощью всего лишь одного вызова SoX, использования trim
и splice
эффектов. Но числовые аргументы не так просто написать. Все области обрезки, кроме последней, должны включать дополнительное количество времени в конце, которое будет использоваться для кроссфейдинга, и аргументы для сращивания должны также указывать правильные длины 1-й области, включая это дополнительное время, 1 + 2 после первого сращивания, 1 + 2 + + 3-й и т. Д.
Я написал сценарий, который делает это (на языке Scala), и я выпущу его, рано или поздно.
У Sox есть один недостаток: похоже, trim
эффект не работает с форматом с плавающей запятой, поэтому в конце аудиоданные преобразуются в (максимум) 24-битный целочисленный формат, это может быть приемлемым или нет в зависимости от вашего варианта использования.