我正在研究抑郁症,当我尝试运行代码的这一部分时,出现以下错误消息。我正在使用python 3.6
我已尽一切努力修复此问题:
samples = int (np.append(np.zeros(np.floor(frameSize/2.0)), sig))
作者:
samples = np.append(np.zeros(int (frameSize/2.0)), sig)
或
samples = np.append(np.zeros((frameSize//2), sig)
或
samples = np.append(np.zeros(np.floor((int(frameSize))/2.0)), sig)
我也将numpy版本从1.15.4更改为1.11.0,但是我仍然遇到相同的问题。我不知道如何解决这个问题。
代码是:
import numpy as np
from numpy.lib import stride_tricks
import os
from PIL import Image
import scipy.io.wavfile as wav
def stft(sig, frameSize, overlapFac=0.5, window=np.hanning):
"""
Short-time Fourier transform of audio signal.
"""
win = window(frameSize)
hopSize = int(frameSize - np.floor(overlapFac * frameSize))
# zeros at beginning (thus center of 1st window should be for sample nr.
0)
samples = np.append(np.zeros(np.floor(frameSize/2.0)), sig)
# cols for windowing
cols = np.ceil((len(samples) - frameSize) / float(hopSize)) + 1
# zeros at end (thus samples can be fully covered by frames)
samples = np.append(samples, np.zeros(frameSize))
frames = stride_tricks.as_strided(samples, shape=(cols, frameSize),
strides=(samples.strides[0]*hopSize,
samples.strides[0])).copy()
frames *= win
return np.fft.rfft(frames)
错误消息:
File "E:/depression detection/features/spectrograms.py", line 21, in stft
samples = int (np.append(np.zeros(np.floor(frameSize/2.0)), sig))
TypeError: 'numpy.float64' object cannot be interpreted as an integer
答案 0 :(得分:0)
因为
samples = np.append(samples, np.zeros(frameSize))
输出列表。.np.zeroes给出列表
答案 1 :(得分:0)
就我而言,我不得不将numpy版本1.18.0降级到1.17.4。
答案 2 :(得分:0)
尝试这些,它们对我有用,
用这些替换帧和样本
frames = stride_tricks.as_strided((samples), shape=(int(cols), int(frameSize)), strides=((samples).strides[0]*int(hopSize)
samples = np.append(np.zeros(int(np.floor(frameSize/2.0))), sig)