wav 文件的短时傅里叶变换(STFT)时频图

from scipy import signal
import matplotlib.pyplot as plt
import scipy.io.wavfile
import numpy as np

sample_rate, s = scipy.io.wavfile.read("data/0_01_10.wav")
f, t, Zxx = signal.stft(s, fs=sample_rate,window='hann',nperseg=256,noverlap=None,nfft=None,
detrend=False,return_onesided=True,boundary='zeros',padded=True,axis=-1)

Z = np.log(np.abs(Zxx))

plt.figure(figsize=(20,10))
plt.subplot(2,1,1)
plt.plot(np.arange(len(s))/sample_rate, s)
plt.xlim([0, len(s)/sample_rate])
plt.subplot(2,1,2)
plt.pcolormesh(t, f, Z)
plt.title('STFT Magnitude')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/itnerd/article/details/108891243