版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、語音(yyn)信號處理實(shí)驗(yàn)班級(bnj):學(xué)號:姓名(xngmng):2015年10月語音信號處理(xn ho ch l)實(shí)驗(yàn)實(shí)驗(yàn)(shyn)學(xué)時數(shù):8實(shí)驗(yàn)(shyn)學(xué)分:0.5實(shí)驗(yàn)項(xiàng)目數(shù):41、目的與基本要求實(shí)驗(yàn)為研究型(設(shè)計型)實(shí)驗(yàn),共安排4個,為了真正達(dá)到研究設(shè)計型實(shí)驗(yàn)的目的,采用開放實(shí)驗(yàn)的辦法,將自主學(xué)習(xí)和研究設(shè)計型實(shí)驗(yàn)結(jié)合起來,統(tǒng)一安排。自主學(xué)習(xí)內(nèi)容由學(xué)生自主學(xué)習(xí)參考教材的內(nèi)容,并采用多種渠道,如查閱最新語音信號處理方面的科技文獻(xiàn)、資料,作出學(xué)習(xí)報告。目的是培養(yǎng)學(xué)生的自學(xué)能力和科技文獻(xiàn)的檢索和查閱能力,同時可以有助于學(xué)生了解和掌握語音信號處理領(lǐng)域的最新技術(shù)進(jìn)展和應(yīng)用情況,將理論知識
2、和實(shí)際應(yīng)用結(jié)合起來,促進(jìn)學(xué)生學(xué)習(xí)的積極性和主動性。通過開放實(shí)驗(yàn),目的使學(xué)生進(jìn)一步理解數(shù)字語音信息處理的基本方法,提高學(xué)生自主分析、發(fā)現(xiàn)及解決問題的能力,鍛煉學(xué)生論文寫作能力,為實(shí)際的應(yīng)用打下扎實(shí)的基礎(chǔ)。2、研究設(shè)計型實(shí)驗(yàn)的內(nèi)容1)研究設(shè)計型實(shí)驗(yàn)1:基于MATLAB的語音信號時域特征分析要求:按所學(xué)相關(guān)語音處理的知識,通過網(wǎng)上學(xué)習(xí)、資料查閱,自己設(shè)計程序,給出某一語音信號的短時過零率、短時能量、短時自相關(guān)特征的分析結(jié)果,并借助時域分析方法檢測所分析語音信號的基音周期。2)研究設(shè)計型實(shí)驗(yàn)2:基于MATLAB分析語音信號頻域特征要求:按所學(xué)相關(guān)語音處理的得知識,通過網(wǎng)上學(xué)習(xí)、資料查閱,自己設(shè)計程序,
3、給出某一語音信號的短時譜、倒譜、語譜圖的分析結(jié)果,并借助頻域分析方法檢測所分析語音信號的基音周期或共振峰。3)研究設(shè)計型實(shí)驗(yàn)3:基于MATLAB進(jìn)行語音信號的LPC分析要求(yoqi):按所學(xué)相關(guān)語音處理的知識,通過網(wǎng)上學(xué)習(xí)、資料查閱,自己設(shè)計程序,給出某一語音信號的LPC分析(fnx)結(jié)果,包括LPC譜、LPCC譜的分析結(jié)果,并借助LPC分析方法檢測所分析語音信號的基音周期和共振峰。4)研究(ynji)設(shè)計型實(shí)驗(yàn)4:基于VQ的特定人孤立詞語音識別研究要求:按所學(xué)相關(guān)語音處理的知識,通過網(wǎng)上學(xué)習(xí)、資料查閱,借助MATLAB工具,自己設(shè)計基于VQ的碼本訓(xùn)練程序和識別程序(盡量選用所學(xué)HMM或DT
4、W方法設(shè)計識別程序),能識別特定人的語音,分析所設(shè)計系統(tǒng)的特性。參考資料實(shí)驗(yàn)一 基于MATLAB的語音信號時域特征分析(2學(xué)時)一、實(shí)驗(yàn)?zāi)康恼Z音信號是一種非平穩(wěn)的時變信號,它攜帶著各種信息。在語音編碼、語音合成、語音識別和語音增強(qiáng)等語音處理中無一例外需要提取語音中包含的各種信息。語音信號分析的目的就在與方便有效的提取并表示語音信號所攜帶的信息。語音信號分析可以分為時域和變換域等處理方法,其中時域分析是最簡單的方法,直接對語音信號的時域波形進(jìn)行分析,提取的特征參數(shù)主要有語音的短時能量,短時平均過零率,短時自相關(guān)函數(shù)等。本實(shí)驗(yàn)要求掌握時域特征分析原理,并利用已學(xué)知識,編寫程序求解語音信號的短時過零
5、率、短時能量、短時自相關(guān)特征,分析實(shí)驗(yàn)結(jié)果,并能掌握借助時域分析方法所求得的參數(shù)分析語音信號的基音周期及共振峰。二、實(shí)驗(yàn)原理及實(shí)驗(yàn)結(jié)果(自己補(bǔ)充)附錄(參考程序)1) 短時能量 (1)加矩形窗 a=wavread(beifeng.wav);subplot(6,1,1),plot(a);N=32;for i=2:6h=linspace(1,1,2.(i-2)*N);%形成(xngchng)一個矩形窗,長度為2.(i-2)*N En=conv(h,a.*a);% 求短時能量(nngling)函數(shù)En subplot(6,1,i),plot(En);if(i=2) legend(N=32);else
6、if(i=3) legend(N=64);elseif(i=4) legend(N=128);elseif(i=5) legend(N=256);elseif(i=6) legend(N=512);endend(2)加漢明窗 a=wavread(beifeng.wav);subplot(6,1,1),plot(a);N=32;for i=2:6h=hanning(2.(i-2)*N);%形成(xngchng)一個漢明窗,長度為2.(i-2)*N En=conv(h,a.*a);% 求短時能量函數(shù)En subplot(6,1,i),plot(En);if(i=2) legend(N=32);el
7、seif(i=3) legend(N=64);elseif(i=4) legend(N=128);elseif(i=5) legend(N=256);elseif(i=6) legend(N=512);endend2) 短時平均過零率a=wavread(beifeng.wav);n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);En=conv(h,a.*a); %求卷積得其短時能量函數(shù)Ensubplot(3,1,2),plot(En); for i=1:n-1 if a(i)=0 b(i)= 1; else b(i) = -1
8、; end if a(i+1)=0 b(i+1)=1; else b(i+1)= -1; end w(i)=abs(b(i+1)-b(i); %求出每相鄰(xin ln)兩點(diǎn)符號的差值的絕對值 end k=1; j=0;while (k+N-1)n Zm(k)=0; for i=0:N-1; Zm(k)=Zm(k)+w(k+i); end j=j+1; k=k+N/2; %每次移動(ydng)半個窗 end for w=1:j Q(w)=Zm(160*(w-1)+1)/(2*N); %短時平均(pngjn)過零率 end subplot(3,1,3),plot(Q),grid;3) 自相關(guān)函數(shù)
9、 N=240Y=WAVREAD(beifeng.wav);x=Y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endend j=1:240;plot(j,R);grid;實(shí)驗(yàn)(shyn)二 基于MATLAB分析語音信號(xnho)頻域特征一、實(shí)驗(yàn)(shyn)目的信號的傅立葉表示在信號的分析與處理中起著重要的作用。因?yàn)閷τ诰€性系統(tǒng)來說,可以很方便地確定其對正弦或復(fù)指數(shù)和的響應(yīng),所以傅立葉分析方法能完善地解決許多信號分析和處理問題。另外,傅立葉表示使信號的某些
10、特性變得更明顯,因此,它能更深入地說明信號的各項(xiàng)紅物理現(xiàn)象。 由于語音信號是隨著時間變化的,通常認(rèn)為,語音是一個受準(zhǔn)周期脈沖或隨機(jī)噪聲源激勵的線性系統(tǒng)的輸出。輸出頻譜是聲道系統(tǒng)頻率響應(yīng)與激勵源頻譜的乘積。聲道系統(tǒng)的頻率響應(yīng)及激勵源都是隨時間變化的,因此一般標(biāo)準(zhǔn)的傅立葉表示雖然適用于周期及平穩(wěn)隨機(jī)信號的表示,但不能直接用于語音信號。由于語音信號可以認(rèn)為在短時間內(nèi),近似不變,因而可以采用短時分析法。本實(shí)驗(yàn)要求掌握傅里葉分析原理,會利用已學(xué)的知識,編寫程序估計短時譜、倒譜,畫出語譜圖,并分析實(shí)驗(yàn)結(jié)果,在此基礎(chǔ)上,借助頻域分析方法所求得的參數(shù)分析語音信號的基音周期或共振峰。二、實(shí)驗(yàn)原理(自己補(bǔ)充)參考
11、(cnko)程序1)短時譜 cleara=wavread(beifeng.wav);subplot(2,1,1),plot(a);title(original signal);gridN=256;h=hamming(N);for m=1:N b(m)=a(m)*h(m)end y=20*log(abs(fft(b)subplot(2,1,2)plot(y);title(短時譜);grid2)語譜圖 x,fs,nbits=wavread(beifeng.wav)specgram(x,512,fs,100); xlabel(時間(shjin)(s);ylabel(頻率(pnl)(Hz);title
12、(語譜圖);3)倒譜和復(fù)倒譜(1)加矩形窗時的倒譜和復(fù)倒譜cleara=wavread(beifeng.wav,4000,4350);N=300;h=linspace(1,1,N);for m=1:Nb(m)=a(m)*h(m);end c=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d); subplot(2,1,1)plot(d);title(加矩形窗時的倒譜)subplot(2,1,2)plot(c);title(加矩形窗時的復(fù)倒譜)(2)加漢明窗時的倒譜和復(fù)倒譜cleara=wavread(beifeng.wav,4000,4350);N=
13、300;h=hamming(N);for m=1:Nb(m)=a(m)*h(m);end c=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d); subplot(2,1,1)plot(d);title(加漢明窗時的倒譜)subplot(2,1,2)plot(c);title(加漢明窗時的復(fù)倒譜)實(shí)驗(yàn)(shyn)三 基于MATLAB的LPC分析一、實(shí)驗(yàn)(shyn)目的線性預(yù)測分析是最有效的語音分析技術(shù)之一,在語音編碼、語音合成、語音識別和說話人識別等語音處理領(lǐng)域中得到了廣泛的應(yīng)用。語音線性預(yù)測的基本思想是:一個語音信號的抽樣值可以用過去若干個取樣值的
14、線性組合來逼近。通過使實(shí)際語音抽樣值與線性預(yù)測抽樣值的均方誤差達(dá)到最小,可以確定唯一(wi y)的一組線性預(yù)測系數(shù)。采用線性預(yù)測分析不僅能夠得到語音信號的預(yù)測波形,而且能夠提供一個非常好的聲道模型。如果將語音模型看作激勵源通過一個線性時不變系統(tǒng)產(chǎn)生的輸出,那么可以利用LP分析對聲道參數(shù)進(jìn)行估值,以少量低信息率的時變參數(shù)精確地描述語音波形及其頻譜的性質(zhì)。此外,LP分析還能夠?qū)舱穹?、功率譜等語音參數(shù)進(jìn)行精確估計,LP分析得到的參數(shù)可以作為語音識別的重要參數(shù)之一。由于語音是一種短時平穩(wěn)信號,因此只能利用一段語音來估計模型參數(shù)。此時有兩種方案:一種是將長的語音序列加窗,然后對加窗語音進(jìn)行LP分析,只
15、要限定窗的長度就可以保證分析的短時性,這種方案稱為自相關(guān)法;另一種方案不對語音加窗,而是在計算均方預(yù)測誤差時限制其取和區(qū)間,這樣可以導(dǎo)出LP分析的自協(xié)方差法。本實(shí)驗(yàn)要求掌握LPC原理,會利用已學(xué)的知識,編寫程序估計線性預(yù)測系數(shù)以及(yj)LPC的推演參數(shù),并能利用所求的相關(guān)參數(shù)估計語音的端點(diǎn)、清濁音判斷、基因周期、共振峰等。二、實(shí)驗(yàn)(shyn)原理三、實(shí)驗(yàn)(shyn)結(jié)果(參考)我們使用的原始語音為“北風(fēng)”,采樣頻率為11000Hz,運(yùn)行程序見附錄。在這里我們?nèi)〉?0幀進(jìn)行觀察,線性預(yù)測階數(shù)為12,看到圖3.1所示的原始語音幀的波形,預(yù)測語音幀波形和它們之間預(yù)測誤差的波形。圖3.2為原始語音幀
16、和預(yù)測語音幀的短時譜和LPC譜的波形圖3.1 原始語音幀、預(yù)測語音幀和預(yù)測誤差的波形圖3.2 原始語音幀和預(yù)測語音幀的短時譜和LPC譜的波形這里我們可以改變線性誤差的階數(shù)來觀察語音幀的短時譜和LP譜的變化情況,如圖3.3。圖3.3 預(yù)測(yc)階數(shù)對語音(yyn)幀短時譜和LPC譜的影響從圖中可以看出,P越大,LPC譜越能反映出語音短時譜的細(xì)節(jié)部分,但LPC譜的光滑度隨之下降。由于我們的目的只是用LPC譜反映聲道綜合效應(yīng)的譜的表示式,而具體的諧波形狀是通過激勵(jl)譜來控制的,因此LPC譜只要能夠體現(xiàn)出語音的共振峰的結(jié)構(gòu)和譜包絡(luò)就可以,因此從計算復(fù)雜性的角度分析,預(yù)測階數(shù)P應(yīng)該適中。圖3.4
17、是原始語音和預(yù)測誤差的倒譜波形,我們可以從中計算出原始語音的基音周期。從圖中看出兩峰值之間的間隔為40點(diǎn)左右,基音周期為40/11000=3.6ms,頻率為278Hz左右。圖3.4 原始語音和預(yù)測誤差的倒譜波形圖3.5給出了原始語音的語譜圖和預(yù)測語音的語譜圖,通過比較發(fā)現(xiàn),預(yù)測語音的預(yù)測效果還可以,基音頻率相差無幾。圖3.5 原始(yunsh)語音的語譜圖和預(yù)測語音的語譜圖三、附錄(LPC分析(fnx)參考程序)MusicSource = wavread(bei);Music_source = MusicSource;N = 2048; % window length,N = 100 - 10
18、00;Hamm = hamming(N); % create Hamming windowframe = input(請鍵入(jin r)想要處理的幀位置 = );% origin is current frameorigin = Music_source(frame - 1) * (N / 2) + 1):(frame - 1) * (N / 2) + N);Frame = origin .* Hamm; %Short Time Fourier Transform%s1,f1,t1 = specgram(MusicSource,N,N/2,N); Xs1,Ys1 = size(s1);for
19、 i = 1:Xs1 FTframe1(i) = s1(i,frame);end N1 = input(請鍵入預(yù)測器階數(shù) = ); % N1 is predictors ordercoef,gain = lpc(Frame,N1); % LPC analysis using Levinson-Durbin recursionest_Frame = filter(0 -coef(2:end),1,Frame); % estimate frame(LP)FFT_est = fft(est_Frame);err = Frame - est_Frame; % error% FFT_err = fft(
20、err);subplot(2,1,1),plot(1:N,Frame,1:N,est_Frame,-r);grid;title(原始語音幀vs.預(yù)測后語音幀)subplot(2,1,2),plot(err);grid;title(誤差);pause %subplot(2,1,2),plot(f,20*log(abs(FTframe2);grid;title(短時譜) % Gain solution using G2 = Rn(0) - sum(ai*Rn(i),i = 1,2,.,P%fLength(1 : 2 * N) = origin,zeros(1,N); Xm = fft(fLengt
21、h,2 * N);X = Xm .* conj(Xm);Y = fft(X , 2 * N);Rk = Y(1 : N);PART = sum(coef(2 : N1 + 1) .* Rk(1 : N1);G = sqrt(sum(Frame.2) - PART); A = (FTframe1 - FFT_est(1 : length(f1) ./ FTframe1 ; % inverse filter A(Z)subplot(2,1,1),plot(f1,20*log(abs(FTframe1),f1,(20*log(abs(1 ./ A),-r);grid;title(短時譜);subpl
22、ot(2,1,2),plot(f1,(20*log(abs(G ./ A);grid;title(LPC譜);pause %plot(abs(ifft(FTframe1 ./ (G ./ A);grid;title(excited)%plot(f1,20*log(abs(FFT_est(1 : length(f1) .* A / G );grid;%pause % find_pitch%temp = FTframe1 - FFT_est(1 : length(f1); % not move higher frequnce pitch1 = log(abs(temp);pLength = len
23、gth(pitch1);result1 = ifft(pitch1,N); % move higher frequncepitch1(pLength - 32) : pLength) = 0;result2 = ifft(pitch1,N); % direct do real cepstrum with errpitch = fftshift(rceps(err);origin_pitch = fftshift(rceps(Frame);subplot(211),plot(origin_pitch);grid;title(原始(yunsh)語音幀倒譜(直接調(diào)用函數(shù));subplot(212),
24、plot(pitch);grid;title(預(yù)測(yc)誤差倒譜(直接調(diào)用函數(shù));pause subplot(211),plot(1:length(result1),fftshift(real(result1);grid;title(預(yù)測誤差倒譜(根據(jù)定義(dngy)編寫,沒有去除高頻分量);subplot(212),plot(1:length(result2),fftshift(real(result2);grid;title(預(yù)測誤差倒譜(根據(jù)(gnj)定義編寫,去除高頻分量);實(shí)驗(yàn)四 基于VQ的特定(tdng)人孤立詞語音識別研究一、實(shí)驗(yàn)(shyn)目的矢量量化(Vector Quan
25、tization)是一種極其重要的信號壓縮方法,是自70年代末才發(fā)展起來的。它廣泛應(yīng)用于語音編碼、語音識別與合成、圖象壓縮等領(lǐng)域。VQ在語音信號處理中占有十分重要的地位。許多重要的研究課題中,特別是低速語音編碼和語音識別的研究中,VQ都起著非常重要的作用。量化可以分為兩大類:一類是標(biāo)量量化,另一類是矢量量化。標(biāo)量量化是將取樣后的信號值逐個地進(jìn)行量化,而矢量量化是將若干個取樣信號分成一組,即構(gòu)成一個矢量,然后對此矢量一次進(jìn)行量化。當(dāng)然,矢量量化壓縮數(shù)據(jù)的同時也有信息的損失,但這僅取決于量化的精度。矢量量化是標(biāo)量量化的發(fā)展,可以說,凡是要用量化的地方都可以應(yīng)用矢量量化。 本實(shí)驗(yàn)要求掌握矢量量化的原
26、理,會利用已學(xué)的相關(guān)語音特征,構(gòu)建語音特征矢量,然后利用VQ技術(shù)(jsh),編寫訓(xùn)練VQ碼表的程序,并在此基礎(chǔ)上利用所學(xué)的語音識別技術(shù),編程實(shí)現(xiàn)基于矢量量化的特定人孤立詞語音識別,要注意的是識別過程中語音端點(diǎn)如何檢測,從識別的實(shí)時性角度出發(fā),建議能利用VC技術(shù)實(shí)現(xiàn)。二、實(shí)驗(yàn)(shyn)原理三、實(shí)驗(yàn)(shyn)結(jié)果(根據(jù)所給的資料,仔細(xì)加以整理)基于VQ的特定人孤立詞語音識別徐海兒044100230摘要: 本次設(shè)計采用基于矢量量化的特定人孤立詞語音識別。先對語音進(jìn)行預(yù)加重端點(diǎn)檢測處理,接著提取特征矢量參數(shù)(采用MFCC系數(shù)),然后對模版語音用適量量化方法進(jìn)行訓(xùn)練得到語音模版,最后用測試語音測試系
27、統(tǒng)性能。實(shí)驗(yàn)結(jié)果顯示對訓(xùn)練人的語音識別率能達(dá)到100%,但對沒有訓(xùn)練過的人的拒識率卻不盡人意。關(guān)鍵字: 語音識別,MFCC系數(shù),矢量量化語音識別系統(tǒng)根據(jù)對說話人說話方式的要求,可以分為孤立字(詞)語音識別系統(tǒng),連接詞語音識別系統(tǒng)以及連續(xù)語音識別系統(tǒng);根據(jù)對說話人的依賴程度,可以分為特定人和非特定人語音識別系統(tǒng)。孤立字識別系統(tǒng)用于識別孤立發(fā)音的字(詞)。孤立字在字與字之間存在發(fā)音停頓,單字之間的端點(diǎn)檢測比較容易;同時一般對單字的發(fā)音都比較認(rèn)真,且單字之間的協(xié)同發(fā)音影響較小,較容易得到較高的識別率。采用模式匹配原理的語音識別系統(tǒng)組語音識別系統(tǒng)根據(jù)對說話人說話方式的要求,可以分為孤立字(詞)語音識別
28、系統(tǒng),連接詞語音識別系統(tǒng)以及連續(xù)語音識別系統(tǒng);根據(jù)對說話人的依賴程度,可以分為特定人和非特定人語音識別系統(tǒng)。孤立字識別系統(tǒng)用于識別孤立發(fā)音的字(詞)。孤立字在字與字之間存在發(fā)音停頓,單字之間的端點(diǎn)檢測比較容易;同時一般對單字的發(fā)音都比較認(rèn)真,且單字之間的協(xié)同發(fā)音影響較小,較容易得到較高的識別率。本次設(shè)計采用基于矢量量化的特定人孤立詞語音識別。1 、系統(tǒng)(xtng)整體設(shè)計失真測度 識別(shbi) 輸出模式匹配特征參數(shù)提取預(yù)處理語音(yyn)信號語音模版 訓(xùn)練 圖1 系統(tǒng)整體框圖如圖1所示,其基本算法包括以下幾個階段:首先是端點(diǎn)檢測,通過端點(diǎn)檢測捕捉到數(shù)據(jù)中的語音信息,然后將語音信息進(jìn)行分幀和
29、加窗處理,提取一種用于語音識別的基本識別參數(shù),接著進(jìn)行矢量量化,最后將量化得到的特征矢量送入識別模型進(jìn)行識別。2 、端點(diǎn)檢測采用雙門限法來檢測端點(diǎn)。同時,利用過零率檢測清音,用短時能量檢測濁音,兩者配合。首先為短時能量和過零率分別確定兩個門限。一個比較低的門限,數(shù)值很小,對信號的變化比較敏感,很容易超過;另一個是比較高的門限,數(shù)值很大。低門限被超過未必是語音的開始,有可能是很短的噪聲引起。超過高門限意味著語音信號開始。整個端點(diǎn)檢測可分為四段:靜音、過渡段、語音段、結(jié)束。實(shí)驗(yàn)時使用一個變量status表示當(dāng)前狀態(tài)。靜音段,如果能量或過零率超過低門限,就開始標(biāo)記起始點(diǎn),進(jìn)入過渡段。過渡段當(dāng)兩個參數(shù)
30、值都回落到低門限以下,就將當(dāng)前狀態(tài)恢復(fù)到靜音狀態(tài)。而如果過渡段中兩個參數(shù)中的任一個超過高門限,則進(jìn)入到語音段。處于語音段時,如果兩參數(shù)降低到門限以下,而且總的記時長度小于最短時間門限,則認(rèn)為這是一段噪音,繼續(xù)掃描以后的語音數(shù)據(jù),否則標(biāo)記好結(jié)束端點(diǎn)。3 、特征參數(shù)提取 常用的語音識別參數(shù)有線性預(yù)測參數(shù)(LPC),線性預(yù)測倒譜參數(shù)(LPCC)和Mel尺度倒譜參數(shù)(MFCC)等。MFCC參數(shù)表示人對聲音高低的感受是一種主觀感受,用客觀度量來表征這種主觀感受就采用了Mel標(biāo)度。Mel濾波器組是一組采用Mel刻度的線性相位FIR帶通濾波器,這組濾波器中的每一個中心頻率按Mel刻度在討論的頻帶上均勻分布,
31、每個濾波器的帶寬都為臨界帶寬。主要是MFCC參數(shù)考慮了聽覺系統(tǒng)的非線性特點(diǎn),能夠有效地提高系統(tǒng)的性能。MFCC參數(shù)與LPCC相比的優(yōu)點(diǎn):1)語音的信息大多集中在低頻部分,而高頻部分易受環(huán)境噪聲干擾。MFCC參數(shù)將線性頻標(biāo)轉(zhuǎn)化為Mel頻標(biāo),強(qiáng)調(diào)語音的低頻信息,從而突出了有利于識別的信息,屏蔽了噪聲干擾。2) MFCC沒有任何前提假設(shè),在各種情況(qngkung)下均可使用。而LPCC參數(shù)假定(jidng)所處理的信號為AR信號,對于動態(tài)特性較強(qiáng)的輔音,這個假設(shè)并不嚴(yán)格成立。以上(yshng)分析可以得出MFCC的識別性能和噪聲魯棒性優(yōu)于LPCC,根據(jù)有關(guān)記錄使用Mel倒譜參數(shù)(MFCC)的識別率
32、確比使用線性預(yù)測參數(shù)(LPC)的識別率高4個百分點(diǎn),因此本系統(tǒng)選擇MFCC (Mel倒譜參)作為基本識別參數(shù)。MFCC參數(shù)提取的過程如圖2,其中Mel濾波器組的作用是利用人耳聽覺特性對語音信號的幅度平方譜進(jìn)行平滑。對數(shù)操作的用途:壓縮語音譜的動態(tài)范圍;考慮乘性噪聲,將頻域中的乘性成分轉(zhuǎn)換成加性成分。離散余弦變化主要是用來對不同頻段的頻譜成份進(jìn)行解相關(guān)處理,使得各維向量之間相互獨(dú)立。預(yù)加重DFT、FFTLogMEL頻率濾波器組DCT求倒譜 圖2 MFCC參數(shù)提取流程4 、矢量量化4.1 概念矢量量化(Vector Quantization)是一種重要的信號壓縮方法。矢量量化主要適用于小詞匯量、孤
33、立詞的語音識別。其過程是:將語音信號波形的k個樣點(diǎn)的每一幀,或有k個參數(shù)的每一參數(shù)幀,構(gòu)成k維空間中的一個矢量,然后對矢量進(jìn)行量化。量化時,將k維無限空間劃分為M個區(qū)域邊界,然后將輸入矢量與這些邊界進(jìn)行比較,并被量化為“距離”最小的區(qū)域邊界的中心矢量值。矢量量化器的設(shè)計就是從大量信號樣本中訓(xùn)練出好的碼書,從實(shí)際效果出發(fā)尋找到好的失真測度定義公式,設(shè)計出最佳的矢量量化系統(tǒng),用最少的搜索和計算失真的運(yùn)算量,實(shí)現(xiàn)最大可能的平均信噪比。失真測度主要有均方誤差(即歐氏距離)、加權(quán)的均方誤差、ltakura-Saito譜失真測度、似然比失真測度等。初始碼書的生成可以是隨機(jī)選取、分裂生成法、乘積碼書法。在選
34、定了失真測度和初始碼書后,就用LBG算法,對初始碼書進(jìn)行迭代優(yōu)化,一直到系統(tǒng)性能滿足要求或不再有明顯的改進(jìn)為止。核心思想可以這樣理解:如果一個碼書是為某一特定的信源而優(yōu)化設(shè)計的,那么由這一信息源產(chǎn)生的信號與該碼書的平均量化失真就應(yīng)小于其它信息的信號與該碼書的平均量化失真,也就是說編碼器本身存在區(qū)分能力。VQ是將若干個幅度連續(xù)取值的時域采樣信號分成一組,即構(gòu)成矢量,然后用若干離散的數(shù)字值(稱為標(biāo)號)來表示各種矢量。一個VQ編碼器(或譯碼器),往往擁有一個或多個由具有代表意義的矢量組成的集合,稱為“碼本”,其中每個矢量稱為“碼矢量”,或稱為“碼字”VQ的原理用在語音識別中,訓(xùn)練用的語音特征通過聚類
35、的方法形成碼書。識別時,VQ編碼器將待識別語音的特征矢量與碼書中的每個矢量進(jìn)行是真測度運(yùn)算,最小的是真測度所對應(yīng)的碼字的標(biāo)號代替輸入矢量,這就完成了VQ編碼的任務(wù)。 VQ編碼器端只需將標(biāo)號對應(yīng)的碼字輸出即可。這個輸出矢量并非編碼器的輸入矢量,而是與輸入矢量不同的碼字,因此,VQ會帶來一定的量化誤差。4.2 碼本設(shè)計目前訓(xùn)練碼書時最基本也是最常用(chn yn)的算法是LBG算法,反復(fù)迭代、逐步優(yōu)化。我們(w men)采用以歐氏距離計算兩個矢量之間的畸變:1)存儲(cn ch)形成VQ碼本所需全部輸入矢量x的集合S.2)設(shè)置迭代算法的最大迭代次數(shù)L.3)設(shè)置相對失真改進(jìn)量4)設(shè)置M個初始碼字Y1
36、,Y2,YM5)設(shè)置總失真6)設(shè)置迭代初值m=1;7)根據(jù)最近鄰準(zhǔn)則,將s分成M個子集S1,S2,.,SM,即當(dāng)X屬于S1時,下式成立:d(X,Y1)=d(X,Yi), i =M其中d (x, Y)表示X和Y的歐氏距離。這種劃分方法稱為最鄰近劃分。8)計算總失真初始碼字的選擇也是碼本設(shè)計中一個重要問題。LBG算法是一個使總畸變單調(diào)下降的算法。一個VQ系統(tǒng)的總畸變是它的M個碼字決定的狀態(tài)空間點(diǎn)的函數(shù)。大部分情況下,這個函數(shù)往往都是凸函數(shù),因此LBG算法僅僅只能收斂到某個局部最優(yōu)點(diǎn)上,而收斂不到全局最優(yōu)點(diǎn)上。具體收斂到哪一個局部最優(yōu)點(diǎn),就由M個初始碼字決定。初始碼字的選擇有很多種方法。最簡單的是隨
37、機(jī)選取,但是這種方法的效果并不好,因?yàn)檫@些被選中碼字在集合中的分布可能很不均勻,偶然性很大。一般采取的方法是分裂法。其基本步驟為:第一步先求得s中全體x的質(zhì)心x1;,然后在s中找一個與此質(zhì)心畸變最大的矢量x2,以此兩個矢量x1,x2;以x1,x2為基準(zhǔn)作最近鄰劃分,形成兩個子集。然后對著兩個子集分別按同樣的方法處理就可以得到四個子集。以此類推,經(jīng)過B次分裂后,便可以得到2的B次方個子集,這M個子集的質(zhì)心便是初始碼字。碼本生成程序:從輸入信號中經(jīng)過預(yù)加重、分幀、加窗等處理計算出短時能量,然后經(jīng)過離散傅立葉變換DFT)得到線性頻譜,通過Mel頻率濾波器組得到Mel頻譜,并通過對數(shù)能量的處理得到對數(shù)
38、頻譜,再經(jīng)過離散余弦變換到倒譜頻譜域,提取Met頻率倒譜系數(shù)(MFCC參數(shù)),最后保存MFCC參數(shù)的雙精度數(shù)組;并從MFCC的結(jié)果建立程序中用到的點(diǎn)數(shù)組坐標(biāo),一個單詞一個點(diǎn)序列:根據(jù)這些點(diǎn)為每個單詞建立一個VQ碼本;此程序?qū)⑤斎胝Z音信號轉(zhuǎn)換成一系列聚類質(zhì)心點(diǎn)和對應(yīng)的下標(biāo)。4.3 碼本搜索當(dāng)一個待量化矢量輸入vQ編碼器時,vQ編碼器需要從碼本中搜索出與輸入矢量最接近的碼字。如何快速而準(zhǔn)確地找到這個碼字,就是研究搜索策略的意義所在。最簡單的方法是比較所有碼字和輸入矢量的距離。距離最小的便是目標(biāo)碼字,這種搜索方法稱為“全搜索”,這種方法流程簡單,但是當(dāng)碼本容量很大時全搜索方法的計算量很大。優(yōu)化的方法
39、主要有兩種:改變碼本結(jié)構(gòu)和改進(jìn)搜索算法,這兩種算法會節(jié)省一定的計算量,但是性能上跟全搜索算法相比有一定程度的下降,由于本次實(shí)驗(yàn)的設(shè)計目的是進(jìn)行孤立詞識別,選擇全搜索算法。4.4 拒識采用一個平均失真測度來判定測試語音是否為訓(xùn)練人。設(shè)置置信區(qū)間Dmin(i)/K,Dmax(i)/K,若輸入語音的失真測度30%不在置信區(qū)間,則拒識。5實(shí)驗(yàn)輸入語音“前”,“后”,“左”,“右”,“東”,“南”,“西”,“北”,“上”,“下”,一遍用來訓(xùn)練語音模版,一遍用來測試。Matlab仿真結(jié)果:這是一個簡易語音識別系統(tǒng),請保證(bozhng)已經(jīng)將您的語音保存在相應(yīng)文件夾中!正在(zhngzi)訓(xùn)練您的語音模版
40、指令,請稍后.語音指令訓(xùn)練(xnlin)成功,恭喜!正在處理您的測試語音指令,請稍后.對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:前; 識別結(jié)果為:前對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:后; 識別結(jié)果為:后對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:左; 識別結(jié)果為:左對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:右; 識別結(jié)果為:右對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:東; 識別結(jié)果為:東對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令
41、,請稍后.您輸入的語音指令為:南; 識別結(jié)果為:南對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:西; 識別結(jié)果為:西對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:北; 識別結(jié)果為:北對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:上; 識別結(jié)果為:上對訓(xùn)練過的語音進(jìn)行測試:正在匹配您的語音指令,請稍后.您輸入的語音指令為:下; 識別結(jié)果為:下統(tǒng)計結(jié)果如下:特征參數(shù)正確詞/詞數(shù)(女)正確詞/詞數(shù)(男)MFCC10/1010/10 表1 訓(xùn)練人識別統(tǒng)計結(jié)果如表1所示,用MFCC系數(shù)作為特征矢量,對于訓(xùn)練人它的識別率可
42、以達(dá)到100%。同時,我們又對非訓(xùn)練人進(jìn)行測試。沒有加拒識條件:特征參數(shù)正確詞/詞數(shù)(女)MFCC4/10增加拒識條件(tiojin):實(shí)驗(yàn)結(jié)果對已經(jīng)訓(xùn)練過的語音(yyn)進(jìn)行測試;正在處理您的測試(csh)語音指令,請稍后.正在匹配您的語音指令,請稍后.您輸入的語音指令為:前; 識別結(jié)果為:前正在匹配您的語音指令,請稍后.您輸入的語音指令為:后; 識別結(jié)果為:后正在匹配您的語音指令,請稍后.您輸入的語音指令為:左; 識別結(jié)果為:左正在匹配您的語音指令,請稍后.您輸入的語音指令為:右; 識別結(jié)果為:右正在匹配您的語音指令,請稍后.您輸入的語音指令為:東; 識別結(jié)果為:東正在匹配您的語音指令,請
43、稍后.您輸入的語音指令為:南; 識別結(jié)果為:南正在匹配您的語音指令,請稍后.您輸入的語音指令為:西; 識別結(jié)果為:西正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!對沒有訓(xùn)練過的語音進(jìn)行測試:正在處理您的測試語音指令,請稍后.正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的
44、語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入的語音無效!正在匹配您的語音指令,請稍后.您輸入(shr)的語音無效!正在(zhngzi)匹配您的語音指令,請稍后.您輸入的語音(yyn)無效!特征參數(shù)(正確詞/詞數(shù))訓(xùn)練人 (拒識/詞數(shù))非訓(xùn)練人MFCC系數(shù)7/1010/10若增加拒識條件,對于非訓(xùn)練人,拒識率能達(dá)到100%,但降低了訓(xùn)練人語音的識別率,為70%,說明本系統(tǒng)存在問題,需要改進(jìn)的空間還很大。尤其是失真測度,拒識條件等還需要改進(jìn)。6程序(部分)1、mfcc.mfunction ccc =
45、mfcc(x)bank=melbankm(24,256,8000,0,0.5,m);bank=full(bank);bank=bank/max(bank(:); 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);for i=1:size(xx,1) y = xx(i,:); s = y .* hamming(256
46、); 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,:);enddtm = dtm / 3; ccc = m dtm;ccc = ccc(3:size(m,1)-2,:);2、vad.mfunction x1,x2 = vad(x)x = double(x);x = x / max(a
47、bs(x); FrameLen = 240;FrameInc = 80; amp1 = 10;amp2 = 2;zcr1 = 10;zcr2 = 5; maxsilence = 8; % 6*10ms = 30msminlen = 15; % 15*10ms = 150msstatus = 0;count = 0;silence = 0; tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);tmp2 = enframe(x(2:end) , FrameLen, FrameInc);signs = (tmp1.*tmp2)0.02;zcr = sum(s
48、igns.*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 if amp(n) amp1 x1 = max(n-count-1,1); status = 2; silence = 0; count = count + 1; elsei
49、f amp(n) amp2 | . zcr(n) zcr2 status = 1; count = count + 1; else status = 0; count = 0; end case 2, if amp(n) amp2 | . zcr(n) zcr2 count = count + 1; else silence = silence+1; if silence maxsilence count = count + 1; elseif count minlen status = 0; silence = 0; count = 0; else status = 3; end end c
50、ase 3, break; endend count = count-silence/2;x2 = x1 + count -1; 3、codebook.m%clear;function xchushi= codebook(m)a,b=size(m);m1,m2=szhixin(m);m3,m4=szhixin(m2);m1,m2=szhixin(m1);m7,m8=szhixin(m4);m5,m6=szhixin(m3);m3,m4=szhixin(m2);m1,m2=szhixin(m1);m15,m16=szhixin(m8);m13,m14=szhixin(m7);m11,m12=sz
51、hixin(m6);m9,m10=szhixin(m5);m7,m8=szhixin(m4);m5,m6=szhixin(m3);m3,m4=szhixin(m2);m1,m2=szhixin(m1);chushi(1,:)=zhixinf(m1);chushi(2,:)=zhixinf(m2);chushi(3,:)=zhixinf(m3);chushi(4,:)=zhixinf(m4);chushi(5,:)=zhixinf(m5);chushi(6,:)=zhixinf(m6);chushi(7,:)=zhixinf(m7);chushi(8,:)=zhixinf(m8);chushi(
52、9,:)=zhixinf(m9);chushi(10,:)=zhixinf(m10);chushi(11,:)=zhixinf(m11);chushi(12,:)=zhixinf(m12);chushi(13,:)=zhixinf(m13);chushi(14,:)=zhixinf(m14);chushi(15,:)=zhixinf(m15);chushi(16,:)=zhixinf(m16);sumd=zeros(1,1000); k=1;dela=1;xchushi=chushi;while(k1 dela=abs(sumd(k)-sumd(k-1)/sumd(k);end k=k+1;
53、chushi=xchushi;end return 4、testvq.m clear;disp(這是一個簡易語音識別系統(tǒng),請保證已經(jīng)(y jing)將您的語音保存在相應(yīng)文件夾中)disp(正在訓(xùn)練您的語音模版指令(zhlng),請稍后.)for i=1:10 fname = sprintf(D:matlabworkdtw1海兒的聲音(shngyn)%da.wav,i-1); x = wavread(fname); x1 x2 = vad(x); m = mfcc(x); m = m(x1:x2-5,:); ref(i).code=codebook(m);enddisp(語音指令訓(xùn)練成功,恭喜!
54、) disp(正在測試您的測試語音指令,請稍后.)for i=1:10fname = sprintf(D:matlabworkdtw1海兒的聲音%db.wav,i-1); x = wavread(fname); x1 x2 = vad(x); mn = mfcc(x); mn = mn(x1:x2-5,:); %mn = mn(x1:x2,:) test(i).mfcc = mn;endsumsumdmax=0;sumsumdmin=0;disp(對訓(xùn)練過的語音進(jìn)行測試)for w=1:10 sumd=zeros(1,10); a,b=size(test(w).mfcc);for i=1:10
55、 for p=1:a for j=1:16 d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:); end dmin=min(d); sumd(i)=sumd(i)+dmin;%endendsumdmin=min(sumd)/a;sumdmin1=min(sumd);sumdmax(w)=max(sumd)/a;sumsumdmin=sumdmin+sumsumdmax;sumsumdmax=sumdmax(w)+sumsumdmax; disp(正在匹配(ppi)您的語音指令,請稍后.)for i=1:10 if (sumd(i)=sumdmin1)
56、 switch (i) case 1 fprintf(您輸入(shr)的語音指令為:%s; 識別(shbi)結(jié)果為%sn,前, 前); case 2 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,后, 后); case 3 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,左, 左); case 4 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,右, 右); case 5 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,東, 東); case 6 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,南, 南); case 7
57、fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,西, 西); case 8 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,北, 北); case 9 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,上, 上); case 10 fprintf(您輸入的語音指令為:%s; 識別結(jié)果為%sn,下, 下); otherwise fprintf(error); end endendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10; disp(對沒有(mi yu)訓(xùn)練過的語音進(jìn)行測試) disp(正在測試你的語音(y
58、yn),請稍后.)for i=1:10fname = sprintf(D:matlabworkdtw1%db.wav,i-1); x = wavread(fname); x1 x2 = vad(x); mn = mfcc(x); mn = mn(x1:x2-5,:); %mn = mn(x1:x2,:) test(i).mfcc = mn;end for w=1:10 sumd=zeros(1,10); a,b=size(test(w).mfcc);for i=1:10 for p=1:a for j=1:16 d(j)=odistan(test(w).mfcc(p,:),ref(i).cod
59、e(j,:); end dmin=min(d); sumd(i)=sumd(i)+dmin;%endendsumdmin=min(sumd); z=0;for i=1:10 if (sumd(i)/a)delamax)| z=z+1; endend disp(正在(zhngzi)匹配您的語音指令,請稍后.) if z Question 2:畫出原始語音(yyn)波形);t = 0:1/fs1:(length(s1) - 1)/fs1;plot(t, s1), axis(0, (length(s1) - 1)/fs1 -0.4 0.5);title(原始語音s1的波形);xlabel(時間/s)
60、;ylabel(幅度)pause close all%Question 3 (linear)disp( Question 3: 畫出線性譜);M = 100;%當(dāng)前(dngqin)幀數(shù)N = 256;%幀長frames = blockFrames(s1, fs1, M, N);%分幀t = N / 2;tm = length(s1) / fs1;subplot(121);imagesc(0 tm, 0 fs1/2, abs(frames(1:t, :).2), axis xy;title(能量(nngling)譜(M = 100, N = 256);xlabel(時間(shjin)/s);yl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025長沙市長沙縣泊雅茶行官方網(wǎng)站前端設(shè)計與制作橫向項(xiàng)目合同書
- 2025稻谷種子買賣合同
- 2025客房部承包經(jīng)營合同范文
- 2025破樁頭承包合同
- 2025公司合同存檔管理流程
- 復(fù)印機(jī)租賃合同書
- 個人租房委托出租合同范本
- 電子廠廠房裝修工程施工合同
- 2025年上海市種禽購買合同樣本(2篇)
- 建行法人還款合同模板
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務(wù)分析報告
- 無違法犯罪記錄證明申請表(個人)
- 大學(xué)生勞動教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實(shí)施完整版
- 2023年Web前端技術(shù)試題
評論
0/150
提交評論