lvox2

9
%-------------------------------- % LABVOX 2 %-------------------------------- % 2.1. FORMA SEMNALULUI VOCAL % Se incarca fisierul de semnal corespunzator cuvantului 'SASE' load sase % Se vizualizeaza forma semnalului % plot(sase), title('Cuvantul "SASE"'),xlabel('Esantioane'),... % ylabel('Amplitudine') % pause % Se definesc patru intervale de semnal corespunzatoare (aproximativ) % celor patru litere ale cuvantului % sh_int=1:1400; % a_int=1401:2600; % s_int=2601:4000; % e_int=4000:5200; % Se vizualizeaza zona de semnal asociata fonemului "SH" % subplot(2,2,1),plot(sase(sh_int)),title('Fonemul "SH"') % axis([sh_int(1) sh_int(length(a_int)) min(sase) max(sase)]) % Se procedeaza similar pentru zonele de semnal asociate fonemelor % "A", "S", "E" % subplot(2,2,2),plot(a_int,sase(a_int)),title('Fonemul "A"') % axis([a_int(1) a_int(length(a_int)) min(sase) max(sase)]) % subplot(2,2,3),plot(s_int,sase(s_int)),title('Fonemul "S"'),... % xlabel('Esantioane') % axis([s_int(1) s_int(length(a_int)) min(sase) max(sase)]) % subplot(2,2,4),plot(e_int,sase(e_int)),title('Fonemul "E"'),... % xlabel('Esantioane') % axis([e_int(1) e_int(length(a_int)) min(sase) max(sase)]) pause % R1. Caracterizati forma de unda corespunzatoare fiecarui fonem % 2.2. PARAMETRI IN DOMENIUL TIMP AI SEMNALULUI VOCAL ESTIMATI PE % TERMEN SCURT: ENERGIE, MAGNITUDINE, RATA DE TRECERI PRIN ZERO % Se defineste frecventa de esantionare Fs=8000; % Se examineaza informatiile existente despre comenzile f_eng, f_mag, % f_zcr. % help f_eng % Se calculeaza si se afiseaza energia semnalului pe fiecare % fereastra, conform formulei % .... % folosind intervale de 25 ms, fara suprapunerea intervalelor, cu % frecventa de esantionare data

Upload: nicoletalupu22

Post on 06-Nov-2015

225 views

Category:

Documents


0 download

DESCRIPTION

laborator

TRANSCRIPT

%--------------------------------

%--------------------------------

%LABVOX 2

%--------------------------------

% 2.1. FORMA SEMNALULUI VOCAL

% Se incarca fisierul de semnal corespunzator cuvantului 'SASE'

load sase

% Se vizualizeaza forma semnalului

%plot(sase), title('Cuvantul "SASE"'),xlabel('Esantioane'),...

% ylabel('Amplitudine')

%pause

% Se definesc patru intervale de semnal corespunzatoare (aproximativ)

% celor patru litere ale cuvantului

%sh_int=1:1400;

%a_int=1401:2600;

%s_int=2601:4000;

%e_int=4000:5200;

% Se vizualizeaza zona de semnal asociata fonemului "SH"

%subplot(2,2,1),plot(sase(sh_int)),title('Fonemul "SH"')

%axis([sh_int(1) sh_int(length(a_int)) min(sase) max(sase)])

% Se procedeaza similar pentru zonele de semnal asociate fonemelor

% "A", "S", "E"

%subplot(2,2,2),plot(a_int,sase(a_int)),title('Fonemul "A"')

%axis([a_int(1) a_int(length(a_int)) min(sase) max(sase)])

%subplot(2,2,3),plot(s_int,sase(s_int)),title('Fonemul "S"'),...

% xlabel('Esantioane')

%axis([s_int(1) s_int(length(a_int)) min(sase) max(sase)])

%subplot(2,2,4),plot(e_int,sase(e_int)),title('Fonemul "E"'),...

% xlabel('Esantioane')

% axis([e_int(1) e_int(length(a_int)) min(sase) max(sase)])

pause

% R1. Caracterizati forma de unda corespunzatoare fiecarui fonem

% 2.2. PARAMETRI IN DOMENIUL TIMP AI SEMNALULUI VOCAL ESTIMATI PE

% TERMEN SCURT: ENERGIE, MAGNITUDINE, RATA DE TRECERI PRIN ZERO

% Se defineste frecventa de esantionare

Fs=8000;

% Se examineaza informatiile existente despre comenzile f_eng, f_mag,

% f_zcr.

%help f_eng

% Se calculeaza si se afiseaza energia semnalului pe fiecare

% fereastra, conform formulei

% ....

% folosind intervale de 25 ms, fara suprapunerea intervalelor, cu

% frecventa de esantionare data

%[ener,scala]=f_eng(sase,0.025,0,Fs);

%subplot(3,1,1),stairs(scala,ener),title('Energie/interval')

% Se procedeaza similar pentru magnitudinea respectiv rata de treceri

% prin zero a semnalului, conform formulelor

% ....

% ....

%[magn,scala]=f_mag(sase,0.025,0,Fs);

%subplot(3,1,2),stairs(scala,magn),title('Magnitudine/interval')

%[rtz,scala]=f_zcr(sase,0.025,0,Fs);

%subplot(3,1,3),stairs(scala,rtz),...

% title('Rata de treceri prin zero/interval'),xlabel('Timp (s)')

%pause

% R2. Caracterizati cele patru foneme din punctul de vedere al

% valorilor obtinute pentru marimile ener, magn si rtz

% 2.3. PARAMETRI IN DOMENIUL FRECVENTA AI SEMNALULUI VOCAL ESTIMATI PE

% TERMEN SCURT: FORMANTI, FRECVENTA FUNDAMENTALA

% Se calculeaza si se afiseaza D.S.P. pentru intervalele de semnal

% indicate anterior, folosind intervale de 256 esantioane, frecventa de

% esantionare data, fereastra Hanning de 256 esantioane si suprapunere

% de 128 esantioane

%[P_sh,f1]=psd(sase(sh_int),256,Fs,256,128);

%subplot(2,2,1),plot(f1,10*log10(P_sh)),...

% title('D.S.P. fonem "SH"'),ylabel('decibeli')

%[P_a,f1]=psd(sase(a_int),256,Fs,256,128);

%subplot(2,2,2),plot(f1,10*log10(P_a)),...

% title('D.S.P. fonem "A"'),ylabel('decibeli')

%[P_s,f1]=psd(sase(s_int),256,Fs,256,128);

%subplot(2,2,3),plot(f1,10*log10(P_s)),title('D.S.P. fonem "S"'),...

% xlabel('Frecventa (Hz)'),ylabel('decibeli')

%[P_e,f1]=psd(sase(e_int),256,Fs,256,128);

%subplot(2,2,4),plot(f1,10*log10(P_e)),title('D.S.P. fonem "E"'),...

% xlabel('Frecventa (Hz)'),ylabel('decibeli')

%pause

% R3. Comparati graficele obtinute. Notati frecventele la care apar

% principalele maxime locale ale D.S.P. pentru cele patru foneme.

% Justificati prezenta acestora.

% Observati pozitia primului maxim semnificativ pentru fonemele

% "A" si "E".

% Se sterge fereastra grafica

close

% Se afiseaza din nou D.S.P., in prima sa parte, pentru intervalele de

% semnal "sonore" (corespunzatoare fonemelor "A" si "E")

% Se identifica primul maxim semnificativ si se determina frecventa la

% care apare acesta.

%[P_a,f1]=psd(sase(a_int),256,Fs,256,128);

%plot(f1(1:20),10*log10(P_a(1:20))),title('D.S.P. fonem "A"'),...

% xlabel('Frecventa (Hz)'),ylabel('decibeli')

%pause

%[P_e,f1]=psd(sase(e_int),256,Fs,256,128);

%plot(f1(1:20),10*log10(P_e(1:20))),title('D.S.P. fonem "E"'),...

% xlabel('Frecventa (Hz)'),ylabel('decibeli')

%pause

% R4. Explicati semnificatia acestei frecvente pentru intervalele de

% semnal "sonore"

