如何从输入音频流中提取频率信息使用PortAudio?

问题描述

您想要的可能是音频数据的傅立叶变换。有几个软件包可以为您计算出来。scipy并且numpy是其中的两个。它通常被称为“快速傅立叶变换”(FFT),但这仅是算法的名称

这是其用法一个示例:https : //svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py

解决方法

我想使用PortAudio(PyAudio)录制声音(语音)并在屏幕上输出相应的声波。就像我一样,我无可救药,无法从音频流中提取频率信息,因此无法以Hz /时间形式绘制它。

这是一个示例代码片段,可在五秒钟内记录并播放录制的音频,以防任何情况:

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绑定的库。)

我将非常感谢您的帮助!甚至音频分析智慧的模糊相关小知识也受到赞赏。:)