Как эффективно создавать спектрограмму многих аудиофайлов с помощью Sox?

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

sox audiofile.flac -n spectrogram 

Однако я не знаю, как расширить этот метод до более чем одного файла. В идеале я хотел бы, чтобы мой выходной файл .png имел имя файла, связанное с его соответствующим звуковым файлом; например audiofile1.png для audiofile1.flac , audiofile2.png для audiofile2.flac и т. д.

Кто-нибудь знает, как это сделать?

  • Как заставить «sox» признать «хромой»?
  • Изменяет ли амплитуда mp3-файла, используя sox, изменение сигнала?
  • Создание длинного звукового файла с SOX без фактического воспроизведения тона
  • Как контролировать уровень громкости микрофона?
  • sox между двумя трубами
  • Удалите тишину из аудиофайлов, оставляя пробелы
  • Как рассчитать уровень шума аудиофайла с помощью ffmpeg?
  • Что и как кодирование необработанного (без заголовка) аудиофайла?
  • 2 Solutions collect form web for “Как эффективно создавать спектрограмму многих аудиофайлов с помощью Sox?”

    Вы можете заключить команду в цикл:

     for file in *.flac do outfile="${file%.*}.png" sox "$file" -n spectrogram "$outfile" done 

    Что касается имен файлов, справочная страница sox (1), похоже, предполагает, что вы можете явно указать свой выходной файл в командной строке, чтобы вы могли использовать это в цикле.

    Первая строка в цикле использует замену параметров Bash, чтобы удалить расширение .flac из имени файла и добавить расширение .png .

    Сделал учетную запись, чтобы опубликовать это, надеюсь, что это поможет кому-то в будущем.

    Спасибо Иосифу за его ответ. Возможно, это сработало во время его публикации, но мне пришлось добавить -o сразу после spectrogram для sox, чтобы принять команду.

     for file in *.flac;do outfile="${file%.*}.png" sox "$file" -n spectrogram -o "$outfile" done 

    Я буду бить их всех в своей папке для архивирования. Оно работает!

    Вы даже можете пойти немного дальше, добавив заголовок файла над спектрограммой внутри изображения и сделав его немного более широким, чтобы увидеть подробности. Изображение по умолчанию для меня немного мало.

     for file in *.flac;do outfile="${file%.*}.png" title_in_pic="${file%.*}" sox "$file" -n spectrogram -t "$title_in_pic" -o "$outfile" -x 2000 done 

    Опять же, благодаря Иосифу. Это помогает тонне!

    Interesting Posts

    Автоматическое расширение последнего раздела для использования всего нераспределенного пространства, используя разделенный в пакетном режиме

    Постфиксная ошибка: запрещен доступ к ретрансляции

    Есть ли способ определить тип файла и открыть его с помощью графического интерфейса в терминале в Fedora?

    Символы / программные ссылки с цветовой координацией на основе того, на что они ссылаются

    Как установить драйвер устройства, представленный как .bin-файл?

    Просмотр презентации PPTX Linux

    Запись таблицы маршрутизации Linux исчезает

    Почему I / O является бесперебойным?

    Как настроить сменные гостевые / хосты VM

    Переопределить ограничение доступа к технологическому процессу

    Как сделать ключ переключения с помощью Autokey?

    Как настроить быстрые клавиши на основе префикса в kwin и / или KDE?

    Разработка ksar (sar grapher) прекратилась до 2013 года – нет совместимости с RHEL 7x – любая альтернатива?

    Установка переменных среды с помощью .bash_profile: работает только последний экспорт

    мобильный не признается Ubuntu13.04

    Linux и Unix - лучшая ОС в мире.