Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică Teza doctorat (pdf) - Universitatea Tehnică

users.utcluj.ro
from users.utcluj.ro More from this publisher
15.06.2013 Views

Punctul pivot se determină conform relaţiei : PIV max( M k ( i)), k 0,.. N ; i D (4.66) unde N reprezintă numărul de maxime locale Mk din segmentul considerat. Algoritmul Determină_Pivot : (1) Se iniţializează valoarea pivotului: PIV=0 ; 112 Cap. 4. Analiza semnalului vocal (2) Pentru fiecare punct Mk(i) de tip maxim local (MAX) se execută paşii (3) şi (4) (3) Se determină condiţia C_PIV = (Mk(i) > PIV ) AND (Mk(i) != HIAT_PERIOD) AND (Mk(i) != HIAT_AMPLITUDE) (4) Dacă C_PIV este adevărată, atunci PIV = Mk (i). (5) Dacă PIV>0 se returnează True, altfel False. Prin modul de determinare a punctului pivot se observă că acesta este întotdeauna un punct de maxim de perioadă. Astfel el poate fi considerat ca fiind punctul de referinţă pentru determinarea celorlalte maxime de perioadă din segmentul de semnal analizat. 4.6.1.2. Estimarea perioadei În pasul al doilea se face estimarea perioadei actuale a semnalului în jurul punctului pivot. Pentru a face estimarea se determină punctele din vecinătatea stânga şi dreapta a punctului pivot care au amplitudinea comparabilă cu acesta. Dacă cele două estimări sunt aproximativ egale, estimarea iniţială a perioadei se obţine prin medierea distanţelor între aceste două puncte şi punctul pivot central. Dacă cele două estimări sunt diferite, atunci se ia perioada cea mai apropiată de valoarea medie a perioadelor vocalice determinate până în acel moment. Acest mod de calcul creşte robusteţea algoritmului ducând la minimizarea erorilor de estimare pentru perioada de semnal. MS(i) PIV MD(j) D1 D2 Figura 4.44. Estimarea perioadei actuale a semnalului

Estimarea perioadei actuale se face conform relaţiilor: 113 Cap. 4. Analiza semnalului vocal D 1 d ( PIV , M S ( i)) D 2 d ( PIV , M D ( j)) (4.67) PER ( D1 D 2 ) / 2 unde: - MS(i) este punctul de maxim local din stânga pivotului de amplitudine comparabilă cu pivotul: ( ( i), PIV ) S M S - MD(j) este punctul de maxim local din dreapta pivotului de amplitudine comparabilă cu acesta: ( ( j), PIV ) S M D Algoritmul de estimare a perioadei este explicat în cele ce urmează : Algoritmul Estimare_Perioadă : (1) Se iniţializează valorile de perioadă din stânga şi dreapta pivotului: Per[Stânga] = Per[Dreapta] = 0 , Stânga =0 , Dreapta = 1 , ind_per = 0; (2) Pentru direcţia Stânga, apoi Dreapta se execută paşii (3) – (9) ; (3) Pentru raportul de amplitudine R_AMP = 70%, scăzând cu 10% la fiecare iteraţie, se execută paşii (4) – (9) ; (4) Pentru fiecare punct P(i) de tip maxim local (MAX) ce urmează după pivotul PIV în direcţia curentă se execută paşii (5) - (9). (5) Se calculează distanţa – în număr de eşantioane - dintre pivot şi punctul curent : DIST = D( P(i) , PIV ) (6) Dacă DIST < D_MIN (se ia D_MIN corespunzător valorii de 2,5 ms), atunci P(i) nu este un maxim de perioadă şi se reia pasul (4) cu următoarea iteraţie ; (7) Dacă DIST > D_MAX (se ia D_MAX corespunzător valorii de 12,5 ms), atunci P(i) nu este un maxim de perioadă şi se reia pasul (4) cu următoarea iteraţie; (8) Se calculează COND_GASIT = P(i) / PIV > R_AMP; (9) Dacă COND_GASIT e adevărată, înseamnă că s-a găsit următorul maxim de perioadă: se reţine valoarea perioadei corespunzătoare: Per[ind_per] = | i – i_pivot | ; se reia pasul (2) cu următoarea iteraţie, căutându-se următorul maxim de perioadă în cealaltă direcţie; (10) În finalul iteraţiilor, dacă Per[Stânga] = 0, se ia pentru valoarea perioadei estimate PER = Per[Dreapta] ; dacă Per[Dreapta] = 0, se ia pentru valoarea perioadei estimate PER = Per[Stânga] ; se returnează True. Acest caz se întâlneşte când pivotul a fost detectat în extremitatea stânga sau dreapta a segmentului considerat; (11) Dacă valorile celor două perioade diferă cu o marjă mică de eroare: |Δ(Per[Stânga] - Per[Dreapta])| < Δ_ER, atunci se ia pentru valoarea perioadei estimate: PER = (Per[Stânga] + Per[Dreapta]) / 2; se returnează True; (12) Dacă |Δ(Per[Stânga] - Per[Dreapta])| > Δ_ER, atunci se ia pentru valoarea perioadei estimate perioada cea mai apropiată de valoarea medie Per_Med a perioadelor vocalice calculată până în acel moment: PER = Per[k], unde k minimizează expresia |Δ(Per[k] – Per_Med)| ; se returnează True.

