Приложение CLI для редактирования аудио, которое может объединять несколько файлов wav в новый?

Сценарий

С помощью простого инструмента, который я разработал на C#, я извлек все wav-треки, содержащиеся в видеофайлах BIK игры, с помощью инструмента командной строки binkconv.exe из RAD Video Tools .

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

  • VideoName_01.wav
  • VideoName_02.wav
  • VideoName_03.wav
  • VideoName_04.wav

Проблема

Теперь я застрял в этой процедуре, потому что мне нужно объединить / смешать четыре файла wav в новый уникальный файл wav.

Я мог бы сделать это вручную с такими приложениями, как Audacity , но мы говорим о папках +500, в каждой из которых содержится 4 файла wav, это безумная ручная работа, тогда мне нужно найти способ ее автоматизировать.

Мне нужно сделать это через приложение командной строки. или с аудиобиблиотекой .Net, которая может объединять аудиофайлы Wave.


Вопрос

Какое бесплатное программное обеспечение для редактирования аудио из командной строки может объединять звуковые файлы в новый?


Исследовательская работа

Это список программного обеспечения, которое я установил:

Обратите внимание, что я только указываю, что я установил эти приложения, но я не уверен, что одно из упомянутых приложений может выполнить эту задачу через командную строку.

Я думаю, что SoX может быть лучшим подходом для этого, но я не знаю, как это сделать.

SoX сделает это, как вы предложили. Страница руководства показывает: sox short.wav long.wav long.wav объединяет два аудиофайла. Если вы добавите больше файлов при вызове, они будут объединены в указанном порядке. Последний аргумент - это выходной файл.
@baitisj Но я не хочу объединять/объединять, мне нужно их смешать. Я обнаружил, что для этого используется команда -m (в нижнем регистре. В верхнем регистре -M для слияния), которая смешивает предоставленные файлы. Большое спасибо, пожалуйста, не стесняйтесь публиковать ответ, чтобы пометить его как принятый.

Ответы (3)

Вы можете использовать FFmpeg :

  • Бесплатно и с открытым исходным кодом
  • Работает на Windows , OS X, Linux, Android
  • Является ли CLI, так что вы можете пакетно
  • Может накладывать два аудиофайла , напримерffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3
кажется, что ffmpeg - лучший выбор, чем SoX, потому что, по крайней мере, в показанном вами примере я могу указать параметры кодирования вывода для использования mp3, wav или чего-то еще. Спасибо.

Если вы действительно хотите немного сэкономить, установите python , используйте pip install pydubдля добавления pydub, а затем используйте os.walk примерно так:

import os
from pydub import AudioSegment

OUTNAME = "Mixed.wav"
def makemix(audiofiles, dirname):
    """ Mix a list of audio files to Mixed.wav """
    mix = AudioSegment.from_file(os.path.join(dirname, audofiles[0])
    for nextfile in audiofiles[1:]:
        layer = AudioSegment.from_file(os.path.join(dirname, nextfile)
        mix.overlay(layer)
    mix.export(os.path.join(dirname, OUTNAME),  format='wav')

for (root, dirs, files) in os.walk('.'):
    if OUTNAME not in files:
         wavefiles = [fn for fn in files if fn.endswith('.wav')]
         if len(wavefiles) > 1:
              makemix(wavefiles, root)

Это будет проходить по вашим каталогам из текущего каталога, создавая Mixed.wav везде, где есть два или более волновых файла и нет Mixed.wav, поэтому все ваши 500+ каталогов будут выполнены. Возможно, вам также придется установить ffmpeg.

  • Бесплатно, бесплатно и с открытым исходным кодом
  • Работа на Windows, OS-X и Linux
  • Вы можете изменить громкость некоторых файлов, если хотите, и т. д.
  • Автоматизирует лот.
  • Можно адаптировать.
  • Вы можете запустить его и пойти выпить пинту или что-то в этом роде.
Я действительно ценю то, как использование Python в сочетании с этими библиотеками обеспечивает неявную ясность. Моей рефлекторной реакцией было бы использовать SoX, но мне это решение нравится гораздо больше...

Вы можете использовать SoX (Sound eXchange) :