使用python的wav文件的功率谱

时间:2018-12-06 17:39:13

标签: python signal-processing fft

我试图加载波形文件并使用傅立叶变换打印其频谱。我遵循了我找到的书并从那里得到了一些代码,但是结果有点不同。

   File "/anaconda3/lib/python3.7/json/__init__.py", line 296, in load
   parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
   File "/anaconda3/lib/python3.7/json/__init__.py", line 348, in loads
   return _default_decoder.decode(s)
   File "/anaconda3/lib/python3.7/json/decoder.py", line 340, in decode
   raise JSONDecodeError("Extra data", s, end)
   json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 366)

但是我得到的频谱看起来像这样,看起来不正确,有什么帮助吗?

image

2 个答案:

答案 0 :(得分:1)

f = 0处有一个巨大的峰值,表明信号具有恒定的偏移量。

这可能与使用无符号整数类型有关

dtype_map={1:np.uint8,2:np.uint16}

尝试使用带符号的类型,或者从信号中减去平均值以消除偏移。

答案 1 :(得分:1)

存储在WAVE文件中的无符号8位样本的范围为0到255,因此具有DC偏移。您的FFT在一开始就显示此DC偏移具有巨大的尖峰。从每个样本中减去DC偏移(应为128,或由于记录错误而导致的某个值在128左右),将从FFT中消除巨大的DC偏移尖峰,并允许图自动缩放以更好地显示其他频率段。

WAVE文件中的16位样本为带符号整数格式,因此将其读取为无符号值可能会破坏数据。