检查特定声音(输入:麦克风)
Check for a specific sound (input: microphone)
我的问题:我目前有一个包含我录制的特定声音的声音文件。我希望能够识别出该声音何时再次播放超过 2 秒。音量对我来说无关紧要,我希望能够识别出播放特定音符的时间。例如,该文件包含音符 A (la) 的录音,如果我在麦克风旁边的钢琴上弹奏音符 A,raspberry pi 将打印 "correct" 或其他内容。我无法识别音符,之前的研究建议找到频率/使用 FFT 函数,但我一直无法弄清楚。你推荐我应该使用的任何库来实现这个吗?
理想情况下,我能够识别外部声音的音高。一旦我有了音高,我就可以在一系列频率之间检查它。
您确实想使用像 FFT 这样的东西,numpy
和 scipy
都提供了。这个想法是您收集麦克风输入的缓冲区,对其应用 FFT,然后您将尝试找出最强大的频率是否是您正在寻找的音符的频率。存在tables可以告诉你每个音符的频率是多少。
您实际上是在制作 spectrogram。
如果你想要一个操作顺序:
- 建筑频率范围:
- 使用
np.fft.fftfreq
确定频率标度(N相同
长度作为你的缓冲区)
- 构建 table 个笔记
- 建立什么频率属于什么音符(使用参考)
- 确定误差范围
识别笔记(这部分在循环)
在 select 大小的缓冲区中收集信号
应用 FFT
在频域中找到最大值
在查找错误范围内寻找对应的注释table
有用的功能:
其他有帮助的问题:
我的问题:我目前有一个包含我录制的特定声音的声音文件。我希望能够识别出该声音何时再次播放超过 2 秒。音量对我来说无关紧要,我希望能够识别出播放特定音符的时间。例如,该文件包含音符 A (la) 的录音,如果我在麦克风旁边的钢琴上弹奏音符 A,raspberry pi 将打印 "correct" 或其他内容。我无法识别音符,之前的研究建议找到频率/使用 FFT 函数,但我一直无法弄清楚。你推荐我应该使用的任何库来实现这个吗?
理想情况下,我能够识别外部声音的音高。一旦我有了音高,我就可以在一系列频率之间检查它。
您确实想使用像 FFT 这样的东西,numpy
和 scipy
都提供了。这个想法是您收集麦克风输入的缓冲区,对其应用 FFT,然后您将尝试找出最强大的频率是否是您正在寻找的音符的频率。存在tables可以告诉你每个音符的频率是多少。
您实际上是在制作 spectrogram。
如果你想要一个操作顺序:
- 建筑频率范围:
- 使用
np.fft.fftfreq
确定频率标度(N相同 长度作为你的缓冲区)
- 使用
- 构建 table 个笔记
- 建立什么频率属于什么音符(使用参考)
- 确定误差范围
识别笔记(这部分在循环)
在 select 大小的缓冲区中收集信号
应用 FFT
在频域中找到最大值
在查找错误范围内寻找对应的注释table
有用的功能:
其他有帮助的问题: