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

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

sox audiofile.flac -n spectrogram 

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

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

  • Удалите тишину из аудиофайлов, оставляя пробелы
  • Как добавить аудиофайл в сценарий оболочки
  • Воспроизвести последние несколько секунд mp3
  • Что и как кодирование необработанного (без заголовка) аудиофайла?
  • Могу ли я записывать звук до тишины или максимальной продолжительности записи?
  • запись звука с движением?
  • Как я могу анализировать сегмент аудиофайла с sox?
  • Как контролировать уровень громкости микрофона?
  • 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

    cryptsetup: простой режим dm-crypt с использованием ключевого файла AND passphrase

    status_of_proc не находит процесс

    Поиск номера в тексте

    DRBD8 и GFS на CentOS5

    Журналы OPENVPN не показаны

    Почему ping6 разрешает foo.localdomain до :: 1?

    Поделитесь беспроводной картой с Arch Linux на VirtualBox

    Как установить get_player в Fedora?

    RHEL 7, оболочка GNOME – уменьшение размера значка рабочего стола

    команда cat в оболочке не заканчивается при получении EOT через последовательный порт

    Как я могу сделать коммутатор доступным через Интернет, который позволяет пользователям включать или выключать скрипт python?

    Освобождение программного обеспечения linux – совместимость

    Должен ли я устанавливать переменную среды LANG или использовать локальный набор locatel?

    Как захватить упорядоченный STDOUT / STDERR и добавить временную метку / префиксы?

    OpenBSD и ограничение входа на локальный, только как в login.access FreeBSD (5)

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