Python или Matlab: синхронизированное воспроизведение звука с визуализацией данных (форма волны / STFT-спектрограмма и т. Д.)

#python #matlab #audio #fft #visualization

#python #matlab #Аудио #бпф #визуализация

Вопрос:

Я хочу создать проект на Python или matlab, который визуализирует аудиоданные при синхронизации с воспроизведением.

В деталях это означает, что в графическом интерфейсе у меня есть две основные области: одна для визуализации данных, а другая для воспроизведения звука. Форма визуализации данных может быть определена конкретно, например, как форма волны или как STFT-спектрограмма. Когда я нажимаю кнопку воспроизведения звука, я могу не только слушать музыку, но и иметь курсор в режиме реального времени в области визуализации данных, который синхронизируется с воспроизведением звука и указывает временную позицию воспроизведения. И я хотел бы отметить, что я не хочу, чтобы это выглядело как цифровой осциллограф, который обновляет спектр или форму сигнала для каждого буферного времени. Я хочу, чтобы визуализация данных отображалась так, как показано для всего временного диапазона звука, только курсор динамически синхронизировался / перемещался при воспроизведении звука.

Итак, я хочу спросить вас, знаете ли вы какой-либо существующий проект или пакеты, которые могут реализовать аналогичную функцию, как я описал? Или у вас есть какие-либо рекомендации о том, как я могу воплотить идею в жизнь с нуля?

Ответ №1:

В принципе, это относительно просто. Вы, вероятно, захотите использовать:

  • библиотека графического интерфейса, такая как PyQt
  • библиотеки для STFT и другой математики; SciPy и NumPy — ваши друзья здесь
  • библиотека аудио для чтения и воспроизведения аудиоданных

Также вам нужно будет использовать потоки, поскольку вы хотите одновременно воспроизводить аудио и обновлять свой графический интерфейс и т. Д. Таким образом, полезно некоторое понимание многопоточности.

Хотя в некотором смысле это не вызывает проблем, нужно разобраться во многих деталях. Если у вас нет опыта в некоторых или во всех этих областях, вам нужно многому научиться. Конечно, это может быть положительным моментом.

Самой большой проблемой может быть визуализация аудиоданных. Matplotlib — популярная библиотека для построения графиков, но ее немного сложно интегрировать в приложение PyQt, и, вероятно, требования к реальному времени усложняют задачу.