目前,我正在编写一个python脚本,它应该执行以下操作:
当我尝试运行脚本时,出现以下错误:
Traceback (most recent call last):
File "demo2.py", line 61, in <module>
F,T,S = scipy.signal.spectrogram(s_mono,rate,window,None,nOverlap,nFFT)
AttributeError: 'module' object has no attribute 'spectrogram'
这很奇怪,因为在我看来我的代码应该可以正常工作。我已经检查了语法错误,我也在官方的scipy文档中查找,但我找不到任何可能出错的线索。
以下是我的代码的一小部分:
import scipy
from scipy import signal
import scipy.io.wavfile as wav
#---------------------------------
# here's the rest of my code
F,T,S = scipy.signal.spectrogram(s_mono,rate,window,None,nOverlap,nFFT)
其他信息:我正在使用MacOS 10.9.5的MacBook上工作
答案 0 :(得分:1)
由于没有signal.py,请卸载scipy并重新安装,而不使用pip。从他们的网站获取它。通过pip获取它似乎几乎总是有问题。
答案 1 :(得分:0)
请查看这是否适合您:
from scipy import signal
import numpy as np
import math
import matplotlib.pyplot as plt
t = np.arange(10000)
sig = np.sin(2. * math.pi * 1 / 1000. * t)
f, t, Sxx = signal.spectrogram(sig, 1.)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
它适用于python 2.7和scipy 0.19。
如果这对您有用,那么您可能会在脚本中引起一些奇怪的命名空间错误(调用变量signal
等)。
答案 2 :(得分:0)
我也遇到了这个问题......由我的错误变量分配引起的。
这就是我读取和处理 wav 文件的方式。请注意,wave 文件需要删除元数据(我使用 ffmpeg 来做到这一点)
from scipy import signal
import numpy as np
import math
import matplotlib.pyplot as plt
import soundfile as sf
from matplotlib import pyplot as plt
datasignal, fs_rate= sf.read('40m_stripped.wav')
print(f"Data shape is {datasignal.shape}")
sig=datasignal[::,0]
print(f"Sig shape is {sig.shape}")
f, t, Sxx = signal.spectrogram(sig, fs_rate)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()