数字信号处理作业之语音识别小论文(很好很全).doc

上传人:laozhun 文档编号:3944128 上传时间:2023-03-28 格式:DOC 页数:18 大小:79KB
返回 下载 相关 举报
数字信号处理作业之语音识别小论文(很好很全).doc_第1页
第1页 / 共18页
数字信号处理作业之语音识别小论文(很好很全).doc_第2页
第2页 / 共18页
数字信号处理作业之语音识别小论文(很好很全).doc_第3页
第3页 / 共18页
数字信号处理作业之语音识别小论文(很好很全).doc_第4页
第4页 / 共18页
数字信号处理作业之语音识别小论文(很好很全).doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数字信号处理作业之语音识别小论文(很好很全).doc》由会员分享,可在线阅读,更多相关《数字信号处理作业之语音识别小论文(很好很全).doc(18页珍藏版)》请在三一办公上搜索。

1、绪论语言是人类交流信息的基本手段,在人们日益扩大的交流中占据着重要地位。在如今高度发达的信息社会中用数字化的方法进行语音的传送、储存识别、合成、增强等是整个数字化通信网中最重要、最基本的组成部分之一随着信息科学技术的飞速发展,语音信号处理的研究也日益显示出它的要性,并取得了重大进展。大体上说,语音信号处理技术可以分为以下四个面:即语音编码,语音合成、说话人识别和语音识别等。语音压缩编码是压语音信号便于传输通信和保密;语音合成系统是模仿和代替人口的发音功能语音识别系统则是模仿或代替人耳的听觉功能,说话人识别系统属于生物识技术的一种,是一项根据语音波形中反映说话人生理和行为特征的语音参数识别说话人

2、身份的技术。与语音识别不同的是,说话人识别利用的是语音信中的说话人信息,而不考虑语音中的字词意思,它强调一说话人的个性;而音识别的目的是识别出语音信号中的言语内容,并不考虑说话人是谁,它强共性。随着现代数字通讯、多媒体系统、信息高速公路等技术的应用和发展己经越来越深入地影响并改变着我们每个人地生活和工作方式,这同时也对音信号处理的研究工作提出了更高的要求,它在各方面的进展也令人瞩目。1语音识别概述语音识别是试图使机器能“听懂”人类语音的技术。语音识别的作用是将语音转换成等价的书面信息,也就是让计算机听懂人说话。作为一门交叉学科,语音识别又是以语音为研究对象,是语音信号处理的一个重要研究方向,是

3、模式识别的一个分支,涉及到计算机、信号处理、生理学、语言学、神经心理学、人工智能等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信1.1国外研究历史及现状语音识别的研究工作可以追溯到20世纪50年代。1952年AT&T贝尔实验室的Audry系统,是第一个可以识别十个英文数字的语音识别系统。20世纪60年代末、70年代初出现了语音识别方面的几种基本思想,其中的重要成果是提出了信号线性预测编码(LPC)技术和动态时间规整(DTW)技术,有效地解决了语音信号的特征提取和不等长语音匹配问题;同时提出了矢量量化(VQ)和隐马

4、尔可夫模型(HMM)理论。20世80年代语音识别研究进一步走向深入:其显著特征是HMM模型和人工神经网络(ANN)在语音识别中的成功应用。90年代,在计算机技术、电信应用等领域飞速发展的带动下,迫切要求语音识别系统从实验室走向实用。最具代表性的是IBM的ViaVoice和Dragon公司的Dragon Dictate系统。这些系统具有说话人自适应能力,新用户不需要对全部词汇进行训练,便可在使用中不断提高识别率。1.2 国内研究历史及现状我国在语音识别研究上也投入了很大的精力,国内中科院的自动化所、声学所以及清华大学等科研机构和高校都在从事语音识别领域的研究和开发。国家863智能计算机专家组为语

5、音识别技术研究专门立项,我国语音识别技术的研究水平已经基本上与国外同步。2. 语音识别的流程根据对输出观测值概率的不同描述,HMM(隐式马尔可夫链)可分为离散HMM(DHMM)和连续HMM(CHMM),两者相似,不同的是CHMM使用连续概率密度函数计算状态概率。而DHMM则使用的是离散的矢量量化(vector quantization,VQ)计算状态概率。在基于DHMM的非特定人语音识别过程中语音信号先被分成若干音框(帧),每个音框用一个特征向量参数表示,然后将语音特征参数向量的时间序列矢量化,此时每一个音框的语音信号变成VQ码本,用码本训练HMM,最后测试识别率。3. 语音信号分析方法分类时

