我想用pycharm中的scipy.signal获取韦尔奇的周期图。我的信号是一个5分钟的音频文件,Fs = 48 kHz,所以我想这是一个很大的信号。该行是:
f, p = signal.welch(audio, Fs, nperseg=512)
我遇到内存错误。我想知道这是否是pycharm配置的东西,还是只是一个太大的信号。我的RAM是8 Gb。
有时它可以与某些音频文件一起使用,但其想法是对多个音频文件进行处理,因此在一两个之后,错误就会出现。
答案 0 :(得分:1)
我已经测试了您的设置,welch
似乎不是问题。为了进行进一步的分析,您必须运行整个脚本。
import numpy as np
from scipy.signal import welch
fs = 48000
signal_length = 5 * 60 * fs
audio_signal = np.random.rand(signal_length)
f, Pxx = welch(audio_signal, fs=fs, nperseg=512)
在我的计算机(Windows 10,64位)上,它在调用welch
时消耗600 MB的峰值内存,此内存随后会直接回收,另外还为初始数组和Python本身分配了约600MB的内存。调用welch
本身不会导致任何永久性的显着内存增加。
您可以执行以下操作:
scipy
的最新版本float64
到float32
或float16
del variable_name
删除var,检查程序中其他地方是否没有引用。例如,如果您不需要audio
变量,则可以在welch(...)
之后显式删除它,或者用下一个音频数据覆盖它。gc.collect()
。但是,由于垃圾是在Python中自动管理的,因此,这可能无法解决您的问题。