% 2.4. ANALIZA PRIN PREDICTIE LINIARA

% 2.4.1. COEFICIENTI DE PREDICTIE, COEFICIENTI DE REFLEXIE

% Se defineste si se afiseaza un interval de semnal din fonemul "A", cu

% lungimea de 200 esantioane

L=200;

x=sase(1710:1710+L-1);

plot(x),title('Semnal vocal, fonemul "A"'),xlabel('Esantioane'),...

ylabel('Amplitudine')

pause

% Se va modela semnalul vocal prin predictie liniara (LPC) cu 10

% coeficienti. Coeficientii de predictie se determina din relatia

% matriciala

% ...

% Se examineaza informatiile existente despre comanda xcorr

% Se calculeaza si se afiseaza functia de autocorelatie a semnalului

%rx=xcorr(x);

%plot(rx),title('Functia de autocorelatie')

%pause

% Se formeaza si se afiseaza un vector continand valorile functiei de

% autocorelatie rx(0) ... rx(10)

%R=rx(L:L+9)

%plot(R),title('Vectorul R')

%axis([1 10 min(R) max(R)])

%pause

% Se examineaza informatiile existente despre comanda toeplitz

% Se formeaza si se examineaza matricea Toeplitz corespunzatoare

% vectorului R

%T=toeplitz(R)

% R5. Descrieti structura matricei rezultate

% Se formeaza vectorul termen liber din ecuatia matriciala

%R2=-rx(L+1:L+10)

% Se examineaza informatiile existente despre comanda inv

% Se determina vectorul coeficientilor de predictie

%A=inv(T)*R2

% Se adauga coeficientul A(0)=1 si se transforma in vector linie