6、域特征直接从时域信号计算得到,反应了语音信号时域波形的特征。如短时平均能量、短时平均过零率、共振峰、基音周期等。频域及倒谱域特征由时域信号进行频谱变换得到,反映语音信号的频域特性包括傅里叶频谱、倒谱以及利用了语音信号的时序信息的时频谱。听觉特征指不直接对声道模型进行研究,而是从人类听觉系统对语音的感知特性来刻画语音信号的特征。4. 短时分析技术语音信号是非平稳时变信号语音信号的特性是随时间而变化的幸运的是具有短时平稳性短时间范围内其特性基本保持不变(缓慢变换),即短时相对平稳准平稳过程短时分析技术即在对语音信号进行分析时,将语音信号分为一段一段,利用平稳信号的分析方法对每一分段进行处理每一分段

7、成为一“帧”:一般1030ms为一帧短时分析的不足对语音识别,应采用HMM来分析,以处理语音信号的瞬变和非平稳特性5. 基于Mel频率的倒谱MFCC生理支持根据人类听觉系统的特性,人耳分辨声音频率的过程犹如一种取对数的功能,基于此,出现了Mel频率的倒谱系数(MFCC)MFCC: Mel-Frequency Cepstrum Coefficients.语音识别MFCC参数提取:在语音识别(Speech Recognition)和语者辨识(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒频谱系数(Mel-scale Frequency Cepstral Coeffici

8、ents,简称MFCC),此参数考虑到人耳对不同频率的感受程度,因此特别适合用在语音识别。下面简单的介绍一下求解MFCC的过程。5.1 音框化(Frame blocking)先将N个取样点集合成一个观测单位,称为音框(Frame),通常N的值256或512,涵盖的时间约为2030ms 左右。为了避免相邻两音框的变化过大,所以我们会让两相邻因框之间有一段重迭区域,此重迭区域包含了M个取样点,通常M的值约是 N 的一半或 1/3。通常语音识别所用的音频的取样频率为8 KHz或16 KHz,8KHz 来说,若音框长度为256 个取样点,则对应的时间长度是 256/8000*1000 = 32 ms。

9、5.2 汉明窗(Hamming window)将每一个音框乘上汉明窗,以增加音框左端和右端的连续性(请见下一个步骤的说明)。假设音框化的讯号为S(n),n = 0,N-1。那么乘上汉明窗后为S(n) = S(n)*W(n),此W(n) 形式如下5.3 快速傅利叶转换(Fast Fourier Transform, or FFT)由于讯号在时域(Time domain)上的变化通常很难看出讯号的特性,所以通常将它转换成频域(Frequency domain)上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每个音框还必需再经过 FFT以得到在频谱上的能量分布。 乘上

10、汉明窗的主要目的,是要加强音框左端和右端的连续性,这是因为在进行 FFT时,都是假设一个音框内的讯号是代表一个周期性讯号,如果这个周期性不存在,FFT 会为了要符合左右端不连续的变化,而产生一些不存在原讯号的能量分布,造成分析上的误差。当然,如果我们在取音框时,能够使音框中的讯号就已经包含基本周期的整数倍,这时候的音框左右端就会是连续的,那就可以不需要乘上汉明窗了。但是在实作上,由于基本周期的计算会需要额外的时间,而且也容易算错,因此我们都用汉明窗来达到类似的效果。5.4 三角带通滤波器组(Triangular Bandpass Filters)将能量频谱能量乘以一组 20个三角带通滤波器,求

11、得每一个滤波器输出的对数能量(Log Energy)。必须注意的是:这20个三角带通滤波器在梅尔频率(Mel Frequency)上是平均分布的,而梅尔频率和一般频率 f 的关系式如下: Mel(F)= 2595 * log梅尔频率代表一般人耳对于频率的感受度,由此也可以看出人耳对于频率 f 的感受是呈对数变化的: 在低频部分,人耳感受是比较敏锐 。在高频部分,人耳的感受就会越来越粗糙 。三角带通滤波器有两个主要目的: 对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。因此一段语音的音调或音高,是不会呈现在 MFCC 参数内,所以,用 MFCC 为特征的语音识别系统,并不会受到输入语音

12、的音调不同而有所影响。将傅立叶转换结果经三角带通滤波器组进行滤波。表示第个频带的三角带通滤波器 其中是第个频带的中心,这个三角形带通滤波器在美尔(Mel-frequency)上是平均分配的。下面方程式求每一个滤波器输出的对数能量 5.5 离散余弦转换(Discrete cosine transform, or DCT)将滤波器输出的能量作离散余弦(Discrete Cosine Transform, DCT)计算梅尔频率倒频谱系数(Mel-frequency Cepstral Coefficients, MFCC)离散余弦计算公式:其中大致取12左右。5.6 对数能量(Log energy)一

13、个音框的音量(即能量),也是语音的重要特征,而且非常容易计算。因此我们通常再加上一个音框的对数能量(定义为一个音框内讯号的平方和,再取以 10 为底的对数值,再乘以 10),使得每一个音框基本的语音特征就有 13 维,包含了 1 个对数能量和 12 个倒频谱参数。(若要加入其他语音特征以测试辨识率,也可以在此阶段加入,这些常用的其他语音特征,包含音高、过零率、共振峰等。) 5.7 差量倒频谱参数(Delta cepstrum)虽然已经求出 13 个特征参数,然而在实际应用于语音识别时,我们通常会再加上差量倒频谱参数,以显示倒频谱参数对时间的变化。它的意义为倒频谱参数相对于时间的斜率,也就是代表

14、倒频谱参数在时间上的动态变化,公式如下: 这里 M 的值一般是取 2 ,t代表音框的数目,cm(t)指第t框的倒谱参数。 因此,如果加上差量运算,就会产生 26 维的特征向量;如果再加上差差量运算,就会产生 39 维的特征向量。一般我们在 PC 上进行的语音识别,就是使用 39 维的特征向量。6 矢量量化,矢量量化的关键问题是如何获取VQ码本,本文采用聚类算法LBG算法。7 用MATLAB实时采集信号程序首先将录音放到程序中的路径下,运行即可。运行结果如下:语音库语者 1 与语者 1 匹配成功语音库语者 2 与语者 2 匹配成功语音库语者 3 与语者 2 匹配成功语音库语者 4 与语者 4 匹

15、配成功语音库语者 5 与语者 5 匹配成功语音库语者 6 与语者 6 匹配成功语音库语者 7 与语者 7 匹配成功语音库语者 8 与语者 8 匹配成功语音库语者 9 与语者 9 匹配成功8. 结论:运行结果表明该说话人识别系统的识别能力是比较理想的,识别率为88%,语音库3识别不成功的原因主要有两个,一方面3的录音本身噪音相对大些,导致系统很难识别,另一方面,识别系统的算法还不是很理想,导致识别准确率不是100%。程序如下:function speaker_rec%code = train(D:toolswork,9); test(D:toolswork,9, code);%*function

16、 code = train(traindir, n)% 训练语音库里的声音样本,为每个人建立一个VQ码本% code=train(train,n)% 训练前,应将语音库中的语音文件用1:n的数字标记% Input:% traindir :样本语音库的路径% n :样本语音库中语音文件的个数% Output:% code : trained VQ codebooks, codei for i-th speakerk = 16; %VQ算法的最大迭代次数for i = 1:n file = sprintf(%s%d.wav, traindir, i) ; s, fs = wavread(file)

17、; s=s(1:30000,1); index = find(s = 0); %避免除0 s(index) = 1e-17; v = MFCC(s, fs); % Compute MFCCs codei = vqlbg(v, k); % Train VQ codebook end%*function test(testdir, n, code)%用于对测试语音库中的文件进行测试%建库的时候应该给语音文件按阿拉伯数字进行编码,以方便程序读取% Input:% testdir :测试语库的路径% n :测试语音库中语音文件的个数% code : codebooks of all trained s

18、peakersfor k = 1:n % 读取测试库中的文件 file = sprintf(%s%d.wav, testdir, k); s, fs = wavread(file); s=s(30000:60000,1); %读取文件中的样本点,改变数值即可获取语音资料中的不同段 index = find(s = 0); %避免除0 s(index) = 1e-17; v =MFCC(s, fs); % Compute MFCCs distmin = inf; k1 = 0; for l = 1:length(code) % each trained codebook, compute dis

19、tortion d = disteu(v, codel); % 测试语音与码本进行逐一匹配(计算欧氏距离) dist = sum(min(d,2) / size(d,1); if dist distmin distmin = dist; k1 = l; end end msg = sprintf(语音库语者 %d 与语者 %d 匹配成功, k, k1); disp(msg);end%*function d = disteu(x, y)%计算两个矩阵列之间的欧氏距离% DISTEU Pairwise Euclidean distances between columns of two matri

20、ces% Input:% x, y: Two matrices whose each column is an a vector data.% Output:% d: Element d(i,j) will be the Euclidean distance between two% column vectors X(:,i) and Y(:,j)% Note:% The Euclidean distance D between two vectors X and Y is:% D = sum(x-y).2).0.5M, N = size(x);M2, P = size(y); if (M =

21、 M2) error(Matrix dimensions do not match.)endd = zeros(N, P);if (N P) copies = zeros(1,P); for n = 1:N d(n,:) = sum(x(:, n+copies) - y) .2, 1); endelse copies = zeros(1,N); for p = 1:P d(:,p) = sum(x - y(:, p+copies) .2, 1); endendd = d.0.5;%*function r = vqlbg(d,k)%采用LBG算法获取VQ码本%该算法程序来源:程序员联合开发网%

