我的问题:我目前有一个声音文件,其中包含我录制的特定声音。我希望能够识别该声音何时再次播放超过2秒钟。音量对我来说并不重要,我希望能够识别出何时播放该特定音符。例如,该文件保存了音符A(la)的录音,如果我在麦克风旁边的钢琴上弹奏音符A,则树莓派会打印“正确”或其他内容。我在识别音符时遇到了麻烦,以前的研究建议使用FFT函数查找频率,但我一直无法弄清楚。您是否推荐任何我应该用来实现此功能的库?
理想情况下,我将能够识别外部声音的音调。一旦有了音调,我就可以在一系列频率之间进行检查。
您确实想使用numpy
和scipy
都提供的类似FFT的功能。这样的想法是,您将收集麦克风输入的缓冲区,对其应用FFT,然后尝试查找最强大的频率是否是您要查找的音符的频率。有tables可以告诉您每个音符的频率是。
您实际上是在制作spectrogram。
如果您需要操作顺序:
np.fft.fftfreq
确定频率刻度(N与缓冲区的长度相同)识别笔记(这是一个循环)
在选定大小的缓冲区中收集信号
应用FFT
在频域中找到最大值
在查找表的错误范围内寻找相应的注释
有用的功能:
[其他有用的问题: