问题描述
我在Python 3中搜索类似于https://de.mathworks.com/matlabcentral/fileexchange/55212-long-term-average-spectrum的软件包。 我找到了https://homepage.univie.ac.at/christian.herbst/python/index.html#praatUtilDemo,但是它似乎不适用于Python 3,并且无法运行。 另外,我尝试自己实现它,但是频谱看起来很奇怪。 我的步骤是:
- 从wave文件中获取SPL。
- 将音频序列分为20毫秒间隔(不重叠)
- 使用numpy为每个时间范围计算傅立叶变换
timeframe = np.fft.rfft(timeframe-np.mean(timeframe))
。 - 使用
np.abs(timeframe)
处理结果的虚部。 - 计算所有间隔的平均光谱。
解决方法
Welch方法可用于计算时间序列的平均频谱。它可以完成您在步骤2-5中要做的事情。
签出SciPy信号包和焊接方法: https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.welch.html