南邮信息技术综合实验-实验二-语音编码实验_第1页
南邮信息技术综合实验-实验二-语音编码实验_第2页
南邮信息技术综合实验-实验二-语音编码实验_第3页
南邮信息技术综合实验-实验二-语音编码实验_第4页
南邮信息技术综合实验-实验二-语音编码实验_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京邮电大学实 验 报 告实验名称 语音编码实验 课程名称 信息处理技术专业综合实验 班级学号 B 姓 名 陈超 开课时间 2016/2017 学年, 第 一 学期 实验二 语音编码一、实验目的熟悉语音基本压缩编码的方法,观察语音压缩效果,加深对语音线性预测编码(LPC)的理解。二、实验内容1、编写并调试语音LPC参数提取程序。2、编写并调试语音基音周期提取程序。3、编写并调试语音LPC合成程序。三、实验原理语音信号中含有大量的冗余信息,采用各种信源编码技术减除语音信号的冗余度,并充分利用人耳的听觉掩蔽效应,就可以将其编码速率压缩很多倍,而仍能提供可懂语音。LPC声码器是一种比较简单实用的语音

2、压缩方法,其基本原理是:根据语音生成模型,将语音看作激励源通过一个线性时不变系统产生的输出,利用线性预测分析对声道参数进行估值,将求得的线性预测系数,结合基音周期等少量参数进行传输,就可以在接收端利用合成滤波器重构语音信号。线性预测系数的估计方法为:假设语音的当前样值可以用过去的个语音样值来进行预测 式中即为线性预测系数。实际值和预测值之间的均方误差可表示为 要求均方误差总和最小,将关于的偏导数设置为零,可以得到通过采用自相关法、协方差法或格形法求解该方程,即可得到最优的。四、实验方法及程序1. 调用xcorr命令计算一帧语音的自相关函数。2. 调用toeplitz命令形成该帧语音的自相关矩阵

3、。3. 调用durbin命令,采用杜宾递推算法计算该帧语音的线性预测系数。4. 编写lpcauto.m函数,求取一句语音信号的线性预测系数及预测残差。选择设当的窗函数对语音信号进行分幀。5. 编写lpcpitch函数,由残差信号计算该句语音的基音周期。6. 编写lpcgain函数,由预测残差能量,求出该句语音的增益。7. 编写lpcsyn函数,由该句语音的基音周期、预测残差能量和增益进行LPC合成。五、实验结果与分析1. 如何对全极点模型的线性预测参数进行提取?加窗等预处理对提取结果有何影响?2. 如何实现线性预测参数的各种表现方式之间的转换?3. 使用预测残差求基音周期有何优点? 4. 如何

