Как обрезать и соединить несколько частей аудиофайла, используя перекрестные переходы?

Я хочу сохранить несколько частей аудиофайла, объединенных вместе, но без каких-либо разрывов ("щелчков") в точках соединения. Есть команда SoX, которая делает это ( /questions/220799/kak-obrezat-volnovoe-audio-v-neskolko-promezhutkov-vremeni-s-cli-v-odnoj-stroke/220800#220800), но она не выполняет никакого перекрестного затухания, поэтому будут разрывы. Есть ли способ достичь этого, используя утилиту командной строки или библиотеку? (Помимо написания моего собственного кода - я бы обязательно сделал это, если бы мне пришлось)

1 ответ

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

Я написал сценарий, который делает это (на языке Scala), и я выпущу его, рано или поздно.

Есть недостаток в Сокс, похоже, trim Эффект не работает с форматом с плавающей запятой, поэтому в конце аудиоданные преобразуются в (максимум) 24-битный целочисленный формат, это может быть приемлемым или нет в зависимости от вашего варианта использования.

Другие вопросы по тегам