资源描述:
《LPC线性预测分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、线性预测分析matlab程序注意:程序只支持单声道wav文件,可以自行录制一句话。Levinson-Durbin算法:S为信号向量,P为预测阶数%Levinson-DurbinËã·¨functiona=LD(s,P)N=length(s);%Ò»Ö¡ÓïÒô³¤¶È%Çó×ÔÏà¹Ø¾ØÕór(j),j=0:P;forj=0:Pr(j+1)=sum(s(1:N-j).*s(j+1:N));enda=zeros(1,P);E=r(1);fori=1:Ptemp=0;forj=1:i-1temp=temp+a(j)*r(i-j+1);endki=(r(
2、i+1)-temp)/E;a(i)=ki;a_temp=a;%Êý¾Ý½»²æʹÓ㬷ÀÖ¹Êý¾Ý¸üдíÎóforj=i-1:-1:1a(j)=a_temp(j)-ki*a_temp(i-j);endE=(1-ki*ki)*E;EndMatlab主程序:clearall,closeall,%¶ÁÐźÅ[speech,fs,nBits]=wavread('speech.wav');%[speech,fs,nBits]=wavread('a4.wav');P=10;%»ÓïÒô²¨ÐÎfigure(1);subplot(2,2,1);pl
3、ot(speech);title('ÔʼÓïÒô');subplot(2,2,2);plot(abs(fft(speech)));title('ÔʼÓïÒôƵÆ×');%1.²ÎÊýÉèÖÃwinSize=floor(0.025*fs);%Ö¡³¤25ms,Ò»Ö¡8000*0.025¸öµã¹²200¸öµãnFrame=floor(length(speech)/winSize);%¼ÆËãÖ¡Êýspeech=filter([1,-0.94],1,speech);subplot(2,2,3);plot(speech);title('Ô¤¼Ó
4、ÖØÓïÒô');subplot(2,2,4);plot(abs(fft(speech)));title('Ô¤¼ÓÖØÓïÒôƵÆ×');%Ô¤ÏÈ·ÖÅäÄÚ´æa=zeros(1,nFrame*P);err=zeros(1,length(speech));frameData=zeros(1,P+winSize);%ººÃ÷´°hamwin=hamming(2*P+winSize)';form=1:nFrame%È¡Ò»Ö¡Êý¾ÝstartPos=(m-1)*winSize+1;endPos=startPos+winSize-1;ai_sta
5、rt=(m-1)*P+1;ai_end=ai_start+P-1;ifm==1frameData(P+1:P+winSize)=speech(startPos:endPos)';elseframeData=speech(startPos-P:endPos)';end%¼ÓººÃ÷´°frameData=frameData.*hamwin(1:P+winSize);a(ai_start:ai_end)=LD(frameData(P+1:P+winSize),P);%Îó²îÊä³öfori=1:winSizeerr(startPos+i)=frameD
6、ata(P+i)-sum(a(ai_start:ai_end).*frameData(P+i-1:-1:P+i-P));endbuildspeech(startPos:endPos)=filter(1,[1,-1*[a((m-1)*P+1:m*P)]],err(startPos:endPos));buildspeech(startPos:endPos)=buildspeech(startPos:endPos)./hamwin(P+1:P+winSize);%È¥ººÃ÷´°end%È¥¼ÓÖØbuildspeech=filter(1,[1,-0.94
7、],buildspeech);%дÊý¾ÝÎļþwavwrite(err,fs,nBits,'error.wav');wavwrite(buildspeech,fs,nBits,'buildspeech.wav');figure(2);subplot(2,1,1);plot(err);subplot(2,1,2);plot(abs(fft(err)));figure(3);subplot(2,1,1);plot(buildspeech);subplot(2,1,2);plot(abs(fft(buildspeech)));wavplay(buil
8、dspeech,fs,'async');