检查特定声音(输入:麦克风)

问题描述 投票:2回答:1

我的问题:我目前有一个声音文件,其中包含我录制的特定声音。我希望能够识别该声音何时再次播放超过2秒钟。音量对我来说并不重要,我希望能够识别出何时播放该特定音符。例如,该文件保存了音符A(la)的录音,如果我在麦克风旁边的钢琴上弹奏音符A,则树莓派会打印“正确”或其他内容。我在识别音符时遇到了麻烦,以前的研究建议使用FFT函数查找频率,但我一直无法弄清楚。您是否推荐任何我应该用来实现此功能的库?

理想情况下,我将能够识别外部声音的音调。一旦有了音调,我就可以在一系列频率之间进行检查。

python audio fft frequency pyaudio
1个回答
0
投票

您确实想使用numpyscipy都提供的类似FFT的功能。这样的想法是,您将收集麦克风输入的缓冲区,对其应用FFT,然后尝试查找最强大的频率是否是您要查找的音符的频率。有tables可以告诉您每个音符的频率是。

您实际上是在制作spectrogram

如果您需要操作顺序:

  1. 建筑频率标度:
    1. 使用np.fft.fftfreq确定频率刻度(N与缓冲区的长度相同)
  2. 识别笔记(这是一个循环)

    1. 在选定大小的缓冲区中收集信号

    2. 应用FFT

    3. 在频域中找到最大值

    4. 在查找表的错误范围内寻找相应的注释

有用的功能:

Numpy FFT

Numpy FFTFREQ

[其他有用的问题:

Maintain a streaming microphone input in Python

© www.soinside.com 2019 - 2024. All rights reserved.