0
点赞
收藏
分享

微信扫一扫

【特征提取】基于一帧数据倒谱法、LPC内插法、LPC求根法实现语音共振峰提取含Matlab源码

1 简介

语音识别指利用计算机识别语音信号所表达的内容,其目的是要准确地理解语音所蕴含的含义.本文着重研究了语音识别实现过程的特征提取,针对特征提取的多种方法,选用LPC倒谱系数作为特征参数提取,较彻底地去除了语音信号产生过程的激励信息,主要反映了声道模型,而且只需十几个倒谱系数就较好地描述了语音的共振峰特性.通过对语音信号进行预加重,分帧,加窗,自相关分析,而后提取出LPC倒谱系数.

2 部分代码

%一帧数据LPC求根法估算共振峰频率和3dB带宽
% pr9_3_2
clear all; clc; close all;
fle='snn27.wav'; % 指定文件名
[xx,fs]=wavread(fle); % 读入一帧语音信号
u=filter([1 -.99],1,xx); % 预加重
wlen=length(u); % 帧长
p=12; % LPC阶数
a=lpc(u,p); % 求出LPC系数
U=lpcar2pf(a,255); % 由LPC系数求出功率谱曲线
freq=(0:256)*fs/512; % 频率刻度
df=fs/512; % 频率分辨率
U_log=10*log10(U); % 功率谱分贝值
subplot 211; plot(u,'k'); % 作图
axis([0 wlen -0.5 0.5]);
title('预加重波形');
xlabel('样点数'); ylabel('幅值')
subplot 212; plot(freq,U_log,'k');
title('声道传递函数功率谱曲线');
xlabel('频率/Hz'); ylabel('幅值/dB');
n_frmnt=4; % 取四个共振峰
const=fs/(2*pi); % 常数
rts=roots(a); % 求根
k=1; % 初始化
yf = [];
bandw=[];
for i=1:length(a)-1
re=real(rts(i)); % 取根之实部
im=imag(rts(i)); % 取根之虚部
formn=const*atan2(im,re); % 按(9-3-17)计算共振峰频率
bw=-2*const*log(abs(rts(i))); % 按(9-3-18)计算带宽
if formn>150 & bw <700 & formn<fs/2 % 满足条件方能成共振峰和带宽
yf(k)=formn;
bandw(k)=bw;
k=k+1;
end
end
[y, ind]=sort(yf); % 排序
bw=bandw(ind);
F = [NaN NaN NaN NaN]; % 初始化
Bw = [NaN NaN NaN NaN];
F(1:min(n_frmnt,length(y))) = y(1:min(n_frmnt,length(y))); % 输出最多四个
Bw(1:min(n_frmnt,length(y))) = bw(1:min(n_frmnt,length(y))); % 输出最多四个
F0 = F(:); % 按列输出
Bw = Bw(:);
p1=length(F0); % 在共振峰处画线
for k=1 : p1
m=floor(F0(k)/df);
P(k)=U_log(m+1);
line([F0(k) F0(k)],[-10 P(k)],'color','k','linestyle','-.');
end
fprintf('F0=%5.2f %5.2f %5.2f %5.2f\n',F0);
fprintf('Bw=%5.2f %5.2f %5.2f %5.2f\n',Bw);

3 仿真结果

【特征提取】基于一帧数据倒谱法、LPC内插法、LPC求根法实现语音共振峰提取含Matlab源码_初始化

【特征提取】基于一帧数据倒谱法、LPC内插法、LPC求根法实现语音共振峰提取含Matlab源码_语音信号_02

【特征提取】基于一帧数据倒谱法、LPC内插法、LPC求根法实现语音共振峰提取含Matlab源码_初始化_03

4 参考文献

[1]唐晓进. 基于LPC倒谱的语音特征参数提取[J]. 山西电子技术, 2012(6):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【特征提取】基于一帧数据倒谱法、LPC内插法、LPC求根法实现语音共振峰提取含Matlab源码_语音识别_04


举报

相关推荐

0 条评论