%A=[1 A']

% Se examineaza informatiile existente despre comenzile levinson, lpc

% Se modeleaza vectorul de semnal x prin predictie liniara cu 10

% coeficienti folosind comanda lcp

%A1=lpc(x,10)

% Se compara rezultatele obtinute examinand diferenta celor doi vectori

% cu coeficientii de predictie

%A-A1

% Se examineaza informatiile existente despre comanda poly2rc

% Se transforma coeficientii de predictie, A(i) in coeficienti de

% reflexie K(i)

%K=poly2rc(A)

% R6. Faceti observatii asupra dinamicii coeficientilor A(i) si K(i)

% 2.4.2. FILTRUL DE PREDICTIE. EROAREA DE PREDICTIE

% Pentru a realiza un filtru digital de tip "numai poli", avand valorile

% vectorului A drept coeficienti ai numitorului, se formeaza un vector

% B corespunzator numaratorului, conform formulei

% ...

%B=[1 zeros(1,length(A)-1)]

% Se examineaza informatiile existente despre comanda impz

% Se afiseaza raspunsul la impuls al filtrului digital B/A

%plot(impz(B,A)),...

% title('Raspuns la impuls al filtrului de predictie cu 10 coef.'),...

% xlabel('Esantioane')

%pause

% Se compara semnalul vocal original cu cel rezultat in urma procesului

% de analiza prin predictie liniara urmata de sinteza

%subplot(2,1,1),plot(x),...

% title('Semnal vocal original, fonemul "A"')

%subplot(2,1,2),plot(impz(B,A,L)),...

% title('Raspuns la impuls al filtrului de predictie cu 10 coef.'),...

% xlabel('Esantioane')

%pause

% Se calculeaza Transformata Fourier a unui interval cu lungimea de 40

% esantioane din semnalul vocal original, ponderat cu o fereastra

% Hamming si se afiseaza spectrul de putere

%X=fft(x(1:40).*hamming(40)');

%f=(0:length(X)/2-1)/length(X)*Fs;

%subplot(2,1,1),...

% plot(f,10*log10(X(1:length(X)/2).*conj(X(1:length(X)/2)))),...

% title('Spectru de putere semnal vocal original')

% Se afiseaza spectrul de putere al raspunsului la impuls al filtrului

% de predictie, cu o lungime de 40 esantioane

%XR=fft(impz(B,A,40)'.*hamming(40)');

%subplot(2,1,2),...

% plot(f,10*log10(XR(1:length(XR)/2).*conj(XR(1:length(XR)/2)))),...

% title('Spectru de putere semnal sintetizat'),...

% xlabel('Frecventa (Hz)')

%pause

% R7. Apreciati diferentele dintre cele doua rezultate afisate.

% Justificati alegerea lungimii intervalului de 40 esantioane

% Se examineaza informatiile existente despre comenzile dbode, logspace

% Se afiseaza diagrama Bode a filtrului digital calculat anterior

%dbode(B,A,2*pi/Fs)

%pause

% Observatie: datorita factorului 2*pi, diagramele vor afisa

% magnitudinea si faza in raport de frecventa (Hz) si nu de perioada

% (rad/s)

% Se afiseaza aceasi diagrama pentru intervalul 400 - 4000 Hz

%dbode(B,A,2*pi/Fs,logspace(log10(400),log10(4000)))

%pause

% R8. Comentati forma filtrului digital B/A. Corelati aceasta forma

% cu graficul spectrului de putere

% Se filtreaza semnalul vocal cu un filtru digital, inversul

% filtrului de predictie, rezultatul filtrarii reprezantand eroarea

% de predictie

close

%plot(filter(A,B,x)),title('Eroarea de predictie'),...

% xlabel('Esantioane')

%pause

% Se afiseaza simultan semnalul vocal si eroarea de predictie

%subplot(2,1,1),plot(x),title('Semnal vocal original')

%axis([1 length(x) min(x) max(x)])

%subplot(2,1,2),plot(filter(A,B,x)),

% title('Eroarea de predictie'),...

%axis([1 length(x) min(x) max(x)])

%pause

% R9. Comparati formele de unda din punctul de vedere al formei,

% dinamicii si periodicitatii

% Se sterge fereastra grafica

%close

% Se defineste si se afiseaza un interval de semnal din fonemul "SH", cu

% lungimea de 200 esantioane

%y=sase(290:290+L-1);

%plot(y),title('Semnal vocal, fonemul "SH"'),...

% xlabel('Esantioane'),ylabel('Amplitudine')

%pause

% Se repeta operatiile de modelare prin predictie liniara

%A=lpc(y,10)

%B=[1 zeros(1,length(A)-1)]

% Se creaza un vector cu lungimea de 200 elemente, continand un semnal

% aleator cu distributie uniforma si medie zero

%rand('seed',0);

%s=2.*rand(1,L)-1;

% Se examineaza informatiile existente despre comanda filter

% Se afiseaza raspunsul filtrului digital B/A la un semnal de excitatie

% de tip zgomot

%plot(filter(B,A,s)),title('Raspuns la semnal aleator al filtrului de predictie cu 10 coef.'),xlabel('Esantioane')

%pause

% Se compara semnalul vocal original cu cel rezultat in urma procesului

% de analiza prin predictie liniara urmata de sinteza

%subplot(2,1,1),plot(y),...

% title('Semnal vocal original, fonemul "SH"')

%subplot(2,1,2),plot(filter(B,A,s)),...

% title('Raspuns la semnal aleator al filtrului de predictie cu 10 coef.'),...

% xlabel('Esantioane')

%pause

% Se repeta operatiile privitoare la estimarea si afisarea spectrului

% de putere pentru cele doua semnale

%Y=fft(y.*hamming(length(y))');

%f=(0:length(Y)/2-1)/length(Y)*Fs;

%subplot(2,1,1),...

% plot(f,10*log10(Y(1:length(Y)/2).*conj(Y(1:length(Y)/2)))),...

% title('Spectru de putere semnal vocal original')

% Se afiseaza spectrul de putere al raspunsului la impuls al filtrului

% de predictie, cu o lungime de 40 esantioane

%YR=fft(filter(B,A,s).*hamming(length(s))');

%subplot(2,1,2),...

% plot(f,10*log10(YR(1:length(YR)/2).*conj(YR(1:length(YR)/2)))),...

% title('Spectru de putere semnalului sintetizat'),...

% xlabel('Frecventa (Hz)')

%pause

% Se afiseaza simultan semnalul vocal si eroarea de predictie

%subplot(2,1,1),plot(y),title('Semnal vocal original')

%axis([1 length(y) min(y) max(y)])

%subplot(2,1,2),plot(filter(A,B,y)),

% title('Eroarea de predictie'),...

%axis([1 length(y) min(y) max(y)])

%pause

% 2.4.3. ORDINUL PREDICTORULUI

% Se determina si se afiseaza grafic raspunsul la impuls cu lungimea

% de 40 esantioane, al unui filtru de predictie cu 4 poli care

% modeleaza semnalului x

%A4=lpc(x,4);

%B4=[1 zeros(1,length(A4)-1)];

%subplot(2,3,1),plot(impz(B4,A4,40)),title('LPC 4')

% Se procedeaza similar pentru filtre cu 8, 10, 12, 16,d 20

%A8=lpc(x,8);

%B8=[1 zeros(1,length(A8)-1)];

%subplot(2,3,2),plot(impz(B8,A8,40)),title('LPC 8')

A10=lpc(x,10);

B10=[1 zeros(1,length(A10)-1)];

subplot(2,3,3),plot(impz(B10,A10,40)),title('LPC 10')

%A12=lpc(x,12);

%B12=[1 zeros(1,length(A12)-1)];

%subplot(2,3,4),plot(impz(B12,A12,40)),title('LPC 12')

%A16=lpc(x,16);

%B16=[1 zeros(1,length(A16)-1)];

%subplot(2,3,5),plot(impz(B16,A16,40)),title('LPC 16')

%A20=lpc(x,20);%B20=[1 zeros(1,length(A20)-1)];

%subplot(2,3,6),plot(impz(B20,A20,40)),title('LPC 20')

pause

close

% R10. Apreciati care este ordinul minim al filtrului de predictie pentru

% care se obtine un raport optim performante/cost de implementare

% 2.4.4. STABILITATEA FILTRULUI DE PREDICTIE

% Se examineaza informatiile existente despre comanda zplane

% Se afiseaza singularitatile filtrului de predictie cu 4 coeficienti

% in planul z

%subplot(2,3,1),zplane(B4,A4),title('LPC 4')

% Se procedeaza similar pentru filtrele cu 8, 10, 12, 16, 20 coeficienti

%subplot(2,3,2),zplane(B8,A8),title('LPC 8')

%subplot(2,3,3),zplane(B10,A10),title('LPC 10')

%subplot(2,3,4),zplane(B12,A12),title('LPC 12')

%subplot(2,3,5),zplane(B16,A16),title('LPC 16')

%subplot(2,3,6),zplane(B20,A20),title('LPC 20')

% R11. Observati dispunerea singularitatilor filtrelor de predictie si

% apreciati stabilitatea filtrelor respective

% 2.5 MODELAREA ARMA

% Se va examina metoda Steiglitz-McBride

% Se examineaza informatiile existente despre comenzile stmcb si prony.

x=1/max(x)*x(1:40)';

[E10,F10]=stmcb(x,10,10)

%Scrieti coeficientii astfel determinati

%Pentru a putea compara functiile lpc si stmcb calculam

%suma patratelor erorilor in fiecare caz.

%Observatii.

[x-impz(B10,A10,40) x-impz(E10,F10,40)]

sum(ans.^2)

%Se determina si se afiseaza grafic raspunsul la impuls cu lungimea de

% 40 de esantioane al unui filtru I.I.R cu 10 poli si 10 zerouri si se

%compara cu raspunsul la impuls al unui filtru de predictie cu 10 poli

%si cu semnalul x.

subplot(3,1,1),plot(impz(B10,A10,40)),title('LPC 10')

subplot(3,1,2),plot(x),title('semnal original')

subplot(3,1,3),plot(impz(E10,F10,40)),title('STMCB 10 X 10 ')

pause

close

%Se afiseaza polii si zerourile filtrului I.I.R. obtinut si se calculeaza

%modulul polilor

subplot(2,1,1),zplane(E10,F10),title('STMCB 10 X 10')

v1=abs(roots(E10))

% R 12 Apreciati stabilitatea filtrului obtinut.