我的主要任务是实时识别麦克风中的人类嗡嗡声。作为识别一般信号的第一步,我对手机上的应用程序生成的 440 Hz 信号进行了 5 秒的记录,并尝试检测相同的频率。
我使用 Audacity 绘制并验证了同一个 440Hz wav 文件的频谱,我得到了这个,这表明 440Hz 确实是主频率:( https://i.stack.imgur.com/c3DWD.png )
为了使用 python 执行此操作,我使用PyAudio库并参考此博客。到目前为止,我使用 wav 文件运行的代码是这样的:
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
import sys
import struct
import numpy as np
import matplotlib.pyplot as plt
CHUNK = 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
i …Run Code Online (Sandbox Code Playgroud)