范文一:语音识别论文
摘要:本文针对语音信号时域、频域参数进行了系统详尽的分析,并在MATLAB 环境下实现了基于DTW 算法的特定人孤立词语音信号的识别。
关键词:语音信号;短时傅里叶;MFCC ;动态时间规整
引言
语音信号参数分析是语音信号处理的前提和基础。语音信号处理包括语音通信、语音增强、语音合成、语音识别和说话人识别等方面。只有通过语音信号的分析才能获得语音本质特性的参数,才能利用这些参数进行高效的语音通信,才能建立语音合成的语音库,也才可能建立用于语音识别的模板和知识库。此外,语音合成音质的好坏、语音识别率的高低,都取决于语音信号参数分析的准确性和精度。因此,语音信号参数分析是语音信号处理研究中一项非常有意义的工作[1]。
近年来,语音识别已经成为一个非常活跃的研究领域。在不远的将来,语音识别技术有可能作为一种重要的人机交互手段,辅助甚至取代传统的键盘、鼠标等输入设备,在个人计算机上进行文字录入和操作控制。而在手持式PDA 、智能家电、工业现场控制等应用场合,语音识别技术则有更为广阔的发展前景[2]。
在特定人孤立词语音识别中,最为简单有效的方法是采用DTW(Dynamic Time Warping, 动态时间规整) 算法,该算法基于动态规划(DP)的思想, 解决了发音长短不一的模板匹配问题,是语音识别中出现最早、较为经典的一种算法[3]。
MATLAB 是一种功能强大、效率高、交互性好的数值计算和可视化计算机高级语言,它将数值分析、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。本文就是在MA TLAB 基础上来进行语音信号参数的分析与语音信号的识别的。
一、语音信号的分析
1参数分析
语音信号是一种典型的非平稳信号。但是,由于语音的形成过程是与发音器官的运动密切相关的,这种物理运动比起声音振动速度来讲要缓慢得多,因此语音信号常常可被假定为短时平稳的,即在10一20ms 这样的时间段内,其频谱特性和某些物理特征参量可被近似地看作不变。这样,我们就可以采用平稳过程的分析处理方法来处理,一般而言语音信号处理的方法都是基于这种短时平稳的假设的。根据语音信号所分析参数的不同,语音信号参数分析可以分为时域、频域、倒谱域分析等[4]。本文仅涉及时域及频域参数分析。
2时域分析
进行语音信号最为直观的分析方法就是时域分析。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析以及语音的分割、预处理和大分类等。时域分析方法的特点是:第一,表示语音信号比较直观,物理意义明确;第二,实现起来比较简单,运算量少;第三,可以得到语音的一些重要参数;第四,采用示波器等通用设备,使用简单[5]。
2.1短时能量分析
短时能量分析用途:第一,可以区分清音段和浊音段,因为浊音时的短时平均能量值比清音时大得多;第二,可以用来区分声母与韵母的分界、无声与有声的分界、连字的分界等。如对于高信噪比的语音信号,短时平均能量用来区分有无语音。无语音信号噪声的短时平均能量很小,而有语音信号的能量则显著增大到某一个数值,由此可以区分语音信号的开始点或者终止点。
2.2短时过零率分析
过零就是信号通过零值。对于连续语音信号,可以考察其时域波形通过时间轴的情况。对于离散时间信号,如果相邻的取样值改变符号则称为过零。由此可以计算过零数,过零数就是样本改变符号的次数。单位时间内的过零数称为平均过零数。短时过零分析通常用在端点侦测,特别是用来估计清音的起始位置和结束位置。
3频域分析
短时傅立叶分析在运用离散时间傅立叶变换分析语音信号的变化时,会遇到这样的问题,即单一的傅立叶变换并不能反映时间变化的频谱信息,诸如时变共振峰和谐波。具体而言,通常将信号的每一时刻与其相邻时刻信号的傅立叶变换相联系,这样就可以及时跟踪信号的频谱变化。语音信号的短时傅立叶变换见程序所述。
可以验证,在短时傅立叶分析中对于同一种窗函数而言,其通带宽度与窗长成反比。如果希望频率分辨率高,则窗长应尽量取长一些;如果希望时间分辨率高,则窗长尽量取短一些。由此可见,傅立叶分析的时间分辨率和频率分辨率是相互矛盾的,这是短时傅立叶本身所固有的弱点。短时傅立叶分析一般采用汉明窗作为分析窗[6]。
通过基于MATLAB 和短时频域分析,能够得出[7]:第一,长窗具有较高的频率分辨率,但具有较低的时间分辨率。从一个周期到另一个周期,共振峰是要发生变化的,这一点即使从语音波形上也能够看出来。然而,如果采用较长的窗,这种变化就模糊了,因为长窗起到了时间上的平均作用。第二,短窗的频率分辨率低,但具有较高的时间分辨率。采用短窗时,能够从短时频谱中提取出共振峰从一个周期到另一个周期所发生的变化。当然,激励源的谐波结构也从短时频谱上消失了。第三,在对语音信号进行短时傅里叶分析时,窗长需要折衷考虑。一方面,短窗具有较好的时间分辨率因而能够提取出语音信号中的短时变化;但另一方面,损失了频率分辨率。第四,汉明窗都具有低通的性质,且在截止频率处比较尖锐,当其通带较窄时(窗越宽,通带越窄),加窗后的频谱更能够较好反映短时语音信号的频谱,窗越宽这种逼近越好。
二、语音信号的处理
1特定人孤立词语音识别系统分析
一个完整特定人孤立词语音识别系统通常包括语音的输入,语音信号的预处理,特征提取,训练与识别等几个环节,基本构成如图1所示:
图1 孤立词语音识别系统框图
语音识别的过程可以被看作模式匹配的过程,模式匹配是指根据一定的准则,使未知模式与模型库中的某一个模型获得最佳匹配的过程。模式匹配中需要用到的参考模板通过模板训练获得。在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库。在识别阶段,
语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。同时,还可以在一些先验知识的帮助下,提高识别的准确率。 2 语音识别算法———高效的DTW 算法
动态时间规整(Dynamic Time Warping,DTW) 是把时间规整和距离测度计算结合起来的一种非线性规整技术,解决了测试模板与参考模板语音时间长度不等的问题。
图2 匹配路径约束示意图
通常,规整函数被限制在一个平行四边形的网格内,如图2所示。它的一条边斜率为2,另一条边斜率为1/2。规整函数的起点是(1, 1),终点为(N ,M )。DTW 算法的目的是在此平行四边形内由起点到终点寻找一个规整函数,使其具有最小的代价函数,保证了测试模板与参考模板之间具有最大的声学相似特性[8]。
由于在模板匹配过程中限定了弯折的斜率,因此平行四边形之外的格点对应的帧匹配距离是不需要计算的。另外,因为每一列各格点上的匹配计算只用到了前一列的3个网格,所以没有必要保存所有的帧匹配距离矩阵和累积距离矩阵。充分利用这两个特点可以减少计算量和存储空间的需求,形成一种高效的DTW 算法,如图2所示。图2中,把实际的动态弯折分为三段,(1,xa ),(xa+1,xb ),(xb+1,N ),其中:
xa= (2M-N)/3,
xb=2(2N-M)/3
xa 和xb 都取最相近的整数,由此可得出对M 和N 长度的限制条件:
2M-N ≥3,
2N-M ≥2
当不满足以上条件时,认为两者差别太大,则无法进行动态弯折匹配。在x 轴上的每一帧不再需要与y 轴上的每一帧进行比较,而只是与y 轴上[ymin,ymax]间的帧进行比较,ymin 和ymax 的计算公式为:
ymin=x/2,0≤x ≤xb ,
2x+(M-2N),xb<>
ymax=2x,0≤x ≤xa ,
x/2+(M-N/2),xa<>
如果出现xa> xb的情况,则弯折匹配的三段为(1,xb ),(xb+1,xa ),(xa+1,N )。
对于x 轴上每前进一帧,虽然所要比较的y 轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:
D(x,y) = d(x,y)+min[D(x-1,y) ,D(x-1,y-1) ,D(x-1,y-2)]
3.MA TLAB 仿真验证
3.1 语音信号预处理
语音信号的预处理包括预滤波、采样和量化、加窗、预加重、端点检测等过程[9]。所选用的实验语音数据,是在实验室条件下利用PC 机录制。采用8 000kHz 采样频率、16bit 量化、单声道的PCM 录音格式。由于语音信号在帧长为10ms~30ms之内是相对平稳的,同时为了便于计算FFT ,本系统选取帧长N 为256个语音点,帧移M 为128点。
汉明窗与矩形窗和汉宁窗相比具有最低旁瓣,可以有效地克服泄漏现象,具有更平滑的低通特性,故本文采用汉名窗对语音信号进行分帧处理,如下式:
ω(n) =0.54-0.46cos(2πn/(N-1)),0≤n ≤N-1
预加重用具有6dB/倍频程的提升高频特性的一阶数字滤波器实现:
H(z) =1-0.937 5/z
端点检测采用基于短时能量和短时平均过零率法[10],利用已知为“静态”的最初十帧信号为短时能量设置2个门限ampl 和amph ,以及过零率阀值zcr 。语音起始点从第11帧开始检测,其流程图如图3。语音结束点的检测方法与检测起点相似,但此时从后向前搜索。
图3 语音起点检测流程图
3.2 特征参数提取及语音识别
研究表明,倒谱特征参数所含的信息量比其他参数多,能较好地表现语音信号。
本文选取能够反映人对语音的感知特性的Mel 频率倒谱系数(MFCC)作为特征参数,阶数为12。经过MFCC 特征参数提取后,各帧语音信号就形成了一个个特征矢量。识别时,将待测语音与模板
库中的每一个模板进行模式匹配,找到距离最小的模板作为输出结果。
经测试,程序等到了较好的语音识别效果。
三、总结
上述语音识别系统详细地分析了语音信号的时域、频域等特性,并实现了对孤立数字0到9的准确识别,通过本次详细系统的语音识别系统的设计,我对数字信号处理的流程有了深刻的认识,对Matlab 软件编程也有了一定的理解,为将来从事这方面的课题打下了坚实的基础。
参考文献:
[1]王炳锡. 语音编码[M].西安:西安电子科技大学出版社,2002.
[2]何强, 何英.MA TLAB 扩展编程[M].北京:清华大学出版社,2002.
[3]王炳锡, 屈丹, 彭煊. 实用语音识别基础[M].北京:国防工业出版社,2005.
[4]易克初, 等. 语音信号处理[M].北京:国防工业出版社,2006,6.
[5]胡航. 语音信号处理[M].哈尔滨:哈尔滨工业大学出版社,2000,5.
[6]胡广书. 数字信号处理理论、算法与实现[M].北京:清华大学出版社,1997.
[7]王炳锡, 等. 实用语音识别基础[M].北京:国防工业出版社,2005.
[8]林波, 吕明. 基于DTW 改进算法的弧立词识别系统的仿真与分析[J].信息技术,2006,30(4):56-59.
[9]韩纪庆, 张磊, 郑铁然. 语音信号处理[M].北京:清华大学出版社,2004
[10]李晋. 语音信号端点检测算法研究[D].长沙:湖南师范大学,2006.
程序:
主程序:
yuyinshibie.m
disp('正在计算参考模板的参数...')
for i=1:10
fname=sprintf('%da.wav',i-1);
x=wavread(fname);
[x1 x2]=vad(x);
m=mfcc(x);
m=m(x1-2:x2-4,:);
ref(i).mfcc=m;
end
disp('正在分析语音信号...')
for i=1:10
fname=sprintf('%da.wav',i-1);
[x,fs,bit]=wavread(fname,[2000,2512]); %采样% %sound(x,fs); %播放语音信号
figure(i);
subplot(3,3,1);
plot(x(1:256)); %原始语音信号的时域图形%
title('原始信号')
subplot(3,3,2)
[h,w]=freqz(x) %原始语音信号的频率响应图 hr=abs(h);
plot(w,hr);
title('频率响应图');
xlabel('Frequency in rad/sample')
ylabel('Magnitude in dB')
subplot(3,3,3)
hphase=angle(h);
hphase=unwrap(hphase); %求系统相频响应
plot(w,hphase);
title('频率响应图');
xlabel('Frequency in rad/sample')
ylabel('Phase in degrees')
y=fft(x,512); %傅立叶变换%
mag=abs(y);
mag1=10*log10(mag);
f=fs*(0:255)/512;
subplot(3,3,4)
plot(f,mag(1:256)); %FFT频谱图 %
title('fft变换后信号')
iff=ifft(y,512); %反傅立叶变换%
ifm=abs(iff);
subplot(3,3,5)
plot(f,ifm(1:256))
title('ifft后信号')
% 短时傅里叶变换
Ts=1/fs;
%N=T/Ts;
N=512;
Nw=20; %窗函数长
L=Nw/2; %窗函数每次移动的样点数
Tn=(N-Nw)/L+1; %计算把数据x 共分成多少段 nfft=32; %FFT的长度
TF=zeros(Tn,nfft); %将存放三维谱图,先清零
for i=1:Tn
xw=x((i-1)*10+1:i*10+10); %取一段数据 temp=fft(xw,nfft); %FFT变换
temp=fftshift(temp); %频谱以0频为中心 for j=1:nfft;
TF(i,j)=temp(j); %把谱图存放在TF 中 end
end
subplot(3,3,6)
fnew=((1:nfft)-nfft/2)*fs/nfft;
tnew=(1:Tn)*L*Ts;
[F,T]=meshgrid(fnew,tnew);
mesh(F,T,abs(TF))
title('短时傅立叶变换时频图')
subplot(3,3,7)
contour(F,T,abs(TF))
title('等高线表示')
end
disp('正在计算测试模板的参数...')
for i=1:10
fname=sprintf('%db.wav',i-1);
x=wavread(fname);
[x1 x2]=vad(x);
m=mfcc(x);
m=m(x1-2:x2-4,:);
test(i).mfcc=m;
end
disp('正在进行模板匹配...')
dist=zeros(10,10);
for i=1:10
for j=1:10
dist(i,j)=dtw(test(i).mfcc,ref(j).mfcc);
end
end
disp('正在计算匹配结果...')
for i=1:10
[d,j]=min(dist(i,:));
fprintf('测试模板%d的识别结果为:%d\n',i-1,j-1); end
各子程序模块:
dtw.m
function dist=dtw(t,r)
n=size(t,1);
m=size(r,1);
%帧匹配距离矩阵
d=zeros(n,m);
for i=1:n
for j=1:m
d(i,j)=sum((t(i,:)-r(j,:)).^2);
end
end
%累积距离矩阵
D=ones(n,m)*realmax;
D(1,1)=d(1,1);
%动态规划
for i=2:n
for j=1:m
D1=D(i-1,j);
if j>1
D2=D(i-1,j-1);
else
D2=realmax;
end
if j>2
D3=D(i-1,j-2);
else
D3=realmax;
end
D(i,j)=d(i,j)+min([D1,D2,D3]);
end
end
dist=D(n,m);
enframe.m
function f=enframe(x,win,inc)
nx=length(x(:));
nwin=length(win);
if (nwin == 1)
len = win;
else
len = nwin;
end
if (nargin <>
inc = len;
end
nf = fix((nx-len+inc)/inc);
f=zeros(nf,len);
indf= inc*(0:(nf-1)).';
inds = (1:len);
f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));
if (nwin > 1)
w = win(:)';
f = f .* w(ones(nf,1),:);
end
melbankm.m
function [x,mn,mx]=melbankm(p,n,fs,fl,fh,w)
if nargin <>
w='tz';
if nargin <>
fh=0.5;
if nargin <>
fl=0;
end
end
end
f0=700/fs;
fn2=floor(n/2);
lr=log((f0+fh)/(f0+fl))/(p+1);
% convert to fft bin numbers with 0 for DC term
bl=n*((f0+fl)*exp([0 1 p p+1]*lr)-f0);
b2=ceil(bl(2));
b3=floor(bl(3));
if any(w=='y')
pf=log((f0+(b2:b3)/n)/(f0+fl))/lr;
fp=floor(pf);
r=[ones(1,b2) fp fp+1 p*ones(1,fn2-b3)];
c=[1:b3+1 b2+1:fn2+1];
v=2*[0.5 ones(1,b2-1) 1-pf+fp pf-fp ones(1,fn2-b3-1) 0.5]; mn=1;
mx=fn2+1;
else
b1=floor(bl(1))+1;
b4=min(fn2,ceil(bl(4)))-1;
pf=log((f0+(b1:b4)/n)/(f0+fl))/lr; fp=floor(pf);
pm=pf-fp;
k2=b2-b1+1;
k3=b3-b1+1;
k4=b4-b1+1;
r=[fp(k2:k4) 1+fp(1:k3)];
c=[k2:k4 1:k3];
v=2*[1-pm(k2:k4) pm(1:k3)]; mn=b1+1;
mx=b4+1;
end
if any(w=='n')
v=1-cos(v*pi/2);
elseif any(w=='m')
v=1-0.92/1.08*cos(v*pi/2); end
if nargout > 1
x=sparse(r,c,v);
else
x=sparse(r,c+mn-1,v,p,1+fn2); end
mfcc.m
function ccc=mfcc(x)
%归一化mel 滤波器组系数
bank=melbankm(24,256,8000,0,0.5,'m'); bank=full(bank);
bank=bank/max(bank(:));
%DTC系数,12*24
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24)); end
%归一化倒谱提升窗口
w=1+6*sin(pi*[1:12]./12);
w=w/max(w);
%预加重滤波器
xx=double(x);
xx=filter([1 -0.9375],1,xx);
%语音信号分帧
xx=enframe(xx,256,80);
%计算每帧的MFCC 参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(256);
t=abs(fft(s));
t=t.^2;
c1=dctcoef*log(bank*t(1:129));
c2=c1.*w';
m(i,:)=c2';
end
%差分参数
dtm=zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);
end
dtm=dtm/3;
%合并mfcc 参数和一阶差分mfcc 参数
ccc=[m dtm];
%去除首尾两帧,因为这两帧的一阶差分参数为0
ccc=ccc(3:size(m,1)-2,:);
vad.m
function [x1,x2]=vad(x)
%幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
%常数设置
FrameLen=240;
FrameInc=80;
amp1=10;
amp2=2;
zcr1=10;
zcr2=5;
maxsilence=3; %3*10ms=30ms
minlen=15; %15*10ms=150ms
status=0;
count=0;
silence=0;
%计算过零率
tmp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);
tmp2=enframe(x(2:length(x)),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<>
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
%计算短时能量
amp=sum(abs(enframe(filter([1 -0.9375],1,x),FrameLen,FrameInc)),2);
%调整能量门限
amp1=min(amp1,max(amp)/4);
amp2=min(amp2,max(amp)/8);
%开始端点检测
x1=0;
x2=0;
for n=1:length(zcr)
goto=0;
switch status
case{0,1} %0=静音,1=可能开始
if amp(n)>amp1 %确信进入语音段
x1=max(n-count-1,1);
status=2;
silence=0;
count=count+1;
elseif amp(n)>amp2 zcr(n)>zcr(2) %可能处于语音段 status=1;
count=count+1;
else %静音状态
status=0;
count=0;
end
case 2, %2=语音段
if amp(n)>amp(2) zcr(n)>zcr(2) %保持在语音段
count=count+1;
else %语音将结束
silence=silence+1;
if silence
elseif count
silence=0;
count=0;
else %语音结束
status=3;
end
end
case 3,
break;
end
end
count=count-silence/2; x2=x1+count-1;
图:
数字“8”的时频域特性:
其他数字的时频域特性:略。
分析结果:
范文二:语音识别论文
基于神经网络的语音识别研究
王宪臻
(河北工业大学信息工程学院,天津,300401)
摘要:提出了一种基于双权值神经网络的非特定人连续语音识别的新算法。这种算法可以不经过端点检测和分割 , 构建连续语音中各不同音节的特征空间覆盖区 , 可以避免因分割错误而带来的错误识别。通过实验得到了较为满意的识别结果。
关键词:双权值神经网络 连续语音 语音识别
中图法分类号:T N912 . 34 文献标志码: A
Speech Recognition Based on Neural Networks
Wang Xianzhen
(School of Information Engineering, Hebei University of Technology, Tianjin 300401,China ) Abstract :Two weight neural net work is described . A new dynamic searching algorithm based on two weight neural network is presented . And then it was applied to recognize the continuous s- peech of speaker-independent .The recognition results can be searched dynamically without endpoint detecting and segmenting . Different feature space covers are constructed according to different classes of syllables . Some satisfactory recognition results are obtained by experiment . Key words: two weight neural networks continuous speech speech recognition
语音是人类交流和交换信息中最便捷的工具和最重要的媒体。语音识别技术是集声学、 语音学、 语言学、 计算机、 信息处理和人工智能等诸领域的一项综合技术, 应用需求十分广阔, 在近半个多世纪以来一直是人们研究的热点。语音识别系统可以依照语音识别的单元及语音识别系统是否依赖特定人而分成以下四类[ 1 ]: (1) 特定人, 孤立词语音识别; (2) 非特定人, 孤立词语音识别; (3) 特定人, 连续语音识别; (4) 非特定人, 连续语音识别。可以看出, 这四类系统的难度是依次增加的。在语音识别系统的性能中, 语音识别的正确率以及字表大小和内容是主要的, 此外还有系统对发音的要求高低、 系统的抗噪声能力、 训练量的大小等等
[ 1 ]。目前常用的语音识别算法有动态时间规整法(DT W)、 隐马尔可夫模型 (HMM)和人工神经网络(ANN)等, 其中基于统计的 HMM 算法可能是目前最为成功的一种语音识别模型和算法了。然而,HMM 语音识别模型也存在一些严重的缺陷, 如:鲁棒性不够理想, 抗噪音的能力比较弱以及需要大量的训练样本等等。另外, 由于连续语音识别技术存在单词切分困难的特点, 而单词切分错误又直接影响到语音识别的识别率。基于以上连续语音识别技术的难点, 本文从双权值神经网络[2—5]的结构出发, 提出了一种基于双权值神经网络的非特定人连续语音识别的新算法。这种算法可以不经过端点检测和分割, 构建连续语音中各不同音节的特征空间覆盖区, 得到了较为满意的识别结果。
1 双权值神经网络的结构
双权值神经元模型的结构图如图 1所示。双权值神经元的典型的特点就是它不仅有相当于前馈网络中的方向权值 w , 而且还有相对于RBF 径向基函数网络中的核心权值 z 。这样的双权值神经元是一个具有良好的局部反应性质、 各向异性的高阶神经元。
图1 双权值神经元模型 ?W j (X j -W j ') ?双权值神经元的基本算式为:Y =[f ∑ |W j (X j -W j ') |p -θ] ? ?f =0?|W j (X j -W j ') |?M s
其中 Y 为神经元的输出, f 为神经元激励函数, θ为神经元的阈值, W j 为由第 j 个输入端接至神经元的方向权值, W j '为由第 j 个输入端接至神经元的核心权值, X j 为第 j 个输入端 (正值) ,M为输入空间维数, S为决定单项正负号方法的参数, S = 0时单项符号永为正,S =1时单项的符号与 Wj 的符号相同, P为幂参数。
这种网络模型是一种通用的神经元网络模型 , 传统的通用前馈网络和径向基函数 (RBF)网络都是它的一种特例。如果核心权值W '全为 0, S = 1,p = 1,则 2 - 12式就是一个经典的神经元数学模型; 如果核心权值W '全为 1, S = 0, p = 2,则 y 是一个径向基函数 (RBF)网络的神经元。
2 构造双权值神经网络的学习算法
步骤 1: 设某类问候语单字所有的样本点集合为α= {A 1 , A 2, ?, A N } ,N 为样本点总数。计算出这些点两两之间的距离 , 找到距离最小的两个点 , 记为B 1、B 2 , 计算其它点到这两点的距离和 , 将距离和最小 , 且与B 11、B 12不共线的点记作B 13点 , 这样构成第一个平面三角形B 11B 12B 13 , 记作θ1 , 用一个双权值神经元来覆盖 , 其覆盖范围为:
n P =X |ρ≤T h, X ∈R ; θ1X 1{}
θ1={Y |Y =a 2[a 1B 11+(1-a 1)B 12]+(1-a 2)B 13, a 1∈[0,1], a 2∈[0,1]}
其中ρX θ1表示点 X 到空间θ1的距离。
步骤 2:对于前一个已构造好的几何形体 P1 , 判断剩余点是否被该形体包含, 若在形体覆盖范围内, 则排除该点。对于在形体之外的样本点, 按照第 1步的方法, 找出离B 11B 12B 13三点距离和最小的点B 21 , 将B 11B 12B 13三点中离B 21最近的两个点记作B 22B 23 , B 22与 构成第二个平面三角形 , 记作θ, B 11B 12B 13三点中离B 21最近的两个点记作B 22B 23 , B 22B 23与
B 21构成第二个平面三角形B 21B 22B 23, 记作θ2 , 同样用一个双权值神经元来覆盖, 其覆盖范围为:
P 2=X |ρX θ2≤T h, X ∈R n ; {}
θ2={Y |Y =a 2[a 1B 21+(1-a 1)B 22]+(1-a 2)B 23, a 1∈[0,1], a 2∈[0,1]}
X 到空间θ2的距离。 其中ρX θ表示点 2
步骤 3: 在剩余点中排除包含在前面 ( i - 1) 个双权值神经元覆盖体积内的样本点 , 在覆盖体积外的样本点中 , 找出离前面第 i - 1个三角形的顶点的距离和最近的点记作B i 1, 同离其最近的第 i - 1个三角形的两个顶点记作B i 2B i 3 , 构成第 i 个平面三角形B i 1B i 2B i 3 , 记作θ3 , 同样用一个双权值神经元来覆盖 , 其覆盖范围为:
P i =X |ρX θ2≤T h, X ∈R n ;
4θ3={Y |Y =a 2[a 1B i 1+(1-a 1)B i 2]+(1-a 2)B i 3, a 1∈[0,1], a 2∈[0,1]}
m {} 步骤 4: 重复步骤 (3) , 直到处理完所有的样本点。最终共产生 m 个双权值神经元 , 每
一类问候语单字的覆盖面积是这些神经元覆盖面积的并集:P = P ,在识别时 , 取 Th = 0, i
i =1
pS i3神经元的表达式为ρ=||X -θ(W , W , W )||。神经元的输出ρ是点 X 到有限区域θ(W , W , W )123123的距离 , 距离的计算采用的是近似算法。
待识样本 X 到第 i 类问候语单字的高维空间点覆盖神经网络覆盖区的距离为ρi =min ρij , i =1,...,11其中 Mi 为第 i 类问候语单字的高维空间点覆盖神经网络的 pS i3j =1M i
神经元的个数。ρ ij 为待识样本待识样本 X 到第 i 类问候语单字的高维空间点覆盖神经网络中第 j 个神经元覆盖区域的距离。
将离开待识样本 X 距离最小的那一类问候语单字的高维空间点覆盖双权值神经元所属类别, 作为待识样本 X 的所属问候语单字类别, 判别方法为:ρi =min ρij , i =1,...,11 j =1M i
3 实验及分析
在问候语连续语音识别中 , 将待识别的问候语连续语音所提取的长度不等的特征向量 ( 128维 ×n) 作为高维空间的 n 个点 , 求出这 n 个点中依次各点到每一类覆盖区的距离 , 然后找出每一点到各类覆盖区的最短距离 , 把最短距离所对应的那一类作为该点所属类别, 最短距离是随时间变化的曲线 , 取最小的几个极小值点对应的问候语单字类别作为最终识别结果。
下面以“ni hao zao shang hao ” 的连续语音串为例 ( n = 113) ,图 1为这 n 个点到 18类问候语中的1类覆盖区的距离 , 横坐标为时间轴 ( n个点 ) ,纵坐标为各点 ( n个点 ) 到各类高维空间点覆盖区的距离。
图2 “ ni hao zao shang hao”到“shang ”的覆盖范围的距离
图3 连续语音到各类高维空间点覆盖区的最短距离
图 2为离开“shang ” 覆盖范围的距离随时间的变化曲线 , 图中有 1个极小点 , 它的距离值在 50到100之间。通过这种方法找到这 n 个点到 18类问候语中的每一类覆盖区的最小距离。由于最短距离是随时间变化的曲线 , 取最小的几个极小值点对应的问候语单字类别作为最终识别结果。图 3就是连续语音“ni hao zao shang hao ” 到各类高维空间点覆盖区
的最短距离。
据统计我们的识别系统最终达到字错误率为15 . 38% ,字正确率为 84 . 62%。由于问候语语句受语法的限制程度较强 , 对于问候语语句的识别我们采用了关键字识别的方法 , 即在一个问候语语句中只要识别出它的关键字 , 我们就认为它识别出了这个句子。在我们的识别系统中 , 问候语语句的句识别正确率为 93 . 50%。
4 结 论
由于连续语音的分割困难, 而它又直接影响到语音识别的识别率, 有实验考证如果将在前期的分割错误加以纠正, 则系统的字错误率至少可以降低 11 .7%。因此可以说以外的系统对连续语音的识别率不高在很大程度上与连续语音端点检测的准确率不高密切相关。因此本文一改传统语音识别先切分后识别的模式, 采用了动态搜索的算法, 实现了不用切分的连续语音识别。本文从双权值复杂的几何形体出发, 给出了双权值神经网络的学习算法在语音中的算法, 今后希望能够应用的大词汇语音识别中去。
参考文献:
1 李建民. 汉语语音识别的研究. 北京:清华大学硕士论文, 1991
2 Pallett D S, Fiscus J G, Alvin M, et al . Br oadcast news benchmarktest results english and non2 english, http: / /www. nist . gov/ s peech /history / index . htm, 1997
3 Wang Shoujue . A new development on ANN in China2 Biomimeticpattern recognition and multiweight vector neur ons . Lecture Notes inArtificial Intelligence, 2003; 2639: 35—43
4 王守觉, 徐 健, 王宪宝, 等. 基于仿生模式识别的多镜头人脸身份确认系统研究. 电子学报, 2003; 31
(1) : 1—3
5 王守觉, 李兆洲, 陈向东, 等. 通用神经网络硬件中神经元基本数学模型的讨论. 电子学报, 2001; 29 (5) : 577—580
范文三:语音识别论文.
语音信号的分析与处理
摘要:本文针对语音信号时域、频域参数进行了系统详尽的分析,并在MATLAB 环境下实现了基于DTW 算法的特定人孤立词语音信号的识别。
关键词:语音信号;短时傅里叶;MFCC ;动态时间规整
引言
语音信号参数分析是语音信号处理的前提和基础。语音信号处理包括语音通信、语音增强、语音合成、语音识别和说话人识别等方面。只有通过语音信号的分析才能获得语音本质特性的参数,才能利用这些参数进行高效的语音通信,才能建立语音合成的语音库,也才可能建立用于语音识别的模板和知识库。此外,语音合成音质的好坏、语音识别率的高低,都取决于语音信号参数分析的准确性和精度。因此,语音信号参数分析是语音信号处理研究中一项非常有意义的工作[1]。
近年来,语音识别已经成为一个非常活跃的研究领域。在不远的将来,语音识别技术有可能作为一种重要的人机交互手段,辅助甚至取代传统的键盘、鼠标等输入设备,在个人计算机上进行文字录入和操作控制。而在手持式PDA 、智能家电、工业现场控制等应用场合,语音识别技术则有更为广阔的发展前景[2]。
在特定人孤立词语音识别中,最为简单有效的方法是采用DTW(Dynamic Time Warping, 动态时间规整) 算法,该算法基于动态规划(DP)的思想, 解决了发音长短不一的模板匹配问题,是语音识别中出现最早、较为经典的一种算法[3]。
MATLAB 是一种功能强大、效率高、交互性好的数值计算和可视化计算机高级语言,它将数值分析、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。本文就是在MA TLAB 基础上来进行语音信号参数的分析与语音信号的识别的。
一、语音信号的分析
1参数分析
语音信号是一种典型的非平稳信号。但是,由于语音的形成过程是与发音器官的运动密切相关的,这种物理运动比起声音振动速度来讲要缓慢得多,因此语音信号常常可被假定为短时平稳的,即在10一20ms 这样的时间段内,其频谱特性和某些物理特征参量可被近似地看作不变。这样,我们就可以采用平稳过程的分析处理方法来处理,一般而言语音信号处理的方法都是基于这种短时平稳的假设的。根据语音信号所分析参数的不同,语音信号参数分析可以分为时域、频域、倒谱域分析等[4]。本文仅涉及时域及频域参数分析。
2时域分析
进行语音信号最为直观的分析方法就是时域分析。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析以及语音的分割、预处理和大分类等。时域分析方法的特点是:第一,表示语音信号比较直观,物理意义明确;第二,实现起来比较简单,运算量少;第三,可以得到语音的一些重要参数;第四,采用示波器等通用设备,使用简单[5]。
2.1短时能量分析
短时能量分析用途:第一,可以区分清音段和浊音段,因为浊音时的短时平均能量值比清音时大得多;第二,可以用来区分声母与韵母的分界、无声与有声的分界、连字的分界等。如对于高信
噪比的语音信号,短时平均能量用来区分有无语音。无语音信号噪声的短时平均能量很小,而有语音信号的能量则显著增大到某一个数值,由此可以区分语音信号的开始点或者终止点。
3频域分析
短时傅立叶分析在运用离散时间傅立叶变换分析语音信号的变化时,会遇到这样的问题,即单一的傅立叶变换并不能反映时间变化的频谱信息,诸如时变共振峰和谐波。具体而言,通常将信号的每一时刻与其相邻时刻信号的傅立叶变换相联系,这样就可以及时跟踪信号的频谱变化。语音信号的短时傅立叶变换见程序所述。
可以验证,在短时傅立叶分析中对于同一种窗函数而言,其通带宽度与窗长成反比。如果希望频率分辨率高,则窗长应尽量取长一些;如果希望时间分辨率高,则窗长尽量取短一些。由此可见,傅立叶分析的时间分辨率和频率分辨率是相互矛盾的,这是短时傅立叶本身所固有的弱点。短时傅立叶分析一般采用汉明窗作为分析窗[6]。
通过基于MATLAB 和短时频域分析,能够得出[7]:第一,长窗具有较高的频率分辨率,但具有较低的时间分辨率。从一个周期到另一个周期,共振峰是要发生变化的,这一点即使从语音波形上也能够看出来。然而,如果采用较长的窗,这种变化就模糊了,因为长窗起到了时间上的平均作用。第二,短窗的频率分辨率低,但具有较高的时间分辨率。采用短窗时,能够从短时频谱中提取出共振峰从一个周期到另一个周期所发生的变化。当然,激励源的谐波结构也从短时频谱上消失了。第三,在对语音信号进行短时傅里叶分析时,窗长需要折衷考虑。一方面,短窗具有较好的时间分辨率因而能够提取出语音信号中的短时变化;但另一方面,损失了频率分辨率。第四,汉明窗都具有低通的性质,且在截止频率处比较尖锐,当其通带较窄时(窗越宽,通带越窄),加窗后的频谱更能够较好反映短时语音信号的频谱,窗越宽这种逼近越好。
二、语音信号的处理
1特定人孤立词语音识别系统分析
一个完整特定人孤立词语音识别系统通常包括语音的输入,语音信号的预处理,特征提取,训练与识别等几个环节,基本构成如图1所示:
图1 孤立词语音识别系统框图
语音识别的过程可以被看作模式匹配的过程,模式匹配是指根据一定的准则,使未知模式与模型库中的某一个模型获得最佳匹配的过程。模式匹配中需要用到的参考模板通过模板训练获得。在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库。在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。同时,还可以在一些先验知识的帮助下,提高识别的准确率。 2 语音识别算法———高效的DTW 算法
动态时间规整(Dynamic Time Warping,DTW) 是把时间规整和距离测度计算结合起来的一种非线性规整技术,解决了测试模板与参考模板语音时间长度不等的问题。
图2 匹配路径约束示意图
通常,规整函数被限制在一个平行四边形的网格内,如图2所示。它的一条边斜率为2,另一条边斜率为1/2。规整函数的起点是(1, 1),终点为(N ,M )。DTW 算法的目的是在此平行四边形内由起点到终点寻找一个规整函数,使其具有最小的代价函数,保证了测试模板与参考模板之间具有最大的声学相似特性[8]。
由于在模板匹配过程中限定了弯折的斜率,因此平行四边形之外的格点对应的帧匹配距离是不需要计算的。另外,因为每一列各格点上的匹配计算只用到了前一列的3个网格,所以没有必要保存所有的帧匹配距离矩阵和累积距离矩阵。充分利用这两个特点可以减少计算量和存储空间的需求,形成一种高效的DTW 算法,如图2所示。图2中,把实际的动态弯折分为三段,(1,xa ),(xa+1,xb ),(xb+1,N ),其中:
xa= (2M-N)/3,
xb=2(2N-M)/3
xa 和xb 都取最相近的整数,由此可得出对M 和N 长度的限制条件:
2M-N ≥3,
2N-M ≥2
当不满足以上条件时,认为两者差别太大,则无法进行动态弯折匹配。在x 轴上的每一帧不再需要与y 轴上的每一帧进行比较,而只是与y 轴上[ymin,ymax]间的帧进行比较,ymin 和ymax 的计算公式为:
ymin=x/2,0≤x ≤xb ,
2x+(M-2N),xb<>
ymax=2x,0≤x ≤xa ,
x/2+(M-N/2),xa<>
如果出现xa> xb的情况,则弯折匹配的三段为(1,xb ),(xb+1,xa ),(xa+1,N )。
对于x 轴上每前进一帧,虽然所要比较的y 轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:
D(x,y) = d(x,y)+min[D(x-1,y) ,D(x-1,y-1) ,D(x-1,y-2)]
3.MA TLAB 仿真验证
3.1 语音信号预处理
语音信号的预处理包括预滤波、采样和量化、加窗、预加重、端点检测等过程[9]。所选用的实验语音数据,是在实验室条件下利用PC 机录制。采用8 000kHz 采样频率、16bit 量化、单声道的PCM 录音格式。由于语音信号在帧长为10ms~30ms之内是相对平稳的,同时为了便于计算FFT ,本系统选取帧长N 为256个语音点,帧移M 为128点。
汉明窗与矩形窗和汉宁窗相比具有最低旁瓣,可以有效地克服泄漏现象,具有更平滑的低通特性,故本文采用汉名窗对语音信号进行分帧处理,如下式:
ω(n) =0.54-0.46cos(2πn/(N-1)),0≤n ≤N-1
预加重用具有6dB/倍频程的提升高频特性的一阶数字滤波器实现:
H(z) =1-0.937 5/z
端点检测采用基于短时能量和短时平均过零率法[10],利用已知为“静态”的最初十帧信号为短时能量设置2个门限ampl 和amph ,以及过零率阀值zcr 。语音起始点从第11帧开始检测,其流程图如图3。语音结束点的检测方法与检测起点相似,但此时从后向前搜索。
图3 语音起点检测流程图
3.2 特征参数提取及语音识别
研究表明,倒谱特征参数所含的信息量比其他参数多,能较好地表现语音信号。
本文选取能够反映人对语音的感知特性的Mel 频率倒谱系数(MFCC)作为特征参数,阶数为12。经过MFCC 特征参数提取后,各帧语音信号就形成了一个个特征矢量。识别时,将待测语音与模板库中的每一个模板进行模式匹配,找到距离最小的模板作为输出结果。
经测试,程序等到了较好的语音识别效果。
三、总结
上述语音识别系统详细地分析了语音信号的时域、频域等特性,并实现了对孤立数字0到9的准确识别,通过本次详细系统的语音识别系统的设计,我对数字信号处理的流程有了深刻的认识,对Matlab 软件编程也有了一定的理解,为将来从事这方面的课题打下了坚实的基础。
参考文献:
[1]王炳锡. 语音编码[M].西安:西安电子科技大学出版社,2002.
[2]何强, 何英.MA TLAB 扩展编程[M].北京:清华大学出版社,2002.
[3]王炳锡, 屈丹, 彭煊. 实用语音识别基础[M].北京:国防工业出版社,2005.
[4]易克初, 等. 语音信号处理[M].北京:国防工业出版社,2006,6.
[5]胡航. 语音信号处理[M].哈尔滨:哈尔滨工业大学出版社,2000,5.
[6]胡广书. 数字信号处理理论、算法与实现[M].北京:清华大学出版社,1997.
[7]王炳锡, 等. 实用语音识别基础[M].北京:国防工业出版社,2005.
[8]林波, 吕明. 基于DTW 改进算法的弧立词识别系统的仿真与分析[J].信息技术,2006,30(4):56-59.
[9]韩纪庆, 张磊, 郑铁然. 语音信号处理[M].北京:清华大学出版社,2004
[10]李晋. 语音信号端点检测算法研究[D].长沙:湖南师范大学,2006.
程序:
主程序:
yuyinshibie.m
disp('正在计算参考模板的参数...')
for i=1:10
fname=sprintf('%da.wav',i-1);
x=wavread(fname);
[x1 x2]=vad(x);
m=mfcc(x);
m=m(x1-2:x2-4,:);
ref(i).mfcc=m;
end
disp('正在分析语音信号...')
for i=1:10
fname=sprintf('%da.wav',i-1);
[x,fs,bit]=wavread(fname,[2000,2512]); %采样% %sound(x,fs); %播放语音信号
figure(i);
subplot(3,3,1);
plot(x(1:256)); %原始语音信号的时域图形%
title('原始信号')
subplot(3,3,2)
[h,w]=freqz(x) %原始语音信号的频率响应图 hr=abs(h);
plot(w,hr);
title('频率响应图');
xlabel('Frequency in rad/sample')
ylabel('Magnitude in dB')
subplot(3,3,3)
hphase=angle(h);
hphase=unwrap(hphase); %求系统相频响应
plot(w,hphase);
title('频率响应图');
xlabel('Frequency in rad/sample')
ylabel('Phase in degrees')
y=fft(x,512); %傅立叶变换%
mag=abs(y);
mag1=10*log10(mag);
f=fs*(0:255)/512;
subplot(3,3,4)
plot(f,mag(1:256)); %FFT频谱图 %
title('fft变换后信号')
iff=ifft(y,512); %反傅立叶变换%
ifm=abs(iff);
subplot(3,3,5)
plot(f,ifm(1:256))
title('ifft后信号')
% 短时傅里叶变换
Ts=1/fs;
%N=T/Ts;
N=512;
Nw=20; %窗函数长
L=Nw/2; %窗函数每次移动的样点数
Tn=(N-Nw)/L+1; %计算把数据x 共分成多少段 nfft=32; %FFT的长度
TF=zeros(Tn,nfft); %将存放三维谱图,先清零
for i=1:Tn
xw=x((i-1)*10+1:i*10+10); %取一段数据 temp=fft(xw,nfft); %FFT变换
temp=fftshift(temp); %频谱以0频为中心 for j=1:nfft;
TF(i,j)=temp(j); %把谱图存放在TF 中 end
end
subplot(3,3,6)
fnew=((1:nfft)-nfft/2)*fs/nfft;
tnew=(1:Tn)*L*Ts;
[F,T]=meshgrid(fnew,tnew);
mesh(F,T,abs(TF))
title('短时傅立叶变换时频图')
subplot(3,3,7)
contour(F,T,abs(TF))
title('等高线表示')
end
disp('正在计算测试模板的参数...')
for i=1:10
fname=sprintf('%db.wav',i-1);
x=wavread(fname);
[x1 x2]=vad(x);
m=mfcc(x);
m=m(x1-2:x2-4,:);
test(i).mfcc=m;
end
disp('正在进行模板匹配...')
dist=zeros(10,10);
for i=1:10
for j=1:10
dist(i,j)=dtw(test(i).mfcc,ref(j).mfcc);
end
end
disp('正在计算匹配结果...')
for i=1:10
[d,j]=min(dist(i,:));
fprintf('测试模板%d的识别结果为:%d\n',i-1,j-1); end
各子程序模块:
dtw.m
function dist=dtw(t,r)
n=size(t,1);
m=size(r,1);
%帧匹配距离矩阵
d=zeros(n,m);
for i=1:n
for j=1:m
d(i,j)=sum((t(i,:)-r(j,:)).^2);
end
end
%累积距离矩阵
D=ones(n,m)*realmax;
D(1,1)=d(1,1);
%动态规划
for i=2:n
for j=1:m
D1=D(i-1,j);
if j>1
D2=D(i-1,j-1);
else
D2=realmax;
end
if j>2
D3=D(i-1,j-2);
else
D3=realmax;
end
D(i,j)=d(i,j)+min([D1,D2,D3]);
end
end
dist=D(n,m);
enframe.m
function f=enframe(x,win,inc)
nx=length(x(:));
nwin=length(win);
if (nwin == 1)
len = win;
else
len = nwin;
end
if (nargin <>
inc = len;
end
nf = fix((nx-len+inc)/inc);
f=zeros(nf,len);
indf= inc*(0:(nf-1)).';
inds = (1:len);
f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));
if (nwin > 1)
w = win(:)';
f = f .* w(ones(nf,1),:);
end
melbankm.m
function [x,mn,mx]=melbankm(p,n,fs,fl,fh,w)
if nargin <>
w='tz';
if nargin <>
fh=0.5;
if nargin <>
fl=0;
end
end
end
f0=700/fs;
fn2=floor(n/2);
lr=log((f0+fh)/(f0+fl))/(p+1);
% convert to fft bin numbers with 0 for DC term
bl=n*((f0+fl)*exp([0 1 p p+1]*lr)-f0);
b2=ceil(bl(2));
b3=floor(bl(3));
if any(w=='y')
pf=log((f0+(b2:b3)/n)/(f0+fl))/lr;
fp=floor(pf);
r=[ones(1,b2) fp fp+1 p*ones(1,fn2-b3)];
c=[1:b3+1 b2+1:fn2+1];
v=2*[0.5 ones(1,b2-1) 1-pf+fp pf-fp ones(1,fn2-b3-1) 0.5]; mn=1;
mx=fn2+1;
else
b1=floor(bl(1))+1;
b4=min(fn2,ceil(bl(4)))-1;
pf=log((f0+(b1:b4)/n)/(f0+fl))/lr;
fp=floor(pf);
pm=pf-fp;
k2=b2-b1+1;
k3=b3-b1+1;
k4=b4-b1+1;
r=[fp(k2:k4) 1+fp(1:k3)];
c=[k2:k4 1:k3];
v=2*[1-pm(k2:k4) pm(1:k3)]; mn=b1+1;
mx=b4+1;
end
if any(w=='n')
v=1-cos(v*pi/2);
elseif any(w=='m')
v=1-0.92/1.08*cos(v*pi/2); end
if nargout > 1
x=sparse(r,c,v);
else
x=sparse(r,c+mn-1,v,p,1+fn2); end
mfcc.m
function ccc=mfcc(x)
%归一化mel 滤波器组系数
bank=melbankm(24,256,8000,0,0.5,'m'); bank=full(bank);
bank=bank/max(bank(:));
%DTC系数,12*24
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24)); end
%归一化倒谱提升窗口
w=1+6*sin(pi*[1:12]./12);
w=w/max(w);
%预加重滤波器
xx=double(x);
xx=filter([1 -0.9375],1,xx);
%语音信号分帧
xx=enframe(xx,256,80);
%计算每帧的MFCC 参数
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(256);
t=abs(fft(s));
t=t.^2;
c1=dctcoef*log(bank*t(1:129));
c2=c1.*w';
m(i,:)=c2';
end
%差分参数
dtm=zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);
end
dtm=dtm/3;
%合并mfcc 参数和一阶差分mfcc 参数
ccc=[m dtm];
%去除首尾两帧,因为这两帧的一阶差分参数为0
ccc=ccc(3:size(m,1)-2,:);
vad.m
function [x1,x2]=vad(x)
%幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
%常数设置
FrameLen=240;
FrameInc=80;
amp1=10;
amp2=2;
zcr1=10;
zcr2=5;
maxsilence=3; %3*10ms=30ms
minlen=15; %15*10ms=150ms
status=0;
count=0;
silence=0;
%计算过零率
tmp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);
tmp2=enframe(x(2:length(x)),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<>
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
%计算短时能量
amp=sum(abs(enframe(filter([1 -0.9375],1,x),FrameLen,FrameInc)),2);
%调整能量门限
amp1=min(amp1,max(amp)/4);
amp2=min(amp2,max(amp)/8);
%开始端点检测
x1=0;
x2=0;
for n=1:length(zcr)
goto=0;
switch status
case{0,1} %0=静音,1=可能开始
if amp(n)>amp1 %确信进入语音段
x1=max(n-count-1,1);
status=2;
silence=0;
count=count+1;
elseif amp(n)>amp2 zcr(n)>zcr(2) %可能处于语音段 status=1;
count=count+1;
else %静音状态
status=0;
count=0;
end
case 2, %2=语音段
if amp(n)>amp(2) zcr(n)>zcr(2) %保持在语音段
count=count+1;
else %语音将结束
silence=silence+1;
if silence
elseif count
silence=0;
count=0;
else %语音结束
status=3;
end
end
case 3,
break;
end
end
count=count-silence/2; x2=x1+count-1;
图:
数字“8”的时频域特性:
其他数字的时频域特性:略。
分析结果:
范文四:语音识别论文
第一章 语音识别系统
1.1 语音识别系统历史简介
早在计算机发明之前,自动语音识别的设想就已经被提上了议事日程,早期的声码器可被视作语音识别及合成的雏形。而1920年代生产的"Radio Rex" 玩具狗可能是最早的语。 音识别器,当这只狗的名字被呼唤的时候,它能够从底座上弹出来。最早的基于电子计算机的语音识别系统是由AT&T贝尔实验室开发的Audrey 语音识别系统,它能够识别10个英文数字。其识别方法是跟踪语音中的共振峰。该系统得到了98%的正确率。。到1950年代末,伦敦学院(Colledge of London) 的Denes 已经将语法概率加入语音识别中。1960年代,人工神经网络被引入了语音识别。这一时代的两大突破是线性预测编码Linear Predictive Coding (LPC), 及动态时间弯折Dynamic Time Warp技术。语音识别技术的最重大突破是隐含马尔科夫模型Hidden Markov Model的应用。从Baum 提出相关数学推理,经过Labiner 等人的研究,卡内基梅隆大学的李开复最终实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统Sphinx 。。此后严格来说语音识别技术并没有脱离HMM 框架。信号处理模块提供了对输入信号的预处理,也就是说,提供了从采集的语音信号(记为S ) 到 特征序列O 的映射。
声学模型本身定义了一些更具推广性的声学建模单元,并且提供了在给定输入特征下,估计P (O | u k) 的方法。为了将声学模型建模单元串映射到符号集,就需要发音词典发挥作用。它实际上定义了映射的映射。为了表示方便,也可以定义一个由到U 的全集的笛卡尔积,而发音词典则是这个笛卡尔积的一个子集。并且有:最后,语言模型则提供了P (W ) 。这样,基本公式就可以更加具体的写成:对于解码器来所,就是要在由,, u i 以及时间标度t 张成的搜索空间中,找到上式所指明的W . 语音识别是一门交叉学科,语音识别正逐步成为信息技术中人机接口的
关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。与机器进行语音交流,让机器明白你说什么,这是人们长期以来梦寐以求的事情。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。很多专家都认为语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。
1.2自动语音识别的应用
自动语音识别(Automatic Speech Recognition 简称“ASR“)技术的目标是让计算机能够“听写”出不同人所说出的连续语音,也就是俗称的“语音听写机”,是实现“声音”到“文字”转换的技术。 自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition) 。语音识别是研究如何采用数字信号处理技术自动提取以及决定语音信号中最基本、最有意义的信息的一门新兴的边缘学科。它是语音信号处理学科的一个分支。语音识别技术适用于家用电器和电子设备,如电视、计算机、汽车、音响、冷气等的声控遥控器,电话、手机或PDA 上的声控人名拨号、数字录音机的声控语音检索标签、儿童玩具的声控等;也可用于个人、呼叫中心,以及电信级应用的信息查询与服务等领域。
1.3 语音识别系统的结构
一个完整的基于统计的语音识别系统可大致分为二个部分:
(1)语音信号预处理与特征提取;
(2)声学模型与模式匹配;
1.3.1 语音信号预处理与特征提取
选择识别单元是语音识别研究的第一步。语音识别单元有单词(句)、音节和音素三种,具体选择哪一种,由具体的研究任务决定。
单词(句)单元广泛应用于中小词汇语音识别系统,但不适合大词汇系统,原因在于模型库太庞大,训练模型任务繁重,模型匹配算法复杂,难以满足实时性要求。
音节单元多见于汉语语音识别,主要因为汉语是单音节结构的语言,而英语是多音节,并且汉语虽然有大约1300个音节,但若不考虑声调,约有408个无调音节,数量相对较少。因此,对于中、大词汇量汉语语音识别系统来说,以音节为识别单元基本是可行的。
语音识别一个根本的问题是合理的选用特征。特征参数提取的目的是对语音信号进行分析处理,去掉与语音识别无关的冗余信息,获得影响语音识
别的重要信息,同时对语音信号进行压缩。在实际应用中,语音信号的压缩率介于10-100之间。
线性预测(LP )分析技术是目前应用广泛的特征参数提取技术,许多成功的应用系统都采用基于LP 技术提取的倒谱参数。但线性预测模型是纯数学模型,没有考虑人类听觉系统对语音的处理特点。
Mel 参数和基于感知线性预测(PLP )分析提取的感知线性预测倒谱,在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的一些研究成果。实验证明,采用这种技术,语音识别系统的性能有一定提高。从目前使用的情况来看,梅尔刻度式倒频谱参数已逐渐取代原本常用的线性预测编码导出的倒频谱参数,原因是它考虑了人类发声与接收声音的特性,具有更好的鲁棒性(Robustness )。
1.3.2 声学模型与模式匹配
声学模型通常是将获取的语音特征使用训练算法进行训练后产生。在识别时将输入的语音特征同声学模型(模式)进行匹配与比较,得到最佳的识别结果。
声学模型是识别系统的底层模型,并且是语音识别系统中最关键的一部分。声学模型的目的是提供一种有效的方法计算语音的特征矢量序列和每个发音模板之间的距离。声学模型的设计和语言发音特点密切相关。声学模型单元大小(字发音模型、半音节模型或音素模型)对语音训练数据量大小、系统识别率,以及灵活性有较大的影响。必须根据不同语言的特点、识别系统词汇量的大小决定识别单元的大小。
1.4 语音信号的提取方法
线性预测系数LPC
线性预测分析从人的发声机理入手,通过对声道的短管级联模型的研究,认为系统的传递函数符合全极点数字滤波器的形式,从而n 时刻的信号可以用前若干时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小LMS ,即可得到线性预测系数LPC 。对 LPC的计算方法有自相关法(德宾Durbin 法)、协方差法、格型法等等。计算上的快速有效保证了这一声学特征的广泛使用。与LPC 这种预测参数模型类似的声学特征还有线谱对LSP 、反射系数等等。
倒谱系数CEP
利用同态处理方法,对语音信号求离散傅立叶变换DFT 后取对数,再求反变换iDFT 就可得到倒谱系数。对LPC 倒谱(LPCCEP ),在获得滤波器的线性预测系数后,可以用一个递推公式计算得出。实验表明,使用倒谱可以提高特征参数的稳定性。
Mel 倒谱系数MFCC 和感知线性预测PLP
不同于LPC 等通过对人的发声机理的研究而得到的声学特征,Mel 倒谱系数MFCC 和感知线性预测 PLP是受人的听觉系统研究成果推动而导出的声学特征。对人的听觉机理的研究发现,当两个频率相近的音调同时发出时,人只能听到一个音调。临界带宽指的就是这样一种令人的主观感觉发生突变的带宽边界,当两个音调的频率差小于临界带宽时,人就会把两个音调听成一个,这称之为屏蔽效应。Mel 刻度是对这一临界带宽的度量方法之一。
MFCC 的计算
首先用FFT 将时域信号转化成频域,之后对其对数能量谱用依照Mel 刻度分布的三角滤波器组进行卷积,最后对各个滤波器的输出构成的向量进行离散余弦变换DCT ,取前N 个系数。PLP 仍用德宾法去计算LPC 参数,但在计算自相关参数时用的也是对听觉激励的对数能量谱进行DCT 的方法。
1.5 语音识别技术的前景和应用
在电话与通信系统中,智能语音接口正在把电话机从一个单纯的服务工具变成为一个服务的“提供者”和生活“伙伴”;使用电话与通信网络,人们可以通过语音命令方便地从远端的数据库系统中查询与提取有关的信息;随着计算机的小型化,键盘已经成为移动平台的一个很大障碍,想象一下如果手机仅仅只有一个手表那么大,再用键盘进行拨号操作已经是不可能的。语音识别正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。
语音识别技术发展到今天,特别是中小词汇量非特定人语音识别系统识别精度已经大于98%,对特定人语音识别系统的识别精度就更高。这些技术已经能够满足通常应用的要求。由于大规模集成电路技术的发展,这些复杂的语音识别系统也已经完全可以制成专用芯片,大量生产。在西方经济发达国家,大量的语音识别产品已经进入市场和服务领域。一些用户交机、电话机、手机已经包含了语音识别拨号功能,还有语音记事本、语音智能玩具等产品也包括语音识别与语音合成功能。人们可以通过电话网络用语音识别口语对话系统查询有关的机票、旅游、银行信息,并且取得很好的结果。调查统计表明多达85%以上的人对语音识别的信息查询服务系统的性能表示满意。
可以预测在近五到十年内,语音识别系统的应用将更加广泛。各种各样
的语音识别系统产品将出现在市场上。人们也将调整自己的说话方式以适应各种各样的识别系统。在短期内还不可能造出具有和人相比拟的语音识别系统,要建成这样一个系统仍然是人类面临的一个大的挑战,我们只能一步步朝着改进语音识别系统的方向一步步地前进。至于什么时候可以建立一个像人一样完善的语音识别系统则是很难预测的。
第二章 电子信息产业
2.1电子信息产业简介
电子信息产业是信息技术产业的权威管理部门--信息产业部在统计和分析时通常采用的词,电子信息产具体细分为投资类产品、消费类产品和元器件产品三个大类。出于部门隶属渊源的原因,电子信息产有时人们分析时也用电子工业一词代替。到2009年2月为止,电子信息产业成为中国国民经济重要的支柱产业。电子信息产业是研制和生产电子设备及各种电子元件、器件、仪器、仪表的工业。是军民结合型工业。由广播电视设备、通信导航设备、雷达设备、电子计算机、电子元器件、电子仪器仪表和其他电子专用设备等生产行业组成。电子信息产业是在电子科学技术发展和应用的基础上发展起来的。电子信息产业的发展由于生产技术的提高和加工工艺的改进,集成电路差不多每三年就更新一代;大规模集成电路和计算机的大量生产和使用,光纤通信、数字化通信、卫星通信技术的兴起,使电子工业成为一个迅速崛起的高技术产业。电子工业的发展及其产品的广泛应用,对军事领域产生了深刻的影响:改进了作战指挥系统。第一次世界大战以来, 无线
电通信成为军事通信的基本手段, 被称作军队的“神经”系统。利用电子技术,通过由通信、雷达、计算机等电子设备组成的指挥自动化系统, 改变了传统的通信、侦察和情报处理手段, 大大提高了军队指挥在现代战争条件下的效能。改进了武器装备系统。电子技术的发展和电子产品的应用,大大提高了现代武器的威力和命中精度;电子器件成了现代武器装备的重要组成部分,电子技术是导弹、军事卫星及其他高技术武器装备制导和控制的核心,无论是战略武器,还是战术武器,其性能高低都同电子技术有密切关系。使电子战发展成为独立的作战手段。电子侦察、电子干扰、电子摧毁等形式的电子对抗,电子信息产业在现代战争中越来越重要。尤其在汽车语音控制系统中尤为重要。 2.2 国内的电子信息的发展
中国的电子信息产业出现于20世纪二十年代。1929年10月,中国民党政府军政部在南京建立“电信机械修造总厂”,主要生产军用无线电收发报机,以后又组建了“中央无线电器材有限公司”,“南京雷达研究所”等研究生产单位。中华人民共和国建立后,政府十分重视电子工业的发展。中国国家决定成立第四机械工业部,专属中国国防工业序列。这标志着中国电子信息产业成了独立的工业部门。
1983年,第四机械工业部改称电子工业部。中国的电子工业经过几十年的建设和发展,已经具有相当规模,形成了军民结合、专业门类比较齐全的新兴工业部门。中国电子信息产业已具有门类齐全的军用电子元器件科研开发与配套能力,具有一定水平的系统工程科技攻关能力;基本能满足战略武器、航天技术、飞机与舰船、火炮控制和各种电子化指挥系统的需要;到2008年,电子信息产业所提供的产品都达到了较高技术水平,其中不少达到世界先进水平。
2.3 发展方针
中国国内企业应抓住中国推动新一代移动通信系统、数字电视和互联网建设的时机,依托国内市场建立自主标准体系,推动企业加大对核心元器件和软件、信息安全系统的开发力度,争取在关键技术和重大标准方面实现突破。中国应抓住技术进步和国际产业调整的新机遇,形成一批上千亿的产业集群。电子信息产业单纯靠规模扩张已经难以为继,如:中国国的彩电行业,再扩大规模难度已经很大,今后应该转向速度与效益并重,推动产业向创新型和效益型的转变。
第三章 语音识别在电子信息产业中应用
3.1 语音识别所涉及应用领域
应该依托中西部资源优势和信息化应用状况,以软件、新型元器件、电子材料等高技术、低污染行业为切入点。同时利用周边国家资源,发展加工贸易,推动中国的国家出台扶持政策。建立产业生态参数数据库,研究产业生态评估模型,开展重点产品生态参数课题研究。
人们可以通过语音命令方便地从远端的数据库系统中查询与提取有关的信息;随着计算机的小型化,键盘已经成为移动平台的一个很大障碍,想象一下如果手机仅仅只有一个手表那么大,再用键盘进行拨号操作已经是不可能的。语音识别正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。
语音识别所涉及应用领域,智能玩具,工业控制及医疗领域,家电遥
控用语音可以控制汽车、VCD 、空调、电扇、窗帘,工业控制及医疗领域,电话通信的语音拨号,汽车的语音控制。
3.2 语音识别的在汽车控制方法
从20世纪50年代开始对语音识别的研究开始,经过几十年的发展已经达到一定的高度,有的已经从实验室走向市场,如一些玩具、某些部门密码语音输入等,随着DSP 和专用集成电路技术的发展,快速傅立叶变换以及近来嵌入式操作系统的研究,使得特定人识别尤其是计算量小的特定人识别成为可能。因此,对特定人语音识别技术在汽车控制上的应用的研究是很有前途的。
语音识别的方法
目前,常用的说话人识别方法有模板匹配法、统计建模法、联接主义法(即人工神经网络实现) 。考虑到数据量、实时性以及识别率的问题,笔者采用基于矢量量化和隐马尔可夫模型(HMM)相结合的方法。
说话人识别的系统主要由语音特征矢量提取单元(前端处理) 、训练单元、识别单元和后处理单元组成,其系统构成如 每个司机在购买车后必须将自己的语音输入系统,也就是训练过程,当然最好是在安静、次数达到一定的数目。从此在以后驾驶过程中就可以利用这个系统了。
所谓预处理是指对语音信号的特殊处理:预加重,分帧处理。预加重的目的是提升高频部分,使信号的频谱变得平坦,以便于进行频谱分析或声道参数分析。用具有 6dB/倍频程的提升高频特性的预加重数字滤波器实现。虽然语音信号是非平稳时变的,但是可以认为是局部短时平稳。故语音信号分析常分段或分帧来处理。
3.3 语音识别技术在汽车上的理论
说话人识别系统设计的理论根本问题是如何从语音信号中提取表征人的基本特征。即语音特征矢量的提取是整个说话人识别系统的基础,对说话人识别的错误拒绝率和错误接受率有着极其重要的影响。同语音识别不同,说话人识别利用的是语音信号中的说话人信息,而不考虑语音中的字词意思,它强调说话人的个性。因此,单一的语音特征矢量很难提高识别率。该系统在说话人的识别中采用倒谱系数加基因周期参数, 而在对控制命令的语音识别中仅采用倒谱系数。其中,常用的倒谱系数有2 种,即LPC(线性预测系数) 和倒谱参数(LPCC),一种是基于Mel 刻度的MFLL(频率倒谱系数) 参数(Mel频率谱系数) 。
对于LPCC 参数的提取, 可先采用Durbin 递推算法、格型算法或者Schur 递推算法来求LPC 系数,然后求LPC 参数。设第l 帧语音的LPC 系数为αn, 则LPCC 的参数为1<n≤p
进一步的研究发现,引入一阶和二阶差分倒谱可以提高识别率。
对于MPCC 参数的提取,若根据Mel 曲线将语音信号频谱分为K 个频带,个频带的能量为θ(Mk),则 MFCC参数为 1<n≤p 通过对LPCC 和MFCC 参数对识别率影响的实验比较,笔者选取LPCC 参数 其一阶和二阶差分倒谱稀疏作为特征参数。
基音周期估计的方法很多,主要有基于求短时自相关函数的算法、基于求短时平均幅度差函数(AMDF)的算法、基于同态信号处理和线性预测编码的算法。笔者仅介绍基于求短时自相关函数的算法。
设Sw(n)是一段加窗语音信号,它的非零区间为0<n≤n-1。Sw(n)的自相关函数称为语音信号的S(n)的短时自相关函数,用Rw(l)表示,即
Rw(l)=
可知短时自相关函数在Rw(0)处最大,且在基音周期
的各个整数倍点上有很大的峰值,选择合适的窗函数(窗长为40ms 的Hamming 窗) 与滤波器(带宽为60~900Hz的带通滤波器) 后,只要找到自相关函数的第一最大峰值点的位置并计算它与零点的距离,便能估计出基音周期。
3.3.1训练单元
训练单元的功能是把事先收集到的语音利用一定的算法为每一个待识别的说话人训练出与之相匹配的参数。针对说话人识别在汽车应用中的不同的要求,训练单元也分为2部分:对说话人识别的训练和对待识别词的训练。
对于说话人识别部分的训练, 针对说话人的特征进行训练,为每个合
法用户建立一套或多套HMM 模型,同时采用基于矢量量化(VQ)的方法,为每个合法用户建立VQ 码本。VQ 码本的设计采用LBG 算法,初始码本的设置采用分裂法初始码本。
第2 部分针对控制命令中用到的每个孤立的词条建立多个训练样本,或称为词条样本,估计出该词条的HMM 参数(一套或多套) 。对一个HMM 过程的完整的描述包括:2个模型参数N 和M ,3组概率度量A ,B 和π。为了方便起见,通常采用如下方式表示一个完整的模型:λ=(N,M,π,A,B) ,或者简写为:λ= (π,A,B) 。而对于每一个词条V 的模型参数,V=1~V,可以用Baum-Welch 重估算法。
3.3.2 识别单元
识别单元的功能是利用经训练已经获得的HMM 模型参数 和测得的说话人的基音周期在一定的判决条件下辨认出待识别的说话人并估计出待识别的控制命令词串。针对HMM 模型参数通常采用的判决条件是最大后验概率,用Viterbi 算法实现。
由于汽车的控制命令是有限的词条和数字串的组合, 对这些语音命令的识别属于特定人小词汇量的连接词的识别以及与文本有关的说话人确认,不论是从目前的DSP 运算速度还是存储空间来说,实时实现这些语音命令的识别都是完全可能的。
识别系统组在此系统中,对运算能力和存储单元要求非常高的语音识别部分完全由DSP 完成。
识别系统的功能是完成语音的输入、A/D转换及识别,系统中核心部分
采用TMS320VC5410。其原因是它的运算速度和存储空间都能满足要求,同时它的一些并行运算硬件结构也非常适合语音识别的各种算法,程序和已经脱机训练好的HMM 参数表及相应的词典存放在程序存储器中,数据存储器存放识别过程中的中间计算数据。A/D芯片采用TLC320AD50C, 里面含有A/D、D/A以及低通滤波器和采样保持电路。模拟语音信号的输入主要是通过传声器,保证语音门禁的安全性,转换后的数字语音数据以同步串行通信方式传送给DSP.
3.4 语音识别在汽车上控制的过程和现状
近年来,随着语音识别与确认技术的逐渐成熟,基于语音识别技术的对
话控制系统受到了越来越多的关注。现有的语音技术虽然在实验室环境中取得取得了较好的识别效果,但是一旦由于环境或者说话人的客观原因使得语音信号变差时,就会导致系统检出率急剧下降,从而使得语音控制系统的性能变差甚至不能正常工作。
针对语音识别汽车控制的问题,开发了一套语音识别汽车控制的系统。
本系统的用户主要是汽车控制中心的用户,尤其是发音不够清晰准确,仅仅用传统的语音识别器很难满足控制系统实际应用的需要。因此,提出了综合利用孤立词识别器、连接词识别以及连续语音识别器构建一个基于多识别引擎的识别器的方法,使得关键词被正确检出的可能性大大增加,在允许用户自由使用孤立或者连续语音交流的同时,还最大限度地利用不同识别引擎的优点,改善了语音控制系统的性能。
另外,还分析了语音控制系统中确认、模型自适应以及对话控制策略等关键技术,并且给出了相应的解决方案,从而给电语音控制系统的完整结构,在语音识别汽车控制、电视等设备的实际控制中取得了良好的效果。
语音识别汽车控制系统包括软件设计和硬件设计两部分。本文主要讨论
软件设计部分,其中包括:语音识别模块、语音确认模块、对话控制及硬件指令传输模块以及模型自适应模块。整个系统的流程是:首先,用户的语音
被送入语音识别模块进行Viterbi 解码识别,得到相应的候选关键词;然后,将候选关键词送入语音确认模块进行确认,从中检出可能的关键词,并给出相应的确认分值;再后,根据检出的关键词及其对应的确认分值产生相应的对话或者控制命令对硬件进行控制,同时利用已经确认的语音对识别中的语音模型进行更新。。
3.5 语音识别在汽车中的具体应用:
车载电子的发展从传统的收音机功能开始, 然后沿着CD 、VCD/DVD/移动TV 、GPS 车载电话, 并开拓出范围越来越广、越来越智能化和人性化的车载应用. 使司机不会因为要看这些信息而分散注意力, 从而提高驾驶的安全性. 语音技术在车载设备中具有广泛的应用. 随着网络时代的到来和办公自动化的日益普及, 越来越多的信息正以文字的形式存在, 但受车载环境的限制, 用眼睛来阅读文字信息无论对司机和乘客都存在极大不便, 此时利用语音合成技术改造传统汽车音响, 就可让汽车音响不仅能听广播和音乐, 还能够听用户自主选择的各种文字信息. 语音车载电话
车载电话可为司机在开车期间提供便捷的沟通方式。从安全的角度考虑,在行车途中看信息是非常不方便的,比如看来电号码、时间、短信息等。采用PSOLA 算法语音合成技术,可以实现车载电话信息变看为听,大大加强了信息获取的途径,较低了驾驶的危险,给手机增加更多人性化功能。
系统实现如图1所示。语音车载电话在原有车载电话的基础上增加PSOLA 算法语
(图1) 音合成芯片,实现信息内容的播放。车载电话通过GSM/CDMA网络获取各类型信息,比如来电信息、短消息等;手机控制模块将需要合成的各类型信息如来电信息、短消息、通讯录信息、记事本信息等内容转换成标准的文本信息并发送给PSOLA 算法语音合成芯片;PSOLA 算法语音合成芯片再将文本信息转换为语音通过车内音响系统播放给用户听。要在车载电话上实现语音合成功能,可以选择PSOLA 算法语音芯片或者语音模块。车载电话本身尺寸较小,功耗也不大,选择语音芯片比较合适,虽然语音芯片在任意文本合成上的效果比语音模块差,但完全可以达到实用要求。语音合成芯片,实现信息内容的播放。车载电话通过GSM/CDMA网络获取各类型信息,比如来电信息、短消息等;手机控制模块将需要合成的各类型信息如来电信息、短消息、通讯录信息、记事本信息等内容转换成标准的文本信息并发送给PSOLA 算法语音合成芯片;PSOLA 算法语音合成芯片再将文本信息转换为语音通过车内音响系统播放给用户听。要在车载电话上实现语音合成功能,可以选择PSOLA 算法语音芯片或者语音模块。车载电话本身尺寸较小,功耗也不大,选择语音芯片比较合适,虽然语音芯片在任意文本合成上的效果比语音模块差,但完全可以达到实用要求。
语音车载电话通过变看为听,提高驾驶安全系数。其功能包括:
1. 来电号码播报. 将手机收到的来电信息, 包括来电次序、来电人、来电号码、来电时间等信息, 以清晰、流畅的语音实现自动播报, 手机使用者可以立刻知道来电信息, 决定是否接听;
2. 时间及日程提醒. 任何时候, 只需要按键就可以播报出当前的时间, 在日程提醒时播报出预约的任务等;
3. 信息播报. 配合嵌入式语音合成软件, 可以将收到的各种短信播报出来, 解决手机屏幕小, 阅读困难的问题, 方便人们获取信息.
语音车载GPS
目前GPS 技术已经广泛应用于汽车领域。随着城市车辆的日益增多,交通压力日趋严重,如何使驾驶员方便、快捷地获取信息,变看为听,降低驾驶危险,已经越来越重要。通过PSOLA 算法语音合成技术也可以将GPS 信息转变为声音,播放给司机。
车辆通过车载GPS 可实现自身定位,再将自身的位置和状态(如速度、方位等) 信息通过GPS 通讯模块功能发送至信息中心;同样,信息中心也可以向车辆发送中文简短信息(如导航信息、天气预报、各类定制信息等) 。GPS 增强了汽车的防盗性能和辅助驾驶功能(导航信息) ,但司机获取信息往往是在驾车的过程中,一边驾车一边阅览信息十分不安全,存在着交通隐患,采用语音技术能很好解决这个问题。语音车载GPS 功能可以播放导航信息, 让司机知道最佳行走路线, 也可以播放路况信息, 让司机提前做好准备, 以及堵车、紧急事故处理等等. 另外还能播放天气预报、定制信息, 各地信息中心获知车辆到达当地后将当地的天气预报、用户定制的内容服务告诉司机, 用户定制的信息内容模式可为语音压缩数据.
系统实现示意图如图3。系统由GPS 解析模块、控制模块、信号处理模块、PSOLA 算法语音合成模块构成。其工作过程如下:车载GPS 通过GPS 信息提供网络(如GPRS/CDMA)获取各类型信息,如导航信息、路况信息、天气预报或用户通过信息中心定制的个人信息等;控制模块将需要合成的各类型信息从GPS 解析模块下载到信号处理模块;信号处理模块将信息内容转换成标准的文本信息并发送
给PSOLA 算法语音合成模块;PSOLA 算法语音合成模块再将文本信息转换为语音通过车内音响系统播放给用户。
(图2)
语音车载GPS 需要合成的文本比较多,而且较为随意,不好定制,另外每个用户需要定制的服务内容都不一样,因此语音合成的效果要求高一些。另外车载GPS 本身尺寸较大,很容易找到PSOLA 算法语音模块的空间。从功能上考虑,用户希望通过GPS 实现与信息中心的语音通信功能,这就需要解决语音编解码的问题,而PSOLA 算法语音合成模块支持语音编解码功能。综合考虑,建议在语音车载GPS 采用PSOLA 算法语音合成模块。
语音车载GPS 功能可以播放导航信息,让司机知道最佳行走路线,也
可以播放路况信息,让司机提前做好准备,以及堵车、紧急事故处理等等。另外还能播放天气预报、定制信息,各地信息中心获知车辆到达当地后将当地的天气预报、用户定制的内容服务告诉司机,用户定制的信息内容模式可为语音压缩数据。
参考文献
[1] 王士元, 彭 刚. 语言、语音与技术[M] .上海:上海教育出版社,2006.
[2] 蔡莲红, 黄德智, 蔡 锐. 现代语音技术基础与应用[M].北京:清华大学出版社,2003.357
[3] 胡 航. 语音信号处理[M].哈尔滨工业大学出版社,2000
[4] 宁更新. 抗噪声语音识别新技术的研究[D].博士学位论文. 广州:华南理工大学,2006
[5] Y. Gong. Speech recognition in noisy environments: a survey. Speech Commum. 1995,16:261-291,1995.
[6] 李 萱. 语音特征参数提取方法研究[D].硕士学位论文. 西安. 西安电子科技大学,2006
[7] 赵 力. 语音信号处理[M] .北京:机械工业出版社,2003
[8] 马 静. 基于HMM 模型的汉语数字语音识别算法的研究[D].硕士学位论文. 太原. 太原理工大学,2008
致谢
毕业设计已经接近尾声了,我从挑选课设题目,查阅资料,到研究出总体设计,详细设计,到最后的修改,完善,收获颇多。语音识别系统的设计已全部完成,能按预期的效果进行。
在这短暂而又艰辛的毕业设计中,我非常感谢我的指导老师——林老师。林老师授课认真负责,教学水平高,对同学们指导耐心细致,不断鼓励我,帮助我,我才能顺利的完成此次毕业设计。此次毕业设计不仅加强我的实际动手能力,而且巩固我的理论知识。在设计的过程发现了之间好多理论的东西没有学好,掌握的不是很牢固。毕业设计的需要让我复习巩固了一下以前的课本知识,同时林老师又耐心指导,教会了我们好多理论联系实际的方法,和用多种不同可行的方法比较式的解决问题。让我体会到了同样的事情有多种不同解决的办法,而最简洁有效的才是最好的。
在毕业设计的过程中还要感谢我们的其他老师。能在百忙之中为我们提供更多的时间,更多的资源。让我们有充足的时间来完成我们的毕业设计。
在此非常感谢在毕业设计期间给予我们极大帮助的林老师。愿老师们身体健康,工作顺利,桃李满天下!
范文五:语音识别技术论文
摘 要:语音识别技术是一门涉及面徆广的交叉学科。随着新理论的提出呾应用,语音识别技术取得了徆大的进步,许多产品已经得以实际的应用,但在其进一步的发展进程中,还有许多棘手的问题有待解决。
关键词:语音识别;劢态时间规整算法;人工神经元网络
1 背景介绍
语言是人类特有的功能,是人们思维最重要的寄托体,是人类交流最主要的途径。语音是语言的声学表现,是人类交流信息最自然、最有敁、最方便的手段。语言呾语音不人类社会科学文化发展紧密相连。
语音识别技术是让机器接收,识别呾理解语音信号,并将其转换成相应的数字信号的技术。它是一门交叉学科,涉及到语音语言学、数理统计、计算机、信号处理等一系列学科。
2 发展历史
1952年贝尔实验室的Davis等人研制成功了能识别十个英文数字发音的Audry系统,标志着语音识别技术研究工作开始。20丐纪60年代计提出了劢态规划(Dynamic programming)呾线性预测分析技术,Liner Predictive,等重要成果。20丐纪70年代,语音识别领域取得了突破。实现了基于线性预测倒谱呾DTW技术的特定人孤立语音识别系统。20丐纪80年代语音识别研究进一步走向深入, 基于特定人孤立语音技术的系统研制成功, 隐马尔可夫模型呾人工神经元网络(Artificial Neural Network)在语音识别中的成功应用。进入20丐纪90年代后语音识别系统开始从实验室走向实用。我国对语音识别的研究开始于20丐纪80年代,近年来发展迅速,并取得了一系列的成果。
3 具体应用
随着计算机技术、模式识别等技术的发展,适应不同场合的语音识别系统相继被开发出来,语音识别及处理技术已经越来越突现出其强大的技术优労。近三十年来,语音识别在计算机、信息处理、通信不电子系统、自劢控制等领域的应用越来越广泛。
在许多政府部门、商业机构,语音识别技术的应用,可免除大量操作人员的重复劳劢,既经济又方便。如:语音邮件、IP电话呾IP传真、电子商务、自劢语音应答系统、自劢语音信箱、基于IP的语音、数据、视频的CTI系统、综合语音、数据服务系统、自然语音识别系统、与家咨询信息服务系统、寻呼服务、敀障服务、秘书服务、多媒体综合信息服务、与业特别服务号(168自劢信息服务系统,112、114、119等信息查询系统)等。许多特定环境下,如工业控制方面,在一些工作环境恶劣、对人身有伤害的地方(如地下、深水及辐射、高温等)戒手工难以操作的地方,均可通过语音发出相应的控制命令,让设备完成各种工作。
当今,语音识别产品不仅在人机交互中,占到的市场比例越来越大,而丏在许多领域都有了广阔的应用前景,在人们的社会生活中起着举足轻重的作用。
4 语音识别系统原理
语音识别一般分为两个步骤:学习阶段呾识别阶段。学习阶段的任务是建立识别基本单元的声学模型以及语言模型。识别阶段是将输入的目标语音的特征参数呾模型进行比较,得到识别结果。
语音识别过程如图所示。下面对该流程作简单介绍:
,1,语音采集设备如话筒、电话等将语音转换成模拟信号。
,2,数字化一般包括预滤波、采样呾A/D变换。该过程将模拟信号转变成计算机能处理的数字信号。
,3,预处理一般包括预加重、加窗分帧。经预处理后的信号被转换成了帧序列的加窗的短时信号。
,4,参数分析是对短时信号进行分析,提取语音特征参数的过程,如时域、频域分析,矢量量化等。
,5,语音识别是目标语音根据特征参数不模型库中的参数进行匹配,产生识别结果的过程。一般有模板匹配法、随机模型法呾神经网络等。
,6,应用程序根据识别结果产程预定劢作。
,7,该过程是语音模型的学习过程。
5 现有算法介绍
语音识别常用的方法有:模板匹配法、人工神经网络法。
,1,模板匹配法是语音识别中常用的一种相似度计算方法。模板匹配法一般将语音戒单词作为识别单元,一般适用于词汇表较小的场合。在训练阶段,对用户语音进行特征提取呾特征维数的压缩,这个过程常用的方法是采用矢量量化,VQ,技术。然后采用聚类方法戒其他方法,针对每个模式类各产生一个戒几个模板。识别阶段将待识别的语音模式的特征参数不各模板进行相似度的计算,将最高相似者作为识别结果。但由于用户在不同时刻发同一个音的时间长度有较大随意性,所以识别时必须对语音时间进行伸缩处理。研究表明,简单的线性伸缩是不能满足要求的。由日本学者板仓在70年代提出的劢态时间伸缩算法,DTW,徆好的解决了这一问题。DTW算法能够较好地解决小词汇量、孤立词识别时说话速度不均匀的难题。DTW算法示意图如图所示。
设测试的语音参数共有M帧矢量,而参考模板有N帧矢量,丏M?N,则DTW 就是寻找一个时间归整函数tn=f(tm),它将测试矢量的时间轴tm非线性地映射到模板的时间轴tn上,并使该函数满足第k帧,k=1,2,…M,测试矢量I呾第f(k)帧,f(k)=1,2…N,模板矢量J之间的距离测度之呾最小
另外,在实际识别系统中,语音的起点戒终点由摩擦音构成,环境噪声也比较大,语音的端点检测会存在较大的误差。DTW 算法起点点可以固定在(tm,tn)=(1,1),称为固定起点;也可以选择在(1,2)、(2,1)等点,称为松驰起点。同样,中止点可以选择在(M,N)点,称为固定终点;也可以选择在(N一1,M)、(N,M一1)等点,称为松弛终点。松弛的DTW 算法的起始点从(1,1)、(1,2)、(2,1)等点中选择一最小值,终止点从(M,N)、(M,N-1)、(M-1,N)等点中选择一最小值,两语音样本之间的相互距离在相应的点放松后选择一最小距离。松弛DTW可以克服由于端点检测不精确引起的误差,但运算量加大。
,2,人工神经网络法。现实丐界的语音信号会随着许多特征如:说话人语速、语调以及环境的变化而劢态变化的,想要用传统的基于模板的方法建立一个适应劢态变化的语音识别系统是非常困难的。因此需要设计一个带有自学习能力的自适应识别系统,以便可以适应语音的劢态变化。
人工神经网络由神经元、网络拓朴呾学习方法构成。人工神经网络拓朴结构可分为反馈型呾非反馈型,前馈型,。学习方法可分为监督型呾非监督型。各种人工神经网络模型中应用得最典型的是采用反向传播,Back Propagation,学习算法的多层前馈网络。多层前馈型网络如图所示。
除上述介绍的几种常用的方法外,还有许多其它的识别方法以及改进算法。
6 尚未解决的问题及值得研究的方向
,1,就算法模型方面而言,需要有进一步的突破。声学模型呾语言模型是听写识别的基础。目前使用的语言模型只是一种概率模型,还没有用到以语言学为基础的文法模型,而要使计算机确实理解人类的语言,就必须在这一点上取得进展。
,2,语音识别的自适应性也有待进一步改进。同一个音节戒单词的语音不仅对随着的讲话者的不同而变化,而丏对同一个讲话者在不同场合,不同上下文环境中也会发生变化。这意味着对语言模型的进一步改进。
,3,语音识别技术还需要能排除各种环境因素的影响。目前,对语音识别敁果影响最大的就是环境杂音戒噪音。要在嘈杂环境中使用语音识别技术必须有特殊的抗噪麦克风才能进行,这对多数用户来说是不现实的。在公共场合中,如何让语音识别技术能有摒弃环境嗓音并从中获取所需要的特定声音是一个艰巨的任务。
虽然在短期内还不可能造出具有呾人相比拟的语音识别系统,但在未来几年内,语音识别系统的应用将更加广泛,各种语音识别系统产品将陆续进入我们的生活。语音识别各个方面的技术正在不断地进步,一步步朝着更加智能化的方向发展。
参考文献
,1,杨尚国,杨金龙.语音识别技术概述,J,.福建电脑,2006,,8,
,2,孙宁,孙劲光,孙宇. 基于神经网络的语音识别技术研究,J,. 计算机不数字工程,
,3,cognition. Speech and Language Engineering-State of the
,4,
speech. Proceedings of the IEEE Volume 83,Issue 5,May 1995 Page(s):742-772.