22、VQLBG Vector quantization using the Linde-Buzo-Gray algorithme% Inputs: d contains training data vectors (one per column)% k:算法最大的迭代次数% Output: r contains the result VQ codebook (k columns, one for each centroids)e = .01;r = mean(d, 2);dpr = 10000;for i = 1:log2(k)r = r*(1+e), r*(1-e);while (i = 1)z

23、 = disteu(d, r);m,ind = min(z, , 2);t = 0;for j = 1:2ir(:, j) = mean(d(:, find(ind = j), 2); %mean为MathWorks的库函数x = disteu(d(:, find(ind = j), r(:, j);for q = 1:length(x)t = t + x(q);endendif (dpr - t)/t) e)break;elsedpr = t;endendend%*%MFCC.m %本文件用于计算MFCC倒谱系数(共可获得26维参数)%输入: s为用声卡采集的信号%输出: C为计算出的倒谱系

24、数 function C=MFCC(s,FS)%*%将信号先音框化后加汉明窗(n为音框宽 m为音框距)m = 100;n = 256;l = length(s);nbFrame = floor(l - n) / m) + 1;for i = 1:n for j = 1:nbFrame M(i, j) = s(j - 1) * m) + i); endendh = hamming(n);M2 = diag(h) * M;for i = 1:nbFrameframe(:,i) = fft(M2(:, i); %得各个音框的频谱end%*% 用在melf频带上均布的三角带通滤波器组对频谱能量进行滤波

25、%将HZ转换美尔坐标melf=2595*log10(1+FS/2/700); melf_width=melf/21; i=0:21; tem_melf=melf_width*i; f_tem=(10.(tem_melf/2595)-1)*700; % f_tem=round(f_tem); %划分频率段 f_tem(2:21)即为20个中心频率 for i=2:21 fm(i)=f_tem(i); %fm为第m个频带的中心endfm(22)=FS/2;fm(1)=0;bm=zeros(20,n/2+1);j=1:n/2;k(2:n/2+1)=FS/2/(n/2)*j;for i=2:21 fo

26、r j=1:n/2+1 if k(j)fm(i-1) bm1(j)=0; else if fm(i-1)=k(j) & k(j)=fm(i) bm1(j)=(k(j)-fm(i-1)/(fm(i)-fm(i-1); else if fm(i)k(j) & k(j)=fm(i+1) bm1(j)=(fm(i+1)-k(j)/(fm(i+1)-fm(i); else bm1(j)=0; end end end end bm(i-1,:)=bm1;endn2 = 1 + floor(n / 2);z = bm * abs(frame(1:n2, :).2;c = dct(log(z); %c为倒谱系

27、数c=c(1:12,:); %取前12维倒谱系数%*%计算音框的对数能量tem_frame=frame(1:n2,:);for i=1:nbFrame tem_frame(:,i)=tem_frame(:,i).2; sum_frame(i)=sum(tem_frame(:,i);endc_energy=10*log10(sum_frame); %c_energy为第十三维参数c13=zeros(12,nbFrame);c13(:,1:nbFrame)=c(:,1:nbFrame);c13(13,:)=c_energy; %c13为十三维参数%*%计算差量倒谱系数%计算一阶差分M=2;tao=

28、1:M;tem=tao.2;tem=sum(tem)*2;c26_tem=zeros(13,nbFrame+4);c26=zeros(26,nbFrame);tem1=zeros(13,2);tem2=zeros(13,nbFrame);c26_tem(:,3:nbFrame+2)=c13(:,1:nbFrame);for i=1:nbFrame for j=1:2 tem1(:,j)=(c26_tem(:,i+2+j)-c26_tem(:,i+2-j)*j/tem; end tem2(:,i)=tem1(:,1)+tem1(:,2);endc26(14:26,:)=tem2(1:13,:); %c26为一阶差分后的26维参数c26(1:13,:)=c13(1:13,:);C=c26;%*毕业论文(很好很全)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号