我想用PortAudio(PyAudio)录制声音(声音)并在屏幕上输出相应的声波。虽然我是无可救药的,我无法提取音频流的频率信息,以便我可以绘制它的赫兹/时间形式。
下面是一个示例代码片段,用于录制和播放录制的音频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),但这只是算法的名称。下面是它的用法示例:https://svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py
如果你想同时在频域和时域进行分析,傅里叶变换对你没有多大帮助。你可能想看看“小波变换”。有一个叫做pywavelts的包。。。 http://www.pybytes.com/pywavelets/#discrete-wavelet-transform-dwt
相关问题 更多 >
编程相关推荐