Python语音信号特征-感知线性预测系数PLP
PLP基本流程:
信号预处理-DFT-三种感知处理-IDFT-线性预测分析
理论参考:
1.Perceptual linear predictive (PLP) analysis of speech-H.Hermansk,1938-1952,1990
2.噪声条件下的语音特征PLP参数的提取-太原理工大学学报
3.https://blog.csdn.net/xmdxcsj/article/details/78512568
Python代码
1.用到的安装包
import numpy as np
import wave
import matplotlib.pyplot as plt
import librosa
2.读取.wav信号,进行预加重、分帧、加窗
f = wave.open(r"04.wav","rb")#将.wav放在pycharm工程目录下,rb为只读
params = f.getparams()
nchannels, sampwidth, framerate, nframes =params[:4]
print(params[:4])#返回声道数、量化位数、采样频率、采样点数
str_data = f.readframes(nframes)#readframes返回的是字符串类型的数据
signal =np.fromstring(str_data,dtype=np.int16)#将字符串转换为int类型的数组,我的sampwidth为2,所以转换为int16
signal_len=len(signal)
signal=signal/(max(abs(signal)))#归一化
------预加重并画时域波形----------
signal_add=np.append(signal[0],signal[1:]-0.97*signal[:-1])
time=np.arange(0,nframes)/1.0*framerate #画时间轴
plt.figure(figsize=(20,10))
plt.subplot(2,1,1)
plt.plot(time[0:len(signal)],signal)#可能出现时间轴和信号长度不相等的情况,我这里选取了与singala长度相等的time
plt.xlabel('time'