本文的代码的主要作用:截取声音文件的前3.5s,预加重(增大高频部分幅度),分帧(帧长25ms,步长10ms),加窗(汉明窗),FFT(计算的512点的),梅尔滤波器(32维的)最后画图显示代码效果。
每部分的参数都可以进行修改,按照自己的需求进行即可。
import numpy as np
from scipy.io import wavfile
from scipy.fftpack import dct
import warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as plt
# 绘制时域图
def plot_time(signal, sample_rate):
time = np.arange(0, len(signal)) * (1.0 / sample_rate)
plt.figure(figsize=(20, 5))
plt.plot(time, signal)
plt.xlabel('Time(s)')
plt.ylabel('Amplitude')
plt.grid()
# 绘制频域图
def plot_freq(signal, sample_rate, fft_size=512):
xf = np.fft.rfft(signal, fft_size) / fft_size
freqs = np.linspace(0, int(sample_rate/2), int(fft_size/2 + 1))
xfp = 20 * np.log10(np.clip(np.abs(xf