Как извлечь частотную информацию из входного аудиопотока (используя PortAudio)?

Я хочу записать звук (голос) с помощью PortAudio (PyAudio) и вывести на экран соответствующую звуковую волну. Безнадежный, как и я, я не могу извлечь информацию о частоте из аудиопотока, чтобы я мог рисовать его в формате Hz / time.


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

p = pyaudio.PyAudio() chunk = 1024 seconds = 5 stream = p.open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, output=True) for i in range(0, 44100 / chunk * seconds): data = stream.read(chunk) stream.write(data, chunk) 

Я хочу извлечь необходимую информацию из приведенных выше переменных «данные». (Или используйте какой-либо другой подход высокого уровня с PortAudio или другой библиотекой с привязками Python.)


Я был бы очень благодарен за любую помощь! Оценены даже неопределенно связанные лакомые кусочки аудиоанализирующей мудрости. 🙂

  • Django: добавление файлов в форму дает несколько аргументов
  • python круговой импорт еще раз (что-то не так с этим дизайном)
  • Python, Pairwise 'distance', нужен быстрый способ сделать это
  • Python: «объект» не отображается при отправке электронной почты с использованием модуля smtplib
  • Самый быстрый способ вставить эти тире в строку python?
  • Как исправить неправильно вложенные / закрытые теги HTML?
  • Общие сведения о многопроцессорности: управление общей памятью, блокировки и очереди в Python
  • PIL - libjpeg.so.8: невозможно открыть файл общего объекта: такой файл или каталог отсутствует
  • 2 Solutions collect form web for “Как извлечь частотную информацию из входного аудиопотока (используя PortAudio)?”

    То, что вы хотите, вероятно, является преобразованием Фурье аудиоданных. Существует несколько пакетов, которые могут рассчитать это для вас. scipy и numpy – два из них. Его часто называют «Быстрое преобразование Фурье» (FFT), но это просто имя алгоритма.

    Вот пример его использования: https://svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py

    Преобразование Фурье не поможет вам, если вы хотите, чтобы анализ проводился как в частотной, так и во временной области. Возможно, вам стоит взглянуть на «Вейвлет-преобразования». Существует пакет под названием pywavelets … http://www.pybytes.com/pywavelets/#discrete-wavelet-transform-dwt

    Python - лучший язык программирования в мире.