Python语音信号特征-感知线性预测系数PLP

本文介绍了使用Python进行语音信号特征提取的感知线性预测系数(PLP)方法,涉及信号预处理、DFT、感知处理、IDFT和线性预测分析。通过预加重、分帧加窗、FFT、等响曲线滤波等步骤,提取出的PLP特征通常用于语音识别任务。同时,文中还解决了在处理过程中遇到的.wav格式问题和库版本不匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值