Python 如何从输入音频流中提取频率信息(使用PortAudio)?
我想用PortAudio(PyAudio)录制声音(语音),并在屏幕上输出相应的声波。虽然我毫无希望,但我无法从音频流中提取频率信息,以便以Hz/时间的形式绘制Python 如何从输入音频流中提取频率信息(使用PortAudio)?,python,voice,frequency,portaudio,Python,Voice,Frequency,Portaudio,我想用PortAudio(PyAudio)录制声音(语音),并在屏幕上输出相应的声波。虽然我毫无希望,但我无法从音频流中提取频率信息,以便以Hz/时间的形式绘制 下面是一个示例代码段,它可以录制和播放录制的音频5秒钟,以防对您有所帮助: p = pyaudio.PyAudio() chunk = 1024 seconds = 5 stream = p.open(format=pyaudio.paInt16, channels=1,
下面是一个示例代码段,它可以录制和播放录制的音频5秒钟,以防对您有所帮助:
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)
我希望从上述变量“data”中提取所需信息。(或者对PortAudio使用其他高级方法,或者使用其他具有Python绑定的库。)
我将非常感谢任何帮助!即使是模糊相关的音频分析智慧也值得欣赏。:) 您需要的可能是音频数据的傅里叶变换。有几个软件包可以为您计算
scipy
和numpy
是其中的两个。它通常被称为“快速傅立叶变换”(FFT),但这只是该算法的名称
下面是一个它的用法示例:如果您希望在频域和时域中进行分析,傅里叶变换将不会对您有多大帮助。你可能想看看“小波变换”。有一个叫做pywavelets的包。。。
那么你想做一个频谱分析仪吗?对每个数据块进行傅里叶变换就相当于一个STFT,这与小波变换是一样的。