规范化音频标志

2024-05-13 07:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python中使用specgram将录制的音频(通过麦克风)和处理过的音频(WAV文件)可靠地转换为相同的离散表示。在

我的流程如下:

  1. 获取原始样本(从文件或mic流中读取)
  2. 执行一些标准化(???)在
  3. 通过加窗进行FFT以生成频谱图(用振幅峰值绘制频率与时间的关系)
  4. 将音频中的峰值离散化然后记忆

基本上,当我到达最后一个离散化过程时,我希望尽可能可靠地得到相同的频率/时间/振幅空间值。在

我的问题是如何解释录制和WAV-read音频中的音量(即样本的振幅)不同?在

我的标准化选择(也许?)公司名称:

  • 在FFT之前,将窗口中的所有样本除以平均值
  • DetrendFFT前窗口中的所有样本
  • 在FFT之前,将窗口中的所有样本除以最大振幅样本值(对噪声和异常值敏感)
  • 将谱图中的所有振幅除以平均值

我该如何解决这个问题?我几乎没有信号处理的知识和经验。在


Tags: 文件fft时间绘制流程音频频谱频率
1条回答
网友
1楼 · 发布于 2024-05-13 07:18:21

WAV文件的频谱和录制的音频永远不会有完全相同的形状,因为来自麦克风源的音频数据在传输到计算机的过程中会受到额外的干扰。这些干扰可以被平衡,但这可能比你想做的更多。在

至于规范化,我建议缩放麦克风信号的频谱,使其能量与WAV文件的频谱相匹配(其中“能量”是FFT系数平方值的总和)。在

现在,你提到你希望信号的频谱图尽可能相似。由于频谱图是信号随时间变化的频谱图,所以您可能需要在每个时间间隔进行重新规范化,而不是在整个音频录制过程中只进行一次规格化。在

相关问题 更多 >