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