我想使用specgram将录制的音频(通过麦克风)和处理的音频(WAV 文件)可靠地转换为 Python 中相同的离散化表示。
我的流程如下:
- 获取原始样本(从文件中读取或从麦克风流中读取)
- 执行一些标准化(???)
- 使用加窗执行 FFT 以生成频谱图(用幅度峰值绘制频率与时间的关系)
- 离散音频中的峰值然后记住
基本上,当我进入最后一个离散化过程时,我希望尽可能可靠地在同一首歌曲的频率/时间/幅度空间中达到相同的值。
我的问题是我如何解释录制和 WAV 读取音频中不同的音量(即样本的幅度)?
我的标准化选项(也许?):
- 在 FFT 之前将窗口中的所有样本除以平均值
- 在FFT之前对窗口中的所有样本进行去趋势
- 在 FFT 之前将窗口中的所有样本除以最大幅度样本值(对噪声和异常值敏感)
- 将频谱图中的所有幅度除以平均值
我应该如何解决这个问题?我几乎没有信号处理知识或经验。