def compute_spectrogram(self, sig, data_length_sec, sampling_frequency, nfreq_bands, win_length_sec, stride_sec):
n_channels = 16
n_timesteps = int((data_length_sec - win_length_sec) / stride_sec + 1)
n_fbins = nfreq_bands
sig = np.transpose(sig)
sig2 = np.zeros((n_channels, n_fbins, n_timesteps))
for i in range(n_channels):
sigc = np.zeros((n_fbins, n_timesteps))
for frame_num, w in enumerate(range(0, int(data_length_sec - win_length_sec + 1), stride_sec)):
sigw = sig[i, w * sampling_frequency: (w + win_length_sec) * sampling_frequency]
sigw = self.hanning(sigw)
fft = self.log10(np.absolute(np.fft.rfft(sigw)))
fft_freq = np.fft.rfftfreq(n=sigw.shape[-1], d=1.0 / sampling_frequency)
sigc[:nfreq_bands, frame_num] = self.group_into_bands(fft, fft_freq, nfreq_bands)
sig2[i, :, :] = sigc
return np.transpose(sig2, axes=(2,1,0))
preprocessing.py 文件源码
python
阅读 34
收藏 0
点赞 0
评论 0
评论列表
文章目录