sox объединяет два файла разной длины

У меня есть два аудиофайла A длины X и другие B длины Y (X> Y). Теперь я хочу заменить последнюю часть Y файла A файлом B.

Например, файл A имеет длину 60 секунд, а файл B - 43 секунды. Мне нужно заменить последние 43 секунды файла A на файл B.

Надеюсь, это понятно.

Можно ли это сделать с помощью sox? Как мне их объединить? Если да, то как их объединить?

Также есть ли способ автоматизировать? Как будто мне не нужно вручную определять длину обоих и т. Д.


person Trum    schedule 28.08.2013    source источник


Ответы (1)


Вы можете объединить оба файла, а затем удалить ту часть, которая вам не нужна:

sox A B O trim 0 17 43

В оболочке bash это можно полностью автоматизировать следующим образом:

sox A B O trim 0 $(( $(soxi -s A) - $(soxi -s B) ))s $(soxi -s B)s

Здесь soxi -s file используется для определения длины файла в сэмплах. Другая возможность, использование второго экземпляра sox в специальном входном файле pipe:

sox "| sox A -p trim 0 -$(soxi -s B)s" B O
person chirlu    schedule 28.08.2013