Может ли комбинация Python + Qt создать инструмент спектрального анализа в реальном времени? - PullRequest
2 голосов
/ 03 октября 2010

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

  1. взять вживую запись голоса
  2. производит спектрограмму в реальном времени
  3. показать сигнал во временной области
  4. выводит несколько значений, извлеченных из спектрального анализа

Все они должны обновляться в окне во время записи голоса.

Я работал с NumPy. Но я совершенно новичок в Qt и других инструментах построения GUI. Как лучше поступить в данной ситуации? Мои коллеги порекомендовали Qt после того, как я объяснил им задачу. Если кто-то знал о лучшем инструменте, который будет использоваться с python для этой задачи, пожалуйста, дайте мне знать. Также, пожалуйста, помогите мне с техническими деталями относительно того, как захватить живой поток и обработать его в python, который должен быть показан в окне GUI. Одна ссылка, которая дала мне надежду, это http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python-scipy-and-wckgraph/. Но это немного сложно понять. Может быть, менее интенсивное решение поможет мне начать работу.

Ответы [ 3 ]

2 голосов
/ 04 октября 2010

В Qt 4.6 был добавлен API QAudioInput.Это обеспечивает кроссплатформенную абстракцию для получения входного аудиосигнала и, следовательно, будет полезно при достижении пункта (1).

Что касается (2) и (3), демонстрация Spectrum Analyzer, который поставляется с Qt, может представлять интерес.

Снимок экрана демонстрации Spectrum Analyzer, работающей на Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

Реализация на C ++, а не на Python, но может быть использована в качестве справочной.По сути, для (2) вам нужно рассчитать быстрое преобразование Фурье входного сигнала.Вы, вероятно, захотите использовать библиотеку, которая обеспечивает реализацию FFT, а не свою собственную - это подход, который я использовал при написании демонстрации:)

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

Я думаю, что под (4) вы имеете в виду: уменьшить большое количество точек в выводе FFT до небольшого числа значений,Это то, что делает демо, чтобы построить гистограмму для спектра.Опять же, обратитесь к демонстрационному коду, чтобы увидеть, как реализовано объединение частотных амплитуд.

2 голосов
/ 23 мая 2013

Другой пример анализатора аудио спектра в реальном времени с использованием PyAudio, scipy, Chaco в одном скрипте можно найти в списке примеров для Chaco.(Работал из коробки на моем Precise).

Screenshot

1 голос
/ 03 октября 2010

В Linux это определенно возможно.Другие платформы тоже, но я могу ответить только за Linux.Python не обязательно ваш самый острый инструмент для DSP в реальном времени, но на достаточно современной машине и достаточно скромных целях у вас все будет хорошо.

Во-первых, вам необходим интерфейс для аудио драйверов Linux.ALSA довольно универсальный.Существует несколько различных оболочек Python для библиотек ALSA, см. Python In Music для списка библиотек и приложений, использующих их.

Затем вы выполняете спектральный анализ. SciPy и NumPy имеют все это.

Затем вы рисуете в свое окно Qt.Мой опыт в GTK, но вы, вероятно, захотите создать QtCanvas (учебник) , который является объектно-ориентированной областью рисования, предназначенной для такого использования.

Или вы можете просто использоватьSciPy, которого, вероятно, можно убедить сделать все это! AudioLab , в частности, выглядит так, будто это может помочь.

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