Estimarea perioadei actuale se face conform relaţiilor:<br />

113<br />

Cap. 4. Analiza semnalului vocal<br />

D<br />

1 d<br />

( PIV , M S ( i))<br />

<br />

D<br />

2 d<br />

( PIV , M D ( j))<br />

(4.67)<br />

<br />

PER<br />

(<br />

D1<br />

D<br />

2 ) / 2<br />

unde:<br />

- MS(i) este punctul de maxim local din stânga pivotului de amplitudine comparabilă cu<br />

pivotul: ( ( i),<br />

PIV ) S<br />

M S<br />

- MD(j) este punctul de maxim local din dreapta pivotului de amplitudine comparabilă cu<br />

acesta: ( ( j),<br />

PIV ) S<br />

M D<br />

Algoritmul de estimare a perioadei este explicat în cele ce urmează :<br />

Algoritmul Estimare_Perioadă :<br />

(1) Se iniţializează valorile de perioadă din stânga şi dreapta pivotului: Per[Stânga] =<br />

Per[Dreapta] = 0 , Stânga =0 , Dreapta = 1 , ind_per = 0;<br />

(2) Pentru direcţia Stânga, apoi Dreapta se execută paşii (3) – (9) ;<br />

(3) Pentru raportul de amplitudine R_AMP = 70%, scăzând cu 10% la fiecare iteraţie, se<br />

execută paşii (4) – (9) ;<br />

(4) Pentru fiecare punct P(i) de tip maxim local (MAX) ce urmează după pivotul PIV în<br />

direcţia curentă se execută paşii (5) - (9).<br />

(5) Se calculează distanţa – în număr de eşantioane - dintre pivot şi punctul curent : DIST<br />

= D( P(i) , PIV )<br />

(6) Dacă DIST < D_MIN (se ia D_MIN corespunzător valorii de 2,5 ms), atunci P(i) nu este<br />

un maxim de perioadă şi se reia pasul (4) cu următoarea iteraţie ;<br />

(7) Dacă DIST > D_MAX (se ia D_MAX corespunzător valorii de 12,5 ms), atunci P(i) nu<br />

este un maxim de perioadă şi se reia pasul (4) cu următoarea iteraţie;<br />

(8) Se calculează COND_GASIT = P(i) / PIV > R_AMP;<br />

(9) Dacă COND_GASIT e adevărată, înseamnă că s-a găsit următorul maxim de perioadă:<br />

se reţine valoarea perioadei corespunzătoare: Per[ind_per] = | i – i_pivot | ; se reia pasul (2) cu<br />

următoarea iteraţie, căutându-se următorul maxim de perioadă în cealaltă direcţie;<br />

(10) În finalul iteraţiilor, dacă Per[Stânga] = 0, se ia pentru valoarea perioadei estimate<br />

PER = Per[Dreapta] ; dacă Per[Dreapta] = 0, se ia pentru valoarea perioadei estimate PER =<br />

Per[Stânga] ; se returnează True. Acest caz se întâlneşte când pivotul a fost detectat în<br />

extremitatea stânga sau dreapta a segmentului considerat;<br />

(11) Dacă valorile celor două perioade diferă cu o marjă mică de eroare: |Δ(Per[Stânga] -<br />

Per[Dreapta])| < Δ_ER, atunci se ia pentru valoarea perioadei estimate: PER = (Per[Stânga] +<br />

Per[Dreapta]) / 2; se returnează True;<br />

(12) Dacă |Δ(Per[Stânga] - Per[Dreapta])| > Δ_ER, atunci se ia pentru valoarea perioadei<br />

estimate perioada cea mai apropiată de valoarea medie Per_Med a perioadelor vocalice<br />

calculată până în acel moment: PER = Per[k], unde k minimizează expresia |Δ(Per[k] –<br />

Per_Med)| ; se returnează True.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!