4、根据线性预测系数求得LPC频谱?5. LPC频谱与基于DFT求得的语音对数幅度谱相比有何不同?6. LPC合成语音的质量如何?有何改进措施?实验过程记录与结果分析1、计算短时自相关函数1.1 分别计算正弦信号和白噪声的短时自相关函数,估计正弦信号的基音周期。其Matlab代码如下:x=sin(2*pi*0.01*(0:499);r,eta=xcorr(x,100,unbiased);stem(eta,r);w=randn(500,1);r,eta=xcorr(w,100,unbiased);stem(eta,r);1.2 计算正弦信号叠加白噪声的短时自相关函数,试估计正弦信号的基音周期。其Ma

5、tlab代码如下:x=sin(2*pi*0.01*(0:499);w=randn(500,1);x1=x+w;r,eta=xcorr(x1,100,unbiased);stem(eta,r);1.3 分别画出一帧浊音和一帧清音的语音自相关波形(采样频率为10kHz,帧长为25.6ms,每帧有256个样点),估计浊音的基音周期。load digits; x=digits.three1;m=2756; N=256; n=m-N+1:m;r,eta=xcorr(x(n),250,unbiased);plot(eta,r);m=500; N=256; n=m-N+1:m;r,eta=xcorr(x(n

6、),250,unbiased);plot(eta,r);2、求取LPC系数2.1加载“digits.three1”语音数据。基于自相关法,求出其中一帧数据(采样频率为10kHz,帧长为25.6ms,每帧有256个样点)的14阶LPC系数。画出相应的LPC谱。load digits; x=digits.three1;m=2756; N=256; n=m-N+1:m; M=14;r,eta=xcorr(x(n),250,unbiased);Rx=toeplitz(r(M+1:2*M);rx=r(M+2:2*M+1);a=Rxrx;NFFT=1024; k=1:NFFT/2;X=fft(x(n).*

7、hann(N),NFFT);Theta=1./fft(1:-a,NFFT);plot(k,20*log10(abs(353*Theta(k) X(k)axis(0 NFFT/2 -inf inf)2.2编写一个用以实现杜宾递推算法的函数“durbin.m”,其Matlab代码如下:function a,xi,kappa=durbin(r,M)kappa = zeros (M,1);a = zeros (M, 1);xi=r(1); zeros(M,1);for (j=1:M)kappa(j)=(r(j+1)-a(1:j-1)*r(j:-1:2)/xi(j);a(j)=kappa(j);a(1:

8、j-1)=a(1:j-1)-kappa(j)*a(j-1:-1:1);xi(j+1)=xi(j)*(1-kappa(j)2);end2.3利用函数“durbin.m”,计算2.1中语音数据帧的14阶LPC系数,并与2.1中的结果进行比较:x=digits.three1;m=2756; N=256; n=m-N+1:m; M=14;r,eta=xcorr(x(n),250,unbiased);aLD,xi,kappa=durbin(r(M+1:2*M+1),M);a, aLD, norm(a-aLD)2.4编写一个用以实现反射系数转换为LPC系数的函数“rf2lpc.m”,其Matlab代码如下

9、:function a = rf2lpc(kappa)M = length(kappa);a = zeros(M,1);for (j=1:M) a(j) = kappa(j); a(1:j-1) = a(1:j-1) - kappa(j)*a(j-1:-1:1);end2.5 编写一个用以实现LPC系数转换为反射系数的函数“lpc2rf.m”,其Matlab代码如下:function kappa = lpc2rf(a)M = length(a);kappa = zeros(M,1);for (j=M:-1:1) kappa(j) = a(j); a(1:j-1) = (a(1:j-1) + a

10、(j)*a(j-1:-1:1)/(1 - kappa(j)2);end2.6使用函数“rf2lpc.m”和“lpc2rf.m”,检验反射系数和LPC系数相互转换结果。norm(kappa-lpc2rf(aLD)norm(aLD-rf2lpc(kappa)3、语音信号的逆滤波3.1 利用2.3中求出的一帧语音数据的LPC系数,构造逆滤波器,并画出该帧语音信号的残差波形。ehat=filter(1;-1,1,x(n);plot(x(n) ehat)3.2编写一个用以实现语音信号LPC分析的函数“lpcauto”,其Matlab代码如下:function ar,xi,e,m = lpcauto(x,

11、M,win,Olap)Nx = length(x); N = length(win); if (N = 1) N = win; win = ones(N,1); endF = fix(Nx-Olap)/(N-Olap);ar = zeros(M+1,F);xi = zeros(M+1,F);e = zeros(Nx,1);m = zeros(F,1); n = 1:N; n1 = 1:Olap; n2 = N-Olap+1:N; n3 = Olap+1:N; win1 = win(n1)./(win(n1)+win(n2)+eps);win2 = win(n2)./(win(n1)+win(n

12、2)+eps); for (f=1:F) r,eta = xcorr(x(n).*win,M,biased); a,xi(:,f),kappa = durbin(r(M+1:2*M+1),M); ar(:,f) = 1; -a; ehat = filter(ar(:,f),1,x(n); e(n) = e(n(n1).*win2 + ehat(n1).*win1; ehat(n3); % Overlap-add. m(f) = n(N); n = n + (N-Olap); end3.3加载“timit1”语音数据,利用“lpcauto”函数对该句语音进行LPC分析。画出语音信号及其残差波形。

13、load timit1; x=timit1;M=14; N=256;ar,xi,e,m=lpcauto(x,M,hann(N),N/2);plot(x,e)soundsc(x)soundsc(e)soundsc(x-e)4、LPC谱估计4.1编写一个用以计算和显示LPC谱的函数“lpcplot”,其Matlab代码如下:function lpcplot(A,Nfft,Fs,m)M,N = size(A);if (N=1) Theta,F = freqz(1,A,Nfft,Fs); plot(F,20*log10(abs(Theta); xlabel(Frequency, it F Hz); y

14、label(Magnitude, |theta(omega)| dB);else if (length(m) = N) error(The column dimension of A must be equal to the length of m.) end Theta = zeros(Nfft,N); for (n=1:N) Theta(:,n),F = freqz(1,A(:,n),Nfft,Fs); end MeshHndl = meshz(m,F,20*log10(abs(Theta); axis ij; view(-45,45); set(MeshHndl,MeshStyle,Co

15、lumn); axis tight; axis auto y; axis auto z; xlabel(Sample Number, it n); ylabel(Frequency, it F Hz); zlabel(Magnitude, |theta(omega)| dB);end4.2利用“lpcplot”函数,画出3.3中语音数据的几帧(采样频率为16kHz,帧长为32ms,每帧有512个样点)LPC谱。plot(x(m(71):m(147)lpcplot(ar(:,71:147),512,16000,m(71:147)lpcplot(ar(:,82),512,16000,0)lpcpl

16、ot(ar(:,110),512,16000,0)lpcplot(ar(:,134),512,16000,0)实验结果与分析1. 如何对全极点模型的线性预测参数进行提取?加窗等预处理对提取结果有何影响?自相关法、协方差法求解线性预测方程组、格型法。协方差法是先把计算均方误差的间隔N固定下 来,再研究它对计算n(i,l)的其中N是基音周期值。添加海明窗和汉宁窗可以得到效果不错的波形,很明显两个波形相似,矩形窗的波形相对不是很平稳。通过改变帧长、帧移后波形更加的清晰,特征更加的明显,更方便观察 。 2. 如何实现线性预测参数的各种表现方式之间的转换?对于语音信号,确定了各线性预测系数后,根据H(z

17、)可得其频率响应的估值即LPC谱 。3. 使用预测残差求基音周期有何优点? 该方法能进一步去除声道共振峰的影响,简化清浊音判决过程,提高判决精度,有效降低发生基音倍频和半频的错误。4. 如何根据线性预测系数求得LPC频谱?对于语音信号,确定了各线性预测系数后,根据H(z)可得其频率响应的估值 即LPC谱 。 5. LPC频谱与基于DFT求得的语音对数幅度谱相比有何不同?LPC谱优点在于可以很好地表示共振峰结构而不出现额外的峰起和起伏,基本不含有噪声,其频率灵敏度与人耳不相匹配;DFT得到的对数幅度谱受基频谐波的影响,最大值只出现在谐波频率上,共振峰测定误差较大。 6. LPC合成语音的质量如何?有何改进措施?LPC合成技术的优点是简单直观 。其合成过程实质上只是一种简单的解码和拼接过程 。另外,由于波形拼接技术的合成基元是语音的波形数据,保存了语音的全部信息,因而对于单个合成基元来说能够获得很高的自然度。但是,由于自然语流中的语音和孤立状况下的语音有着极大的区别 ,如果只是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论