15.06.2013 Views

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Cap. 7. Proiectarea sistemului de sinteză de voce în limba română<br />

funcţie de caracteristicile unităţii lingvistice: lungime, context şi accentuare (a se vedea<br />

paragraful 6.4.7). Pot exista următoarele situaţii:<br />

- Unitatea este regăsită identic în baza de date vocală, din punct de vedere fonetic,<br />

contextual şi prozodic. În acest caz unitatea se reţine ca atare pentru a fi înglobată în textul<br />

sintetizat.<br />

- Unitatea este regăsită fonetic, dar nu prozodic sau contextual. Se preferă, în acest caz,<br />

construirea acesteia din subunităţi sau foneme separate, care să respecte în primul rând prozodia<br />

cerută (unitate accentuată sau neaccentuată), şi apoi, dacă este posibil, contextul specificat.<br />

- Unitatea nu este regăsită fonetic în baza de date. Şi în acest caz ea va fi construită pe<br />

baza subunităţilor componente, găsite în baza de date.<br />

f) Îmbinarea unităţilor: unităţile acustice găsite în baza vocală prin algoritmul expus mai<br />

sus se vor concatena pentru a genera semnalul de ieşire. Concatenarea se face ţinând cont de<br />

pauza dintre cuvinte, pauză care se va ajusta în funcţie de ritmul necesar pentru vorbire.<br />

g) Ultima fază este cea de sinteză propriu-zisă, în care formele de undă corespunzătoare<br />

textului de la intrare (generate în etapa precedentă) vor fi redate sonor prin intermediul plăcii<br />

audio a calculatorului.<br />

7.4. Algoritmul de implementare al conversiei text-voce<br />

În acest paragraf este prezentat algoritmul de implementare al procesului on-line al<br />

sistemului: conversia text-voce. Algoritmul porneşte de la un text sursă trecut prin fazele de<br />

preprocesare şi corectare ortografică, realizând următoarele acţiuni: analiza lingvistică în scopul<br />

determinării silabelor, analiza prozodică pentru determinarea accentelor, potrivirea unităţilor şi<br />

sinteza de voce. Algoritmul general este prezentat în diagrama 1.<br />

La început, parserul de text apelează analizorul lexical (denumit Silabe_Lex) pentru<br />

determinarea silabelor, respectiv a separatorilor. Cele două tipuri de unităţi lexicale sunt<br />

procesate de către subrutinele Procesare_Silabă, respectiv Procesare_Separator. Silabele<br />

urmate de un separator sunt grupate pentru a forma un cuvânt.<br />

Cuvântul curent este prelucrat mai departe în subrutina Procesare_Cuvânt, mai multe<br />

cuvinte formând o propoziţie. După fiecare cuvânt regăsit de la intrare, se apelează analizorul<br />

lexical pentru determinarea accentelor, adică a silabei accentuate din cuvânt.<br />

Apoi subrutina Potrivire_unităţi realizează funcţia de punere în corespondenţă între<br />

unităţile regăsite din textul de la intrare şi unităţile acustice memorate în baza de date. Potrivirea<br />

se face la nivelul silabelor pentru fiecare cuvânt din propoziţie. În urma acestei operaţiuni rezultă<br />

un fişier de tip wave care este sintetizat prin intermediul subrutinei Rostire.<br />

Algoritmul de parcurgere a intrării este ilustrat în diagrama 2. Se iniţializează mai întâi<br />

stream-ul de intrare – textul care trebuie sintetizat (funcţia Init_Stream). Apoi se apelează<br />

analizorul lexical yylex( ) pentru despărţirea în silabe. Analizorul returnează fie o silabă, fie un<br />

separator, fie caracterul sfârşit de fişier, dacă s-a ajuns la sfârşitul stream-ului de intrare. Silaba<br />

se tratează în procedura Procesare_Silabă, iar separatorul în procedura Procesare_Separator,<br />

ambele figurate în diagrama 3.<br />

254

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

Saved successfully!

Ooh no, something went wrong!