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.

FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI<br />

TEHNOLOGIA INFORMAŢIEI<br />

ing. Ovidiu Buza<br />

TEZĂ DE DOCTORAT<br />

CONTRIBUŢII LA ANALIZA ŞI SINTEZA VORBIRII<br />

DIN TEXT PENTRU LIMBA ROMÂNĂ<br />

Comisia de evaluare a tezei de <strong>doctorat</strong>:<br />

Conducător ştiinţific,<br />

Prof. dr. ing. Gavril Toderean<br />

PREŞEDINTE: - Prof.dr.ing. Marina Ţopa - decan, Facultatea de Electronică,<br />

Telecomunicaţii şi Tehnologia Informaţiei, <strong>Universitatea</strong><br />

<strong>Tehnică</strong> din Cluj-Napoca;<br />

MEMBRI: - Prof.dr.ing. Gavril Toderean - conducător ştiinţific, <strong>Universitatea</strong><br />

<strong>Tehnică</strong> din Cluj-Napoca;<br />

- Prof.dr.ing. Dumitru Stanomir - referent, <strong>Universitatea</strong> Politehnica din<br />

Bucureşti;<br />

- Prof.dr.ing. Horia Nicolai Teodorescu - referent, <strong>Universitatea</strong> <strong>Tehnică</strong><br />

„Gheorghe Asachi” din Iaşi;<br />

- Prof.dr.ing. Sergiu Nedevschi - referent, <strong>Universitatea</strong> <strong>Tehnică</strong> din<br />

Cluj-Napoca.


Cuprins<br />

Lista de abrevieri ................................................................................................................... vii<br />

Lista de figuri ........................................................................................................................ viii<br />

Lista de tabele ....................................................................................................................... xv<br />

1. Introducere.................................................................................................................... 1<br />

1.1. Scopul tezei de <strong>doctorat</strong> ...................................................................................................... 1<br />

1.2. Organizarea pe capitole a lucrării........................................................................................ 1<br />

1.3. Problematica sintezei de voce ............................................................................................. 3<br />

1.4. Oportunitatea temei alese .................................................................................................... 3<br />

1.5. Principalele contribuţii şi realizări ale tezei ........................................................................ 4<br />

2. Modalitatea producerii vorbirii .................................................................................. 6<br />

2.1. Mecanismul producerii vorbirii........................................................................................... 6<br />

2.2. Rezonanţa tractului vocal .................................................................................................... 6<br />

2.3. Elementele vocale articulatorii............................................................................................ 7<br />

2.4. Formarea sunetelor.............................................................................................................. 8<br />

2.5. Auzul uman şi percepţia sunetelor ...................................................................................... 9<br />

2.6. Proprietăţile acustice ale sunetului .................................................................................... 13<br />

2.7. Modelul producerii vorbirii............................................................................................... 15<br />

2.7.1. Semnalul de excitaţie............................................................................................... 17<br />

2.7.1.1. Energia de excitare ......................................................................................... 17<br />

2.7.1.2. Efectele tractului vocal................................................................................... 18<br />

3. Procesarea digitală a semnalului vocal..................................................................... 19<br />

3.1. Metode de procesare a semnalului vocal........................................................................... 19<br />

3.1.1.Metode de codare a semnalului vocal...................................................................... 19<br />

3.1.2. Metode şi standarde de compresie a semnalului vocal............................................ 23<br />

3.1.2.1. Standarde de compresie a semnalului audio de înaltă fidelitate..................... 24<br />

3.2. Contribuţii în procesarea semnalului vocal ....................................................................... 25<br />

3.2.1. Aplicaţia de prelucrare digitală a semnalului vocal SPEA...................................... 25<br />

3.2.1.1. Facilităţile şi modul de lucru specific aplicaţiei ............................................. 25<br />

3.2.1.1.1. Facilităţi de ordin general asupra fişierului de sunet............................... 26<br />

3.2.1.1.2. Facilităţi de operare specifice aplicate fişierului de sunet....................... 28<br />

3.2.1.2. Modul de lucru al utilizatorului în aplicaţia SPEA ........................................ 29<br />

3.2.2. Experimente realizate asupra unor eşantioane reale de semnal audio şi vocal ....... 31<br />

3.2.3. Concluzii privind contribuţiile autorului în domeniul procesării semnalului<br />

vocal......................................................................................................................... 53<br />

i


4. Analiza semnalului vocal ............................................................................................54<br />

4.1. Parametrii de bază ai semnalului vocal..............................................................................54<br />

4.2. Analiza semnalului pentru determinarea parametrilor caracteristici .................................57<br />

4.2.1. Analiza în domeniul timp a semnalului vocal..........................................................57<br />

4.2.2. Analiza în domeniul frecvenţă a semnalului vocal ..................................................60<br />

4.3. Segmentarea semnalului vocal...........................................................................................66<br />

4.3.1. Detectarea automată a segmentelor semnalului vocal .............................................67<br />

4.3.2. Algoritmi de detectare a caracteristicilor de segment..............................................69<br />

4.3.2.1. Date de intrare şi pre-procesare S/U/V ...........................................................69<br />

4.3.2.2. Funcţia volum .................................................................................................69<br />

4.3.2.3. Valorile pragurilor şi scorurile de caracteristici..............................................70<br />

4.3.3. Detectarea categoriilor specifice din semnalul vocal...............................................73<br />

4.3.3.1. Detectarea cadrelor sonore..............................................................................73<br />

4.3.3.2. Detectarea vocalelor........................................................................................73<br />

4.3.3.3. Detectarea consoanelor sonore........................................................................74<br />

4.3.3.4. Detectarea benzii sonore .................................................................................75<br />

4.3.3.5. Detectarea nazalelor........................................................................................75<br />

4.3.3.6. Detectarea semivocalelor ................................................................................76<br />

4.3.3.7. Detectarea fricativelor sonore .........................................................................77<br />

4.3.3.8. Detectarea stopurilor şi fricativelor nesonore .................................................78<br />

4.3.4. Detectarea graniţelor dintre segmente......................................................................79<br />

4.3.4.1. Detectarea bazată pe graniţa spectrală şi segmentare .....................................79<br />

4.3.4.2. Detectarea graniţelor prin metoda S/U/V........................................................80<br />

4.3.5. Segmentarea finală...................................................................................................81<br />

4.3.6. Etichetarea segmentelor ...........................................................................................81<br />

4.3.7. Rezultate şi concluzii privind metoda generică de segmentare ...............................82<br />

4.4. Contribuţii aduse în procesul segmentării automate a semnalului vocal ...........................84<br />

4.4.1. Detectarea punctelor de zero, minim şi maxim........................................................85<br />

4.4.2. Segmentarea SUV şi detecţia de regiuni..................................................................86<br />

4.4.2.1. Detectarea categoriei Linişte...........................................................................89<br />

4.4.2.2. Detectarea categoriei Vocală ..........................................................................91<br />

4.4.2.3. Împărţirea în subregiuni vocalice....................................................................93<br />

4.4.2.3.1. Detectarea subregiunilor corespunzătoare consoanei /R/ ........................94<br />

4.4.2.3.2. Detectarea subregiunilor corespunzătoare consoanelor /C/, /G/..............96<br />

4.4.2.4. Detectarea categoriei Consoană ......................................................................96<br />

4.4.2.5. Detectarea categoriei Tranziţie .......................................................................98<br />

4.4.3. Compactarea regiunilor..........................................................................................101<br />

4.4.4. Rezultatul final al segmentării în clase de regiuni .................................................105<br />

4.4.5. Concluzii privitoare la segmentarea semnalului vocal în clase de regiuni ............106<br />

4.5. Detectarea perioadelor din forma de undă. Punctele de închidere glotală.......................107<br />

ii


4.6. Contribuţii ale autorului în determinarea perioadelor de semnal.................................... 109<br />

4.6.1. Algoritmul de determinare a perioadelor şi maximelor de perioadă..................... 109<br />

4.6.1.1. Determinarea pivotului................................................................................. 111<br />

4.6.1.2. Estimarea perioadei ...................................................................................... 112<br />

4.6.1.3. Detectarea maximelor de perioadă ............................................................... 114<br />

4.6.1.4. Marcarea intervalelor de perioadă................................................................ 116<br />

4.6.1.5. Rezultate obţinute cu algoritmul propriu de determinare a intervalelor de<br />

perioadă…. ................................................................................................... 117<br />

4.6.1.6. Concluzii cu privire la algoritmul propriu de determinare a intervalelor<br />

de perioadă … .............................................................................................. 118<br />

4.7. Segmentarea fonematică.................................................................................................. 119<br />

4.7.1. Segmentarea fonematică folosind modele Markov ascunse.................................. 119<br />

4.7.2. Segmentarea bazată pe rafinarea frontierelor........................................................ 120<br />

4.7.3. Segmentarea bazată pe probabilităţi generalizate ................................................. 122<br />

4.7.3.1. Algoritmul de bază ....................................................................................... 122<br />

4.7.3.2. Algoritmul ce foloseşte o segmentare iniţială după secvenţa de foneme..... 122<br />

4.7.4. Rezultate obţinute prin cele trei metode de segmentare fonematică ..................... 123<br />

4.8. Contribuţii ale autorului în problematica segmentării fonematice automate a<br />

semnalului vocal.............................................................................................................. 124<br />

4.8.1. Transcrierea fonetică a textului de la intrare ......................................................... 125<br />

4.8.2. Proiectarea regulilor de asociere pentru fiecare grup fonetic................................ 126<br />

4.8.3. Rezultate obţinute în urma aplicării metodei propuse de asociere fonemeregiuni<br />

.................................................................................................................... 134<br />

4.8.4. Experimente privind segmentarea în subregiuni fonematice ................................ 137<br />

4.8.4.1. Calculul distanţei dintre două seturi de coeficienţi fonematici .................... 138<br />

4.8.4.2. Metoda de segmentare în subregiuni fonematice bazată pe determinarea<br />

tranziţiilor bruşte din regiune ....................................................................... 140<br />

4.8.4.3. Rezultate obţinute prin metoda de segmentare bazată pe determinarea<br />

tranziţiilor bruşte din regiune ....................................................................... 141<br />

4.8.4.4. Metoda de segmentare în subregiuni fonematice bazată pe modelarea<br />

caracteristicilor spectrale.............................................................................. 147<br />

4.8.4.5. Rezultate obţinute prin metoda de segmentare în subregiuni fonematice<br />

bazată pe modelarea caracteristicilor spectrale ............................................ 150<br />

4.8.5. Aplicaţii ale segmentării fonematice în realizarea bazelor de date acustice ......... 153<br />

4.8.6. Concluzii privitoare la contribuţiile autorului în segmentarea fonematică a<br />

semnalului vocal .................................................................................................... 154<br />

5. Sinteza de voce........................................................................................................... 155<br />

5.1. Modelul general al sintezei vorbirii................................................................................. 155<br />

5.2. Sistemul de sinteză text-to-speech................................................................................... 157<br />

5.2.1. Caracteristicile unui sistem text-to-speech. Metode de bază folosite.................... 157<br />

5.2.2. Etape în sinteza de voce pornind de la text ........................................................... 159<br />

iii


6. Metode de sinteză de voce.........................................................................................162<br />

6.1. Clasificarea metodelor de sinteză de voce .......................................................................162<br />

6.2. Metode de sinteză în domeniul frecvenţă ........................................................................165<br />

6.2.1. Sinteza bazată pe predicţie liniară..........................................................................165<br />

6.2.2. Sinteza formantică..................................................................................................167<br />

6.2.2.1. Realizarea excitaţiei ......................................................................................168<br />

6.2.2.2. Sinteza în cascadă .........................................................................................168<br />

6.2.2.3. Sinteza în paralel...........................................................................................170<br />

6.3. Metode de sinteză în domeniul timp ................................................................................170<br />

6.3.1. Metoda TD-PSOLA ...............................................................................................171<br />

6.3.1.1. Modelare matematică....................................................................................171<br />

6.3.1.2. Avantajele şi dezavantajele metodei TD-PSOLA.........................................175<br />

6.3.1.3. Îmbunătăţiri ale metodei ...............................................................................175<br />

6.3.2. Metoda bazată pe corpus........................................................................................176<br />

6.3.2.1. Algoritmul de selecţie a unităţilor acustice...................................................176<br />

6.3.2.2. Adnotarea bazei de date vocală.....................................................................177<br />

6.3.2.3. Potrivirea unităţilor candidat cu unităţile ţintă..............................................178<br />

6.3.2.4. Calculul costurilor şi măsurile distanţelor dintre unităţi [Mob00]................180<br />

6.3.2.4.1. Metoda de căutare în spaţiul stărilor (Weight Space Search) ................180<br />

6.3.2.4.2. Metoda de grupare a unităţilor în funcţie de context ______<br />

(Context Clustering)...............................................................................180<br />

6.3.2.5. Algoritmul metodei de sinteză bazată pe corpus vocal.................................182<br />

6.3.2.6. Avantajele şi dezavantajele metodei bazate pe corpus .................................182<br />

6.4. Contribuţii în proiectarea metodelor de sinteză de voce..................................................183<br />

6.4.1. Metoda de sinteză bazată pe silabe pentru limba română......................................183<br />

6.4.2. Preprocesarea textului............................................................................................184<br />

6.4.3. Analiza sintaxei......................................................................................................189<br />

6.4.3.1. Modul de funcţionare al analizorului de sintaxă...........................................191<br />

6.4.3.2. Regulile specificate de analizorul de sintaxă ................................................192<br />

6.4.3.3. Rezultate obţinute cu analizorul automat de sintaxă.....................................201<br />

6.4.3.4. Concluzii cu privire la metoda de analiză automată a sintaxei propusă de<br />

autor ..............................................................................................................202<br />

6.4.4. Determinarea unităţilor lingvistice: silabele ..........................................................203<br />

6.4.4.1. Analizorul sintactic folosit în extragerea propoziţiilor şi cuvintelor ............204<br />

6.4.4.1.1. Gramatica analizorului sintactic ............................................................205<br />

6.4.4.2. Analizorul lexical utilizat în determinarea silabelor .....................................207<br />

6.4.4.2.1. Gramatica analizorului lexical ...............................................................208<br />

6.4.4.2.2. Acţiunile de realizat la potrivirea intrării...............................................209<br />

6.4.4.2.3. Regulile de producţie pentru despărţirea în silabe .................................210<br />

6.4.4.2.4. Rezultate obţinute cu analizorul lexical pentru determinarea silabelor .218<br />

6.4.5. Determinarea aspectelor prozodice: accentele.......................................................219<br />

6.4.5.1. Analizorul lexical utilizat în determinarea accentelor ..................................219<br />

iv


6.4.5.2. Gramatica analizorului lexical pentru determinarea accentelor din limba<br />

română.......................................................................................................... 220<br />

6.4.5.3. Rezultate obţinute cu analizorul lexical pentru determinarea accentelor..... 225<br />

6.4.6. Proiectarea bazei de date vocale............................................................................ 226<br />

6.4.6.1. O statistică a silabelor limbii române ........................................................... 227<br />

6.4.6.2. Caracteristicile silabelor înregistrate în baza de date acustică ..................... 229<br />

6.4.6.3. Organizarea bazei de date acustice............................................................... 230<br />

6.4.7. Regăsirea unităţilor acustice şi sinteza de voce..................................................... 231<br />

6.4.8. Concluzii cu privire la metoda de sinteză a vorbirii prin concatenare de silabe<br />

proiectată şi realizată de autor ............................................................................... 236<br />

7. Realizarea sistemului de sinteză de voce în limba română LIGHTVOX ............ 242<br />

7.1. Organizarea pe module a sistemului ............................................................................... 242<br />

7.2. Structura funcţională a sistemului ................................................................................... 243<br />

7.3. Metodologia de proiectare a sistemului de sinteză LIGHTVOX .................................... 245<br />

7.3.1. Construirea bazei de date acustice......................................................................... 245<br />

7.3.2. Conversia text-voce............................................................................................... 253<br />

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

7.5. Rezultate experimentale şi dezvoltări de viitor ............................................................... 260<br />

7.6. Concluzii privind proiectarea şi realizarea sistemului de sinteză vocală ........................ 262<br />

8. Concluzii finale.......................................................................................................... 266<br />

8.1. Principalele aspecte expuse în cadrul tezei ..................................................................... 267<br />

8.2. Contribuţiile şi realizările tezei de <strong>doctorat</strong> .................................................................... 269<br />

Bibliografie ................................................................................................................................276<br />

Anexa 1. Notaţia Backus-Naur Form şi gramatica LEX …………………………………. 285<br />

Anexa 2. Silabele din setul S2 după frecvenţa de apariţie ……..………………………….. 286<br />

Anexa 3. Silabele din setul S3 după frecvenţa de apariţie ………..……………………….. 289<br />

Anexa 4. Silabele din setul S4 după frecvenţa de apariţie ……………………..………...... 292<br />

Anexa 5. Activitatea ştiinţifică a autorului............................................................................ 295<br />

_Anexa 6. Lucrări ştiinţifice prezentate în extenso ................................................................. 300<br />

v


Lista de abrevieri<br />

ADPCM - Adaptive Differential Pulse Code Modulation.<br />

API - Application Programming Interface<br />

BNF - Backus-Naur Form<br />

CART - Classification and Regression Tree<br />

CELP - Code Excited Linear Prediction<br />

CVSDM - Continuously Variable Slope Delta Modulation<br />

DM - Delta Modulation<br />

DPCM - Differential Pulse Code Modulation.<br />

FFT - Fast Fourier Transform<br />

FLAC - Free Lossless Audio Codec<br />

FM - Frequency Modulation<br />

GCI - Glotal Closure Instants<br />

GLR - Generalized Likelihood Ratio<br />

GMM - Gaussian Mixture Model<br />

HFV - High Frequency Volume<br />

HMM -Hidden Markov Models<br />

IIR - Infinite Impulse Response<br />

LD-CELP - Low Delay Code Excited Linear Prediction.<br />

LFV - Low Frequency Volume<br />

LPC - Linear Predictive Coding<br />

LP-PSOLA - Linear Prediction Pitch Synchronous Overlapp and Add<br />

MBROLA - Multiband Resynthesis Overlap and Add<br />

MFCC - Mel Frequency Cepstral Coefficients.<br />

MPEG - Moving Picture Experts Group<br />

MW - Medium Wave length.<br />

PCM - Pulse Code Modulation<br />

PLP - Perceptual Linear Prediction<br />

PSOLA - Pitch Synchronous Overlapp and Add<br />

SB-ADPCM - Sub Band Adaptive Differential Pulse Code Modulation<br />

SIFT - Simplified Inverse Filter Tracking<br />

SPL - Sound Power Level<br />

TD-PSOLA - Time Domain Pitch Synchronous Overlapp and Add<br />

XML - eXtensible Markup Language<br />

vii


Lista de figuri<br />

Figura 2.1. Corzile vocale [Nav05] ................................................................................................6<br />

Figura 2.2. Frecvenţele de rezonanţă ale tractului vocal [Nav05]..................................................7<br />

Figura 2.3. Elementele vocale articulatorii [Nav05] ......................................................................7<br />

Figura 2.4. Elementele producerii vorbirii [Nav05] .......................................................................8<br />

Figura 2.5. Formarea sunetelor vocalice ([Fan60], [Ben76]) .........................................................8<br />

Figura 2.6. Fomanţii vocalei /A/ [Nav05] ......................................................................................9<br />

Figura 2.7. Structura urechii umane [Nav05] .................................................................................9<br />

Figura 2.8. Diagrama funcţională a urechii umane [Ste97]..........................................................10<br />

Figura 2.9. Cohlea şi ilustrarea principiului poziţiei [Ste97]........................................................11<br />

Figura 2.10. Undă compusă din două armonici: a. prin adunare; b. prin scădere [Ste97]............13<br />

Figura 2.11. Forma de undă a sunetului viorii. Perceperea sunetului de către ureche .................14<br />

Figura 2.12. Modelul producerii vorbirii [Ste97] .........................................................................15<br />

Figura 2.13. Spectrograme pentru vocala /E/ şi consoana /S/ [Ste97].........................................16<br />

Figura 3.1. Schema canonică a codorului DPCM (PCM diferenţial)..........................................20<br />

Figura 3.2. Schema bloc a codorului delta adaptiv......................................................................21<br />

Figura 3.3. Tipuri de zgomot în modulaţia delta .........................................................................22<br />

Figura 3.4. Algoritmul de compresie prin transformări...............................................................23<br />

Figura 3.5. Fereastra principală a aplicaţiei SPEA ......................................................................26<br />

Figura 3.6. Frecvenţa fundamentală a semnalului este 204 Hz ...................................................31<br />

Figura 3.7. Vocala A masculin. Frecvenţa fundamentală este în jurul valorii de 100 Hz,<br />

urmată de armonice situate la distanţă aproximativ egală........................................32<br />

Figura 3.8. Vocala A feminin. Frecvenţa fundamentală este de aproximativ 200 Hz,<br />

corespunzător unei voci de tonalitate mai înaltă ......................................................32<br />

Figura 3.9. Vocala E masculin. Frecvenţa fundamentală este de 115 Hz, apropiată de cea<br />

corespunzătoare lui A ...............................................................................................32<br />

Figura 3.10. Vocala E feminin. Frecvenţa fundamentală este de 225 Hz. Se observă că nu<br />

mai apar formanţii 3, 4 şi 5.......................................................................................32<br />

Figura 3.11. Vocala I masculin. Frecvenţa fundamentală este de 125 Hz. Formanţii 3,4 şi 5<br />

sunt nesemnificativi în raport cu primii doi. ............................................................33<br />

Figura 3.12. Vocala I feminin. Frecvenţa fundamentală este de 235 Hz. Apare doar un<br />

singur formant semnificativ......................................................................................33<br />

Figura 3.13. Vocala O masculin. Frecvenţa fundamentală este de 110 Hz. Primii 4<br />

formanţi sunt activi, mai apărând încă 4 de importanţă mai redusă.........................33<br />

Figura 3.14. Vocala U masculin. Frecvenţa fundamentală este de 110 Hz. Mai importanţi<br />

sunt primii 3 formanţi...............................................................................................33<br />

Figura 3.15. Consoana S. Se observă un spectru mult mai bogat în armonici superioare, pe<br />

o bandă situată între 4000 Hz şi 8000 Hz.................................................................33<br />

Figura 3.16. Consoana T. Caracteristic este atât spectrul de frecvenţe, cât mai ales forma<br />

semnalului.................................................................................................................33<br />

viii


Figura 3.17. Vocala A1. Se observă un spectru de armonici uniform, începând cu<br />

frecvenţa primului formant de 117 Hz..................................................................... 34<br />

Figura 3.18. Vocala A2. Forma spectrului de frecvenţe este aproape identică cu cea din<br />

cazul anterior, cu deosebirea faptului că aici primul formant are frecvenţa de<br />

142 Hz...................................................................................................................... 34<br />

Figura 3.19. Vocala E1. Se observă un spectru cu trei frecvenţe formantice dominante,<br />

începând cu frecvenţa primului formant de 122 Hz. ............................................... 34<br />

Figura 3.20. Vocala E2. Spectrul este din nou asemănător cu cel din primul caz; aici<br />

primul formant are frecvenţa de 137 Hz.................................................................. 34<br />

Figura 3.21. Cazul A. Cele două frecvenţe de 1000 Hz şi 3000 Hz se adună, fiind deci în<br />

fază........................................................................................................................... 35<br />

Figura 3.22. Cazul B. Cele două frecvenţe de 1000 Hz şi 3000 Hz se scad, fiind în<br />

antifază..................................................................................................................... 35<br />

Figura 3.23. Cazul A. Semnal generat din trei frecvenţe de bază: de 1000 Hz, 3000 Hz şi<br />

respectiv 6000 Hz .................................................................................................... 35<br />

Figura 3.24. Cazul B. Acelaşi semnal, din care s-a extras acum o fereastră de analiză ce<br />

conţine un număr întreg de perioade (8 perioade) ................................................... 35<br />

Figura 3.25. Cazul A. Semnalul x(t) a fost generat din două frecvenţe de bază: de 1000 Hz<br />

şi respectiv 3000 Hz................................................................................................. 36<br />

Figura 3.26. Cazul B. Semnalul x(t) a fost modulat cu o frecvenţă f0=10000 Hz: x1(t) =<br />

x(t)* sin(2πf0t) ......................................................................................................... 36<br />

Figura 3.27. Cazul A. Semnal audio înregistrat la o frecvenţă de eşantionare de 96000Hz........ 36<br />

Figura 3.28. Cazul B. Acelaşi semnal eşantionat la o frecvenţă mai mică, de 15000 Hz............ 36<br />

Figura 3.29. Cazul A. Semnal audio înregistrat de la un casetofon, la o frecvenţă de<br />

eşantionare de 96000Hz........................................................................................... 37<br />

Figura 3.30. Cazul B. Semnal audio înregistrat de la CD player la aceeaşi frecvenţă de<br />

eşantionare.. ............................................................................................................. 37<br />

Figura 3.31. Cazul C. Semnal audio generat ca sumă de 22 de frecvenţe de la 1000 Hz la<br />

22000 Hz. Componentele au toate aceeaşi amplitudine. ......................................... 38<br />

Figura 3.32. Cazul D. Acelaşi semnal înregistrat pe casetofon apoi din nou pe calculator la<br />

aceeaşi frecvenţă de eşantionare cu semnalul original.. .......................................... 38<br />

Figura 3.33. Nota Do la pian. Frecvenţa fundamentală este 525 Hz. .......................................... 38<br />

Figura 3.34. Nota Do la acordeon. Are aceeaşi frecvenţă fundamentală, dar un timbru mai<br />

bogat......................................................................................................................... 38<br />

Figura 3.35. Nota Do la vibrafon. Se observă spectrul constituit doar din două armonici;<br />

sunetul este mai pur, dar nu la fel de profund ca în cazurile anterioare. ................. 39<br />

Figura 3.36. Nota Do la orgă. Sunetul are un impact perceptual profund din cauza<br />

armonicilor secundare care au amplitudinea apropiată de amplitudinea<br />

armonicii principale. ................................................................................................ 39<br />

Figura 3.37. Litera M din cuvântul “mama” rostit în condiţii normale. Se observă doi<br />

formanţi la 64 şi 128 Hz. ......................................................................................... 39<br />

Figura 3.38. Litera M din cuvântul “mama” rostit în condiţiile obstrucţionării căilor<br />

nazale. Se observă dispariţia celui de-al doilea formant.......................................... 39<br />

ix


Figura 3.39. Litera A din cuvântul “mama” rostit în condiţii normale. Se observă doi<br />

formanţi principali şi alţi câţiva secundari. ..............................................................40<br />

Figura 3.40. Litera A din cuvântul “mama” rostit în condiţiile obstrucţionării căilor<br />

nazale. Se observă dispariţia formanţilor de ordin superior precum şi<br />

deplasarea în tonalitate a primului formant..............................................................40<br />

Figura 3.41. Litera M din cuvântul “maşină” rostit de către autor (vocea A). Se observă<br />

doi formanţi principali..............................................................................................40<br />

Figura 3.42. Litera M din cuvântul “maşină” rostit de vocea B. Spectrul este asemănător<br />

cu cel de la vocea A, diferenţele constând doar din raportul amplitudinilor<br />

celor doi formanţi. ....................................................................................................40<br />

Figura 3.43. Litera A din cuvântul “maşină” rostit de către autor (vocea A). Spectrul<br />

acestei rostiri vocalice conţine trei formanţi bine conturaţi. ....................................41<br />

Figura 3.44. Litera A din cuvântul “maşină” rostit de vocea B. Se observă diferenţa faţă de<br />

cazul anterior (vocea A), prin faptul că acum spectrul conţine o serie largă de<br />

armonici, cu primele cinci armonici bine conturate. ................................................41<br />

Figura 3.45. Litera S din cuvântul “maşină” rostit de către autor (vocea A). Se observă că<br />

spectrul, în cazul acestei consoane, conţine o paletă largă de armonici, situate<br />

îndeosebi la frecvenţe superioare. ............................................................................41<br />

Figura 3.46. Litera S din cuvântul “maşină” rostit de vocea B. Diferenţa este că armonicile<br />

superioare sunt mult mai bine conturate decât în cazul anterior corespondent........41<br />

Figura 3.47. Vocala A - Formele de undă (sus: FM; jos: MW) ...................................................42<br />

Figura 3.48. Vocala A – Spectrele armonice(sus: A –FM; jos: A –MW) ....................................42<br />

Figura 3.49. Vocala E -FM. Sunt vizibili 3 formanţi principali. ..................................................43<br />

Figura 3.50. Vocala E - MW. Formantul 3 s-a redus cu 5%. .......................................................43<br />

Figura 3.51. Vocala I -FM. În acest caz vocala are doi formanţi. ................................................43<br />

Figura 3.52. Vocala I - MW. Formanţii se păstrează; apare zgomotul de fond............................43<br />

Figura 3.53. Vocala O -FM. In acest caz vocala are trei formanţi. ..............................................43<br />

Figura 3.54. Vocala O - MW. Formantul 3 creşte cu aproximativ 3%.........................................43<br />

Figura 3.55. Vocala U -FM. În acest caz vocala are doi formanţi majori. ...................................44<br />

Figura 3.56. Vocala U - MW. Formantul 2 a scăzut cu aproximativ 12%. ..................................44<br />

Figura 3.57. Vocala /A/ îmbogăţită cu armonici înalte ................................................................44<br />

Figura 3.58. Cele trei segmente definitorii pentru rostirea unei vocale........................................45<br />

Figura 3.59. Vocala A segmentul de atac. Amplitudinea creşte progresiv; durata<br />

segmentului: 42,2 ms; frecvenţa medie este de 120 Hz. ..........................................46<br />

Figura 3.60. Vocala A porţiunea mediană. Se observă un spectru de mai multe armonici;<br />

amplitudinea este constantă; durata segmentului: 89,6 ms; frecvenţa<br />

fundamentală este de 109 Hz....................................................................................46<br />

Figura 3.61. Vocala A porţiunea finală. Amplitudinea scade progresiv; durata<br />

segmentului: 37,5 ms; frecvenţa fundamentală este de 124 Hz. .............................46<br />

Figura 3.62. Vocala E segmentul de atac. Amplitudinea creşte; durata segmentului: 45,4<br />

ms; frecvenţa medie este de 112 Hz. ........................................................................47<br />

x


Figura 3.63. Vocala E porţiunea mediană. Spectrul este identic; amplitudinea este<br />

constantă; durata segmentului: 87,7 ms; frecvenţa fundamentală este de 106<br />

Hz............................................................................................................................. 47<br />

Figura 3.64. Vocala E porţiunea finală. Amplitudinea scade progresiv; durata<br />

segmentului: 66,0 ms; frecvenţa fundamentală este de 117 Hz.............................. 47<br />

Figura 3.65. Vocala I segmentul de atac. Frecvenţa medie este de 130 Hz. Durata<br />

segmentului: 51,6 ms. .............................................................................................. 47<br />

Figura 3.66. Vocala I porţiunea mediană. Frecvenţa fundamentală este de 113 Hz. Durata<br />

segmentului: 122 ms. ............................................................................................... 47<br />

Figura 3.67. Vocala I porţiunea finală. Amplitudinea scade; frecvenţa funda-mentală este<br />

de 123 Hz. Durata segmentului: 60,3 ms................................................................. 48<br />

Figura 3.68. Vocala O segmentul de atac. Amplitudinea creşte; durata segmentului: 41,1<br />

ms; frecvenţa medie este de 118 Hz. ....................................................................... 48<br />

Figura 3.69. Vocala O porţiunea mediană. Amplitudinea rămâne constantă; durata<br />

segmentului: 73,2 ms; frecvenţa fundamentală este de 108 Hz............................... 48<br />

Figura 3.70. Vocala O porţiunea finală. Amplitudinea scade progresiv; durata<br />

segmentului: 38,5 ms ; frecvenţa fundamentală creşte la 119 Hz. .......................... 48<br />

Figura 3.71. Vocala U segmentul de atac. Amplitudinea creşte; durata segmentului: 34,3<br />

ms; frecvenţa medie este de 116 Hz. ....................................................................... 49<br />

Figura 3.72. Vocala U porţiunea mediană. Amplitudinea este constantă; durata : 51,6 ms;<br />

frecvenţa fundamentală este de 99 Hz. .................................................................... 49<br />

Figura 3.73. Vocala U porţiunea finală. Amplitudinea scade progresiv pe o durată de 40,7<br />

ms; frecvenţa fundamentală se menţine aproximativ constantă (96-99 Hz)............ 49<br />

Figura 3.74. Silaba MA neaccentuată. Frecvenţa fundamentală este aproximativ<br />

constantă, egală cu 102 Hz. ..................................................................................... 50<br />

Figura 3.75. Silaba MA accentuată. Se observă ceşterea amplitudinii, frecvenţei şi<br />

duratei rostirii silabice. Frecvenţa variază de la 113 la 121 Hz............................... 50<br />

Figura 3.76. Variaţia frecvenţei vocalice dintr-o silabă accentuată ............................................. 51<br />

Figura 4.1. Segment de analiză din cadrul semnalului vocal...................................................... 54<br />

Figura 4.2. Structura spectrală a unui semnal vocal periodic [Fer97] ........................................ 56<br />

Figura 4.3. Funcţie fereastră utilizată în ponderare .................................................................... 57<br />

Figura 4.4. Schema bloc a analizorului cu banc de filtre............................................................ 60<br />

Figura 4.5. Modelul producerii vorbirii prin metoda LPC.......................................................... 62<br />

Figura 4.6. Modelul producerii vorbirii prin metoda cepstrală................................................... 63<br />

Figura 4.7. Modul de calcul al cepstrumului .............................................................................. 63<br />

Figura 4.8. Segmentarea semnalului vocal ................................................................................. 66<br />

Figura 4.9. Detectarea automată a segmentelor vorbirii ............................................................. 67<br />

Figura 4.10. Relaţia dintre analiză, segmentare şi etichetare [Chi00] ......................................... 68<br />

Figura 4.11. Rezultatele segmentării prin metoda Childers [Chi00] ........................................... 83<br />

Figura 4.12. Metoda de segmentare automată propusă de autor.................................................. 84<br />

Figura 4.13. Determinarea punctelor de zero, minim, maxim..................................................... 85<br />

Figura 4.14. Algoritmul de detecţie a regiunilor.......................................................................... 86<br />

Figura 4.15. Relaţia dintre categoriile de bază şi clasele de regiuni............................................ 87<br />

xi


Figura 4.16. Detectarea unei regiuni de de tip REG_LIN (linişte)..............................................90<br />

Figura 4.17. Detectarea unei regiuni de tip REG_LIN_CONS (linişte nesonoră) ......................91<br />

Figura 4.18. Porţiune sonoră dintr-un segment de vorbire ...........................................................91<br />

Figura 4.19. Detectarea unei regiuni de tip REG_VOC (sonoră vocalică) .................................92<br />

Figura 4.20. Detectarea regiunilor de tip REG_SALT (regiune sonoră de tip salt). ....................93<br />

Figura 4.21. Consoana /R/ în regiunea vocalică /AREA/.............................................................94<br />

Figura 4.22. Determinarea minimului local al perioadelor...........................................................94<br />

Figura 4.23. Detectarea subregiunii /R/ în regiunea vocalică /AREA/.........................................95<br />

Figura 4.24. Consoana /G/ (stânga) şi vocala /O/ (dreapta) .........................................................96<br />

Figura 4.25. Spectrele asociate consoanei /G/ şi vocalei /O/........................................................96<br />

Figura 4.26. Porţiune nesonoră dintr-un segment de vorbire .......................................................97<br />

Figura 4.27. Detectarea unei regiuni de tip REG_CONS (consoană nesonoră)..........................97<br />

Figura 4.28. Consoana plozivă /C / din cadrul silabei /CA/ .........................................................98<br />

Figura 4.29. Detectarea regiunilor de tip REG_NEREG (regiune neregulată). ...........................99<br />

Figura 4.30. Graficul spectrelor FFT pentru o vocală şi o consoană fricativă ...........................100<br />

Figura 4.31. Detectarea unei regiuni de tip REG_TRANZ_DENSA (regiune tranzitorie __<br />

densă)......................................................................................................................100<br />

Figura 4.32. Secvenţa de regiuni de compactat ..........................................................................101<br />

Figura 4.33. Secvenţa de regiuni după prima aplicare a algoritmului ........................................102<br />

Figura 4.34. Compactarea regiunilor într-un segment de tip consoană nesonoră ......................102<br />

Figura 4.35. Regiunile dintr-un segment nesonor după prima aplicare a algoritmului ..............103<br />

Figura 4.36. Compactarea regiunilor într-un segment de tip linişte-nesonoră ...........................103<br />

Figura 4.37. Compactarea regiunilor tranzitorii .........................................................................103<br />

Figura 4.38. Secvenţa de regiuni înainte de compactare ............................................................104<br />

Figura 4.39. Secvenţa de regiuni după compactare. ...................................................................104<br />

Figura 4.40. Rezultatul final al segmentării în clase de regiuni .................................................105<br />

Figura 4.41. Ilustrarea algoritmului de detecţie a perioadelor şi punctelor glotale GCI. ...........108<br />

Figura 4.42. Algoritmul de determinare a perioadelor de semnal ..............................................109<br />

Figura 4.43. Determinarea punctului pivot.................................................................................111<br />

Figura 4.44. Estimarea perioadei actuale a semnalului ..............................................................112<br />

Figura 4.45. Detectarea maximelor de perioadă pornind de la punctul pivot.............................114<br />

Figura 4.46. Detectarea automată a maximelor de perioadă ......................................................115<br />

Figura 4.47. Determinarea intervalelor de perioadă ...................................................................116<br />

Figura 4.48. Rezultatul final al determinării intervalelor de perioadă........................................117<br />

Figura 4.49. Segmentarea HMM bazată pe un corpus segmentat manual [Jar08] .....................120<br />

Figura 4.50. Paşii algoritmului de segmentare bazat pe rafinarea frontierelor [Jar08] ..............120<br />

Figura 4.51. Modul de construcţie a unui supervector [Jar08]..................................................121<br />

Figura 4.52. Pseudo-trifonele din propoziţia în limba franceză “On comptait deux projets<br />

d’entreprise distincts” [Jar08] ................................................................................121<br />

Figura 4.53. Evidenţierea segmentelor corespunzătoare unităţilor lingvistice...........................124<br />

Figura 4.54. Metoda de segmentare fonematică propusă de autor .............................................125<br />

Figura 4.55. Asocierea grupurilor fonetice cu regiunile.............................................................126<br />

Figura 4.56. Scanner-ul generat şi asocierea de regiuni .............................................................128<br />

xii


Figura 4.57. Asocierea foneme–regiuni pentru sintagma: “Evidenţierea unui cadru general<br />

pentru specificarea algoritmilor şi compararea performanţelor” rostită de<br />

un vorbitor masculin .............................................................................................. 135<br />

Figura 4.58. Asocierea foneme–regiuni pentru sintagma: “Evidenţierea unui cadru general<br />

pentru specificarea algoritmilor şi compararea performanţelor” rostită de<br />

un vorbitor feminin ................................................................................................ 136<br />

Figura 4.59. Asocierea unui grup de mai multe foneme cu o singură regiune .......................... 137<br />

Figura 4.60. Metoda de segmentare bazată pe determinarea tranziţiilor bruşte din regiune ..... 140<br />

Figura 4.61. Segment vocalic pentru un vorbitor masculin - secvenţa ......................... 141<br />

Figura 4.62. Segment vocalic pentru un vorbitor masculin - secvenţa ...................... 142<br />

Figura 4.63. Segment vocalic pentru un vorbitor feminin - secvenţa ................... 143<br />

Figura 4.64. Determinarea subregiunilor vocalice pentru secvenţa ..................... 146<br />

Figura 4.65. Modelarea fonemelor /E/ şi /A/; cadrul de semnal şi spectrul Fourier.................. 147<br />

Figura 4.66. Compararea vectorilor din regiunea ţintă cu modelul ........................................... 148<br />

Figura 4.67. Extinderea secvenţelor fonematice........................................................................ 149<br />

Figura 4.68. Regiune sonor-vocalică corespunzând cu secvenţa /E/, /N/, /E/ ........................... 150<br />

Figura 4.69. Etichetarea perioadelor din regiune....................................................................... 152<br />

Figura 4.70. Determinarea subregiunilor fonematice prin metoda modelării............................ 152<br />

Figura 4.71. Extragerea unităţilor acustice din semnalul vocal ................................................. 153<br />

Figura 5.1. Sistem de sinteză a vorbirii pornind de la text ....................................................... 155<br />

Figura 5.2. Faza de analiză din cadrul sintezei vorbirii ........................................................... 155<br />

Figura 5.3. Faza de sinteză din cadrul sintezei vorbirii ............................................................ 156<br />

Figura 5.4. Sistemul text-to-speech........................................................................................... 157<br />

Figura 5.5. Metoda bazată pe concatenarea formelor de undă [Bur97].................................... 157<br />

Figura 5.6. Metoda bazată pe analiză-sinteză [Bur97] ............................................................. 158<br />

Figura 5.7. Metoda bazată pe reguli [Bur97]............................................................................ 158<br />

Figura 5.8. Etapa de generare a parmetrilor acustici [Bur97]................................................... 160<br />

Figura 5.9. Etapele procesuale ale sintezei TTS [Bur97] ......................................................... 161<br />

Figura 6.1. Modelul sintezei în domeniul timp......................................................................... 163<br />

Figura 6.2. Modelul sintezei în domeniul frecvenţă ................................................................. 164<br />

Figura 6.3. Modelul producerii vorbirii prin metoda LPC........................................................ 165<br />

Figura 6.4. Sintetizor în cascadă [Fer97] .................................................................................. 169<br />

Figura 6.5. Metoda de sinteză TD-PSOLA............................................................................... 171<br />

Figura 6.6. Extragerea şi maparea segmentelor în sinteza TD-PSOLA ................................... 174<br />

Figura 6.7. Potrivirea unităţii fonetice cu unităţile candidate ................................................... 178<br />

Figura 6.8. Potrivirea unităţilor de concatenat.......................................................................... 178<br />

Figura 6.9. Calculul costurilor pentru selecţia unităţilor .......................................................... 179<br />

Figura 6.10. Arborele de decizie pentru fonema “a” ................................................................. 181<br />

Figura 6.11. Metoda de sinteză bazată pe concatenarea silabelor ............................................. 183<br />

Figura 6.12. Un exemplu de transcriere fonetică pentru numere............................................... 188<br />

Figura 6.13. Metoda de analiză de sintaxă propusă de autor ..................................................... 190<br />

Figura 6.14. Lista generată cu formele flexionate posibile........................................................ 191<br />

Figura 6.15. Organizarea setului de reguli pentru analiza de sintaxă ........................................ 192<br />

xiii


Figura 6.16. Interfaţa aplicaţiei de analiză de sintaxă automată.................................................201<br />

Figura 6.17. Analizorul lingvistic pentru despărţirea în silabe...................................................203<br />

Figura 6.18. Structura ierarhică a analizorului sintactic.............................................................204<br />

Figura 6.19. Analizorul lexical pentru regăsirea silabelor..........................................................207<br />

Figura 6.20. Despărţirea automată în silabe ...............................................................................218<br />

Figura 6.21. Analizorul lexical pentru determinarea accentelor.................................................219<br />

Figura 6.22. Detectarea automată a accentelor...........................................................................225<br />

Figura 6.23. Configuraţia silabelor S2, S3 şi S4 din corpusul divers de 342000 de cuvinte......227<br />

Figura 6.24. Frecvenţele de apariţie ale silabelor S2, S3 şi S4...................................................227<br />

Figura 6.25. Frecvenţele de apariţie ale primelor 10 silabe S2, S3 şi S4 ...................................227<br />

Figura 6.26. Primele 10 cele mai frecvente silabe de tip S2.......................................................228<br />

Figura 6.27. Primele 10 cele mai frecvente silabe de tip S3.......................................................228<br />

Figura 6.28. Primele 10 cele mai frecvente silabe de tip S4.......................................................228<br />

Figura 6.29. Organizarea arborescentă a bazei de date vocale ...................................................230<br />

Figura 6.30. Construirea seturilor de diviziune pentru silaba cráp ............................................233<br />

Figura 6.31. Rezultatul căutării silabelor în baza de date...........................................................234<br />

Figura 6.32. Exemplu de concatenare a unităţilor acustice ........................................................235<br />

Figura 6.33. Rezultatul final al sintezei: generarea formei de undă pentru sintagma: ...............235<br />

Figura 7.1. Sistemul de sinteză LIGHTVOX. Modulele componente .......................................242<br />

Figura 7.2. Sistemul de sinteză a vocii în limba română LIGHTVOX ......................................244<br />

Figura 7.3. Etapele principale ale realizării sistemului LIGHTVOX.........................................245<br />

Figura 7.4. Crearea corpusului paralel text-voce........................................................................249<br />

Figura 7.5. Paşii realizaţi pentru segmentarea semnalului în regiuni fonematice ......................249<br />

Figura 7.6. Asocierea dintre grupurile fonematice şi secvenţele de regiuni...............................250<br />

Figura 7.7. Detecţia şi separarea silabelor din semnal................................................................250<br />

Figura 7.8. Structura colecţiei de fişiere din baza de date vocală...............................................251<br />

Figura 7.9. Extras din directorul S2 cu unităţi acustice silabice de două litere..........................252<br />

Figura 7.10. Interfaţa aplicaţiei LIGHTVOX .............................................................................260<br />

xiv


Lista de tabele<br />

Tabelul 2.1. Relaţia dintre sunetele percepute şi nivelul în decibeli [Ste97]............................... 11<br />

Tabelul 3.1. Duratele segmentelor vocalice................................................................................. 49<br />

Tabelul 3.2. Frecvenţele specifice segmentelor vocale................................................................ 50<br />

Tabelul 3.3. Frecvenţe comparative: silabe accentuate faţă de silabele normale......................... 51<br />

Tabelul 3.4. Duratele comparative între silabele accentuate şi silabele normale......................... 52<br />

Tabelul 4.1. Setul de reguli pentru calculul segmentării finale.................................................... 80<br />

Tabelul 4.2. Simbolurile utilizate la etichetarea segmentelor ...................................................... 83<br />

Tabelul 4.3. Rezultatele algoritmului zero-minim-maxim.......................................................... 86<br />

Tabelul 4.4. Categoriile de bază şi clasele de regiuni .................................................................. 87<br />

Tabelul 4.5. Apartenenţa fonemelor limbii române la diferitele clase de regiuni........................ 89<br />

Tabelul 4.6. Lungimea intervalelor de perioadă pentru segmentul vocal exemplificat ............. 117<br />

Tabelul 4.7. Acurateţea segmentării pentru cele trei metode de segmentare [Jar08]................. 123<br />

Tabelul 4.8. Tabel de corespondenţe pentru transcrierea fonetică............................................. 125<br />

Tabelul 4.9. Duratele rostirii pentru diferite grupuri de foneme................................................ 131<br />

Tabelul 4.10. Stabilirea frontierelor pentru segmentul ................................................. 142<br />

Tabelul 4.11. Stabilirea frontierelor pentru segmentul .............................................. 143<br />

Tabelul 4.12. Compararea prioadelor pentru secvenţa ......................................... 144<br />

Tabelul 4.13. Stabilirea frontierelor pentru secvenţa ............................................ 146<br />

Tabelul 4.14. Compararea cadrelor cu modelele ....................................................................... 150<br />

Tabelul 6.1. Domeniile de frecvenţă ale parametrilor Fk şi Bk................................................... 170<br />

Tabelul 6.2. Denominarea unei cifre în cadrul numărului ......................................................... 186<br />

Tabelul 6.3. Compatibilităţile dintre categoriile sintactice analizor / dicţionar ......................... 192<br />

Tabelul 6.4. Exemple de generare a unităţilor acustice pornind de la unităţile textuale............ 231<br />

Tabelul 6.5. Notaţii ale silabelor folosite în baza de date acustică ............................................ 233<br />

Tabelul 7.1. Unităţi silabice din afara dicţionarului care generează silabe din dicţionar .......... 248<br />

Tabelul 7.2. Unităţile acustice înregistrate în baza de date........................................................ 252<br />

xv


1. Introducere<br />

1.1. Scopul tezei de <strong>doctorat</strong><br />

<strong>Teza</strong> de <strong>doctorat</strong> de faţă are ca scop studiul modalităţilor de procesare a vorbirii şi<br />

realizarea de cercetări în domeniul particular al sintezei de voce, având următoarele obiective:<br />

a) dezvoltarea unor metode automate de analiză a semnalului vocal;<br />

b) dezvoltarea unei metode de sinteză a vorbirii adaptată specific limbii române;<br />

c) dezvoltarea unei metodologii de lucru în scopul construirii unui sistem de sinteză vocală<br />

automată;<br />

d) implementarea unui prototip al unui sistem de sinteză de voce pentru limba română.<br />

1.2. Organizarea pe capitole a lucrării<br />

Capitolul 1 reprezintă o introducere în domeniul tezei de <strong>doctorat</strong>. La început este<br />

prezentată problematica sintezei de voce la modul general. Apoi se arată oportunitatea temei<br />

alese, ţinându-se cont în primul rând de stadiul actual al cercetării în domeniul prelucrării<br />

vorbirii şi sintezei de voce. Sunt arătate totodată principalele contribuţii şi realizări ale tezei.<br />

Capitolul 2 expune modalitatea producerii şi percepţiei vorbirii umane, fiind prezentat<br />

modelul producerii vorbirii. Se face o clasificare a sunetelor produse de vocea umană şi sunt<br />

prezentate proprietăţile acustice ale sunetului.<br />

Capitolul 3 face o introducere în domeniul procesării semnalului vocal, arătându-se mai<br />

întâi specificul operaţiilor de prelucrare şi analiză a semnalului vocal. Sunt prezentate apoi<br />

principalele metode de procesare a semnalului vocal, metodele de codare, metodele şi<br />

standardele de compresie a semnalului vocal.<br />

Se prezintă în continuare contribuţiile autorului în domeniul procesării semnalului vocal:<br />

aplicaţia de prelucrare digitală a semnalului vocal SPEA ( Sound Processing and Enhancement<br />

Application), precum şi experimentele realizate asupra unor eşantioane reale de semnal audio şi<br />

vocal prin intermediul acestei aplicaţii.<br />

Capitolul 4 prezintă domeniul analizei de semnal: parametrii de bază ai semnalului vocal<br />

şi modalităţile de analiză efectuate în scopul determinării parametrilor acestuia: modul de analiză<br />

în domeniul timp şi modul de analiză în domeniul frecvenţă. Pentru fiecare modalitate sunt<br />

prezentate metodele de determinare a parametrilor semnalului vocal.<br />

Tot în cadrul domeniului analizei de semnal sunt prezentate principiile detectării<br />

segmentelor cu proprietăţi specifice din semnalul vocal, cerinţele pe care trebuie să le<br />

îndeplinească algoritmii de segmentare, modalităţile şi etapele detectării segmentelor semnalului<br />

vocal. A fost prezentată din literatura de specialitate o metodă generică pentru segmentarea în<br />

domeniul timp, capabilă să detecteze diferite categorii de segmente din semnalul vocal.<br />

Sunt prezentate în continuare contribuţiile aduse de autor în procesul segmentării<br />

automate a semnalului vocal, respectiv metoda proprie de segmentare în domeniul timp. Sunt<br />

evidenţiate etapele algoritmului de segmentare precum şi rezultatele obţinute: detectarea a patru<br />

categorii fundamentale de semnal şi a zece clase de regiuni. ...<br />

1


2<br />

Cap. 1. Introducere<br />

Se prezintă apoi principiile procesului de segmentare fonematică, de asociere a<br />

segmentelor semnalului vocal cu secvenţele de foneme corespunzând semanticii (reprezentării<br />

textuale) a semnalului vorbit. Au fost expuse trei metode principale de segmentare fonematică,<br />

extrase din literatura de specialitate.<br />

Sunt prezentate şi contribuţiile autorului în problematica segmentării fonematice a<br />

semnalului vocal, respectiv metoda de segmentare fonematică bazată pe reguli de asociere<br />

foneme-regiuni. S-au explicat paşii metodei, setul de reguli folosit, s-au prezentat rezultatele şi<br />

avantajele metodei. Au fost arătate aplicaţiile metodei de segmentare fonematică în procesul de<br />

construire a bazelor de date vocale.<br />

Capitolul 5 a fost dedicat prezentării domeniului sintezei vorbirii; a fost expus modelul<br />

general al sintezei vorbirii, sistemul de sinteză text-to-speech, precum şi metodele de bază<br />

folosite în sinteza text-to-speech. Au fost descrise etapele procesului sintezei vocale pornind de<br />

la text.<br />

Capitolul 6 prezintă metodele existente de sinteză a vorbirii, atât în domeniul frecvenţă<br />

cât şi în domeniul timp. Dintre metodele de sinteză în domeniul frecvenţă au fost expuse metoda<br />

formantică şi metoda LPC ( Linear Predictive Coding), iar în cadrul metodelor de sinteză în<br />

domeniul timp au fost detaliate metoda TD-PSOLA (Time Domain Pitch Synchronous Overlapp<br />

and Add) şi metoda de sinteză bazată pe corpus.<br />

Ca şi contribuţie în domeniul proiectării metodelor de sinteză vocală, s-a prezentat<br />

metoda de sinteză vocală pe bază de silabe pentru limba română. Metoda cuprinde următoarele<br />

etape: preprocesarea textului, analiza de sintaxă, determinarea unităţilor lingvistice de tipul<br />

silabelor, determinarea prozodiei intra-segmentale (accentuaţia), regăsirea unităţilor acustice din<br />

baza de date vocală, concatenarea unităţilor acustice şi sinteza propriu-zisă a rostirii.<br />

A fost descris setul de reguli pentru preprocesarea textului sursă. S-a prezentat apoi<br />

metoda de analiză de sintaxă şi setul de reguli pentru analiza formelor flexionate din limba<br />

română. Este prezentat analizorul lexical pentru despărţirea cuvintelor în silabe, precum şi setul<br />

de reguli utilizat în detectarea silabelor. Se expune apoi modul de determinare a aspectelor<br />

prozodice segmentale, prezentându-se analizorul lexical utilizat în determinarea accentelor şi<br />

setul de reguli asociat.<br />

În continuare se descrie structura şi modul de organizare a bazei de date vocale. Baza de<br />

date este alcătuită dintr-un subset al silabelor limbii române, subset alcătuit pe baza frecvenţelor<br />

de apariţie ale silabelor în limba română vorbită. Pentru a determina aceste frecvenţe de apariţie,<br />

a fost realizată o statistică utilizând un corpus de texte conţinând peste 300000 de cuvinte.<br />

Este prezentată apoi modalitatea de regăsire a unităţilor acustice din baza de date vocală.<br />

Căutarea în baza de date se face după lungimea silabei, contextul median sau final în cadrul<br />

cuvântului şi accentuare. A fost expus în continuare modul de concatenare a unităţilor acustice<br />

pentru a forma semnalul de ieşire, precum şi modul de realizare a sintezei de voce.<br />

Capitolul 7 prezintă sistemul de sinteză de voce în limba română LIGHTVOX, sistem<br />

care implementează metoda de sinteză pe bază de silabe dezvoltată de autor. S-au descris<br />

organizarea pe module a sistemului, etapele de proiectare, precum şi paşii care au fost realizaţi la<br />

fiecare etapă. Este detaliat modul de construire a bazei de date vocale şi se prezintă algoritmul de<br />

implementare al procesului de conversie text-voce. În finalul capitolului sunt arătate rezultatele<br />

obţinute cu sistemul de sinteză vocală, aplicaţiile şi dezvoltările de viitor.


3<br />

Cap. 1. Introducere<br />

Capitolul 8 prezintă concluziile finale, sinteza cercetărilor efectuate în cadrul tezei şi sunt<br />

detaliate contribuţiile aduse de autor la dezvoltarea domeniului de cercetare.<br />

În continuare este prezentată bibliografia selectată de autor ce include titlurile citate.<br />

Anexa 1 prezintă notaţiile folosite în cadrul gramaticii LEX pentru construirea<br />

analizoarelor lexicale. Anexele 2, 3 şi 4 prezintă seturile de silabe alcătuite din două, trei şi<br />

respectiv patru foneme, obţinute pe baza statisticii realizate de către autor asupra frecvenţelor de<br />

apariţie a silabelor în limba română. Anexa 5 prezintă activitatea ştiinţifică a autorului, lucrările<br />

ştiinţifice şi proiectele de cercetare la care a participat, iar în anexa 6 sunt prezentate în extenso<br />

două articole publicate de autor în reviste recunoscute pe plan internaţional.<br />

1.3. Problematica sintezei de voce<br />

Odată cu dezvoltarea tot mai accentuată a tehnologiilor şi sistemelor informatice s-a pus<br />

problema comunicării cât mai naturale dintre om şi calculator. Comunicarea pe bază de voce,<br />

atât de obişnuită omului, s-a dovedit a fi o sarcină dificil de realizat pentru sistemul automat.<br />

Interacţiunea pe bază de voce presupune mai multe etape: recunoaşterea cuvintelor pe<br />

care le rosteşte interlocutorul, recunoaşterea semanticii vorbirii sau a informaţiei transmise,<br />

procesarea informaţiei, elaborarea unui răspuns şi conversia acestuia din nou în formă vocală.<br />

Sinteza automată de voce constituie o etapă distinctă a acestui proces de interacţiune<br />

vocală cu utilizatorul uman. Sinteza vorbirii porneşte de la un text (răspunsul care trebuie rostit),<br />

îl descompune în unităţi lingvistice de bază (foneme sau grupuri de foneme), generează<br />

parametrii acustici corespunzători fiecărei unităţi lingvistice, şi apoi foloseşte aceşti parametrii<br />

pentru comanda procesorului audio ce va genera secvenţa acustică dorită. Cu cât parametrii<br />

acustici generaţi de calculator sunt mai apropiaţi de parametrii rostirii umane, cu atât vorbirea<br />

sintetizată va fi mai naturală, mai plăcută interlocutorului şi mai uşor de înţeles.<br />

În continuare se pune problema găsirii unor metode de generare a parametrilor astfel<br />

încât pe de o parte aceste metode să asigure complexitatea generării unor parametrii apropiaţi de<br />

vorbirea umană reală, şi pe de altă parte să fie suficient de versatile pentru a permite modularea<br />

intonaţiei vorbirii prin modificarea parametrilor acustici.<br />

Aceste două caracteristici: claritatea rostirii şi realizarea intonaţiei definesc indicatorii de<br />

calitate ai vorbirii produse prin sinteză. Diferite abordări ale procesului de sinteză a semnalului<br />

vocal, atât în domeniul frecvenţei, cât şi în domeniul timp, au urmărit aducerea celor doi<br />

indicatori la valori cât mai ridicate. Acesta este şi scopul cercetărilor în domeniul producerii<br />

vorbirii la ora actuală.<br />

1.4. Oportunitatea temei alese<br />

În decursul timpului au fost proiectate mai multe metode pentru generarea parametrilor<br />

acustici necesari pentru sinteză. În ultimii ani s-a dovedit că metodele cu cele mai bune rezultate<br />

sunt cele care memorează forma de undă reală, rostită de un vorbitor uman, pentru fiecare unitate<br />

lingvistică în parte. Aceste metode realizează sinteza vorbirii prin concatenarea unităţilor<br />

acustice memorate într-o bază de date vocală.


4<br />

Cap. 1. Introducere<br />

Autorul tezei a mers pe această linie a realizării unei sinteze de voce care să respecte<br />

parametrii de calitate ai vorbirii naturale. A fost proiectată în acest sens o metodă de sinteză a<br />

vorbirii pentru limba română şi s-a indicat o metodologie de lucru pentru realizarea unui sistem<br />

de sinteză vocală automată.<br />

Utilizând ca unităţi lingvistice silabele, metoda de sinteză proiectată se integrează în<br />

categoria metodelor de calitate superioară, bazate pe concatenare. Metoda este adaptată specific<br />

limbii române, şi propune ca noutate o abordare bazată pe reguli atât în faza de procesare a<br />

textului, de extragere a unităţilor lingvistice şi informaţiilor prozodice, cât şi în faza de construire<br />

a bazei de date vocale prin extragerea unităţilor acustice din semnalul vorbit.<br />

De asemeni, cercetările efectuate de autor în cadrul tezei curente oferă posibilitatea<br />

construirii unui sistem performant de sinteză vocală folosind anumite procedee specifice<br />

inteligenţei artificiale şi lingvisticii computaţionale.<br />

Pe plan internaţional există mai multe abordări ale metodei de sinteză vocală bazate pe<br />

silabe. În Europa, au fost elaborate astfel de sisteme în ţări precum Marea Britanie [Lew99],<br />

Rusia [Kri97], Cehia [Kop97], Macedonia [Jos97], iar în Asia au fost realizate sintetizoare<br />

bazate pe silabe pentru limbi vorbite de sute de milioane de persoane: limba chineză [Men02],<br />

mai multe dialecte indiene [Nag05], limba Malay - vorbită în Malaysia, Indonesia, Thailanda<br />

[Sam04]. Rezultatele obţinute cu aceste sintetizoare evidenţiază o calitate înaltă a vorbirii<br />

generate, situată aproape de parametrii naturali, chiar dacă aceste sisteme nu beneficiază de<br />

bazele de date de mari dimensiuni ale sistemelor bazate pe corpus.<br />

La noi în ţară există puţine abordări ale acestei metode ([Bur97], [Moi08]). Aceste<br />

abordări nu utilizează însă reguli de producţie pentru determinarea unităţilor lingvistice,<br />

unităţilor acustice şi informaţiilor prozodice. Nu ştim dacă sau în ce măsură ele folosesc<br />

informaţiile prozodice precum accentuarea cuvintelor sau intonaţia la nivel propoziţional.<br />

În acest context, considerăm utilă abordarea tematicii alese de autor, care acoperă o<br />

anumită lacună existentă la nivelul proiectării sistemelor de sinteză vocală de la noi din ţară,<br />

oferind în plus noi perspective de dezvoltare a domeniului, prin îmbinarea unor procedee<br />

specifice inteligenţei artificiale bazate pe seturi de cunoştinţe şi reguli.<br />

1.5. Principalele contribuţii şi realizări ale tezei<br />

În primul rând este de menţionat caracterul interdisciplinar al tezei, cercetările efectuate<br />

acoperind următoarele domenii :<br />

1. Fonetică şi lingvistică, în ceea ce priveşte analiza alcătuirii fonetice şi sintactice a<br />

cuvintelor din limba română.<br />

2. Inteligenţă artificială, în ceea ce priveşte crearea unor metode automate bazate pe<br />

reguli pentru separarea unităţilor lingvistice din text, respectiv a unităţilor acustice din semnalul<br />

vocal.<br />

3. Procesarea vorbirii, cu cele patru ramuri ale sale:<br />

a) procesarea semnalului vocal, în ceea ce priveşte realizarea unor metode de<br />

îmbunătăţire a calităţii semnalului vocal;<br />

b) analiza semnalului vocal, în ceea ce priveşte detectarea unor regiuni cu proprietăţi<br />

distincte, semnificative din punct de vedere al rostirii, din semnalul vocal;


5<br />

Cap. 1. Introducere<br />

c) recunoaşterea vorbirii, în ceea ce priveşte realizarea unor metode de detectare<br />

automată a secvenţelor fonematice dintr-un semnal vocal cunoscut;<br />

d) sinteza de voce, ca domeniu şi obiectiv în care se încadrează cercetările şi metodele<br />

specifice dezvoltate de autor în cadrul tezei.<br />

Principalele realizări şi contribuţii ale tezei în cadrul domeniilor amintite se referă la:<br />

1. Realizarea unui studiu asupra modului de producere şi percepţie a sunetului.<br />

2. Realizarea unui studiu sintetic asupra metodelor de procesare, codare şi compresie a<br />

semnalului vocal.<br />

3. Dezvoltarea unei aplicaţii de prelucrare digitală a semnalului vocal numită SPEA (Sound<br />

Processing and Enhancement Application).<br />

4. Efectuarea unor experimente asupra unor eşantioane reale de semnal audio şi vocal, în<br />

scopul determinării parametrilor cu influenţă directă asupra calităţii acustice a semnalului.<br />

5. Realizarea unui studiu sintetic asupra metodelor de analiză în domeniul timp şi în<br />

domeniul frecvenţă a semnalului vocal.<br />

6. Realizarea unui studiu asupra modalităţilor de segmentare şi clasificare a semnalului vocal.<br />

7. Dezvoltarea unei metode proprii de segmentare a semnalului vocal în regiuni, capabilă să<br />

detecteze 4 categorii fundamentale de semnal şi 10 clase de regiuni.<br />

8. Dezvoltarea unei metode pentru determinarea perioadelor din forma de undă a semnalului<br />

vocal.<br />

9. Dezvoltarea a trei metode distincte pentru segmentarea fonematică a semnalului vocal prin<br />

analiza regiunilor detectate din semnal.<br />

10. Realizarea unui studiu asupra modalităţilor de sinteză de voce pornind de la un text.<br />

11. Realizarea unui studiu asupra metodelor existente de sinteză vocală.<br />

12. Dezvoltarea unei metode de sinteză vocală pe bază de silabe pentru limba română. În<br />

cadrul metodei au fost stabilite reguli lingvistice pentru faza de analiză a textului şi reguli<br />

de îmbinare a formelor de undă în faza de sinteză.<br />

13. Structurarea unei metodologii de proiectare a unui sistem de sinteză de voce de tip text-<br />

to-speech şi realizarea sistemului de sinteză pentru limba română LIGHTVOX.<br />

14. Crearea unei baze de date vocale ce foloseşte ca unităţi acustice silabele. Baza de date<br />

conţine 600 de silabe înregistrate în diferite contexte şi moduri de pronunţie.


2. Modalitatea producerii vorbirii<br />

2.1. Mecanismul producerii vorbirii<br />

Vorbirea reprezintă posibilitatea de a comunica gândul printr-un sistem de sunete<br />

articulate şi reprezintă un mod de comunicare specific oamenilor, care sunt singurele fiinţe care<br />

utilizează un astfel de sistem structurat.<br />

Informaţia asociată unui mesaj vorbit este purtată de undele sonore. Undele sonore sunt<br />

variaţii ale presiunii aerului generate de către sistemul fonator uman. Ele sunt receptate de către<br />

ureche, şi apoi transmise la creier, care le va interpreta.<br />

Un mesaj vocal constă din compunerea unor entităţi sonore de bază numite foneme.<br />

Acestea, prin asociere, vor forma cuvinte şi apoi structuri semantice mai complexe, numite<br />

propoziţii.<br />

Semnalul vocal (unda acustică vocală) este generat prin mişcarea voluntară a elementelor<br />

anatomice constituente ale sistemului fonator. Aceste elemente fonatorii se înşiră de-a lungul<br />

tractului vocal, determinând caracteristicile acestuia. Tractul vocal este un tub acustic neuniform<br />

care se întinde începând de la glotă (deschizătura aferentă corzilor vocale) până la buze. Structura<br />

rezonatorie a tractului vocal se modifică în procesul fonaţiei, în principal datorită variaţiei poziţiei<br />

buzelor, maxilarelor, limbii şi a vălului palatin [Nav05].<br />

Sunetele sonore se produc prin deschiderea şi<br />

închiderea periodică a corzilor vocale. Vibraţia corzilor<br />

vocale este cea care produce frecvenţa fundamentală a<br />

sunetului emis (figura 2.1).<br />

În generarea sunetelor nazale, vălul palatin, care<br />

separă tractul vocal de cavitatea nazală, va acţiona ca un<br />

tub acustic adiţional. Vorbirea şoptită şi sunetele nesonore<br />

(consoanele) sunt generate prin trecerea liberă a fluxului de<br />

aer prin glotă, cu o viteză suficient de mare pentru a genera<br />

Figura 2.1. Corzile vocale [Nav05] un semnal de tip zgomot cu spectru larg, ce va excita<br />

tractul vocal.<br />

Sunetele fricative se produc prin contracţia (blocarea) fluxului de aer la capătul tractului<br />

vocal, prin intermediul limbii şi al buzelor.<br />

2.2. Rezonanţa tractului vocal<br />

Sundberg [Sun77] a modelat tractul vocal ca un tub acustic închis, arătând că primele trei<br />

frecvenţe de rezonanţă care apar în spectrul sunetelor vocale corespund cu armonicile 1, 3 şi 5 ale<br />

tractului vocal. Aceste frecvenţe vor fi apoi modulate de cavităţile de rezonanţă ale tractului vocal<br />

(cavitatea nazală şi cea orală) şi de către elementele vocale articulatorii: limba, vălul palatin şi<br />

maxilarul.<br />

6


Primele trei frecvenţe de<br />

rezonanţă ale unui tub închis<br />

S4<br />

S3<br />

S2<br />

Cavitatea<br />

nazală<br />

Gi<br />

Signal<br />

Rules<br />

Text<br />

…<br />

…<br />

REGN i<br />

REG2 i<br />

…<br />

REG1 i<br />

Cavitatea<br />

bucală<br />

Corzile<br />

vocale<br />

Rn: Gn<br />

<br />

Cond_Re<br />

Figura 2.2. Frecvenţele de rezonanţă ale tractului vocal [Nav05]<br />

7<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Lungimea tipică a tractului vocal este Cond_Re de 17-18 cm. Aceasta implică o frecvenţă<br />

gi<br />

fundamentală de 500 Hz, dacă se consideră cazul R1: G1 unui tub acustic închis. Frecvenţele rezonatorii<br />

<br />

(formanţii) vor fi atunci de 500, 1500, respectiv Cond_Re 2500 Hz, ceea ce corespunde cu frecvenţele<br />

g1<br />

observate experimental. Totuşi, elementele articulatorii vor produce diferenţe semnificative faţă<br />

…<br />

de aceste valori, în procesul de rostire a sunetelor vocalice.<br />

…<br />

2.3. Elementele vocale articulatorii<br />

gn<br />

Ri: Gi <br />

…<br />

…<br />

Spectrul semnalului<br />

vocal<br />

Rezonanţa tractului vocal<br />

Frecvenţa<br />

Spectrul sunetului<br />

produs de corzile<br />

vocale<br />

Pentru a produce sunete sonore distincte, cum ar fi<br />

Fk<br />

vocalele, mecanismul producerii vocii trebuie să controleze<br />

rezonanţele tractului vocal, care vor genera frecvenţele<br />

specifice (formanţii) sunetului emis. Dacă tractul vocal este<br />

Poziţia vălului<br />

considerat ca o cavitate rezonantă, atunci se poate vedea că<br />

palatin<br />

poziţia limbii, aria deschiderii gurii, poziţia vălului palatin<br />

vor modifica volumul cavităţii rezonante şi implicit<br />

Poziţia şi<br />

formanţii sunetului rezultat (figura 2.3).<br />

forma limbii<br />

Articularea vocii poate fi privită ca schimbarea<br />

rezonanţei tractului vocal, iar agenţii acestei modificări sunt<br />

Poziţia<br />

maxilarului numiţi articulatori.<br />

Elementele producerii vorbirii, incluzând articula-<br />

Figura 2.3. Elementele vocale torii, sunt prezentate în figura 2.4. Elementele articulatorii<br />

articulatorii [Nav05]<br />

schimbă parametrii de bază ai cavităţii tractului vocal,<br />

generând sunete diferite.<br />

Astfel articularea vocii va produce sunete precum vocale, diftongi, semivocale şi sunete<br />

nazale. Aşa cum am văzut, aceste sunete pot fi considerate ca modificări ale frecvenţelor de<br />

rezonanţă ale tractului vocal, ce pot fi modelate ca o filtrare specifică a spectrului acustic<br />

corespunzător tractului vocal. Majoritatea sunetelor sonore (precum vocalele) rezonează în<br />

cavităţile faringială şi orală, iar sunetele nazale (/m/, /n/) în cavitatea nazală.<br />

i<br />

…<br />

F2 i<br />

F1 i<br />

CLASS<br />

CATEG<br />

ORY<br />

VP<br />

VG<br />

C<br />

HD<br />

IR<br />

T<br />

VJ<br />

S<br />

US<br />

V<br />

U<br />

T<br />

V<br />

S<br />

Region<br />

, i =<br />

s,… ,<br />

s+n<br />

,<br />

j<br />

=<br />

i


Faringe<br />

nazal<br />

Vălul<br />

palatin<br />

Faringe<br />

oral<br />

Epiglotă<br />

Faringe<br />

Laringe<br />

Cavitatea<br />

nazală<br />

Limbă<br />

Esofag Corzile vocale<br />

Trahee<br />

2.4. Formarea sunetelor<br />

8<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Mecanismul producerii vorbirii implică<br />

următoarele elemente:<br />

(1) plămânii şi diafragma, care generează<br />

energia necesară (presiunea aerului),<br />

(2) corzile vocale, care sunt puse în vibraţie de<br />

circulaţia aerului şi care vor determina frecvenţa de<br />

bază a sunetului,<br />

(3) laringele, faringele, epiglota, faringele oral,<br />

vălul palatin, faringele nazal, cavitatea nazală şi<br />

limba, elemente care modulează într-un mod specific<br />

fluxul de aer emis.<br />

Figura 2.4. Elementele producerii vorbirii [Nav05]<br />

Aşa cum s-a arătat anterior, sunetele sonore - precum vocalele - sunt formate prin<br />

modificarea frecvenţelor de rezonanţă ale tractului vocal prin intermediul articulatorilor. În<br />

figura următoare sunt ilustrate câteva exemple referitor la producerea sunetelor vocalice /A/, /I/,<br />

/U/, precum şi spectrele asociate. Vârfurile spectrale corespund formanţilor (figura 2.5).<br />

vocala [ A ]<br />

vocala [ I ]<br />

vocala [ U ]<br />

Figura 2.5. Formarea sunetelor vocalice ([Fan60], [Ben76])<br />

Figurile din stânga corespund modului de articulare asociat rostirii celor trei vocale /A/,<br />

/I/, /U/, şi au fost adaptate după lucrarea lui Gunnar Fant "Acoustic theory of speech production"<br />

[Fan60]. Imaginile au fost produse prin înregistrarea structurii faciale cu raze X în timpul vorbirii.<br />

Figurile din dreapta prezintă diferenţele ce apar în configuraţia formanţilor vocalelor.<br />

În procesul receptării sunetelor, urechea internă va acţiona ca un analizor spectral şi va<br />

distinge cele trei tipuri de vocale pe baza diferenţelor dintre formanţi. Datorită originii lor<br />

(frecvenţele de rezonanţă ale tractului vocal), formanţii tind să rămână aceiaşi la diferite tonalităţi<br />

ale vocii – când frecvenţa fundamentală a sunetului se modifică [Nav05].


9<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Formanţii ce apar în sunetul vocii sunt foarte importanţi deoarece ei sunt componentele<br />

esenţiale care dau inteligibilitatea vocii. Astfel, faptul că noi distingem sunetele vocalice între ele<br />

se datorează diferenţelor în valoarea frecvenţelor primilor trei formanţi ai vocalelor. Pentru o voce<br />

masculină, respectiv feminină, primii formanţi se găsesc într-o plajă de frecvenţe ce se poate<br />

determina experimental. De exemplu, pentru o voce masculină care rosteşte vocala /A/, plajele de<br />

frecvenţe sunt următoarele:<br />

formantul 1: 150-850 Hz<br />

formantul 2: 500-2500 Hz<br />

formantul 3: 1500-3500 Hz<br />

formantul 4: 2500-4800 Hz<br />

Figura 2.6. Fomanţii vocalei /A/ [Nav05]<br />

Frecvenţa formanţilor este determinată de procesul articulării vorbirii. Deschiderea<br />

maxilarului, care contractă tractul vocal în porţiunea glotală şi îl dilată în zona vârfului limbii, are<br />

un rol preponderent în stabilirea valorii primului formant. Frecvenţa primului formant creşte pe<br />

măsură ce creşte deschiderea maxilarului. Formantul al doilea depinde de forma şi structura<br />

anatomică a limbii, iar cel de-al treilea formant de poziţia vârfului limbii.<br />

2.5. Auzul uman şi percepţia sunetelor<br />

Auzul uman este bazat pe un organ de simţ extrem de complex, urechea, care este alcătuită<br />

din trei componente: urechea externă, urechea mijlocie şi cea internă.<br />

Urechea externă este alcătuită din două părţi: lobul vizibil şi cartilajul ataşat de cap, şi<br />

canalul auditiv - un tub cu un diametru de aproximativ 0.5 cm şi care pătrunde în interiorul<br />

capului aproximativ 3 cm. Aceste structuri direcţionează sunetele înconjurătoare la organele<br />

sensibile ale urechii mijlocii şi interne care sunt situate în sigurantă în interiorul craniului. Spre<br />

capătul canalului auditiv se întinde o membrană fină numită membrană timpanică sau timpan,<br />

care vibrează la impactul sunetelor [Nav05].<br />

Canalul<br />

auditiv<br />

Urechea<br />

medie<br />

Timpanul<br />

Trompa lui<br />

Eustache<br />

Canalele<br />

semicirculare<br />

Figura 2.7. Structura urechii umane [Nav05]<br />

vocala [ A ]<br />

Nervul auditiv<br />

Cohlea


10<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Urechea mijlocie este formată dintr-un set de oase care transferă această vibraţie înspre<br />

urechea internă (cochlea), unde este transformată în impulsuri nervoase. Urechea internă este un<br />

tub umplut cu lichid cu un diametru de 2 mm şi o lungime de 3 mm. Prezentată secţional în<br />

figura 2.8., urechea internă este curbată şi se aseamănă cu cochilia de melc. De altfel, cochlea<br />

derivă din cuvântul grecesc melc. Când un sunet încearcă să treacă din aer în lichid, doar o mică<br />

parte a sunetului trece prin suprafaţa de contact, în timp ce restul este reflectat. Acest fapt se<br />

datorează impendanţei scăzute a aerului, în timp ce lichidul are o impedanţă mecanică ridicată<br />

[Ste97].<br />

Figura 2.8. Diagrama funcţională a urechii umane [Ste97]<br />

Urechea mijlocie este un mecanism de adaptare a impedanţei care amplifică energia<br />

sonoră a sunetului ce pătrunde în urechea interioară. Adaptarea are loc în zona dintre timpan<br />

(care recepţionează sunetul din aer) şi fereastra ovală (care transmite sunetul în lichid, vezi<br />

figura). Timpanul are o arie de aproximativ 60 mm 2 , în timp ce fereastra ovală are o arie de 4<br />

mm 2 . Ţinând cont că presiunea reprezintă forţa pe unitatea de suprafaţă, această diferenţă de arie<br />

măreşte intensitatea sunetului de aproximativ 15 ori.<br />

Urechea internă conţine membrana basilară, o structură ce susţine aproximativ 12000 de<br />

celule senzitive care formează nervul intern (cohlear). Această membrană este rigidă in<br />

apropierea ferestrei ovale, şi devine mai flexibilă înspre capătul opus, permiţându-i să<br />

funcţioneze ca un spectru de analiză a frecvenţei.<br />

În cazul în care este expusă la un semnal cu frecvenţă ridicată, membrana vibrează în<br />

zona rigidă rezultând excitarea celulelor nervoase din apropierea ferestrei ovale. În acelaşi mod,<br />

sunetele cu o frecvenţă scăzută excită celulele nervoase din capătul îndepărtat al membranei<br />

basiliare, ceea ce face ca fibre specifice ale nervului cohlear să răspundă unor frecvenţe specifice.<br />

Această organizare este numită principiul poziţiei şi se menţine de-a lungul căii auditive în creier<br />

(figura 2.9).<br />

Urechea<br />

externă Canalul<br />

auditiv<br />

Membrana timpanului<br />

Fereastra<br />

ovală<br />

Oasele<br />

urechii mijlocii<br />

Unde sonore<br />

Frecvenţe<br />

înalte<br />

Cohlea<br />

Frecvenţe<br />

medii<br />

Membrana bazilară<br />

Frecvenţe<br />

mici


Figura 2.9. Cohlea şi ilustrarea principiului poziţiei [Ste97]<br />

11<br />

Cap. 2. Modalitatea producerii vorbirii<br />

O altă schemă de codare a informaţiei este folosită în auzul uman, schemă numită<br />

principiul reacţiunii. Celulele nervoase transmit informaţia prin generarea unor pulsuri electrice<br />

scurte numite potenţiale de acţiune. O celulă nervoasă a membranei basiliare poate coda<br />

informaţia audio prin producerea unui potenţial de acţiune ca răspuns la fiecare ciclu al vibraţiei.<br />

De exemplu, un sunet de 200 Hz poate fi reprezentat de un neuron ce produce 200 de impulsuri pe<br />

secundă. Totuşi, acest proces funcţionează doar pentru frecvenţe sub 500 Hz, rata maximă de<br />

producere a impulsurilor nervoase de către neuroni. Urechea umană permite în schimb<br />

funcţionarea corelată a unui grup de celule nervoase. De exemplu un ton de 3000 Hz poate fi<br />

reprezentat de zece celule nervoase şi care acţionează alternativ de 300 de ori pe secundă. Ceea ce<br />

extinde principiul reacţiunii până la aproximativ 4 kHz, valoare deasupra căreia este folosit doar<br />

principiul poziţiei.<br />

Tabelul 2.1 evidenţiază relaţia dintre amplitudinea sunetului şi intensitatea percepută a<br />

sunetului (loudness). Este uzuală exprimarea intensităţii sunetului pe o scară logaritmică numită<br />

SPL (Sound Power Level -nivelul puterii sonore). Pe această scală, 0 dB SPL este un sunet cu o<br />

putere de 10 -16 watt/cm 2 , aproximativ cel mai slab sunet detectabil de urechea umană. Vorbirea<br />

normală este la aproximativ 60 dB SPL, în timp ce urechea este lezată la aproximativ 140 dB<br />

SPL.<br />

Tabelul 2.1. Relaţia dintre sunetele percepute şi nivelul în decibeli [Ste97]<br />

Watt/cm 2 Decibeli<br />

SPL<br />

10 -2<br />

10 -3<br />

10 -4<br />

10 -5<br />

10 -6<br />

10 -7<br />

10 -8<br />

10 -9<br />

10 -10<br />

10 -11<br />

10 -12<br />

10 -13<br />

10 -14<br />

10 -15<br />

10 -16<br />

10 -17<br />

10 -18<br />

140 dB<br />

130 dB<br />

120 dB<br />

110 dB<br />

100 dB<br />

90 dB<br />

80 dB<br />

70 dB<br />

60 dB<br />

50 dB<br />

40 dB<br />

30 dB<br />

20 dB<br />

10 dB<br />

0 dB<br />

-10 dB<br />

-20 dB<br />

Frecvenţe înalte Frecvenţe joase<br />

Intensitatea sonoră<br />

Durere<br />

Disconfort<br />

Concerte rock<br />

Zgomot industrial<br />

Conversaţie normală<br />

Cel mai slab audibil la 100 herţi<br />

Cel mai slab audibil la 10 kHz<br />

Cel mai slab audibil la 3 kHz


12<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Diferenţa dintre cel mai slab dar audibil sunet şi cel mai puternic pe care fiinţa umană îl<br />

poate suporta este de aproximativ 120 dB, ceea ce corespunde cu o diferenţă pe scara puterilor de<br />

10 12 şi pe scara amplitudinilor de un milion (10 6 ). Omul poate detecta o schimbare a intensităţii<br />

când semnalul este modificat cu aproximativ 1 dB (o schimbare a amplitudinii de 12%). Cu alte<br />

cuvinte, există aproximativ 120 de nivele de intensitate ce pot fi percepute, de la cea mai mică<br />

şoaptă la cel mai puternic tunet. Sensibilitatea urechii este uimitoare: în momentul receptării unor<br />

sunete foarte slabe, timpanul vibrează mai puţin decât diametrul unei singure molecule!<br />

Percepţia intensităţii sunetului L poate fi asociată cu puterea sunetului P astfel [Ste97]:<br />

L = (P / Pref ) 1/3<br />

De exemplu, în cazul creşterii puterii sunetului de 10 ori, percepţia auditivă va indica o<br />

creştere a tăriei de aproximativ 2 ori (10 1/3 =2). Aceasta este una din marile probleme privind<br />

eliminarea sunetelor ambientale nedorite, de exemplu cele provenind dintr-o încăpere vecină.<br />

Dacă efectuăm o acoperire a peretelui cu un material izolant fonic în proporţie de 99% , lăsând<br />

neacoperită o zonă de 1% datorită colţurilor, uşilor, etc., chiar dacă intensitatea sunetului a fost<br />

redusă la doar 1% din intensitatea anterioară, intensitatea percepută a scăzut cu aproximativ<br />

0.01 1/3 = 0.2 sau 20% [Ste97].<br />

Raza auzului uman este considerată a fi cuprinsă între 20 Hz şi 20 kHz. Omul este foarte<br />

receptiv la sunete având frecvenţa de 3 kHz (poate decela sunete începând cu 0 dB), dar are<br />

nevoie de 40 dB SPL la un sunet de 100 Hz (amplitudine de 100 de ori mai mare decât cel mai<br />

slab sunet perceptibil). Omul poate spune că două tonuri sunt distincte dacă frecvenţele acestora<br />

diferă mai mult de 0.3% (la o valoare a frecvenţei de 3 kHz) sau de 3% (la o valoare a frecvenţei<br />

de 100 Hz). Pentru comparaţie, clapele adiacente de la un pian diferă cu aproximativ 6% în<br />

frecvenţă.<br />

Principalul avantaj al sistemului auditiv cu două urechi este capacitatea de a identifica<br />

direcţia sunetului. Oamenii pot detecta diferenţa dintre două sunete plasate la trei grade diferenţă<br />

unul de celălalt. Informaţia direcţionată este obţinută în două moduri diferite. În primul rând,<br />

frecvenţele de peste 1 kHz sunt puternic umbrite de cap. Cu alte cuvinte, urechea situată mai<br />

aproape de sunet recepţionează un semnal mai puternic decât urechea situată în partea opusă.<br />

O altă modalitate de detecţie a direcţiei sunetului este prin perceperea întârziată a sunetului<br />

de către cele două urechi. Urechea situată în partea mai îndepărtată a capului aude sunetul uşor<br />

mai târziu decât urechea mai apropiată, datorită distanţei mai mari faţă de sursă. Pornind de la o<br />

mărime tipică a capului (aproximativ 22 cm) şi viteza sunetului (aproximativ 340 m/s), o diferenţă<br />

unghiulară de trei grade necesită o precizie temporală de aproximativ 30 microsecunde. Acest<br />

timp de răspuns necesită principiul reacţiunii pentru sunete sub 1 kHz.<br />

Decelarea informaţiei direcţionale e îmbunătăţită de întoarcerea capului şi observarea<br />

schimbării survenite în semnal. O senzaţie aparte are loc când un ascultător aude exact acelaşi<br />

sunet în ambele urechi; senzaţia se aseamănă ascultării sunetului monofonic prin căşti. Concluzia<br />

creierului va fi că sunetul provine din centrul capului ascultătorului.<br />

Chiar dacă auzul uman poate determina direcţia de unde provine un sunet, acesta nu poate<br />

identifica perfect distanţa pană la sursa sunetului şi aceasta datorită faptului că există puţine<br />

indicii disponibile într-un sunet care să furnizeze informaţia de distanţă. Auzul uman percepe<br />

(2.1)


13<br />

Cap. 2. Modalitatea producerii vorbirii<br />

existenţa sunetelor cu frecvenţă ridicată în apropiere, în timp ce sunetele cu frecvenţă joasă par a<br />

se afla în depărtare. Aceasta se datorează faptului că sunetele îşi disipă componentele de frecvenţă<br />

pe măsură ce se propagă pe distanţe lungi.<br />

Ecoul sunetului este un alt indiciu al distanţei de percepţie. De exemplu, sunetele dintr-o<br />

încăpere mare vor avea ecou după un interval de aproximativ 100 milisecunde, în timp ce într-un<br />

birou mic răspunsul ecoului este de 10 milisecunde. Ecoul este folosit şi de către unele specii de<br />

animale pentru localizare şi orientare spaţială. De exemplu, liliecii şi delfinii produc zgomote ce<br />

se reflectă de obiectele din apropiere; măsurând intervalul dintre transmisie şi ecou, aceste<br />

animale pot localiza obiecte cu o precizie de aproximativ 1 cm. La fiinţa umană, experimentele au<br />

arătat că în special orbii pot folosi într-o anumită măsură localizarea prin ecou.<br />

2.6. Proprietăţile acustice ale sunetului<br />

Perceperea unui sunet continuu, cum ar fi o rostire vocală sau o notă emisă de un<br />

instrument muzical, este influenţată de trei factori predominanţi: volumul, înălţimea şi timbrul.<br />

Volumul este o măsură a intensităţii sunetului. Înălţimea este frecvenţa componentei<br />

fundamentale a sunetului, adică frecvenţa cu care se repetă forma sunetului. Timbrul este<br />

determinat de conţinutul armonic al semnalului. Figura 2.10-a ilustrează o formă de undă<br />

compusă dintr-o undă sinusoidală cu frecvenţa de 1 kHz, având amplitudinea 1, şi o undă<br />

sinusoidală cu frecvenţa de 3 kHz, de amplitudine 0,5. Forma de undă din figura 2.10-b este<br />

obţinută prin diferenţa celor două unde.<br />

a. 1kHz + 3kHz<br />

b. 1kHz - 3kHz<br />

Timp (milisecunde) Timp (milisecunde)<br />

Figura 2.10. Undă compusă din două armonici: a. prin adunare; b. prin scădere [Ste97]<br />

Observaţia interesantă legată de aceste două forme de undă este aceea că ele vor fi<br />

percepute identic de către un ascultător uman. Aceasta deoarece auzul se bazează pe amplitudinea<br />

componentelor, şi mai puţin pe fazele acestora. Astfel forma undelor este indirect asociată cu<br />

auzul şi este mai puţin luată în considerare în sistemele de procesare audio.<br />

Insensibilitatea urechii la faza semnalului sonor poate fi înţeleasă prin examinarea<br />

modului în care sunetul se propagă în mediu. De exemplu într-un mediu restrâns cum ar fi o<br />

cameră, majoritatea sunetelor sunt reflectate de tavan, podea, pereţi. Ţinând cont că propagarea<br />

sunetului depinde de frecvenţă (atenuare, rezonanţă, reflexie), diferi te frecvenţe vor ajunge la<br />

ureche pe diferite căi, ceea ce înseamnă că faza fiecărei frecvenţe se va schimba pe măsură ce


14<br />

Cap. 2. Modalitatea producerii vorbirii<br />

persoana se mişcă în încăpere. Cum urechea ignoră diferenţa de fază, vocea va fi percepută ca<br />

neschimbată, chiar dacă ascultătorul îşi schimbă poziţia. Din punct de vedere fizic, faza<br />

semnalului audio devine aleatoare pe măsură ce se propagă printr-un mediu complex [Ste97].<br />

Totuşi nu se poate spune că urechea este în totalitate insensibilă la fază, şi asta deoarece o<br />

schimbare de fază poate rearanja desfăşurarea în timp a unui semnal audio.<br />

Forma de undă a sunetului viorii apare ca un dinte de fierăstrău (figu ra 2.11-a, pentru<br />

sunetul DO). Figura 2.11-b arată cum este perceput sunetul viorii de către ureche, şi anume ca o<br />

frecvenţă de bază de 220 Hz, plus armonicile de 440, 660, 880 Hz, etc. Dacă aceeaşi notă ar fi<br />

interpretată pe alt instrument, forma de undă ar arăta altfel, totuşi, urechea ar auzi o aceeaşi<br />

frecvenţă de 220 Hz plus armonicile corespondente.<br />

Astfel, cele două instrumente vor produce aceeaşi frecvenţă fundamentală pentru o<br />

anumită notă, rezultând un sunet de aceeaşi tonalitate (înălţime). Totuşi, ţinând cont că<br />

amplitudinea relativă a armonicilor este diferită, cele două sunete nu vor fi identice, ci vor avea un<br />

timbru diferit [Ste97].<br />

a. Forma de undă b. Frecvenţele din spectru<br />

Frecvenţa fundamentală<br />

Armonicile<br />

Timp (milisecunde) Frecvenţă (Herzi)<br />

Figura 2.11. a. Forma de undă a sunetului viorii; b. Perceperea sunetului de către ureche<br />

Perceperea timbrului rezultă din detectarea de către ureche a armonicilor sunetului. Relaţia<br />

dintre forma de undă a sunetului şi armonicile sale nu este biunivocă. Astfel, deşi unui sunet de o<br />

anumită formă îi corespunde un singur spectru de armonici, un acelaşi spectru poate corespunde<br />

mai multor forme de undă, şi aceasta datorită fazelor diferite ale componentelor din spectru.<br />

Urechea este foarte sensibilă la perceperea armonicilor unui anumit sunet. Armonicile<br />

reprezintă de fapt componentele sunetului având frecvenţe dispuse ca multiplii întregi ai<br />

frecvenţei fundamentale. De exemplu, un sunet generat ca o combinaţie între două componente de<br />

1 kHz , respectiv 3 kHz, va fi perceput ca un sunet natural şi plăcut, dar nu acelaşi lucru se va<br />

putea spune despre combinaţia dintre două componente de 1 kHz şi 3,1 kHz [Ste97].


2.7. Modelul producerii vorbirii<br />

15<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Tehnicile care au ca scop sinteza sau recunoaşterea vorbirii au la bază modelul de<br />

producere a vorbirii umane arătat în figura 2.12. Acest model ţine cont de formarea diferită a<br />

sunetelor, în funcţie de modul de pronunţie. Astfel, sunetele vocii umane pot fi clasificate în două<br />

categorii: sunete sonore şi sunete fricative.<br />

Sunetele sonore se produc prin împingerea aerului din plămâni prin corzile vocale şi apoi<br />

pe nas şi/sau pe gură. Corzile vocale vibrează cu frecvenţe cuprinse între 50 şi 1000 Hz, fapt ce va<br />

avea ca efect stabilirea la această valoare a frecvenţei fundamentale a sunetului emis. Vocalele<br />

sunt un exemplu de sunete sonore. În figura 2.12, sunetele sonore sunt reprezentate de<br />

generatorul de impulsuri, cu amplitudinea reglabilă printr-un parametru de control.<br />

Zgomot<br />

alb<br />

Generator<br />

de impulsuri<br />

Frecvenţa fundamentală<br />

Sunete<br />

nesonore<br />

Sunete<br />

sonore<br />

Figura 2.12. Modelul producerii vorbirii [Ste97]<br />

Filtru<br />

digital<br />

Răspunsul<br />

tractului<br />

vocal<br />

Voce<br />

sintetizată<br />

Sunetele fricative provin din generarea unor zgomote ce intervin pe calea de evacuare a<br />

aerului, şi nu din vibraţii ale corzilor vocale. Aceasta se produce când circulaţia aerului este<br />

blocată de limbă, buze sau dinţi, aceasta având ca rezultat generarea unor turbulenţe de aer în<br />

apropierea locului de comprimare. Sunetele fricative includ consoane precum: /s/, /f/, /z/, /v/. În<br />

modelul prezentat în figura 2.12, fricativele sunt reprezentate de un generator de zgomot aleator.<br />

Ambele surse ale sunetelor sunt modificate de cavităţile acustice formate de limbă, buze,<br />

gură, gât şi pasajele nazale. Ţinând cont că propagarea sunetului prin aceste pasaje este un proces<br />

linear, el poate fi reprezentat ca un filtru liniar cu un răspuns la impuls ales corespunzător. De<br />

obicei se foloseşte un filtru recurent, ai cărui coeficienţi determină caracteristicile filtrului.<br />

Componenetele de frecvenţă maximă sunt numite frecvenţe formantice ale sunetului. Frecvenţele<br />

formantice se modifică odată cu schimbarea poziţiei limbii şi buzelor în timpul rostirii.<br />

După cum s-a prezentat anterior, o metodă uzuală de analiză a semnalelor foloseşte<br />

diagrama spectrală. Semnalul audio este împărţit în segmente scurte de aproximativ 2 până la 40<br />

milisecunde, iar prin transformata Fourier (FFT) se calculează spectrul corespunzător de frecvenţe<br />

pentru fiecare segment. Aceste spectre pot fi alăturate şi transformate într-o imagine a<br />

frecvenţelor componente pentru fiecare segment de timp.


16<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Sunetele vocalice sunt cvasiperiodice şi prezintă un spectru de frecvenţe format dintr-o<br />

serie de armonici situate la distanţă egală între ele, spre deosebire de sunetele fricative care au o<br />

formă de zgomot (sunt neperiodice). Figura 2.13 prezintă comparativ două spectre: unul pentru<br />

vocala /E/ şi celălalt pentru consoana /S/.<br />

Domeniul Timp – vocala /E/ Domeniul Timp – consoana /S/<br />

Timp (milisecunde) Timp (milisecunde)<br />

Domeniul Frecvenţă – vocala /E/ Domeniul Frecvenţă – consoana /S/<br />

Frecvenţă (kHz) Frecvenţă (kHz)<br />

Figura 2.13. Spectrograme pentru vocala /E/ şi consoana /S/ [Ste97]<br />

Conform modelului prezentat în figura 2.12, un semnal vocal poate fi aproximat pe fiecare<br />

segment temporal prin specificarea a trei parametri:<br />

(1) alegerea unui semnal de excitaţie (impulsuri periodice sau zgomot aleator),<br />

(2) frecvenţa fundamentală, şi<br />

(3) coeficienţii filtrului digital folosit pentru a aproxima răspunsul tractului vocal.<br />

Vorbirea continuă poate fi sintetizată prin generarea continuă a acestor trei parametri de<br />

aproximativ 40 de ori pe secundă. Calitatea sunetului acestui tip de sinteză a vorbirii nu este<br />

foarte ridicată din cauza aproximării semnalului vocal. Avantajul metodei este că necesită o rată<br />

redusă de date. Această metodă de sinteză a stat la baza codării predictive liniare LPC (Linear<br />

Predictive Coding). Vorbirea umană înregistrată digital este împărţită în segmente, fiecare<br />

segment fiind caracterizat printr-o funcţie de cei trei parametri ai modelului. Codificarea vocii<br />

prin această abordare asigură o rată de date de 2 până la 6 kbyte pe secundă. Segmentul de date<br />

este transmis sau memorat, după necesităţi, şi apoi reconstruit cu sintetizatorul de voce.


2.7.1. Semnalul de excitaţie<br />

17<br />

Cap. 2. Modalitatea producerii vorbirii<br />

În cele ce urmează se prezintă tipurile de excitaţie şi efectul tractului vocal asupra formării<br />

semnalelor de excitaţie [Fer97].<br />

2.7.1.1. Energia de excitare<br />

În primul rând, energia necesară pentru crearea şi menţinerea sunetului este dată de<br />

fluxul de aer expulzat din plămâni, creând astfel un sunet de excitare. Aerul expulzat trece<br />

prin trahee, iar apoi printre corzile vocale. Sunetul de excitare poate fi de trei feluri [Fer97]:<br />

- sonor, adică periodic (cvasiperiodic)<br />

- nesonor, (surd), adică aperiodic, de tip zgomot<br />

- mixt, conţinând atât sunet sonor cât şi zgomot în acelaşi timp.<br />

Un caz special de excitare este acela când nu se produce sunet (întâlnit în cazul<br />

fazelor mute ale aşa numitelor sunete explozive: /p/, /t/, etc).<br />

Excitaţia sonoră ia naştere în faringe, prin intermediul corzilor vocale. Excitaţia de<br />

tip zgomot poate să apară atât la nivelul corzilor vocale (acestea fiind deschise, de ex: /h/)<br />

cât şi la nivelul unor obstacole în calea fluxului de aer, constricţii ale cavităţii bucale ( de ex:<br />

/s/, /f/) . Altfel spus excitaţia sonoră este bine localizată, pe când cea nesonoră nu.<br />

În cazul excitării mixte, corzile vocale vor intra în oscilaţie, dar în acelaşi timp aerul<br />

care străbate tractul vocal întâlneşte şi obstacole în cavitatea bucală.<br />

La generarea sunetelor sonore, presiunea creată produce deschiderea corzilor vocale<br />

urmată de eliberarea instantanee a presiunii, ceea ce permite închidera corzilor. Acest ciclu<br />

se repetă într-un ritm dependent de presiunea aerului în trahee şi de ajustările fiziologice<br />

care au loc (modificarea t ensionării corzilor), acestea intrând într-o oscilaţie de relaxare,<br />

generând pulsuri cvasiperiodice de aer, care excită tractul vocal. Altfel spus oscilaţiile<br />

corzilor vocale modulează fluxul de aer expirat. Cu cât tensiunea în corzi este mai mare, cu<br />

atât este mai mare şi frecvenţa de oscilaţie (frecvenţa fundamentală) a sunetului sonor.<br />

Funcţionarea corzilor vocale este influenţată de mai mulţi factori (independenţi de<br />

voinţa noastră) şi anume: lungimea, masa, elasticitatea lor [Fer97].<br />

În cazul producerii voluntare a sunetelor interesează următorii parametri:<br />

- frecvenţa de oscilaţie (având influenţă şi asupra amplitudinii oscilaţiilor)<br />

- intensitatea sunetului (influenţând şi spectrul armonicelor superioare).


2.7.1.2. Efectele tractului vocal<br />

18<br />

Cap. 2. Modalitatea producerii vorbirii<br />

Tractul vocal, aşa cum s-a prezentat anterior, este un tub acustic neuniform ce se<br />

întinde de la glotă la buze iar forma acestuia variază în timp [Fer97].<br />

Tractul vocal, ce cuprinde cavitatea faringiană, bucală şi cea nazală, se comportă ca<br />

un sistem de cavităţi rezonatoare care modifică în timpul vorbirii caracteristicile sunetului<br />

de excitaţie care îl traversează. În timpul generării sunetelor nazale, vălul palatin separă<br />

tractul vocal de cavitatea nazală, care constituie un tub acustic adiţional pentru generarea şi<br />

transmiterea acestor sunete nazale.<br />

În cazul generării sunetelor sonore excitarea este dată de vibraţiile corzilor vocale.<br />

Componenta spectrală cea mai joasă care coincide cu frecvenţa de oscilaţie se numeşte<br />

frecvenţă fundamentală. Pe lângă aceasta spectrul mai conţine armonici superioare, situate<br />

la multipli întregi ai frecvenţei fundamentale. Sunetul, ajungând în cavităţile rezonatoare<br />

superioare ale tractului vocal va fi modificat în sensul că acele armonici superioare care au<br />

frecvenţele apropiate de frecvenţa de rezonanţă a acestor cavităţi, vor fi amplificate, altele<br />

fiind atenuate [Fer97].<br />

Astfel, la frecvenţele de rezonanţă ale tractului vocal vor fi scoase în evidenţă<br />

armonicile corespunzătoare, determinante pentru tipul sunetului emis, motiv pentru care<br />

aceste componente spectrale de bază sunt numite formanţi. Se observă că pornind de la<br />

acelaşi sunet sonor de excitaţie, prin modificarea parametrilor fizici ai tractului vocal se pot<br />

obţine sunete diferite (în mod caracteristic la formarea vocalelor) .<br />

La excitare de tip zgomot rolul tractului vocal este asemănător, diferenţa constând în<br />

locul unde are loc excitarea. În acest caz la formarea formanţilor participă doar acele<br />

porţiuni ale tractului vocal care urmează după zona unde este localizată excitaţia<br />

(constricţia).<br />

Vorbirea şoptită şi sunetele nesonore sunt generate prin trecerea liberă a fluxului de<br />

aer prin glotă, dar prin intermediul constricţiilor tractului vocal şi forţarea aerului prin<br />

acestea cu o viteză suficient de mare, pentru a se putea genera un zgomot de excitaţie de<br />

spectru larg. Constricţiile împreună cu vibraţia corzilor vocale produc sunetele fricative<br />

sonore (ex: /v/, /z/) .


3. Procesarea digitală a semnalului vocal<br />

Prelucrarea şi analiza semnalului vocal constituie etapele premergătoare în abordarea<br />

sintezei şi recunoaşterii de voce. Procesarea semnalului cuprinde toate metodele de operare<br />

directă asupra semnalului sonor, începând cu achiziţia semnalului, filtrarea, codarea, compresia<br />

şi stocarea acestuia pe suport magnetic sau optic. Analiza semnalului vocal presupune<br />

determinarea parametrilor acestuia pe baza eşantioanelor de vorbire înregistrate de la vorbitor, şi<br />

apoi compararea acestor parametrii cu valorile aşteptate.<br />

3.1. Metode de procesare a semnalului vocal<br />

Prelucrarea semnalului vocal începe cu achiziţia semnalului de la sursă: microfon, sau<br />

aparatură electronică de înregistrare. Achiziţia presupune conversia digitală a semnalului<br />

analogic şi apoi filtrarea sa pentru eliminarea zgomotelor de achiziţie. Conversia se face cu o<br />

frecvenţă de eşantionare de cel puţin 8 kHz (uzual se folosesc frecvenţe standard de 11 kHz, 16<br />

kHz sau 22 kHz).<br />

Conversia analog-digitală a semnalului presupune un anumit mod de reprezentare a<br />

semnalului în format numeric. Stabilirea unui astfel de mod de reprezentare digitală se numeşte<br />

codarea semnalului [Kle95]. În continuare se prezintă câteva metode standard de codare şi<br />

compresie a semnalului vocal.<br />

3.1.1. Metode de codare a semnalului vocal<br />

Tehnica cea mai utilizată în codarea semnalului vocal este tehnica modulării<br />

impulsurilor în cod (PCM – Pulse Code Modulation) [Vla97]. Folosind codarea PCM, fiecare<br />

eşantion al semnalului este cuantizat (i se atribuie o valoare numerică) independent de celelalte<br />

eşantioane. Astfel, un codor PCM determină nivelul de cuantizare al fiecărui eşantion fără să ţină<br />

cont de nivelul eşantioanelor precedente, iar apoi atribuie acestui nivel de cuantizare un cod<br />

binar (numit cuvânt de cod), ce reprezi ntă forma codată a semnalului. În tehnica PCM există<br />

diferite moduri de cuantizare a valorii fiecărui eşantion şi de asociere a cuvintelor de cod pentru<br />

un nivel de cuantizare. Cele mai uzuale tehnici folosite sunt codarea liniară şi codarea<br />

logaritmică [Vla97] :<br />

Codarea liniară constă în considerarea valorii scalate a eşantionului ca şi cuvânt de cod.<br />

Astfel, un semnal de intrare cu valori între 0 şi 1000 mV va fi codat liniar cu valori între 0 şi o<br />

valoare maximă VM (255 pentru valori reprezentate pe octet). Valoarea eşantionului poate fi o<br />

mărime cu semn, ţinând cont că semnalul vocal variază în jurul unei poziţii de referinţă, de nivel<br />

0. Astfel, cuvântul de cod poate fi la rândul lui un număr cu semn.<br />

Codarea logaritmică aplică o transformare logaritmică valorii scalate a eşantionului, şi<br />

apoi atribuie o reprezentare numerică rezultatului obţinut. Astfel, cuvântul de cod va conţine<br />

semnul şi logaritmul valorii scalate a eşantionului. Acest standard de codare este folosit în<br />

telefonia digitală, datorită faptului că în telefonie valorile de amplitudine mare a eşantioanelor<br />

sunt puţin frecvente, şi ca urmare pot fi reprezentate cu o acurateţe mai mică decât valorile de<br />

amplitudine mică, aşa cum este cazul în transformarea logaritmică.<br />

19


20<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Există două standarde pentru codarea logaritmică: legea μ-law, folosită în America de<br />

Nord şi Japonia, respectiv legea A-law, folosită în Europa. Amplitudinea fiecărui eşantion va fi<br />

reprezentată printr-un cuvânt de cod pe 8 biţi (faţă de 14 biţi cât ar fi fost necesari în cazul<br />

metodei liniare pentru codarea unui semnal la o calitate percepută echivalentă).<br />

Dacă în cazul codării PCM cuvântul de cod se reprezintă printr-un număr fix de cifre<br />

binare, există metode care generează coduri de lungime variabilă. Codarea entropică [Feh93]<br />

este o astfel de metodă, care urmăreşte codarea semnalului pe grupuri de eşantioane care au<br />

valori apropiate, situate într-o subclasă a valorilor totale posibile. Astfel, pentru fiecare grup de<br />

astfel de eşantioane, cuvântul de cod se generează pe un număr de biţi mai mic decât numărul de<br />

biţi ce ar fi necesar pentru codarea plajei totale de valori pentru eşantioane. Un exemplu de<br />

codare entropică de lungime variabilă este codarea Huffman, care presupune o parcurgere apriori<br />

a semnalului pentru gruparea eşantioanelor şi stabilirea claselor de valori. Codarea<br />

Huffman poate de exemplu folosi o grupare a valorilor eşantioanelor pe segmente<br />

corespunzătoare vocalelor şi consoanelor, în cazul consoanelor (care au valori ale eşantioanelor<br />

mult mai mici comparativ cu vocalele) putându-se folosi o codificare mai condensată.<br />

Spre deosebire de codarea Huffman, codarea aritmetică nu codează eşantioanele pe<br />

grupe sau blocuri, ci ea caută secvenţe de valori identice ale semnalului, cărora le atribuie<br />

anumite simboluri dintr-un dicţionar sau cuvinte de cod.<br />

O metodă care se foloseşte pentru eliminarea redundanţei semnalului este codarea<br />

predictivă [Feh93]. Metoda se utilizează pentru codarea vorbirii, dar şi a imaginii şi a surselor de<br />

date, în vederea transmiterii informaţiei la distanţă. Metoda urmăreşte să elimine din semnal ceea<br />

ce poate fi prezis despre el la receptor. Predictorii de la receptor şi de la transmiţător trebuie să<br />

funcţioneze sincron, pe baza aceluiaşi set de reguli.<br />

Tehnica cea mai uzuală ce se bazează pe metoda predicţiei se numeşte modulaţia<br />

diferenţială a impulsurilor de cod ( DPCM – Differential Pulse Code Modulation). Schema<br />

bloc a codorului DPCM este ilustrată în figura 3.1.<br />

x(n) e(n)<br />

-<br />

Predictor<br />

Figura 3.1. Schema canonică a codorului DPCM (PCM diferenţial)<br />

Q<br />

xp(n| n-1,n-2,...,n-p)<br />

În figura 3.1, e(n) este diferenţa dintre eşantionul de intrare x(n) şi o predicţie a<br />

eşantionului notată cu xp(n| n-1, n-2, ..., n-p). Această predicţie se calculează ca o combinaţie<br />

liniară a unui număr de p eşantioane care au fost transmise anterior:<br />

i(n)<br />

xp(n)<br />

ep(n)


x<br />

p<br />

p<br />

<br />

k 1<br />

21<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

( n | n 1<br />

, n 2<br />

,..., n p)<br />

a x ( n k<br />

)<br />

(3.1)<br />

unde ( n k<br />

) reprezintă eşantionul reconstruit la momentul n-k:<br />

x p<br />

x p<br />

p<br />

p<br />

( n k)<br />

x<br />

( n k<br />

| n k<br />

1<br />

, n k<br />

2,...,<br />

n k<br />

p)<br />

e<br />

( n k<br />

) (3.2)<br />

k<br />

La fiecare pas, eroarea de predicţie e cuantizată într-o valoare ep(n) de către cuantizorul<br />

Q, care totodată generează şi secvenţă de indici i(n).<br />

Astfel, semnalul x(n) va putea fi reconstruit pe baza valorilor ep(n) recepţionate de la<br />

transmiţător. Utilizarea metodei DPCM e susţinută de faptul că variaţia semnalului diferenţă<br />

ep(n) e mai mică decât variaţia eşantionului x(n). Astfel, presupunând acelaşi debit de codare şi<br />

acelaşi cuantizor, tehnica DPCM aduce o îmbunătăţire de aproximativ 6 dB a raportului<br />

semnal/zgomot faţă de codarea PCM.<br />

Pentru tratarea nestaţionarităţii semnalului vocal se folosesc metode de codare adaptive.<br />

Principiul de bază al adaptării este de a realiza în codor estimarea unor aspecte statistice ale<br />

semnalului vocal, precum energia, frecvenţa sau valorile spectrale [Feh93].<br />

Astfel, în codarea adaptivă ADPCM se calculează o estimaţie locală a deviaţiei<br />

semnalului de intrare, care va controla câştigul unui amplificator situat în faţa unui cuantizor cu<br />

variaţie unitară, aşa cum se ilustrează în figura 3.2 :<br />

-<br />

e(n) b(n) = ±1<br />

Q<br />

xp(n| n-1)<br />

Predictor<br />

Figura 3.2. Schema bloc a codorului delta adaptiv<br />

Cu un astfel de codor adaptiv se poate obţine un câştig mai mare de 5 dB în raportul<br />

semnal/zgomot faţă de sistemul DPCM.<br />

Există două tipuri de metode de adaptare în codarea semnalului vocal: adaptarea silabică<br />

şi adaptarea instantanee. Adaptarea silabică estimează caracteristica semnalului vocal pe o durată<br />

de câteva milisecunde (4..25ms) pentru a se acomoda la modificările din interiorul fonemelor şi<br />

silabelor. Adaptarea instantanee foloseşte constante de timp mai mici (sub 4ms).<br />

Modulaţia delta (DM – Delta Modulation) [Feh93] este un caz special de DPCM în care<br />

cuantizorul foloseşte doar două valori posibile, ceea ce are ca rezultat aproximarea în trepte a<br />

formei de undă. Modulaţia delta are variante de implementare atât cu cuantizor fix, caz în care<br />

p<br />

xp(n)<br />

G<br />

Informaţia<br />

de adaptare


22<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

necesită o rată de eşantionare ridicată pentru a se putea acomoda variabilităţii ridicate a<br />

semnalului vocal, cât şi variante adaptive.<br />

Principiul modulaţiei delta este descris de următoarele ecuaţii :<br />

b p<br />

( n)<br />

sgn[ x(<br />

n)<br />

x<br />

( n)]<br />

(3.3)<br />

x p<br />

p<br />

n<br />

( n)<br />

x ( n 1<br />

) G<br />

b(<br />

n)<br />

(3.4)<br />

În modulaţia delta apar două tipuri de zgomote (erori) de cuantizare : zgomotul de<br />

suprapantă, datorat variaţiei mai rapide a semnalului decât posibilitatea de urmărire a codorului,<br />

şi zgomotul de granularitate, care apare datorită variaţiei de nivel scăzut a semnalului. Aceste<br />

tipuri de zgomote de cuantizare sunt ilustrate în figura 3.3 :<br />

Zgomot de<br />

suprapantă<br />

Figura 3.3. Tipuri de zgomot în modulaţia delta<br />

Tehnicile de modulaţie delta adaptivă cel mai des folosite sunt modulaţia delta cu pantă<br />

variabilă şi modulaţia delta cu adaptare instantanee.<br />

Modulaţia delta cu pantă variabilă ( CVSDM – Continuously Variable Slope Delta<br />

Modulation) are o schemă de adaptare silabică în forma unui filtru digital de ordinul 1 cu o<br />

constantă de timp mai mare de 4ms. Metoda CVSDM are schema bloc din figura 3.2, în care<br />

câştigul amplificatorului are forma :<br />

G G f b , b , b ) , (3.5)<br />

1 ( 1<br />

2<br />

3<br />

n n<br />

n n n<br />

unde funcţia f() ia valorile 1 sau 0 după cum bn-1, bn-2 , bn-3 sunt sau nu toate de acelaşi semn.<br />

Modulaţia delta cu adaptare instantanee are câştigul :<br />

G G M b , b ) , (3.6)<br />

n n1<br />

( n1<br />

n2<br />

Zgomot granular<br />

unde M ia una din două valori după cum bn-1, bn-2 sunt sau nu de acelaşi semn: M va fi supraunitar<br />

pentru predicţia de suprapantă, şi subunitar pentru predicţia de granularitate.<br />

Deosebirea dintre cele două metode este că adaptarea silabică este mai lentă, având ca<br />

efect micşorarea zgomotului de granularitate, dar şi creşterea zgomotului de suprapantă. La<br />

adaptarea instantanee creşte zgomotul de granularitate, dar algoritmul se adaptează rapid la<br />

variaţiile de suprapantă.


3.1.2. Metode şi standarde de compresie a semnalului vocal<br />

23<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Codarea predictivă DPCM şi cea adaptivă ADPCM descrise anterior, din cauza faptului<br />

că ele reduc debitul de date prin codare, se folosesc de asemeni şi în procesul de compresie a<br />

semnalului vocal. Bazată pe tehnica ADPCM, mai există o metodă de compresie pe subbenzi<br />

numită SB-ADPCM. Lărgimea de bandă disponibilă este împărţită pe mai multe subbenzi<br />

separate, pe care apoi este aplicat algoritmul adaptiv de modulare diferenţială a impulsurilor în<br />

cod, crescând astfel acurateţea codării precum şi lărgimea de bandă care poate fi transmisă. Rata<br />

de date la aceste metode variază între 64kbps şi 48kbps [Vla97].<br />

O altă metodă de compresie este numită compresia prin transformări, în care se<br />

urmăreşte împărţirea semnalului de la intrare în segmente sau blocuri şi obţinerea unei<br />

transformări digitale pentru fiecare segment sau bloc de date considerat. Pentru fiecare segment<br />

se calculează anumiţi coeficienţi de transformare, care vor condensa energia semnalului şi vor fi<br />

transmişi pe canalul de comunicaţie.<br />

Principiul compresiei prin transformări, ilustrat în figura 3.4, este următorul :<br />

Dacă la intrare avem un vector N-dimensional U(1..N), cu valoare medie nulă, printr-o<br />

transformare liniară A obţinem un vector complex V(1..N) cu componente care sunt necorelate<br />

mutual. Componentele din vectorul V se cuantizează independent şi se transmit pe canal. La<br />

receptor, vectorului Vc obţinut din cuantizarea lui V i se aplică o transformare inversă B pentru a<br />

recompune aproximarea vectorului iniţial U, care este Ur.<br />

U<br />

u(1)<br />

u(2)<br />

.<br />

.<br />

u(N)<br />

Figura 3.4. Algoritmul de compresie prin transformări<br />

Problema care se pune în continuare este de a obţine matricile A şi B precum şi a<br />

cuantizorului optimal Q, astfel încât valoarea medie pătratică a distorsiunii între vectorii U şi Ur<br />

să fie minimă. Algoritmul optimal a fost găsit de către Karhunen şi Loeve, numindu-se<br />

transformarea KL.<br />

Tr A<br />

V<br />

v(1)<br />

v(2)<br />

.<br />

.<br />

v(N)<br />

Algoritmul KL nefiind o transformare rapidă, se înlocuieşte în multe abordări prin alte<br />

transformări unitare, cum ar fi transformările de tip sinus, cosinus, DFT, Hadamard sau Slant.<br />

Vc<br />

Q<br />

vc(1)<br />

vc(2)<br />

.<br />

.<br />

vc(N)<br />

Tr B<br />

Ur<br />

ur(1)<br />

ur(2)<br />

.<br />

.<br />

ur(N)


24<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

O tehnică des folosită atât ca metodă de compresie, cât şi ca metodă de analiză şi sinteză<br />

a semnalului vocal este tehnica predicţiei liniare LPC (Linear Prediction Coding).<br />

Tehnica LPC se bazează pe separarea semnalului de excitaţie de semnalul corespunzător<br />

tractului vocal, determinarea unor parametri de aproximare numiţi coeficienţi LPC şi<br />

transmiterea acestora pe canalul de comunicaţie. La receptor, decodorul va prelua aceşti<br />

parametri şi îi va reconverti în forma de undă iniţială. Calitatea obţinută cu această metodă nu<br />

este foarte ridicată, tehnica funcţionând cu aproximaţii, dar rata de bit este mult îmbunătăţită.<br />

Printre metodele care folosesc tehnica predicţiei liniare amintim :<br />

Codorul de semnal vocal folosind predicţia liniară cu cod excitat CELP (Code Excited<br />

Linear Prediction) este o tehnică reprezentativă de compresie a vorbirii; este folosită în SUA<br />

(Standardul Federal 1016) şi poate comprima vorbirea până la 4,8 kbps.<br />

Standardul G.728 se bazează pe o schemă de cuantizare vectorială numită predicţie<br />

liniară cu cod excitat de întârziere mică LD-CELP ( Low Delay Code Excited Linear<br />

Prediction). Standardul operează la 16 kbps dar lărgimea de bandă este limitată la 3,4 kHz.<br />

Aceste metode bazate pe LPC folosesc cuantizarea vectorială cu dicţionare de coduri<br />

(code books) atât la transmiţător, cât şi la receptor. În standardul 1016, bazat pe metoda CELP,<br />

diferenţa dintre valoarea eşantionului şi cea găsită în dicţionar e comprimată şi transmisă<br />

împreună cu indexul valorii din dicţionar. Calitatea standardului e comparabilă cu cea dată de<br />

metoda ADPCM.<br />

Standardul Federal 1015 al SUA foloseşte versiunea simplă a codării liniar predictive,<br />

care poate opera la viteze de 2,4 kbps. Din cauza aproximaţiilor în codare, calitatea este mai<br />

slabă decât în cazul metodelor bazate pe CELP.<br />

3.1.2.1. Standarde de compresie a semnalului audio de înaltă fidelitate<br />

În ultimii ani au fost create de către diverse firme pe plan internaţional câteva standarde<br />

de compresie foarte performante, ce se adresează nu doar semnalului vocal, ci semnalului audio<br />

în general. Dintre acestea amintim: TrueSpeech, MPEG, FLAC, Lernot&Hauspie SBC, IMC,<br />

Microsoft, Ogg Vorbis, Qdesign, Atrac, Voxware, etc.<br />

În concluzie, se poate spune că metodele de procesare a semnalului vocal în vederea<br />

analizei sunt diverse şi bine puse la punct de grupuri de lucru şi firme dezvoltate pe plan<br />

mondial, atât în ceea ce priveşte codarea semnalului vocal, cât şi metodele de compresie. Nu este<br />

exclus însă ca în viitor să apară noi metode şi algoritmi performanţi mai ales în domeniul<br />

compresiei, folosind abordări adaptive care să elimine redundanţa inerentă a semnalului vocal,<br />

dar care să păstreze integritatea semnalului la parametrii superiori, absolut necesară în procesul<br />

sintezei şi recunoaşterii vorbirii.


3.2. Contribuţii în procesarea semnalului vocal<br />

25<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

În continuare se prezintă rezultatele cercetărilor efectuate de autor în domeniul procesării<br />

semnalului vocal. Se va prezenta aplicaţia de prelucrare a semnalului prin intermediul căreia a<br />

fost efectuată o serie întreagă de experimente asupra unor eşantioane de semnal vocal, precum şi<br />

rezultatele acestor experimentări.<br />

3.2.1. Aplicaţia de prelucrare digitală a semnalului vocal SPEA<br />

În vederea studierii proprietăţilor semnalului vocal, a fost proiectată o aplicaţie specială<br />

numită SPEA – Sound Processing and Enhancement Application (aplicaţie pentru procesarea<br />

şi îmbunătăţirea calităţii semnalului vocal). În această fază a proiectării, aplicaţia SPEA prezintă<br />

următoarele facilităţi:<br />

(1) încărcarea şi vizualizarea semnalului vocal înregistrat în fişiere Wave în diferite formate,<br />

(2) creşterea rezoluţiei de afişare pentru vizualizarea formei de undă şi a eşantioanelor de<br />

semnal pe diferite scale de mărime ,<br />

(3) determinarea parametrilor principali ai semnalului vocal,<br />

(4) selectarea porţiunii de lucru dintr-un fişier Wave,<br />

(5) calculul transformatei Fourier şi vizualizarea spectrelor de amplitudini şi faze a semnalului,<br />

(6) posibilitatea de modificare interactivă a componentelor din spectrele de amplitudini şi faze<br />

în scopul îmbunătăţirii calităţii acustice a semnalului vocal.<br />

Toate aceste facilităţi pot fi selectate interactiv de către utilizator prin intermediul unor<br />

meniuri grafice cu butoane (toolbars). De asemenea, parametrii semnalului în domeniul timp, cât<br />

şi spectrele din domaniul frecvenţă sunt calculate pe fereastra de selecţie specificată în mod<br />

interactiv de utilizator.<br />

3.2.1.1. Facilităţile şi modul de lucru specific aplicaţiei<br />

Fereastra aplicaţiei SPEA este prezentată în figura 3.5. Aşa cum se observă din desen,<br />

utilizatorul are la dispoziţie două meniuri de tip toolbar pentru a interacţiona cu aplicaţia: meniul<br />

orizontal – destinat operaţiunilor generale efectuate asupra fişierului Wave (încărcare în<br />

memorie, salvare, selectare/deselectare, etc.), şi meniul vertical, ce permite operaţii specifice<br />

aplicate ferestrei de lucru (redare sonoră, mărirea/micşorarea rezoluţiei ferestrei, opţiuni de<br />

vizualizare).<br />

Fereastra principală a aplicaţiei se împarte în trei zone de lucru: zona de vizualizare a<br />

semnalului vocal – în partea de sus a ecranului; zona de vizualizare a spectrului de amplitudini a<br />

semnalului – în partea din stânga jos; zona de vizualizare a spectrului de faze – în partea din<br />

dreapta jos.<br />

În continuare se vor prezentarea facilităţile aplicaţiei SPEA, organizate în cadrul celor<br />

două meniuri grafice.


3.2.1.1.1. Facilităţi de ordin general asupra fişierului de sunet<br />

26<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Aceste facilităţi pot fi accesate prin intermediul meniului orizontal al aplicaţiei. În<br />

ordinea butoanelor de pe toolbar, acestea sunt:<br />

a) NEW – deschiderea unui nou fişier de sunet, iniţial vid. Acesta va putea referi un fişier<br />

rezultat al prelucrării anterioare sau va putea fi obţinut prin înregistrare directă de la microfon.<br />

b) OPEN – citirea şi afişarea unui fişier de sunet de pe disc. Fişierul este de tip Wave având<br />

următoarea structură:<br />

struct WAVEFORMATEX{<br />

WORD wFormatTag;<br />

WORD nChannels;<br />

DWORD nSamplesPerSec;<br />

DWORD nAvgBytesPerSec;<br />

WORD nBlockAlign;<br />

WORD wBitsPerSample;<br />

WORD cbSize;<br />

};<br />

Figura 3.5. Fereastra principală a aplicaţiei SPEA<br />

Semnificaţia parametrilor formatului Wave este următoarea:<br />

wFormatTag<br />

Reprezintă tipul formatului Waveform-audio. Tipurile de format existente sunt<br />

specificate de Microsoft şi cuprind diferite metode de compresie (ex: WAVE_FORMAT_PCM,<br />

WAVE_FORMAT_LH_CODEC, WAVE_FORMAT_ADPCM, WAVE_FORMAT_DSAT, etc.)


27<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

nChannels<br />

Specifică numărul de canale a fişierului de tip Wave. Fişierele mono au un singur canal<br />

de redare, pe când cele stereo – două.<br />

nSamplesPerSec<br />

Specifică rata de eşantionare, în eşantioane pe secundă. Dacă parametrul wFormatTag<br />

este WAVE_FORMAT_PCM,atunci valorile comune pentru nSamplesPerSec sunt: 8.0 kHz,<br />

11.025 kHz, 22.05 kHz, şi 44.1 kHz.<br />

nAvgBytesPerSec<br />

Specifică rata de transfer a datelor audio, în octeţi pe secundă. Dacă wFormatTag este<br />

WAVE_FORMAT_PCM, nAvgBytesPerSec va fi egal cu produsul parametrilor nSamplesPerSec<br />

şi nBlockAlign.<br />

nBlockAlign<br />

Aliniamentul blocului de date audio, în octeţi. Această valoare specifică cea mai mică<br />

unitate de date pentru formatul curent. Dacă wFormatTag este WAVE_FORMAT_PCM,<br />

nBlockAlign va fi egal cu produsul dintre nChannels şi wBitsPerSample împărţit la 8.<br />

Redarea fişierului de sunet va trebui să proceseze un număr multiplu de nBlockAlign<br />

octeţi de date la un moment dat. Datele citite sau scrise în fişierul audio vor trebui să fie accesate<br />

doar la un multiplu de nBlockAlign octeţi.<br />

wBitsPerSample<br />

Numărul de biţi al unui eşantion. Dacă wFormatTag este WAVE_FORMAT_PCM,<br />

atunci wBitsPerSample va fi egal cu 8 sau 16.<br />

cbSize<br />

Mărimea în octeţi a informaţiei extinse puse la sfârşitul structurii WAVEFORMATEX.<br />

Această informaţie e utilizată de către formatele non-PCM pentru a memora atributele<br />

specificate în wFormatTag.<br />

Observaţie: În momentul de faţă aplicaţia permite lucrul cu fişiere de tip<br />

WAVE_FORMAT_PCM mono, codate pe 8 sau 16 biţi, suportând orice valoare a frecvenţei de<br />

eşantionare.<br />

c) SAVE – permite salvarea fişierului de sunet curent în format WAVE_FORMAT_PCM.<br />

d) CUT – efectuează ‘tăierea’ zonei selectate din fişierul de sunet şi memorarea în Clipboard;<br />

e) COPY – permite copierea zonei selectate în Clipboard fără ştergerea ei;<br />

f) PASTE – permite ‘lipirea’ informaţiei memorate din Clipboard în zona de lucru curentă;<br />

g) UNSELECT – comanda pentru deselectarea zonei selectate anterior din fişierul audio;<br />

h) VIEW SELECTION – permite vizualizarea zonei selectate în întregime în fereastra de<br />

vizualizare;


28<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

i) VIEW TOOLBARS – permite ascunderea sau vizualizarea toolbar-urilor şi a zonei de<br />

vizualizare a informaţiilor din status bar. Prin ascunderea acestor zone grafice se măreşte<br />

suprafaţa de lucru asociată formei de undă şi spectrelor de analiză.<br />

j) CHANGE COLORS – permite modificarea paletei de culori a aplicaţiei.<br />

k) VIEW FFT INFO – permite vizualizarea interactivă a informaţiilor asociate spectrelor de<br />

amplitudini (FFT) şi de faze (ANGLE). Utilizatorul va putea vizualiza frecvenţa şi valoarea din<br />

spectru asociată acesteia prin mişcarea mouse-ului în zona de analiză (zona de afişare a<br />

spectrelor de analiză).<br />

3.2.1.1.2. Facilităţi de operare specifice aplicate fişierului de sunet<br />

a) PLAY – permite redarea sonoră a fişierului de sunet sau a zonei selectate, dacă aceasta există;<br />

b) PLAY LOOP – permite redarea în buclă a fişierului de sunet;<br />

c) STOP – opreşte redarea şi aşează indicatorul de poziţie la începutul fişierului;<br />

d) PAUSE – opreşte redarea fără a schimba poziţia curentă în fişierul audio;<br />

e) ZOOM OUT – micşorează rezoluţia de afişare a ferestrei grafice curente. Fereastra grafică<br />

curentă poate fi asociată oricărei dintre cele trei zone de lucru: fereastra formei de undă, fereastra<br />

de afişare a spectrului de amplitudini, respectiv cea de afişare a spectrului de faze. Oricare dintre<br />

aceste trei ferestre poate deveni fereastra curentă prin punctare cu mouse-ul de către utilizator.<br />

Prin această comandă creşte cantitatea de informaţie afişată în fereastră, dar scade acurateţea<br />

(detaliile) afişării. Comanda e utilă pentru obţinerea unei vizualizări globale a informaţiei.<br />

f) ZOOM IN – măreşte rezoluţia de afişare a ferestrei grafice curente. Comanda este<br />

complementară comenzii anterioare, având ca rezultat reducerea zonei de analiză, dar în<br />

beneficiul vizualizării precise a informaţiilor.<br />

g) SAMPLE ZOOM OUT – comanda permite reducerea controlată a rezoluţiei de afişare în<br />

fereastra grafică curentă. Se foloseşte pentru creşterea progresivă a dimensiunii zonei de analiză<br />

prin adăugarea câte unui eşantion în această zonă. Se va obţine o vizualizare mai globală, dar în<br />

detrimentul preciziei de analiză.<br />

h) SAMPLE ZOOM IN – permite mărirea controlată a rezoluţiei de afişare în fereastra grafică<br />

curentă. E utilă pentru vizualizări precise ale formei de undă sau a spectrului, prin faptul că<br />

permite detalierea informaţiei afişate prin reducerea cu câte un eşantion a mărimii zonei de<br />

analiză.<br />

i) ZOOM ALL – permite afişarea în întregime a formei de undă sau a spectrului asociat.<br />

j) VIEW WAVE – permite vizualizarea ferestrei corespunzătoare formei de undă;<br />

k) VIEW FFT – permite vizualizarea ferestrei corespunzătoare spectrului de amplitudini;<br />

l) VIEW PHASE – permite vizualizarea ferestrei corespunzătoare spectrului de faze.


3.2.1.2. Modul de lucru al utilizatorului în aplicaţia SPEA<br />

29<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

În primul rând utilizatorul va deschide fişierul audio pe care doreşte să-l analizeze prin<br />

comanda OPEN. Forma de undă se va afişa în partea de sus a ecranului, iar spectrele globale de<br />

amplitudini şi faze – în partea de jos a ecranului. Trebuie menţionat însă că spectrele sunt<br />

limitate la calculul a 16k valori, ceea ce înseamnă că spectrele nu corespund întregii lungimi a<br />

semnalului sonor, ci doar a unei părţi a acestuia (şi anume la prima parte a formei de undă care<br />

conţine 16k eşantioane). Acest lucru este valabil pentru orice fereatră selectată din semnal care<br />

depăşeşte 16k eşantioane.<br />

Mărimea ferestrei curente va fi afişată în partea din dreapta – în zona TIME - a barei de<br />

stare ( status bar). Parametrul Tw indică dimensiunea în timp (secunde, milisecunde sau<br />

microsecunde – pentru ferestrele mici), iar parametrul Nw indică dimensiunea în număr de<br />

eşantioane.<br />

Frecvenţa de eşantionare se va afişa în partea din stânga a barei de stare – în zona FFT,<br />

fiind indicată de parametrul Fes. Frecvenţa de eşantionare este dată în Hertzi şi va corespunde cu<br />

dublul mărimii ferestrei spectrale. Aceasta datorită faptului că spectrele se calculează “în<br />

oglindă” (valorile sunt simetrice faţă de mijlocul frecvenţei de eşantionare) şi ca urmare se vor<br />

afişa doar valorile din prima jumătate a spectrului. Tot în zona FFT se va afişa rezoluţia spectrală<br />

în Hertzi, adică distanţa în frecvenţă dintre două valori consecutive ale spectrului.<br />

Pentru vizualizarea şi analiza unor zone specifice din forma totală de undă, utilizatorul<br />

poate selecta zona dorită interactiv, cu ajutorul mouse-ului: în fereastra asociată formei de undă,<br />

cu tasta SHIFT apăsată, va puncta cu butonul din stânga al mouse-ului în dreptul poziţiei de<br />

început a zonei pe care vrea să o selecteze, iar apoi - de asemeni menţinând tasta SHIFT apăsată<br />

- va puncta cu butonul din dreapta al mouse-ului în dreptul poziţiei de sfârşit a zonei de selecţie.<br />

Zona selectată va fi vizualizată cu culoarea verde, fiind încadrată de două bare de selecţie de<br />

culoare roşie, iar restul porţiunii din fişierul de sunet va fi vizualizată în culoare pală (gri<br />

deschis). Se va observa modificarea formei spectrului de amplitudini şi a celui de faze, care vor<br />

corespunde cu zona selectată din forma de undă. Regula de calcul a spectrelor este următoarea:<br />

(1) dacă nu există o porţiune selectată din forma de undă, atunci spectrele se calculează<br />

pe fereastra curentă de afişare;<br />

(2) dacă din forma de undă se selectează o anumită porţiune, spectrele se calculează doar<br />

pe porţiunea selectată.<br />

Utilizatorul poate renunţa în orice moment la selecţie, apăsând butonul UNSELECT.<br />

Dacă prin utilizarea scollbar-ului se pierde din vedere zona selectată, aceasta se poate readuce în<br />

fereastra de vizualizare prin folosirea butonului VIEW SELECTION.<br />

În funcţie de analiza pe care doreşte s-o efectueze, utilizatorul poate selecta afişarea<br />

formei de undă, sau a unuia din spectrele de amplitudini, respectiv faze (prin comenzile VIEW<br />

WAVE, VIEW FFT sau VIEW PHASE). Programul va afişa implicit toate cele trei ferestre de<br />

analiză.<br />

Detaliile din ferestrele spectrale pot fi vizualizate prin intermediul butonului VIEW FFT<br />

INFO. Astfel, utilizatorul poate aşeza cursorul mouse-ului în dreptul liniei spectrale de interes,<br />

care se va colora distinct faţa de celelalte linii din spectru. Pentru spectrul de amplitudini se va<br />

afişa în zona FFT din status bar valoarea F corespunzător frecvenţei precise a liniei spectrale


30<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

selectate, şi valoarea X corespunzător amplitudinii spectrale. Dacă se selectează o linie spectrală<br />

din spectrul de faze, se vor afişa valorile F pentru frecvenţă şi P pentru mărimea fazei.<br />

La încărcarea unui fişier de sunet, în fereastra WAVE se va afişa forma de undă pe<br />

întreaga durată a semnalului. Durata şi numărul de eşantioane vor fi indicate în zona TIME a<br />

barei de stare, în timp ce pe rigla orizontală se vor afişa timpii de referinţă ai eşantioanelor, sub<br />

forma sec.ms (secunde şi milisecunde), respectiv microsecunde pentru ferestre mai mici de timp.<br />

În ferestrele FFT şi PHASE se vor afişa spectrele de amplitudini, respectiv faze ale<br />

primelor 16k eşantioane din semnal. Pentru a vizualiza detaliile dintr-o fereastră mai restrânsă,<br />

utilizatorul poate selecta o zonă de semnal aşa cum s-a descris anterior, prin punctare cu mouseul<br />

şi tasta SHIFT: pentru începutul zonei va folosi butonul din stânga al mouse-ului, iar pentru<br />

indicatorul de sfârşit – butonul din dreapta. După selectarea unei zone mai restrânse din semnal,<br />

spectrele de amplitudini şi faze se vor modifica corespunzător. Dacă se doreşte detalierea<br />

informaţiei afişate în fereastra undei, se vor putea folosi butoanele ZOOM IN şi SAMPLE<br />

ZOOM IN. Când se doreşte revenirea la un mod mai global de vizualizare, se folosesc comenzile<br />

ZOOM OUT, respectiv SAMPLE ZOOM OUT.<br />

La fel, dacă se doreşte vizualizarea mai detaliată a spectrului FFT sau PHASE, mai întâi<br />

fereastra respectivă va trebui selectată ca fereastră activă. Aceasta datorită faptului că butoanele<br />

de mărire şi micşorare a rezoluţiei de afişare, precum şi scrollbar-ul au efect doar asupra unei<br />

singure ferestre la un moment dat, şi anume asupra ferestrei active. Fereastra activă se selectează<br />

prin punctare cu mouse-ul în interiorul ferestrei dorite, aceasta fiind apoi marcată printr-un<br />

chenar de culoare roşie. Apoi se va putea efectua analiza spectrală detaliată prin folosirea<br />

comenzilor de mărire a rezoluţiei ZOOM IN şi SAMPLE ZOOM IN, ultima permiţând creşterea<br />

progresivă a rezoluţiei de afişare cu câte un eşantion.<br />

Valorile afişate pe rigla orizontală sunt frecvenţe măsurate în Herzi. Pentru fiecare<br />

fereastră selectată, pe riglă se afişează întreaga gamă de frecvenţe a semnalului (egală cu<br />

jumătate din frecvenţa de eşantionare), precum şi frecvenţa de amplitudine maximă din această<br />

gamă de frecvenţe, care poate fi asimilată cu frecvenţa fundamentală a semnalului.<br />

Aplicaţia detectează în mod automat formanţii sau valorile maxime locale ale anvelopei<br />

spectrale, maxime care se situează deasupra unor valori de prag. Pentru fiecare formant, se<br />

calculează amplitudinea, frecvenţa centrală şi lăţimea de bandă, parametrii importanţi în sinteza<br />

de voce. Frecvenţa centrală a formantului cu cea mai mare amplitudine (în cele mai multe cazuri<br />

primul sau al doilea formant) se asumă a fi frecvenţa fundamentală a semnalului. Această regulă<br />

se aplică doar segmentelor vocale din semnal, segmentele nesonore neavând frecvenţă<br />

fundamentală.<br />

Un exemplu de detectare automată a formanţilor este arătat în figura 3.6. Aici se<br />

ilustrează un segment vocal din semnal, în care se detectează formanţi cu valorile de frecvenţă :<br />

204 Hz, 414 Hz, 613 Hz, şi 824 Hz . Frecvenţa fundamentală este dată în acest caz de frecvenţa<br />

primului formant: 204 Hz.


Figura 3.6. Frecvenţa fundamentală a semnalului este 204 Hz<br />

31<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

3.2.2. Experimente realizate asupra unor eşantioane reale de semnal audio şi<br />

vocal<br />

În continuare sunt prezentate rezultatele experimentale şi analizele spectrale<br />

realizate cu ajutorul aplicaţiei SPEA pe grupe de eşantioane reale de semnal. Scopul<br />

acestor experimente a fost de a determina caracteristicile specifice ale semnalului vocal în<br />

cazul rostirii unor sunete distincte în limba română, în condiţii diferite, de către mai mulţi<br />

vorbitori.<br />

Semnalul a fost preluat prin intermediul unui microfon dinamic unidirecţional de tip<br />

SM-500, iar apoi semnalul a fost eşantionat şi stocat pe disc în format WAVE PCM prin<br />

intermediul unei plăci de achiziţie audio Creative Soundblaster Live 1024. De asemenea,<br />

au fost analizate eşantioane de semnal audio generat prin intermediul unui sintetizator de<br />

sunete furnizat de firma Creative Labs.


1) Analiza spectrală a vocalelor pentru vorbitorul masculin şi cel feminin<br />

Figura 3.7. Vocala A masculin. Frecvenţa<br />

fundamentală este în jurul valorii de 100 Hz,<br />

urmată de armonice situate la distanţă<br />

aproximativ egală. Se observă un spectru cu<br />

primele două frecvenţe formantice<br />

predominante.<br />

Figura 3.9. Vocala E masculin. Frecvenţa<br />

fundamentală este de 115 Hz, apropiată de<br />

cea corespunzătoare lui A. Se observă<br />

diferenţa faţă de spectrul anterior, prin<br />

distribuţia primilor 4 formanţi.<br />

32<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.8. Vocala A feminin. Frecvenţa<br />

fundamentală este de aproximativ 200 Hz,<br />

corespunzător unei voci de tonalitate mai<br />

înaltă. Dominanta spectrului este prima<br />

frecvenţă formantică, dar apar încă 5<br />

formanţi majori.<br />

Figura 3.10. Vocala E feminin. Frecvenţa<br />

fundamentală este de 225 Hz. Se observă că<br />

nu mai apar formanţii 3,4 şi 5.


Figura 3.11. Vocala I masculin. Frecvenţa<br />

fundamentală este de 125 Hz. Formanţii 3,4<br />

şi 5 sunt nesemnificativi în raport cu primii<br />

doi.<br />

Figura 3.13. Vocala O masculin. Frecvenţa<br />

fundamentală este de 110 Hz. Primii 4<br />

formanţi sunt activi, mai apărând încă 4 de<br />

importanţă mai redusă.<br />

2) Analiza spectrală a consoanelor<br />

Figura 3.15. Consoana S. Se observă un<br />

spectru mult mai bogat în armonici<br />

superioare, pe o bandă situată între 4000 Hz<br />

şi 8000 Hz.<br />

33<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.12. Vocala I feminin. Frecvenţa<br />

fundamentală este de 235 Hz. Apare doar un<br />

singur formant semnificativ.<br />

Figura 3.14. Vocala U masculin. Frecvenţa<br />

fundamentală este de 110 Hz. Mai<br />

importanţi sunt primii 3 formanţi<br />

Figura 3.16. Consoana T. Caracteristic este<br />

atât spectrul de frecvenţe, cât mai ales forma<br />

semnalului.


3) Analiza spectrală a sunetelor emise multitonal<br />

34<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

În continuare se prezintă spectrele unor vocale emise la diferite frecvenţe de bază (pe<br />

tonuri diferite sau cântate) de către acelaşi vorbitor.<br />

Figura 3.17. Vocala A1. Se observă un<br />

spectru de armonici uniform, începând cu<br />

frecvenţa primului formant de 117 Hz.<br />

Figura 3.19. Vocala E1. Se observă un<br />

spectru cu trei frecvenţe formantice<br />

dominante, începând cu frecvenţa primului<br />

formant de 122 Hz.<br />

4) Analiza perceptuală a sunetelor emise în fază diferită<br />

Figura 3.18. Vocala A2. Forma spectrului de<br />

frecvenţe este aproape identică cu cea din<br />

cazul anterior, cu deosebirea faptului că aici<br />

primul formant are frecvenţa de 142 Hz<br />

Figura 3.20. Vocala E2. Spectrul este din<br />

nou asemănător cu cel din primul caz; aici<br />

primul formant are frecvenţa de 137 Hz<br />

În continuare se prezintă spectrele unor sunete compuse din două frecvenţe de bază:<br />

o frecvenţă principală de 1 kHz, peste care se suprapune o frecvenţă de 3kHZ. Deosebirea<br />

dintre cazuri este dată de semnul compunerii: în primul caz frecvenţele se adună, iar în cel<br />

de-al doilea se scad. Analiza perceptuală (a modului de recepţie a sunetului) a demonstrat că<br />

cele două sunete sunt percepute identic.


Figura 3.21. Cazul A. Cele două frecvenţe de<br />

1000 Hz şi 3000 Hz se adună, fiind deci în<br />

fază.<br />

35<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.22. Cazul B. Cele două frecvenţe<br />

de 1000 Hz şi 3000 Hz se scad, fiind în<br />

antifază.<br />

5) Importanţa alegerii ferestrei asupra rezultatului analizei spectrale<br />

În urma experienţelor efectuate pe diferite ferestre de analiză preluate din acelaşi<br />

semnal, s-a constatat importanţa deosebită a alegerii corecte a ferestrei. Aceasta va trebui să<br />

cuprindă intotdeauna un număr întreg de perioade. Dacă această condiţie nu este respectată,<br />

apar erori în determinarea frecvenţelor spectrale, aşa cum se arată în exemplul următor.<br />

Figura 3.23. Cazul A. Semnal generat din<br />

trei frecvenţe de bază: de 1000 Hz, 3000 Hz<br />

şi respectiv 6000 Hz. Fereastra de analiză<br />

(din domeniul timp) nu cuprinde un număr<br />

egal de perioade. Ca urmare apar erori în<br />

evaluarea frecvenţelor din spectru, în acest<br />

caz de până la 3%.<br />

6) Modularea semnalului<br />

Figura 3.24. Cazul B. Acelaşi semnal, din<br />

care s-a extras acum o fereastră de analiză ce<br />

conţine un număr întreg de perioade (8<br />

perioade). Frecvenţele spectrale sunt<br />

determinate corect.<br />

Au fost efectuate experimente asupra modulării semnalelor. Aici se prezintă un caz<br />

semnificativ:


Figura 3.25. Cazul A. Semnalul x(t) a fost<br />

generat din două frecvenţe de bază: de 1000<br />

Hz şi respectiv 3000 Hz.<br />

36<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.26. Cazul B. Semnalul x(t) a fost<br />

modulat cu o frecvenţă f0=10000 Hz: x1(t) =<br />

x(t)* sin(2πf0t). Se observă dublarea spectrelor<br />

la distanţe egale faţă de frecvenţa de<br />

modulare f0.<br />

Deosebit de important în cazul modulării este faptul că folosind o frecvenţă de<br />

modulare bine aleasă, un semnal având frecvenţele componente într-o bandă joasă poate fi<br />

adus într-o bandă înaltă, şi invers, dacă avem un semnal într-o bandă înaltă, el poate fi adus<br />

într-o bandă joasă de frecvenţe şi analizat – mai convenabil - doar în această bandă.<br />

7) Influenţa frecvenţei de eşantionare asupra calităţii vocii<br />

Este binecunoscut faptul că pentru a obţine o voce sau o înregistrare audio de calitate<br />

este necesară o frecvenţă de eşantionare cât mai bună (cât mai ridicată). O frecvenţă ridicată<br />

de eşantionare asigură redarea unui spectru mult mai larg de frecvenţe, şi ca urmare calitatea<br />

audio va fi mult amplificată.<br />

Figura 3.27. Cazul A. Semnal audio<br />

înregistrat la o frecvenţă de eşantionare de<br />

96000Hz. Se observă un spectru larg de<br />

frecvenţe, de până la 18000Hz. În fereastra<br />

de undă, semnalul este ‘îngroşat’ de<br />

armonicile superioare.<br />

Figura 3.28. Cazul B. Acelaşi semnal<br />

eşantionat la o frecvenţă mai mică, de 15000<br />

Hz. Efectul poate fi observat atât în fereastra<br />

spectrală, care s-a redus până la 7000 Hz, cât<br />

şi în fereastra de undă, unde semnalul a<br />

devenit ‘mai subţire’, lipsit de armonicile<br />

superioare.


8) Influenţa mediului de înregistrare asupra calităţii sunetului<br />

37<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Mediul de înregistrare a sunetului are de asemenea o importanţă capitală asupra calităţii<br />

audio. S-au făcut experimente prin îregistrarea unor eşantioane audio de la un casetofon<br />

obişnuit şi apoi de la un CD player. Casetofonul are o bandă de redare sonoră mult mai îngustă,<br />

şi în plus un raport semnal/zgomot destul de accentuat, care face să scadă mult calitatea<br />

audiţiei. CD player-ul prezintă parametrii mult superiori, atât în ceea ce priveşte lăţimea de<br />

bandă, cât şi raportul semnal/zgomot.<br />

Figura 3.29. Cazul A. Semnal audio<br />

înregistrat de la un casetofon, la o frecvenţă<br />

de eşantionare de 96000Hz. Se observă un<br />

spectru de frecvenţe redus, de până la 2500<br />

Hz. În plus, apare un zgomot datorat benzii<br />

magnetice, la aproximativ 15000 Hz.<br />

Figura 3.30. Cazul B. Semnal audio înregistrat<br />

de la CD player la aceeaşi frecvenţă de<br />

eşantionare. Banda spectrală a crescut, şi se<br />

observă că a devenit mult mai bogată în<br />

frecvenţe. Se observă de asemenea că zgomotul<br />

de fond a dispărut.<br />

Al doilea experiment prezentat aici este un test de înregistrare audio pe un<br />

casetofon (s -a folosit o casetă de calitate medie). În primul rând s-a generat pe<br />

calculator un sunet compus din frecvenţe de egală amplitudine dispuse pe toată banda<br />

sonoră perceptibilă (de la 1000 Hz până la 22000 Hz). Sunetul a fost apoi înregistrat pe<br />

casetofon şi din nou preluat pe computer pentru analiză. Aşa după cum arată figurile<br />

următoare, banda de frecvenţe s-a redus considerabil, amplitudinea componentelor<br />

reducându-se liniar până aproape de zero la capătul benzii. Acest experiment arată clar<br />

diferenţa între mediile de înregistrare analogice (casetofon) şi digitale (calculator sau<br />

CD player).


Figura 3.31. Cazul C. Semnal audio<br />

generat ca sumă de 22 de frecvenţe de la<br />

1000 Hz la 22000 Hz. Componentele au<br />

toate aceeaşi amplitudine.<br />

9) Timbrul sunetului şi percepţia auditivă<br />

38<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.32. Cazul D. Acelaşi semnal<br />

înregistrat pe casetofon apoi din nou pe<br />

calculator la aceeaşi frecvenţă de<br />

eşantionare cu semnalul original. Banda de<br />

frecvenţe s-a redus până la 14000 Hz, iar<br />

amplitudinile frecvenţelor sunt în<br />

descreştere progresivă până la zero.<br />

Folosind un sintetizator audio, au fost generate notele muzicale cu diferite timbre<br />

corespunzătoare instrumentelor muzicale (pian, acordeon, orgă, vibrafon). S-a constatat că<br />

sunetul este cu atât mai profund şi mai intens receptat de ascultător cu cât timbrul sonor este<br />

mai bogat şi armonicile au amplitudine mai mare. În continuare sunt prezentate armonicile<br />

spectrale pentru cele patru tipuri de instrumente considerate. Frecvenţa fundamentală a<br />

sunetului (nota DO) este aceeaşi, dar situarea armonicilor precum şi amplitudinea acesto ra<br />

conferă timbrul specific fiecărui instrument.<br />

Figura 3.33. Nota Do la pian. Frecvenţa<br />

fundamentală este 525 Hz.<br />

Figura 3.34. Nota Do la acordeon. Are<br />

aceeaşi frecvenţă fundamentală, dar un<br />

timbru mai bogat.


Figura 3.35. Nota Do la vibrafon. Se<br />

observă spectrul constituit doar din două<br />

armonici; sunetul este mai pur, dar nu la fel<br />

de profund ca în cazurile anterioare.<br />

10) Calitatea rostirii în sinteza de voce<br />

39<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.36. Nota Do la orgă. Sunetul are<br />

un impact perceptual profund din cauza<br />

armonicilor secundare care au amplitudinea<br />

apropiată de amplitudinea armonicii<br />

principale.<br />

Pentru sinteza de voce este foarte importantă construirea unei baze de date vocale<br />

adecvată. Aceasta presupune preluarea unor segmente de voce de la o persoană reală în<br />

vederea prelucrării şi apoi sintetizării vorbirii pentru un text dat. Vocea aleasă trebuie să aibă<br />

parametrii acustici superiori pentru a genera o sinteză de calitate. S-au efectuat experimente<br />

cu vocea autorului, atât în codiţii normale cât şi în condiţiile obstrucţionării căilor nazale. În<br />

figurile următoare sunt prezentate efectele apărute:<br />

Figura 3.37. Litera M din cuvântul<br />

“mama” rostit în condiţii normale. Se<br />

observă doi formanţi la 64 şi 128 Hz.<br />

Figura 3.38. Litera M din cuvântul<br />

“mama” rostit în condiţiile obstrucţionării<br />

căilor nazale. Se observă dispariţia celui deal<br />

doilea formant.


Figura 3.39. Litera A din cuvântul<br />

“mama” rostit în condiţii normale. Se<br />

observă doi formanţi principali şi alţi câţiva<br />

secundari.<br />

40<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.40. Litera A din cuvântul<br />

“mama” rostit în condiţiile obstrucţionării<br />

căilor nazale. Se observă dispariţia<br />

formanţilor de ordin superior precum şi<br />

deplasarea în tonalitate a primului formant.<br />

Următorul set de experimente a fost efectuat pentru a decela diferenţele dintre<br />

rostirile unui cuvânt folosind o voce comună (autorul) şi o voce cu parametrii acustici<br />

superiori. Rezultatele sunt arătate în figurile următoare:<br />

Figura 3.41. Litera M din cuvântul<br />

“maşină” rostit de către autor (vocea A).<br />

Se observă doi formanţi principali.<br />

Figura 3.42. Litera M din cuvântul<br />

“maşină” rostit de vocea B. Spectrul este<br />

asemănător cu cel de la vocea A, diferenţele<br />

constând doar din raportul amplitudinilor<br />

celor doi formanţi.


Figura 3.43. Litera A din cuvântul<br />

“maşină” rostit de către autor (vocea A).<br />

Spectrul acestei rostiri vocalice conţine trei<br />

formanţi bine conturaţi.<br />

Figura 3.45. Litera S din cuvântul<br />

“maşină” rostit de către autor (vocea A).<br />

Se observă că spectrul, în cazul acestei<br />

consoane, conţine o paletă largă de<br />

armonici, situate îndeosebi la frecvenţe<br />

superioare.<br />

41<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.44. Litera A din cuvântul<br />

“maşină” rostit de vocea B. Se observă<br />

diferenţa faţă de cazul anterior (vocea A),<br />

prin faptul că acum spectrul conţine o serie<br />

largă de armonici, cu primele cinci armonici<br />

bine conturate.<br />

Figura 3.46. Litera S din cuvântul<br />

“maşină” rostit de vocea B. Diferenţa este<br />

că armonicile superioare sunt mult mai bine<br />

conturate decât în cazul anterior<br />

corespondent, sunetul dobândind astfel un<br />

impact perceptual mai profund asupra<br />

ascultătorului.<br />

Concluziile acestor experimente indică faptul că, pentru a obţine o voce de calitate<br />

superioară, acea voce trebuie să deţină un set de armonici cât mai bogat, şi în special armonicile<br />

superioare sunt determinante pentru creşterea calităţii rostirii. În cazul în care aceste armonici<br />

lipsesc, vor trebui adăugate prin procedee speciale de filtrare digitală.


11) Analiza spectrală a sunetelor radiofonice<br />

42<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

În acest set de observaţii s-au analizat două tipuri de emisii radio: emisia FM (Frequency<br />

Modulation) şi respectiv MW ( Medium Wave length). Prima asigură o calitate mai bună a<br />

sunetului, permiţând transmisia sunetului fără pierderi pe toată banda de frecvenţe audibile, pe<br />

când cea de-a doua înregistrează pierderi şi modificări de frecvenţă, mai ales pe benzile<br />

superioare (peste 1000 Hz).<br />

Pentru a detecta diferenţele calitative între cele două tipuri de transmisii, precum şi<br />

modul cum ele afectează vocea, s-au preluat pe două canale simultan secvenţele eşantionate ale<br />

aceleiaşi transmisii radiofonice vocale dar recepţionate diferit - în cele două moduri amintite mai<br />

sus.<br />

În continuare au fost separate vocalele şi s-a analizat spectrul de amplitudini şi calitatea<br />

formanţilor în cele două cazuri.<br />

Figura 3.47. Vocala A - Formele de undă (sus: FM; jos: MW)<br />

Figura 3.48. Vocala A – Spectrele armonice(sus: A –FM; jos: A –MW)<br />

Formanţii 2, 3 şi 4 au scăzut în amplitudine cu aproximativ 10%. Începând cu frecvenţa<br />

de 1000 Hz, raportul semnal/zgomot se reduce semnificativ. De asemenea, se observă apariţia<br />

unui vârf de frecvenţă la jumătatea frecvenţei fundamentale.


Figura 3.49. Vocala E -FM. Sunt vizibili 3<br />

formanţi principali.<br />

Figura 3.51. Vocala I -FM. În acest caz<br />

vocala are doi formanţi.<br />

Figura 3.53. Vocala O -FM. In acest caz<br />

vocala are trei formanţi.<br />

43<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.50. Vocala E - MW. Formantul 3<br />

s-a redus cu 5%.<br />

Figura 3.52. Vocala I - MW. Formanţii se<br />

păstrează; apare zgomotul de fond.<br />

Figura 3.54. Vocala O - MW. Formantul 3<br />

creşte cu aproximativ 3%.


Figura 3.55. Vocala U -FM. In acest caz<br />

vocala are doi formanţi majori.<br />

44<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.56. Vocala U - MW. Formantul 2 a<br />

scăzut cu aproximativ 12%.<br />

12) Îmbunătăţirea calităţii vocii prin introducerea de armonici superioare<br />

Aşa cum am văzut, aplicaţia SPEA permite filtrarea selectivă a frecvenţelor şi editarea<br />

interactivă a spectrului FFT, aspect foarte important pentru analiza vorbirii şi îmbunătăţirea<br />

calităţii semnalului vocal. Comanda FILTRU oferă filtrarea interactivă a frecvenţelor şi editarea<br />

grafică a formanţilor şi armonicilor semnalului vocal. Prin glisarea mouse-ul în zona spectrului<br />

FFT, utilizatorul poate elimina benzile de frecvenţe corespunzătoare zgomotului sau să mărească<br />

energia semnalului în benzile dorite.<br />

Utilizatorul poate modifica, de asemenea, spectrul de formanţi şi de armonici, pentru a<br />

îmbunătăţi timbrul sunetului. Experimentele care s-au făcut arată că o bună calitate de voce<br />

implică un bogat set de armonici. Mai ales armonicile de frecvenţă înaltă constituie un factor<br />

determinant pentru calitatea unei rostiri. Acest lucru este util in procesul de creare a unei baze de<br />

date vocale utilizate pentru sinteza vorbirii, în care unele dintre segmentele vocale înregistrate ar<br />

putea fi îmbogăţite prin adăugarea de armonici înalte.<br />

Figura 3.57 arată diferenţa dintre două sunete (vocala / A/), înainte (a) şi după (b)<br />

adăugarea de frecvenţe mai mari. În cel de-al doilea caz, percepţia acustică a sunetului este mai<br />

bună. Armonicile sunt introduse întotdeauna la multiplii întregi ai frecvenţei primului formant.<br />

a b<br />

Figura 3.57. Vocala /A/ îmbogăţită cu armonici înalte


45<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Concluzii cu privire la experimentele asupra calităţii transmisiei radio<br />

În aceste experimente legate de calitatea transmisiei radio, pe lângă zgomotul de fond<br />

care intervine în cazul emisiei MW, se observă afectarea calităţii vocii prin modificarea<br />

dimensiunilor formanţilor secundari, uneori însoţită şi de o modificare de frecvenţă. O altă<br />

caracteristică a scăderii calităţii este apariţia neregularităţilor în anvelopa spectrală.<br />

Aceste observaţii duc şi la o aplicaţie în vederea sintezei vocii de calitate: pentru<br />

îmbunătăţirea calităţii vocii se poate recurge la netezirea anvelopei spectrale între formanţii<br />

majori ai sunetului, amplificarea mărimii formanţilor secundari şi eventual introducerea unor<br />

armonici superioare pentru sporirea naturaleţii. Aceste armonici superioare se vor introduce<br />

întotdeauna la multiplii următori ai frecvenţei fundamentale.<br />

13) Analiza comportării sunetelor vocalice<br />

În cadrul acestor experimente s-a studiat comportamentul vocalelor rostite de către un<br />

vorbitor în mai multe moduri: rostite izolat, rostite împreună cu o consoană în cadrul unei<br />

silabe, studiul comportării sunetelor în cadrul silabelor accentuate, studiul comportării vocalelor<br />

rostite împreună cu alte vocale precum în cazul diftongilor.<br />

a) Sunetele vocalice rostite izolat<br />

Sunetele rostite izolat (vocalele în particular) prezintă trei porţiuni distincte ale formei de<br />

undă, aşa cum se indică în figura 3.58:<br />

Atac Segmentul median Cădere<br />

Figura 3.58. Cele trei segmente definitorii pentru rostirea unei vocale<br />

Aceste trei porţiuni distincte sunt:<br />

- o porţiune iniţială, numită segmentul de atac, în care amplitudinea creşte progresiv de la<br />

valoarea caracteristică nivelului de fond (nivelul zero) până la valoarea de amplitudine<br />

caracteristică rostirii propriu-zise;


46<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

- porţiunea mediană, ce corespunde rostirii propriu-zise a vocalei; aici este concentrată<br />

preponderent energia vocalei, amplitudinea fiind maximă, aproximativ constantă pe<br />

toată durata segmentului; lungimea temporală a segmentului e mai mare comparativ cu<br />

celelalte segmente;<br />

- o porţiune finală, numită segmentul de cădere, în care amplitudinea scade progresiv de<br />

la valoarea de amplitudine caracteristică rostirii propriu-zise până la valoarea<br />

caracteristică nivelului de fond (nivelul zero).<br />

În continuare se prezintă măsurătorile efectuate asupra duratelor şi frecvenţelor<br />

caracteristice celor trei segmente: de atac, median şi final pentru vocalele /A/, /E/, /I/, /O/,<br />

/U/, rostite izolat.<br />

Vocala A :<br />

Figura 3.59. Vocala A segmentul de atac.<br />

Amplitudinea creşte progresiv; durata<br />

segmentului: 42,2 ms; frecvenţa medie este<br />

de 120 Hz.<br />

Figura 3.60. Vocala A porţiunea<br />

mediană. Se observă un spectru de mai<br />

multe armonici; amplitudinea este<br />

constantă; durata segmentului: 89,6 ms;<br />

frecvenţa fundamentală este de 109 Hz.<br />

Figura 3.61. Vocala A porţiunea finală.<br />

Amplitudinea scade progresiv; durata<br />

segmentului: 37,5 ms; frecvenţa<br />

fundamentală este de 124 Hz.


Vocala E :<br />

Figura 3.62. Vocala E segmentul de atac.<br />

Amplitudinea creşte; durata segmentului:<br />

45,4 ms; frecvenţa medie este de 112 Hz.<br />

Vocala I :<br />

Figura 3.65. Vocala I segmentul de<br />

atac. Frecvenţa medie este de 130 Hz.<br />

Durata segmentului: 51,6 ms.<br />

47<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.63. Vocala E porţiunea<br />

mediană. Spectrul este identic;<br />

amplitudinea este constantă; durata<br />

segmentului: 87,7 ms; frecvenţa<br />

fundamentală este de 106 Hz.<br />

Figura 3.64. Vocala E porţiunea finală.<br />

Amplitudinea scade progresiv; durata<br />

segmentului: 66,0 ms; frecvenţa<br />

fundamentală este de 117 Hz.<br />

Figura 3.66. Vocala I porţiunea<br />

mediană. Frecvenţa fundamentală este de<br />

113 Hz. Durata segmentului: 122 ms.


Vocala O :<br />

Figura 3.68. Vocala O segmentul de atac.<br />

Amplitudinea creşte; durata segmentului:<br />

41,1 ms; frecvenţa medie este de 118 Hz.<br />

48<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.67. Vocala I porţiunea finală.<br />

Amplitudinea scade; frecvenţa fundamentală<br />

este de 123 Hz. Durata<br />

segmentului: 60,3 ms.<br />

Figura 3.69. Vocala O porţiunea<br />

mediană. Amplitudinea rămâne constantă;<br />

durata segmentului: 73,2 ms; frecvenţa<br />

fundamentală este de 108 Hz.<br />

Figura 3.70. Vocala O porţiunea finală.<br />

Amplitudinea scade progresiv; durata<br />

segmentului: 38,5 ms ; frecvenţa<br />

fundamentală creşte la 119 Hz.


Vocala U :<br />

Figura 3.71. Vocala U segmentul de atac.<br />

Amplitudinea creşte; durata segmentului:<br />

34,3 ms; frecvenţa medie este de 116 Hz.<br />

49<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Figura 3.72. Vocala U porţiunea<br />

mediană. Amplitudinea este constantă;<br />

durata : 51,6 ms; frecvenţa fundamentală<br />

este de 99 Hz.<br />

Figura 3.73. Vocala U porţiunea<br />

finală. Amplitudinea scade progresiv pe<br />

o durată de 40,7 ms; frecvenţa<br />

fundamentală se menţine aproximativ<br />

constantă (96-99Hz).<br />

Tabelul 3.1 arată duratele celor trei segmente caracteristice pentru fiecare vocală.<br />

Tabelul 3.1. Duratele segmentelor vocalice<br />

Atac<br />

(ms)<br />

(%) Median<br />

(ms)<br />

(%)<br />

Cădere<br />

(ms)<br />

(%)<br />

Total<br />

(ms)<br />

A 42.2 25 89.6 53 37.5 22 169.3<br />

E 45.4 23 87.7 44 66 33 199.1<br />

I 51.6 22 122 52 60.3 26 233.9<br />

O 41.1 27 73.2 48 38.5 25 152.8<br />

U 34.3 27 51.6 41 40.7 32 126.6<br />

Se observă că segmentul median are o proporţie de aproximativ 50% din totalul duratei<br />

rostirii vocalice, iar segmentele de atac şi decădere reprezintă circa 25% fiecare din durata totală.


50<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Tabelul 3.2 indică frecvenţele fundamentale medii caracteristice fiecărui segment.<br />

Procentele sunt calculate relativ la segmentul median:<br />

Tabelul 3.2. Frecvenţele specifice segmentelor vocale<br />

Atac<br />

(Hz)<br />

(%)<br />

Median<br />

(Hz)<br />

(%)<br />

Cădere<br />

(Hz)<br />

(%)<br />

A 120 110 109 100 124 114<br />

E 112 106 106 100 117 110<br />

I 130 115 113 100 123 109<br />

O 118 109 108 100 119 110<br />

U 116 117 99 100 99 100<br />

Se observă că frecvenţa medie a segmentelor de atac şi de cădere sunt cu circa 10% mai<br />

mari decât fecvenţa segmentului median, care defineşte sunetul vocalei.<br />

Acest lucru este valabil şi în cazul în care vocalele apar la începutul, respectiv la sfârşitul<br />

unui cuvânt rostit izolat. În primul caz, amplitudinea creşte de la zero la valoarea maximă într-un<br />

interval de timp de 30% din durata vocalei, timp în care fecvenţa medie este mai mare cu 10%<br />

faţă de frecvenţa vocalei. În cazul în care vocala apare la sfârşitul cuvântului, pe aceeaşi durată<br />

de timp se petrece fenomenul invers: amplitudinea scade, dar cu aceeaşi creştere de frecvenţă.<br />

b) Sunetele vocalice rostite în silabe accentuate<br />

În cadrul acestui set de experimente s-au efectuat studii legate de comportarea vocalelor<br />

atunci când sunt rostite accentuat (făcând parte din silabe accentuate ale unor cuvinte) faţă de<br />

situaţia când sunt rostite în mod obişnuit, neaccentuat. S-a constatat că ele se comportă diferit în<br />

cele două situaţii prin modificarea amplitudinii, frecvenţei fundamentale şi duratei vocalice pe<br />

parcursul rostirii.<br />

Spre exemplificare s-a ales cazul rostirii silabelor /MA/, /ME/, /MI/, /MO/, /MU/ la<br />

modul neaccentuat, cât şi la modul accentuat.<br />

Figura 3.74. Silaba MA neaccentuată.<br />

Frecvenţa fundamentală este aproximativ<br />

constantă, egală cu 102 Hz.<br />

Figura 3.75. Silaba MA accentuată. Se<br />

observă creşterea amplitudinii, frecvenţei<br />

şi duratei rostirii silabice. Frecvenţa<br />

variază de la 113 la 121 Hz.


51<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

În mod analog se comportă şi celelalte silabe, bineînţeles cu valorile parametrilor de<br />

durată, frecvenţă şi amplitudine specifice. În tabelul următor se indică aceste valori spre<br />

comparaţie:<br />

Tabelul 3.3. Frecvenţe comparative: silabe accentuate faţă de silabele normale<br />

Normal Accentuat Creştere<br />

F0 (Hz) F1 (Hz) F2 (Hz) (%)<br />

MA 102 113 121 7.08<br />

ME 117 103 125 21.36<br />

MI 122 120 129 7.50<br />

MO 110 111 121 9.01<br />

MU 118 118 131 11.02<br />

În tabelul 3.3 se indică prin F0 frecvenţa fundamentală vocalică din cadrul silabei rostite<br />

normal, neaccentuat, iar prin F1, respectiv F2 frecvenţele de start, respectiv de final ale vocalei<br />

încadrate într-o silabă accentuată. Creşterea procentuală a fost calculată pentru silaba accentuată<br />

şi se referă la creşterea frecvenţei vocalice pe parcursul rostirii silabei.<br />

În figura 3.76 se arată variaţia frecvenţei vocalice dintr-o silabă accentuată:<br />

Figura 3.76. Variaţia frecvenţei vocalice dintr-o silabă accentuată<br />

Creşterea duratei rostirii în cazul silabei accentuate faţă de o silabă neaccentuată se<br />

prezintă în tabelul 3.4. Se observă o creştere cu 10%-30% :<br />

F1<br />

F2


52<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

Tabelul 3.4. Duratele comparative între silabele accentuate şi silabele normale<br />

Normal Accentuat Creştere<br />

t (ms) t (ms) (%)<br />

MA 149 182 22.15<br />

ME 127 166 30.71<br />

MI 150 166 10.67<br />

MO 134 168 25.37<br />

MU 133 150 12.78<br />

În încheiere, pentru a sintetiza pe scurt rezultatele experimentelor efectuate asupra<br />

sunetelor vocalice, se pot formula următoarele concluzii:<br />

1. Rostirea vocalelor diferă în funcţie de vorbitor, dar spectrele pentru o aceeaşi vocală<br />

prezintă caracteristici comune în ceea ce priveşte numărul formanţilor şi învelitoarea spectrală.<br />

2. Pentru un acelaşi vorbitor, vocalele prezintă o frecvenţă fundamentală specifică şi o<br />

structură formantică specifică. S-a constatat că sunetele sunt cu atât mai pure cu cât lăţimea<br />

formanţilor este mai mică şi structura frecvenţelor formantice este mai aproape de structura<br />

armonică a sunetului alcătuită din frecvenţe situate la valori multiplu de frecvenţa fundamentală.<br />

3. Deosebit de importante pentru calitatea rostirii vocalice sunt armonicile situate la<br />

frecvenţe superioare. Acestea dau timbrul specific rostirii, iar în absenţa lor sunetul va fi<br />

perceput ca un sunet plat, metalizat.<br />

4. Vocalele prezintă întotdeauna trei porţiuni distincte: porţiunea de atac (iniţială),<br />

mediană şi de cădere (finală). De cele mai multe ori, segmentele iniţial şi final sunt influenţate de<br />

contextul fonematic în care se găsesc.<br />

5. Sunetele vocalice prezintă caracteristici distincte atunci când sunt rostite în cadrul<br />

silabelor accentuate din cuvinte. S-au constatat variaţii ale tuturor parametrilor ce influenţează<br />

prozodia: durata, amplitudinea şi frecvenţa. Astfel, durata segmentului vocalic creşte, la fel şi<br />

amplitudinea, iar frecvenţa fundamentală variază pe parcursul rostirii de la o valoare iniţială la o<br />

valoare finală într-o proporţie de până la 15-20%.<br />

Aceste observaţii asupra rezultatelor cercetărilor efectuate au o mare importanţă mai ales<br />

pentru sinteza vorbirii, arătând modul specific de sinteză al sunetelor în scopul obţinerii unei<br />

rostiri de calitate superioară, apropiată de rostirea umană propriu-zisă.


53<br />

Cap. 3. Procesarea digitală a semnalului vocal<br />

3.2.3. Concluzii privind contribuţiile autorului în domeniul procesării<br />

semnalului vocal<br />

În acest capitol au fost prezentate cercetările proprii precum şi rezultatele experimentale<br />

obţinute în analiza unor eşantioane reale de semnal vocal.<br />

În primul rând a fost descrisă aici o aplicaţie originală proiectată de autor numită SPEA -<br />

Signal Processing and Enhancement Application, aplicaţie destinată analizei şi procesării<br />

semnalului vocal. Aplicaţia prezintă următoarele facilităţi: încărcarea semnalului vocal<br />

înregistrat în fişiere wave având diferite codificări, vizualizarea formei de undă şi a eşantioanelor<br />

de semnal pe diferite scale de mărime, determinarea parametrilor semnalului vocal (amplitudine,<br />

energie, număr de treceri prin zero, frecvenţa fundamentală - în domeniul timp; spectrul de<br />

amplitudini, spectrul de faze, formanţii - pentru domeniul frecvenţă), posibilitatea de modificare<br />

interactivă a componentelor din spectrele de amplitudini şi faze în scopul îmbunătăţirii calităţii<br />

acustice a semnalului vocal. A fost prezentat de asemeni şi modul de lucru al utilizatorului în<br />

interacţiunea cu aplicaţia.<br />

Au fost prezentate rezultatele experimentelor efectuate, experimente axate pe studiul<br />

proprietăţilor specifice ale semnalului vocal ce asigură o calitate superioară sunetului emis.<br />

Astfel, au fost efectuate diverse analize spectrale de sunet: analiza spectrală a vocalelor emise de<br />

diferiţi vorbitori, analiza spectrală a consoanelor, analiza spectrală a sunetelor emise multitonal,<br />

evidenţiându-se importanţa alegerii ferestrei de semnal asupra rezultatului analizei spectrale;<br />

comportarea semnalelor modulate; analize sonore perceptuale: analiza perceptuală a sunetelor<br />

emise în fază diferită, relaţia dintre timbrul sunetului şi percepţia auditivă.<br />

Au fost studiaţi de asemeni factorii care determină în mod semnificativ calitatea vocii,<br />

arătându-se care este influenţa frecvenţei de eşantionare şi a mediului de înregistrare asupra<br />

calităţii vocii şi a sunetului emis, precum şi factorii determinanţi pentru a realiza o sinteză vocală<br />

de calitate superioară.<br />

Analiza comportării sunetelor vocalice prezentată în finalul capitolului are o mare<br />

importanţă în scopul realizării unei sinteze a vorbirii de calitate. În acest sens au fost studiate<br />

caracteristicile sunetelor vocalice în diferite contexte fonematice şi prozodice, realizându-se<br />

diagrame comparative ale rostirii lor în aceste contexte.


4. Analiza semnalului vocal<br />

După procesarea semnalului, analiza semnalului vocal constituie următoarea etapă<br />

premergătoare, necesară în sinteza de voce. Analiza semnalului vocal presupune:<br />

(1) determinarea parametrilor şi caracteristicilor acestuia pe baza eşantioanelor de vorbire<br />

înregistrate de la vorbitor;<br />

(2) descompunerea semnalului în segmente sau regiuni cu proprietăţi comune (segmentarea<br />

semnalului);<br />

(3) evidenţierea segmentelor semnificative şi punerea lor în corespondenţă cu informaţia<br />

cunoscută (extragerea informaţiei).<br />

4.1. Parametrii de bază ai semnalului vocal<br />

Reprezentarea cea mai obişnuită a semnalelor, la fel şi a celor vocale se face în spaţiul<br />

amplitudine-timp, ceea ce descrie evoluţia undei acustice în timp. Semnalul acustic preluat de la<br />

un microfon şi transformat în semnal electric poate fi memorat şi studiat ulterior.<br />

Semnalul vocal face parte din categoria semnalelor nestaţionare (ale căror proprietăţi<br />

medii variază în timp) şi continue (nu este tranzitoriu). Cu toate acestea, datorită schimbării lente<br />

a caracteristicilor de articulaţie, pe perioade scurte de timp (20ms) semnalul vocal poate fi<br />

considerat staţionar (cvasistaţionar). Pe aceste perioade se pot determina anumiţi parametri care<br />

caracterizează semnalul vocal pe acel interval, numit în continuare segment.<br />

Figura 4.1 prezintă un asemenea caz în care dintr-un semnal vocal a fost delimitat un<br />

segment în scopul analizei.<br />

Segment de analiză<br />

Figura 4.1. Segment de analiză din cadrul semnalului vocal<br />

Se observă că semnalul poate fi considerat staţionar pe durata segmentului.<br />

O informaţie utilă ce caracterizează semnalul rezultă din componentele sale spectrale,<br />

numite pe scurt spectru.<br />

54


55<br />

Cap. 4. Analiza semnalului vocal<br />

Se notează spectrul semnalului vocal cu S(ω), care rezultă din produsul dintre funcţia de<br />

transfer a sistemului fonator H(ω) şi spectrul semnalului de excitaţie E(ω) de la nivelul glotei<br />

[Fer97]:<br />

S(ω) =H(ω) E(ω) (4.1)<br />

După cum rezultă, spectrul semnalului conţine atât informaţii privitoare la funcţia de<br />

transfer a sistemului fonator cât şi informaţii referitoare la spectrul semnalului de excitaţie.<br />

Echivalentul în domeniul timp al formulei (4.1) este [Fer97]:<br />

t<br />

<br />

<br />

s( t)<br />

e(<br />

) h(<br />

t <br />

) d<br />

(4.2)<br />

ceea ce exprimă faptul că semnalul vocal reprezintă răspunsul sistemului liniar având<br />

funcţia pondere h(t) la excitaţia cu semnalul e(t). Altfel spus s(t) reprezintă convoluţia (produsul<br />

de convoluţie) funcţiei pondere h(t) cu semnalul de excitaţie e(t). O altă notaţie folosită pentu<br />

exprimarea produsului de convoluţie este [Fer97]:<br />

s(t) =h(t)*e(t) (4.3)<br />

Figura 4.2 prezintă spectrul unui semnal vocal sonor, sugerând modul de interacţiune<br />

dintre spectrul semnalului de excitaţie şi caracteristica de transfer a tractului vocal.<br />

Datorită caracterului deosebit al spectrului semnalului de intrare (spectru de linii)<br />

amplitudinile liniilor spectrale variind lent cu frecvenţa, iar funcţia de transfer fiind o funcţie<br />

continuă, rezultă forma specială a spectrului, şi anume: modulul spectrului S(ω) conţine linii<br />

spectrale ale căror vârfuri reunite de curba numită înfăşurătoare spectrală urmăreşte modulul<br />

funcţiei de transfer H(ω).<br />

Vârfurile spectrale de energie mare care corespund locurilor de maxim a modului funcţiei<br />

de transfer H(ω) sunt caracteristice pentru fiecare fonemă în parte, motiv pentru care acestea se<br />

numesc frecvenţe de formanţi sau simplu: formanţi. Aceştia constituie un ansamblu de parametri<br />

importanţi în analiza şi sinteza semnalului vocal.<br />

Un alt parametru important îl constituie cel care specifică tipul semnalului de excitaţie<br />

rezultat din analiză, respectiv utilizat la sinteză. După cum s-a văzut, sunetelor sonore li se poate<br />

asocia tipul de semnal de excitaţie sonor (echivalat cu trenuri de impulsuri unitate, dinte de<br />

fierăstrău sau alte semnale periodice cu spectru de linii relativ larg), iar sunetelor fricative li se<br />

poate asocia tipul de semnal de excitaţie nesonor (echivalat cu un zgomot alb). Parametrului care<br />

specifică tipul semnalului de excitaţie i se pot atribui deci două valori, respectiv sonor şi nesonor.


Figura 4.2. Structura spectrală a unui semnal vocal periodic [Fer97]<br />

56<br />

Cap. 4. Analiza semnalului vocal<br />

În cazul semnalelor sonore este importantă specificarea frecvenţei semnalului de excitaţie,<br />

ceea ce se numeşte frecvenţă fundamentală. Acest parametru este strâns legat de aspectele de<br />

inonaţie din cadrul vorbirii. Prin modificarea acestui parametru se pot exprima diferite stări<br />

subiective (exclamare, stări emoţionale, interogări). Pe de altă parte modul de intonaţie aj ută la<br />

creşterea inteligibilităţii mesajului transmis.<br />

Frecvenţa fundamentală este un parametru care pe lângă aspectele descrise mai sus<br />

variază nu numai în cadrul cuvintelor, ci şi în interiorul fonemelor (celor sonore) şi variază şi de<br />

la om la om. Valorile uzuale pe care le are acest parametru se situează în domeniul 90÷150 Hz<br />

pentru vocea de bărbaţi şi 150÷200 Hz în cazul vocii femeilor [Fer97].


57<br />

Cap. 4. Analiza semnalului vocal<br />

4.2. Analiza semnalului pentru determinarea parametrilor caracteristici<br />

Ţinând cont că semnalul vocal este cvasistaţionar pe segmente scurte de timp, adică îşi<br />

păstrează proprietăţile nealterate pe parcursul fiecărui interval, metodele actuale de prelucrare a<br />

semnalului vocal folosesc aşa-numita analiză pe termen scurt. Pentru a aborda această<br />

modalitate de analiză, semnalul vocal este împărţit în segmente cu lungimea de 10-30 ms, pe<br />

parcursul cărora semnalul se consideră staţionar.<br />

Extragerea informaţiei din cadrul segmentelor de timp se face folosind o funcţie<br />

fereastră, care are rolul de ponderare a parametrilor semnalului cu accentuarea valorilor<br />

corespunzătoare eşantioanelor din centrului ferestrei (segmentului considerat) şi diminuarea<br />

celor corespunzătoare marginilor ferestrei. Aceasta se face în scopul obţinerii unei estimări<br />

netezite a parametrilor, care să permită trecerea fină de la o secvenţă de parametrii la următoarea,<br />

corespunzător segmentelor de semnal considerate. În acelaşi scop se foloseşte şi intercalarea<br />

segmentelor pe axa timpului, în acest caz începutul unui segment suprapunându-se peste sfârşitul<br />

segmentului anterior. Acest tip de analiză se numeşte analiză cu fereastră glisantă [Lup04].<br />

Funcţiile fereastră cele mai uzuale sunt: fereastra Hamming, Hanning, fereastra cosinus.<br />

Aceste funcţii au o formă gaussiană (prezentată în figura 4.3 ) pentru a asigura ponderarea<br />

valorilor centrată pe mijlocul ferestrei.<br />

y<br />

Figura 4.3. Funcţie fereastră utilizată în ponderare<br />

Mai departe, analiza semnalului vocal poate fi făcută în două moduri, ţinând cont de<br />

domeniul de analiză: în domeniul timp şi în domeniul frecvenţă. Analiza în domeniul timp<br />

presupune determinarea proprietăţilor semnalului vocal din studierea formei de undă a<br />

semnalului, privită ca variaţia valorilor eşantioanelor vocale în funcţie de timp. Analiza în<br />

domeniul frecvenţă presupune determinarea spectrului de frecvenţe a semnalului şi determinarea<br />

parametrilor doriţi pe baza formei spectrale.<br />

4.2.1. Analiza în domeniul timp a semnalului vocal<br />

Prin analizarea directă a formei de undă a semnalului se pot extrage următorii parametrii:<br />

amplitudinea maximă şi medie, energia semnalului vocal, numărul trecerilor prin zero şi<br />

frecvenţa fundamentală.<br />

Amplitudinea semnalului ne dă informaţii despre prezenţa sau absenţa semnalului vocal,<br />

despre faptul că semnalul este sonor sau nesonor pe segmentul considerat. În cazul sonor<br />

(rostirea unor sunete vocalice) amplitudinea este mare, pe când în cazul sunetelor nesonore<br />

(zgomote, rostire de consoane) amplitudinea este redusă.<br />

x


Amplitudinea medie pentru N eşantioane se calculează astfel [Pic93]:<br />

1<br />

M ( n)<br />

x(<br />

m)<br />

| w(<br />

n m<br />

)<br />

(4.4)<br />

<br />

|<br />

N m<br />

unde: x(m) este eşantionul curent al semnalului vocal, iar<br />

w(n-m) este fereastra utilizată în segmentul considerat.<br />

58<br />

Cap. 4. Analiza semnalului vocal<br />

Energia semnalului este utilă în determinarea caracteristicilor de putere transportată a<br />

semnalului vocal. Pentru un semnal cu valoare medie nulă, energia pe termen scurt se defineşte<br />

astfel [Lup04]:<br />

1<br />

2<br />

E(<br />

n)<br />

x(<br />

n)<br />

w<br />

( n m<br />

)]<br />

(4.5)<br />

<br />

[<br />

N m<br />

Segmentele sonore (vocalele) au o energie medie ridicată, pe când consoanele au energie<br />

scăzută. Pentru majoritatea fonemelor, energia se concentrează în banda de frecvenţe între 300 şi<br />

3000 Hz.<br />

Numărul trecerilor prin zero este util pentru determinarea caracteristicilor de frecvenţă<br />

în interiorul unui segment de timp. Numărul trecerilor prin zero se calculează astfel [Pic93]:<br />

1<br />

[ N<br />

n0<br />

NTZ <br />

1sgn(<br />

s(<br />

n 1<br />

) T ) sgn(<br />

s(<br />

nT ))]<br />

2<br />

(4.6)<br />

unde sgn(n) este funcţia semn:<br />

<br />

1,<br />

n 0<br />

sgn( n ) <br />

(4.7)<br />

<br />

1,<br />

n 0<br />

Numărul trecerilor prin zero este o caracteristică ce se foloseşte în recunoaşterea vorbirii,<br />

precum şi în determinarea caracterului sonor/nesonor. În interiorul segmentelor sonore numărul<br />

trecerilor prin zero este mai redus, în timp ce în segmentele nesonore acest parametru este mai<br />

ridicat.<br />

Frecvenţa fundamentală este un parametru deosebit de important folosit atât în sinteza<br />

cât şi în recunoaşterea vorbirii. Frecvenţa fundamentală corespunde cu periodicitatea semnalului<br />

vocal. Determinarea acestui parametru nu se poate face întotdeauna cu exactitate, din cauza<br />

variabilităţi semnalului vocal chiar pe porţiuni scurte de timp. Rostirea vocalelor prezintă o<br />

frecvenţă fundamentală ce poate fi determinată, pe când consoanele, care sunt rostiri neperiodice,<br />

nu au frecvenţă fundamentală.<br />

Dintre metodele uzuale de determinare a frecvenţei fundamentale a semnalului vocal<br />

amintim următoarele:


A. Metoda autocorelaţiei<br />

59<br />

Cap. 4. Analiza semnalului vocal<br />

Metoda se bazează pe calculul funcţiei de autocorelaţie a semnalului vocal, care ne dă<br />

informaţii despre interdependenţa temporală a eşantioanelor. Funcţia de autocorelaţie se<br />

defineşte astfel [Sto84]:<br />

N k 1<br />

[<br />

m0<br />

R ( k)<br />

x(<br />

m n<br />

) w(<br />

m)][<br />

x(<br />

n m<br />

k<br />

) w(<br />

m k<br />

)] (4.8)<br />

n<br />

unde x(n) este valoarea eşantionului de semnal, iar<br />

w(m) este funcţia fereastră utilizată.<br />

Funcţia de autocorelaţie prezintă maxime la intervale de timp egale cu perioada<br />

semnalului. Determinarea acestor maxime şi măsurarea distanţei dintre ele conduce la<br />

determinarea frecvenţei fundamentale a semnalului.<br />

B. Metoda funcţiei diferenţă de amplitudine medie<br />

Metoda se bazează pe calculul funcţiei diferenţă de amplitudine medie, care are expresia<br />

[Sto84]:<br />

1<br />

D ( n)<br />

| sk<br />

s<br />

k n<br />

| , cu 0 n N<br />

1<br />

(4.9)<br />

N<br />

N 1<br />

k 0<br />

Funcţia diferenţă de amplitudine medie D(n) prezintă minime la distanţă egală cu<br />

perioada semnalului, şi are avantajul că se poate calcula mai rapid decât funcţia de autocorelaţie.<br />

C. Metoda cu limitare centrală<br />

Metoda urmăreşte simplificarea calculelor prin reţinerea în procesul de calcul doar a<br />

eşantioanelor de semnal ce depăşesc în valoare absolută o anumită valoare de prag. Apoi<br />

semnalul se accentuează în felul următor: valorile pozitive se adună cu valoarea de prag, iar din<br />

cele negative se scade valoarea de prag P:<br />

x<br />

( n)<br />

P,<br />

x(<br />

n)<br />

0<br />

x ( n)<br />

<br />

(4.10)<br />

x<br />

( n)<br />

P,<br />

x(<br />

n)<br />

0<br />

În varianta metodei cu limitare infinită, valorile pozitive se înlocuiesc cu o valoare<br />

maximă, iar cele negative cu o valoare minimă.<br />

După faza de accentuare, se calculează funcţia de autocorelaţie definită anterior, ale cărei<br />

maxime se vor putea determina mult mai uşor.<br />

De asemeni, se poate utiliza cu bune rezultate o metodă combinată în care după limitarea<br />

centrală se aplică metoda funcţiei diferenţă de amplitudine medie.


4.2.2. Analiza în domeniul frecvenţă a semnalului vocal<br />

60<br />

Cap. 4. Analiza semnalului vocal<br />

Analiza în domeniul frecvenţă a semnalului presupune descompunerea semnalului în<br />

componente de frecvenţă cunoscută, cum este cazul analizei Fourier, sau în componente a căror<br />

comportare în frecvenţă este cunoscută, cum e cazul analizei bazate pe filtre digitale. Parametrii<br />

obţinuţi în urma descompunerii semnalului în componente diferă de cazul analizei în domeniul<br />

timp, cele două abordări fiind complementare. Principalele metode folosite în cadrul analizei în<br />

domeniul frecvenţă sunt [Lup04]: analiza prin banc de filtre, analiza Fourier, analiza LPC,<br />

analiza cepstrală şi analiza perceptuală.<br />

A. Analiza prin banc de filtre digitale<br />

Analiza prin banc de filtre digitale are ca scop descompunerea semnalului în benzi de<br />

frecvenţă şi determinarea ponderii componentelor din aceste benzi în semnalul iniţial, de unde se<br />

va putea trage o concluzie asupra comportării în frecvenţă a semnalului vocal. Schema bloc a<br />

unui astfel de analizor este dată în figura 4.4 [Lup04]:<br />

x(n)<br />

FTB 1<br />

FTB 2<br />

.<br />

.<br />

.<br />

FTB N<br />

Transformare<br />

neliniară<br />

Transformare<br />

neliniară<br />

Transformare<br />

neliniară<br />

Figura 4.4. Schema bloc a analizorului cu banc de filtre<br />

x1(n)<br />

x2(n)<br />

xN(n)<br />

Semnalul iniţial x(n) este descompus în N benzi de frecvenţă prin intermediul filtrelor<br />

trece-bandă FTB1...FTBN. Fiecare bandă este supusă apoi unei transformări neliniare pentru<br />

deplasarea spectrului către domeniul frecvenţelor joase. Vectorii rezultaţi xk(n) pentru fiecare<br />

subbandă vor fi analizaţi separat, iar în vederea sintezei sau recunoaşterii li se va aplica în<br />

continuare anumiţi operatori matematici (netezire, normalizare). Deseori se foloseşte calculul<br />

energiei vectorilor rezultaţi pentru a determina ponderea lor în alcătuirea semnalului iniţial.<br />

.<br />

.<br />

.


B. Analiza Fourier<br />

61<br />

Cap. 4. Analiza semnalului vocal<br />

Analiza Fourier este cea mai răspândită metodă de analiză a semnalului vocal pentru că<br />

ea oferă imaginea completă a componentelor semnalului pe scara frecvenţei, rezultând astfel<br />

spectrul de frecvenţe asociat. Analiza Fourier se bazează pe proprietatea unui semnal periodic de<br />

a putea fi descompus în componente sinusoidale.<br />

Această metodă de analiză foloseşte calculul transformatei Fourier discrete, de forma<br />

[Mat01]:<br />

X ( k ) <br />

N 1<br />

n 0<br />

x ( n ) e<br />

j<br />

2nk<br />

/ N<br />

, k = 1,2,...,N , (4.11)<br />

unde: x(n) reprezintă eşantioanele de semnal,<br />

X(k) este valoarea componentei k din spectrul de frecvenţe,<br />

N este numărul de eşantioane considerate, iar<br />

j este unitatea imaginară.<br />

Calculul se face în domeniul complex, rezultând pentru fiecare componentă X(k) două<br />

valori reale corespondente:<br />

- modulul sau amplitudinea: Ak= |X(k)| , respectiv<br />

- faza: φk=arg(X(k)).<br />

În practică se foloseşte mai mult spectrul amplitudinilor, sau spectrul de putere al<br />

semnalului. Aceasta deoarece urechea umană e mai puţin sensibilă la spectrul de faze al unui<br />

semnal vocal.<br />

Cum pentru fiecare k e necesar calculul sumei (4.11) cu N valori, rezultă o complexitate a<br />

algoritmului de calcul de forma O(N 2 ). Pentru rapidizare sunt disponibili diverşi algoritmi, dintre<br />

care cei mai cunoscuţi sunt algoritmii FFT ( Fast Fourier Transform - Transformata Fourier<br />

Rapidă) cu decimare în frecvenţă sau decimare în timp. Algoritmul FFT se bazează pe calculul<br />

recursiv al valorilor spectrale [Tod05] şi reduce complexitatea algoritmului la O(Nlog2N).<br />

Pe baza aflării spectrului de frecvenţe se pot determina o serie de parametrii specifici,<br />

cum ar fi anvelopa spectrală sau forma şi valoarea formanţilor, ce ne dau informaţii despre<br />

comportamentul în domeniul frecvenţei a semnalului pe segmentul de timp considerat.<br />

Aşa cum s-a prezentat în capitolul dedicat procesării semnalului vocal, formanţii se<br />

determină printr-un algoritm de detecţie a maximelor locale ale anvelopei spectrale.<br />

Înainte de calculul spectrului, semnalul poate fi prelucrat printr-un filtru trece-sus,<br />

realizându-se aşa-numita preaccentuare a semnalului. Această operaţie este efectuată în scopul<br />

accentuării componentelor de frecvenţă ridicată, care de regulă sunt atenuate în procesul vorbirii<br />

de către sistemul fonator [Lup04].<br />

C. Analiza prin predicţie liniară<br />

Analiza prin predicţie liniară sau analiza LPC (Linear Prediction Coding) este o metodă<br />

eficientă de determinare a unor parametrii recursivi ai semnalului vocal, care se vor putea folosi<br />

în cadrul procesului de sinteză sau recunoaştere a vorbirii. Analiza prin metoda LPC se bazează<br />

pe modelul producerii vorbirii prezentat în figura 4.5.


F0<br />

Excitaţie<br />

Figura 4.5. Modelul producerii vorbirii prin metoda LPC<br />

62<br />

Cap. 4. Analiza semnalului vocal<br />

Modelul LPC al producerii vorbirii este generat în concordanţă cu producerea sunetului<br />

de către sistemul fonator uman. Astfel, energia sonoră de bază este furnizată de către un semnal<br />

de excitaţie, care poate să fie periodic sau neperiodic, în funcţie de sunetul produs (tren de<br />

impulsuri periodice pentru cazul vocalelor sau zgomot alb în cazul consoanelor). Pentru un<br />

semnal de excitaţie periodic, se furnizează frecvenţa fundamentală F0 ca parametru de intrare în<br />

generator.<br />

Semnalul de excitaţie este apoi amplificat cu un factor G (numit câştigul modelului) şi<br />

trecut printr-un filtru variabil având funcţia de transfer H(z). Filtrul variabil modelează<br />

comportamentul tractului vocal din cadrul sistemului fonator, şi va produce la ieşire semnalul<br />

scontat s(n). Filtrul este controlat pe baza unor parametrii care sunt coeficienţii LPC {ak}.<br />

Parametrii sunt calculaţi pentru fiecare segment de vorbire de aproximativ 10-30 ms.<br />

Funcţia de transfer a filtrului are expresia [Tod05]:<br />

G<br />

H ( z)<br />

p<br />

1<br />

k 1<br />

a<br />

k<br />

z<br />

k<br />

G<br />

<br />

A(<br />

z)<br />

unde: G este câştigul filtrului, iar<br />

ak sunt coeficienţii de predicţie LPC.<br />

(4.12)<br />

Câştigul se poate determina pe baza erorii de predicţie dintre semnalul calculat cu<br />

ajutorul filtrului recursiv şi semnalul original. Pentru calculul parametrilor ak există mai multe<br />

metode, dintre care cele mai cunoscute sunt metoda autocorelaţiei (prin algoritmul Levinson -<br />

Durbin) şi metoda covarianţei.<br />

Metoda de analiză prin predicţie liniară LPC are avantajul că necesită efort computaţional<br />

relativ redus, rezultând un set de parametrii ce aproximează bine comportamentul semnalului în<br />

domeniul frecvenţă. Analiza LPC determină simplificarea spectrului semnalului, situaţie foarte<br />

avantajoasă în cazul recunoaşterii vorbirii, când se va genera un set de vectori mult mai adecvaţi<br />

tratării prin mijloace specifice inteligenţei artificiale, cum ar fi reţelele neuronale. Totodată,<br />

analiza LPC este utilă şi în cazul sintezei de voce, generând reducerea volumului de date în<br />

condiţiile menţinerii inteligibilităţii vocii.<br />

G<br />

Filtru variabil<br />

H(z)<br />

Parametrii<br />

tractului vocal<br />

s(n)


D. Analiza cepstrală<br />

63<br />

Cap. 4. Analiza semnalului vocal<br />

Analiza cepstrală este o metodă ce derivă din analiza Fourier, şi se utilizează pentru<br />

determinarea unor parametrii ai semnalului vocal utili mai ales în procesul recunoaşterii vorbirii<br />

[Tod05]. Modelul acustic pe care se bazează analiza cepstrală este asemănător cu modelul LPC<br />

şi este prezentat în figura 4.6:<br />

Excitaţie<br />

e(n)<br />

Figura 4.6. Modelul producerii vorbirii prin metoda cepstrală<br />

Semnalul vocal s(n) este produs de către un semnal de excitaţie e(n) corespunzător<br />

corzilor vocale din sistemul fonator, care este filtrat de către un filtru variabil având răspunsul la<br />

impuls h(n), ce corespunde tractului vocal. Avem astfel:<br />

s( n)<br />

e(<br />

n)<br />

h(<br />

n)<br />

(4.13)<br />

unde: s(n) e semnalul rezultat;<br />

e(n) – excitaţia;<br />

h(n) – răspunsul filtrului.<br />

Dacă translatăm ecuaţia (4.13) în domeniul frecvenţă, se poate scrie:<br />

Prin logaritmare obţinem:<br />

Filtru variabil<br />

h(n)<br />

S( f ) E(<br />

f ) H<br />

( f )<br />

(4.14)<br />

log S( f ) log E(<br />

f ) log<br />

H ( f ) (4.15)<br />

Din ecuaţia ( 4.15) rezultă posibilitatea separării excitaţiei sonore de influenţa tractului<br />

vocal, de aici rezultând şi modul de calcul al cepstrumului [Gav00]:<br />

Semnal vocal Cepstrum<br />

Transformata<br />

Log<br />

Transformata<br />

Fourier<br />

Fourier inversă<br />

Figura 4.7. Modul de calcul al cepstrumului<br />

Astfel se efectuează următorii paşi:<br />

- se calculează mai întâi spectrul S(f) al semnalului prin transformata Fourier;<br />

- se aplică logaritmul;<br />

- se aplică transformata Fourier inversă pentru a determina cepstrumul în domeniul<br />

timp.<br />

s(n)


64<br />

Cap. 4. Analiza semnalului vocal<br />

Analiza cepstrală ne oferă informaţii atât despre excitaţia sonoră, permiţând estimarea<br />

frecvenţei fundamentale a semnalului, cât şi despre influenţa tractului vocal, ducând la calculul<br />

spectrului netezit al semnalului vocal. Componentele cepstrale inferioare (corespunzătoare unui<br />

segment de timp de la 0 la 2ms) permit estimarea frecvenţei fundamentale prin determinarea<br />

maximului funcţiei cepstrale pe acest segment de timp. Pentru calculul spectrului netezit se<br />

folosesc componentele cepstrale superioare, cărora li se aplică din nou transformata Fourier.<br />

De asemenea, se mai poate calcula un set de parametrii numiţi coeficienţi cepstrali LPC,<br />

derivaţi direct din coeficienţii LPC. Formulele de calcul pentru aceşti parametrii sunt [Fur01]:<br />

c<br />

c<br />

c<br />

1<br />

n<br />

n<br />

a<br />

1<br />

n k<br />

a<br />

n <br />

a<br />

kc<br />

n k<br />

k n<br />

n<br />

p<br />

1<br />

( 1 ) ,<br />

1<br />

1<br />

n k<br />

a<br />

kc<br />

n k<br />

n<br />

n p<br />

1<br />

( 1 ) ,<br />

k 1<br />

unde: ak sunt coeficienţii LPC calculaţi până la ordinul p;<br />

cn sunt coeficienţii cepstrali LPC.<br />

(4.16)<br />

Coeficienţii cepstrali s-au dovedit a fi un set de parametrii mai robuşti decât coeficienţii<br />

simpli LPC, utilizănd-se cu succes mai ales în procesul de recunoaştere a vorbirii sau a<br />

vorbitorului [Lup04].<br />

E. Analiza perceptuală<br />

Acest mod de analiză este adaptat după modul de funcţionare al sistemului perceptual<br />

auditiv al omului, şi anume după faptul că sesizarea diferitelor tonalităţi ale sunetelor se face pe<br />

o scară logaritmică în interiorul urechii, proporţional cu frecvenţa fundamentală a sunetului.<br />

Astfel, răspunsul urechii umane este neliniar în raport cu frecvenţa, ea detectând diferenţe mici<br />

de frecvenţă mai uşor la frecvenţe joase decât la frecvenţe înalte [Lup04].<br />

Din acest motiv au fost adoptate diferite scări neliniare de frecvenţă, pentru care se va<br />

calcula spectrul semnalului. Cele mai cunoscute sunt scara de frecvenţă Bark şi scara Mel.<br />

Ambele sunt scări cu comportare logaritmică obţinute prin studii realizate asupra percepţiei<br />

umane.<br />

Există două metode de lucru în cadrul analizei perceptuale: analiza PLP şi analiza<br />

cepstrală Mel.


65<br />

Cap. 4. Analiza semnalului vocal<br />

Analiza PLP ( Perceptual Linear Prediction) foloseşte scara perceptuală Bark, fiind o<br />

combinaţie între metodele de analiză Fourier şi LPC. Etapele de analiză în cadrul metodei PLP<br />

cuprind [Her90]:<br />

- calculul spectrului FFT prin transformata Fourier;<br />

- aliniere spectrală după scara Bark;<br />

- aplicarea unui set de filtre dreptunghiulare Bark pentru emularea rezoluţiei<br />

perceptuale a urechii umane;<br />

- preaccentuare pentru stimularea frecvenţelor înalte;<br />

- conversia intensitate-tărie sonoră;<br />

- aplicarea transformatei Fourier inverse pentru obţinerea funcţiei de autocorelaţie;<br />

- calculul coeficienţilor LPC sau cepstrali, numiţi în acest caz coeficienţi PLP.<br />

Coeficienţii PLP de ordin inferior ne dau informaţii despre conţinutul lingvistic al<br />

segmentului considerat (informaţii semantice), pe când coeficienţii de ordin superior sunt utili în<br />

procesul de recunoaştere a identităţii vorbitorului [Lup04].<br />

Analiza cepstrală Mel se aseamănă cu metoda de analiză PLP, folosindu-se în acest caz<br />

scara de frecvenţe Mel. Spre deosebire de cazul anterior, acum se foloseşte un set de filtre<br />

triunghiulare Mel pentru a descompune semnalul pe benzile de frecvenţă asociate cu scara Mel.<br />

Apoi pe fiecare bandă se calculează energia medie şi se aplică transformata cosinus pentru a<br />

obţine un set de coeficienţi numiţi coeficienţi MFCC (Mel Frequency Cepstral Coefficients).<br />

Coeficienţii MFCC au dat bune rezultate în procesul de recunoaştere a vorbirii, mai ales<br />

în combinaţie cu setul de parametri delta specificaţi de către Furui în [Fur01].<br />

În concluzie, putem spune că până în momentul de faţă au fost proiectate mai multe<br />

metode de analiză a semnalului vocal, fiecare prezentând variante specifice şi beneficiind de<br />

aportul a numeroase studii pe plan internaţional. Aceste metode de analiză s-au dovedit utile<br />

pentru extragerea parametrilor caracteristici ai semnalului vocal, atât în procesul sintezei de voce<br />

cât şi în cel al recunoaşterii vorbirii.


4.3. Segmentarea semnalului vocal<br />

66<br />

Cap. 4. Analiza semnalului vocal<br />

După extragerea caracteristicilor semnalului vorbit, în analiză urmează etapa de<br />

segmentare a semnalului vocal. Segmentarea se referă la detectarea diferitelor categorii de<br />

semnal şi clasificarea acestora în funcţie de proprietăţile semnalului [Gla86].<br />

Complexitatea algoritmilor de segmentare depinde de tipul categoriilor pe care vrem să le<br />

detectăm. De exemplu, algoritmii care separă semnalul în regiuni ce respectă anumiţi parametri<br />

fizici vor fi mai puţin complecşi decât algoritmii care determină categoria fonetică (vocală sau<br />

consoană). La rândul lor, aceştia vor fi mai puţin complecşi decât algoritmii care determină nu<br />

doar categoria, ci şi identitatea fonemelor. La fel, algoritmii care determină toate variaţiile<br />

alofonice ale unei foneme particulare pot fi şi mai complecşi, datorită variaţiilor fonemei<br />

respective în cursul vorbirii [Chi00].<br />

Detectarea categoriilor şi clasificarea semnalului vocal se face în trei paşi, aşa cum se<br />

arată în figura 4.8 :<br />

Clasificare S/U/V<br />

Identificare<br />

categorie<br />

Identificare<br />

fonemă<br />

Figura 4.8. Segmentarea semnalului vocal<br />

Într-o paradigmă top-down, primul pas este împărţirea semnalului vocal în trei categorii<br />

de segmente de bază: linişte (Silence - S), nesonor (Unvoiced - U), sonor (Voiced - V).<br />

Al doilea pas este punerea în corespondenţă a fiecărui segment al vorbirii cu o anumită<br />

categorie fonetică. Tipurile de foneme precum şi categoriile fonetice diferă în funcţie de limbă.<br />

De exemplu, pentru limba engleză se definesc 9 categorii de foneme: vocale, consoane sonore,<br />

nazale, semivocale, fricative sonore, fricative nesonore, stopuri sonore, stopuri nesonore şi<br />

linişte.<br />

Un al treilea pas, şi mai complex, îl reprezintă identificarea exactă a fonemelor din fluxul<br />

de intrare. Aici se urmăreşte potrivirea segmentului analizat cu una din fonemele limbii<br />

respective.<br />

În general, alegerea numărului de categorii în care este segmentat semnalul se face printrun<br />

compromis între complexitatea algoritmilor şi rezoluţia segmentelor de vorbire rezultate.<br />

Dacă se presupune că recunoaşterea fonemelor individuale nu este necesară, se va reduce<br />

complexitatea algoritmilor de recunoaştere a segmentelor, deoarece alegerile necesare procesului<br />

de potrivire sunt reduse de la numărul de foneme la numărul de clase fonematice (de exemplu<br />

pentru limba engleză de la 41 de foneme la 9 clase fonematice). În plus, sunt mai uşor de<br />

recunoscut diferenţele dintre două categorii fonematice decât diferenţele dintre două foneme din<br />

aceeaşi categorie.


4.3.1. Detectarea automată a segmentelor semnalului vocal<br />

67<br />

Cap. 4. Analiza semnalului vocal<br />

În cele ce urmează se va prezenta o metodă de segmentare a semnalului vocal bazată pe<br />

detectori de caracteristici. Metoda a fost prezentată de către Childers şi Hu în [Chi00], [Hu93],<br />

putând fi considerată ca o metodă generică pentru rezolvarea acestei probleme.<br />

Detectarea automată a segmentelor vorbirii este realizată printr-o serie de algoritmi care<br />

analizează secvenţial semnalul sonor. Algoritmii pot fi grupaţi în trei categorii, aşa cum se arată<br />

în figura 4.9:<br />

(1) analiza vorbirii;<br />

(2) segmentarea sau împărţirea semnalului în segmente;<br />

(3) etichetarea adecvată a acestor segmente.<br />

Analiză Segmentare Etichetare<br />

DETECTARE<br />

CARACTERISTICI<br />

DETECTARE<br />

GRANIŢE DE<br />

SEGMENT<br />

STABILIRE<br />

CATEGORIE<br />

Figura 4.9. Detectarea automată a segmentelor vorbirii<br />

(1) Analiza iniţială a vorbirii este cea mai complexă dintre cele trei sarcini. Această<br />

analiză iniţială se poate face în doi paşi ([Hu93], [Chi94]).<br />

În primul pas, forma de undă eşantionată este divizată asincron în cadre (segmente de<br />

lungime fixă: 5-10 ms). Se realizează apoi o predicţie lineară LPC pentru fiecare cadru, iar<br />

reziduul este reţinut pentru determinarea punctelor de închidere glotale (GCI – Glotal Closure<br />

Instants) [Hu93].<br />

În cel de-al doilea pas, forma de undă eşantionată este din nou divizată în cadre. Cadrele<br />

sunt alese asincron pentru vorbirea nesonoră şi linişte şi sincron cu perioada la vorbirea sonoră -<br />

prin utilizarea punctelor de închidere glotală GCI ca şi referinţă. Se realizează o predicţie lineară<br />

pentru fiecare cadru iar coeficienţii LPC sunt memoraţi pentru analiză. Apoi un algoritm specific<br />

va analiza fiecare cadru în parte în scopul detectării caracteristicilor sale.<br />

Fiecare algoritm din set detectează o caracteristică acustică diferită. Această caracteristică<br />

se referă la calcularea unui scor de regăsire în cadrul respectiv a unor anumiţi parametri acustici,<br />

puşi în legătură cu o anumită categorie fonetică.<br />

De exemplu, un algoritm poate detecta prezenţa sau absenţa consoanelor, în timp ce alt<br />

algoritm va detecta prezenţa sau absenţa vocalelor. Fiecare algoritm de detectare a<br />

caracteristicilor utilizează o combinaţie de praguri fixe, filtrare mediană şi reguli empirice pentru<br />

calcularea rezultatului sau scorului final.<br />

(2) A doua sarcină a segmentării automate este determinarea graniţelor din domeniul timp<br />

care separă segmentele semnalului vocal.<br />

Graniţele sunt în aşa fel alese încât fiecare segment are proprietăţi acustice aproximativ<br />

constante pe durata segmentului. Segmentarea se bazează pe determinarea schimbărilor din<br />

spectrul de joasă frecvenţă, folosind şi rezultatele detectării caracteristicii de sonor, nesonor sau<br />

linişte S/U/V.


68<br />

Cap. 4. Analiza semnalului vocal<br />

(3) Cea de-a treia sarcină a algoritmilor de segmentare este etichetarea segmentelor. Se<br />

utilizează rezultatele obţinute din algoritmii de detectare a caracteristicilor segmentului. Exemple<br />

de etichete sunt următoarele: vocale, semivocale, fricative. Mai întâi se calculează scorurile<br />

medii ale detectării caracteristicilor, apoi aceste scoruri sunt supuse unor reguli specifice pentru a<br />

determina eticheta cea mai adecvată pentru fiecare segment.<br />

Legătura dintre cele trei etape ale segmentării vorbirii este ilustrată în figura 4.10.<br />

Vorbirea<br />

originală<br />

Analiza vorbirii<br />

- analiză LPC<br />

- detectarea<br />

caracteristicilor<br />

LPC<br />

S/U/V<br />

Segmentare<br />

Estimarea<br />

vocalelor<br />

Estimarea<br />

semivocalelor<br />

Estimarea nazalelor<br />

Estimarea benzii<br />

sonore<br />

Estimarea fricativelor şi<br />

consoanelor sonore<br />

Estimarea fricativelor şi<br />

stopurilor nesonore<br />

Estimarea pauzelor<br />

Estimarea liniştii<br />

Limitele<br />

segmentului<br />

Figura 4.10. Relaţia dintre analiză, segmentare şi etichetare [Chi00]<br />

Etichetare


4.3.2. Algoritmi de detectare a caracteristicilor de segment<br />

4.3.2.1. Date de intrare şi pre-procesare S/U/V<br />

69<br />

Cap. 4. Analiza semnalului vocal<br />

Childers [Chi00] şi Hu [Hu93] utilizează rezultatele analizei LPC ca şi date de intrare.<br />

Cei mai mulţi detectori ai caracteristicilor au nevoie de rezultatele de la alţi detectori (în mod<br />

specific rezultatele de la clasificarea S/U/V), aşa cum se arată în figura 4.10.<br />

O parte din clasificarea S/U/V se realizează în timpul analizei LPC. Se calculează eroarea<br />

de predicţie şi primul coeficient de reflexie pentru fiecare cadru de semnal, astfel [Chi00]:<br />

R<br />

r1 <br />

R<br />

R<br />

R<br />

SS<br />

SS<br />

SS<br />

SS<br />

( 1)<br />

( 0)<br />

1<br />

( 0)<br />

<br />

N<br />

s(<br />

n)<br />

s(<br />

n)<br />

(4.17)<br />

1<br />

( 1)<br />

<br />

N<br />

s(<br />

n)<br />

s(<br />

n 1<br />

)<br />

N<br />

<br />

n1<br />

N 1<br />

n1<br />

unde:<br />

- r1 este coeficientul de reflexie<br />

- N este numărul de eşantioane din cadrul analizat<br />

- s(n) este eşantionul de semnal.<br />

Cadrul este clasificat ca şi sonor dacă coeficientul de reflexie este mai mare decât 0.2 şi<br />

este clasificat ca şi nesonor dacă coeficientul este mai mic sau egal cu 0.2. Acestă valoare de<br />

prag a fost determinată empiric de Hu (1993). În timpul celei de-a doua aplicări a algoritmului<br />

LPC, anumite cadre sunt etichetate ca şi cadre de tranziţie (T). De exemplu primul cadru sonor<br />

într-o secvenţă sonor-nesonor şi ultimul cadru sonor într-o secvenţă sonor-nesonor sunt<br />

considerate cadre de tranziţie.<br />

4.3.2.2. Funcţia volum<br />

Funcţia volum se calculează pentru fiecare cadru pentru a determina volumul acustic al<br />

semnalului la ieşirea unui filtru trece bandă aplicat acelui cadru. Acesta este primul pas de<br />

procesare la majoritatea detectorilor de caracteristici.<br />

Funcţia volum V(i) este normalizată cu numărul de eşantioane din cadru astfel [Chi00]:<br />

1<br />

V ( i)<br />

<br />

N<br />

i<br />

B<br />

<br />

mA<br />

| H ( e<br />

i<br />

m<br />

j<br />

256 2<br />

) |<br />

(4.18)<br />

unde:<br />

- i este indexul cadrului curent,<br />

- Ni este numărul de eşantioane în cadrul i,<br />

- A reprezintă frecvenţa de tăiere a filtrului trece bandă,


70<br />

Cap. 4. Analiza semnalului vocal<br />

- Hi este răspunsul în frecvenţă complex şi singular al filtrului IIR Hi(z) care este produs<br />

de coeficienţii LPC şi evaluat în punctele exp(jπm/256), pentru 0 ≤ m ≤ 255.<br />

Hi(z) este dat de formula:<br />

unde N =13, a0 =1.<br />

G(i) este dat de:<br />

G(<br />

i)<br />

H i ( z)<br />

<br />

1<br />

2<br />

N<br />

a0<br />

a<br />

1z<br />

a<br />

2z<br />

...<br />

a<br />

N z<br />

t<br />

<br />

ns<br />

2<br />

G ( i)<br />

r ( n)<br />

unde:<br />

- r(n) este valoarea reziduului LPC în eşantionul n,<br />

- i reprezintă indexul cadrului curent,<br />

- s este indicele primului eşantion al cadrului curent,<br />

- t este indicele ultimului eşantion al cadrului curent.<br />

(4.20)<br />

(4.19)<br />

Funcţia volum dată de ecuaţia (4.18) este des utilizată pentru detectarea caracteristicilor<br />

segmentului vocal, chiar dacă scara de frecvenţe a filtrului trece-bandă variază în funcţie de<br />

detectorul specific. Se mai foloseşte calculul unui raport a două funcţii volum, care compară<br />

energia dintr-o bandă de frecvenţă cu energia din cea de-a doua bandă de frecvenţă.<br />

În cazul majorităţii detectorilor de caracteristici, se utilizează filtrarea mediană pentru a<br />

netezi fluctuaţiile din funcţia volum.<br />

Fluctuaţiile sunt cauzate de o varietate de surse incluzând determinarea incorectă a GCI,<br />

clasificarea S/U/V incorectă, sau artefactele cum ar fi zgomotul de fond. De obicei aceşti<br />

detectori de caracteristici utilizează o filtrare mediană de ordinul 5, ordinul putând varia de la caz<br />

la caz.<br />

Detectorul S/U/V utilizează o singură funcţie volum din ecuaţia (4.18) cu valorile A=17,<br />

B=255. Limita inferioară A=17 corespunde cu frecvenţa de tăiere de 312 Hz a unui filtru trecesus<br />

aplicat răspunsului în frecvenţă. Filtrul trece-sus este necesar pentru a reduce artefactele de<br />

frecvenţă joasă cauzate de o amplasare incorectă a microfonului în timpul înregistrării. Funcţia<br />

volum este utilizată de detectorul S/U/V ca şi un integrator cu o bandă relativ largă care<br />

calculează energia semnalului în fiecare cadru.<br />

4.3.2.3. Valorile pragurilor şi scorurile de caracteristici<br />

Fiecare algoritm de detectare a caracteristicilor calculează un scor pentru a indica<br />

prezenţa caracteristicii acustice respective în cadrul de semnal corespunzător. Acest scor se<br />

calculează pe o scară între [0,1], existând însă şi excepţii (unele estimări ale caracteristicilor sunt<br />

discrete, binare ori ternare). În general, estimarea caracteristicii se calculează prin compararea<br />

valorii funcţiei volum (sau a unui raport de două funcţii volum) cu una sau mai multe valori de<br />

prag.


71<br />

Cap. 4. Analiza semnalului vocal<br />

Valorile de prag sunt determinate în mod empiric prin calculul erorii în timpul analizei a<br />

100 sau mai multe cuvinte dintr-un corpus de test. Determinarea empirică a acestor valori de<br />

prag constituie o fază de învăţare în dezvoltarea algoritmului. Deşi se află în contrast cu unul din<br />

ţelurile iniţiale ale procesului segmentării automate, care nu necesită antrenarea, totuşi, dată fiind<br />

natura şi variabilitatea semnalului acustic, apare necesitatea creării unui set robust de algoritmi<br />

de segmentare bazaţi pe distribuţia frecvenţelor (funcţiile volum).<br />

În scopul determinării precise a parametrilor este necesar un antrenament iniţial.<br />

Avantajele şi dezavantajele antrenamentului sunt evidente. Dacă datele de antrenament nu<br />

reprezintă în mod precis categoria de utilizatori ţintă, algoritmul nu va funcţiona cum ne dorim.<br />

Dacă setul de date de antrenament este în corespondenţă cu setul real, atunci algoritmul va<br />

funcţiona eficient.<br />

În cazul utilizării a două valori de prag, scorul caracteristicii pentru fiecare cadru se<br />

calculează astfel [Chi00]:<br />

<br />

<br />

1,<br />

V ( i)<br />

T<br />

<br />

upper<br />

<br />

<br />

Feature _ Score(<br />

i)<br />

<br />

0,<br />

V ( i)<br />

T<br />

lower (4.21)<br />

V<br />

( i)<br />

T<br />

lower<br />

<br />

, Tlower<br />

V<br />

( i)<br />

T<br />

upper <br />

T<br />

upper T<br />

lower<br />

<br />

pentru un scor care creşte pe măsură ce creşte şi funcţia volum.<br />

Pentru un scor care descreşte cu creşterea funcţiei volum, estimarea caracteristicii este<br />

dată de:<br />

<br />

<br />

0,<br />

V ( i)<br />

T<br />

<br />

upper<br />

<br />

<br />

Feature _ Score(<br />

i)<br />

<br />

1,<br />

V ( i)<br />

T<br />

lower (4.22)<br />

T<br />

upper V<br />

( i)<br />

<br />

, Tlower<br />

V<br />

( i)<br />

T<br />

upper <br />

<br />

Tupper<br />

T<br />

lower<br />

<br />

Pentru ambele ecuaţii:<br />

- i reprezintă indexul cadrului curent,<br />

- Tlower este valoarea inferioară a pragului,<br />

- Tupper este valoarea de prag superioară,<br />

- V(i) este funcţia volum (sau raportul a două funcţii volum) pentru cadrul curent.<br />

Predicţia liniară LPC face distincţie între cadrele sonore ( voiced) şi cele nesonore<br />

(unvoiced). Cadrele nesonore pot fi însă şi cadre de linişte ( silence). Procedura utilizată în<br />

detectarea S/U/V pentru a clasifica cadrele de tip nesonore sau linişte se bazează pe funcţia<br />

volum (4.18), puterea zgomotului din semnal şi ecuaţiile (4.21), (4.22).<br />

În primul rând, deviaţia medie şi cea standard a zgomotului sunt calculate după<br />

următoarele formule [Chi00]:


1<br />

BNP mean p(<br />

n)<br />

(4.23)<br />

20<br />

20<br />

<br />

n1<br />

1<br />

2<br />

BNP std ( p ( n ) BNP<br />

mean )<br />

(4.24)<br />

20<br />

20<br />

<br />

n 1<br />

unde p(n) este puterea semnalului în decibeli (dB).<br />

72<br />

Cap. 4. Analiza semnalului vocal<br />

S-a presupus că primele 100 msec (20 de cadre) ale semnalului sonor sunt cadre de<br />

linişte.<br />

Funcţia volum S/U/V pentru fiecare cadru nesonor este comparată cu o valoare de prag<br />

constantă, TU/S . Se utilizează ecuaţia (4.21) cu Tlower = Tupper = TU/S.<br />

Estimarea scorului S/U/V este următoarea [Chi00]:<br />

1<br />

, 20log10<br />

V ( i)<br />

T<br />

U / S <br />

SUV _ Score(<br />

i)<br />

<br />

(4.25)<br />

0<br />

, 20log10<br />

V ( i)<br />

T<br />

U / S <br />

unde:<br />

- V(i) se calculează din ecuaţia (4.18) cu A=17 şi B=255,<br />

- i este indexul cadrului curent.<br />

Dacă SUV_Score(i)= 1, cadrul este clasificat ca şi nesonor (unvoiced).<br />

Dacă SUV_Score(i)= 0, cadrul este clasificat ca linişte (silence).<br />

Prin această metodă se separă cadrele nesonore de linişte. Valoarea SUV_Score(i) se<br />

consideră egală cu 2 pentru toate cadrele sonore (voiced).<br />

Estimarea S/U/V este diferită de alte estimări de caracteristici prin faptul că SUV_Score<br />

poate avea doar trei valori distincte, în timp ce alte estimări ale caracteristicilor pot avea o scară<br />

continuă de valori.<br />

Se precizează ([Chi00]) că cele mai bune rezultate se obţin când:<br />

unde k =1.<br />

TU/S = BNPmean + (k)( BNPstd) (4.26)<br />

Valoarea utilizată pentru constanta k depinde de valorile statistice ale zgomotului din<br />

semnalul sonor. În valoare absolută, zgomotul este compensat prin calcularea valorii BNPmean .


4.3.3. Detectarea categoriilor specifice din semnalul vocal<br />

4.3.3.1. Detectarea cadrelor sonore<br />

73<br />

Cap. 4. Analiza semnalului vocal<br />

Pentru a fi clasificat ca şi sonor ( voiced), un cadru trebuie să aibă o valoare mare a<br />

raportului dintre frecvenţele joase şi frecvenţele înalte. Clasa fonemelor de tip voiced include<br />

vocale, consoane sonore, nazale, semivocale, benzi sonore. Clasa unvoiced include fricative<br />

nesonore, stopuri şi fricative sonore. Fricativele sonore slabe sunt clasificate ca şi sonore dacă au<br />

o valoare mai mare a energiei de joasă frecvenţă.<br />

Se calculează funcţia volum din ecuaţia (4.18) pentru fiecare cadru cu G=1, A=5, B=46.<br />

Aceasta este numită funcţia volum de frecvenţă joasă sau LFV ( Low Frequency Volume).<br />

Funcţia LFV este echivalentă cu un filtru trece bandă de la 98 la 898 Hz [Chi00].<br />

O a doua funcţie volum este numită funcţia volum de frecvenţă înaltă sau HFV (High<br />

Frequency Volume). HFV este echivalentă cu un filtru trece bandă de la 3691 Hz la 5000 Hz<br />

[Chi00].<br />

Raţia sonoră R(i) este calculată pentru fiecare cadru astfel [Chi00]:<br />

LFV ( i)<br />

R( i)<br />

(4.27)<br />

HFV ( i)<br />

unde i este indexul cadrului curent.<br />

Raţia sonoră R(i) este netezită cu un filtru median de ordinul 5 şi apoi comparată cu o<br />

valoare de prag Tson. Se calculează astfel pentru fiecare cadru o estimare sonoră SS(i) [Chi00]:<br />

0<br />

, R(<br />

i)<br />

T<br />

son <br />

SS(<br />

i)<br />

<br />

(4.28)<br />

1<br />

, R(<br />

i)<br />

T<br />

son <br />

unde: - i reprezintă indexul cadrului curent,<br />

- Tson = 10, valoare de prag determinată empiric.<br />

4.3.3.2. Detectarea vocalelor<br />

Pentru detectarea vocalelor se calculează funcţia LFV din ecuaţia ( 4.18) cu G=1, A =1,<br />

B=51. În acest caz funcţia LFV este echivalentă cu un filtru trece bandă de la 20 Hz la 996 Hz.<br />

Funcţia HFV este calculată din ecuaţia (4.18) pentru G=1, A=52, B=255. Aici funcţia HFV<br />

este echivalentă cu un filtru trece bandă de la 1016 Hz la 5000 Hz.<br />

Pentru fiecare cadru, se calculează o raţie a vocalei RV(i) astfel [Chi00]:<br />

unde i este indexul cadrului curent.<br />

LFV(i)<br />

RV(i) (4.29)<br />

HFV(i)


74<br />

Cap. 4. Analiza semnalului vocal<br />

Raţia vocalei este netezită de un filtru median de ordinul 5. Estimarea vocalei EV(i), în<br />

cadrul scalei continue [0,1], este calculată pentru fiecare cadru prin compararea raţiei vocalei<br />

netezite cu cele două valori de prag. Estimarea este dată de [Chi00]:<br />

<br />

0, RV ( i)<br />

T<br />

upper<br />

<br />

EV(i) <br />

1,<br />

RV ( i)<br />

T<br />

lower<br />

T<br />

upper RV<br />

( i)<br />

Tlower<br />

RV<br />

( i)<br />

T<br />

<br />

,<br />

T<br />

upper T<br />

lower<br />

upper<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

unde Tupper= 18 şi Tlower = 8, valori de prag determinate empiric.<br />

(4.30)<br />

În procesarea finală, estimarea vocalei este setată automat la zero pentru toate cadrele de<br />

lungime mai mică de 150 de eşantioane (15ms).<br />

4.3.3.3. Detectarea consoanelor sonore<br />

Detectarea consoanelor sonore se realizează într-o manieră similară cu cea a detectării<br />

vocalelor. Se calculează funcţia LFV din ecuaţia (4.18) cu parametrii: G=1, A=1, B=51. La fel,<br />

se calculează funcţia HFV din ecuaţia (4.18) cu G=1, A=52 şi B=255. Valorile de filtrare sunt<br />

aceleaşi ca şi în cazul vocalelor.<br />

Pentru fiecare cadru, este calculată o raţie a consoanei sonore, RC(i), după cum urmează<br />

[Chi00]:<br />

LFV(i)<br />

RC(i) (4.31)<br />

HFV(i)<br />

unde i este indexul cadrului curent.<br />

Raţia consoanei sonore este netezită cu un filtru median de ordinul 5. Estimarea<br />

consoanei sonore EC(i), în cadrul scalei continue [0,1], este calculată pentru fiecare cadru prin<br />

compararea raţiei consoanei sonore netezite cu cele două valori de prag. Estimarea este dată de<br />

[Chi00]:<br />

<br />

0, RV ( i)<br />

T<br />

upper<br />

<br />

EC(i) <br />

1,<br />

RC(<br />

i)<br />

T<br />

lower<br />

RC(<br />

i)<br />

T<br />

lower Tlower<br />

RC(<br />

i)<br />

T<br />

<br />

,<br />

T<br />

upper T<br />

lower<br />

unde Tupper=18 şi Tlower = 8. Valorile de prag sunt determinate empiric.<br />

upper<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

(4.32)<br />

Valoarea EC(i) poate fi calculată în timpul determinării lui EV(i) pentru fiecare cadru,<br />

deoarece EC(i) = 1- EV(i), dacă valoarea EV(i) este utilizată înainte de verificarea segmentelor<br />

scurte din faza de detecţie a vocalei (segmente < 15 msec). Acest calcul în paralel se poate<br />

realiza deoarece se utilizează aceleaşi filtre şi valori de prag pentru detectarea atât a vocalelor cât<br />

şi a consoanelor sonore.


4.3.3.4. Detectarea benzii sonore<br />

75<br />

Cap. 4. Analiza semnalului vocal<br />

Detectarea benzii sonore se realizează într-o manieră similară cu cea a detectării<br />

vocalelor şi consoanelor. Se calculează funcţia LFV din ecuaţia (4.18) cu G=1, A=1, B=33. LFV<br />

este echivalentă astfel cu un filtru trece bandă de la 20 Hz la 645 Hz. Se calculează o funcţie<br />

HFV din ecuaţia ( 4.18) pentru G=1, A=34 şi B=255. HFV este echivalentă cu un filtru trece<br />

bandă de la 664 Hz la 5000 Hz.<br />

[Chi00]:<br />

Se calculează pentru fiecare cadru o raţie a benzii sonore, RBS(i) după cum urmează<br />

unde i = indexul cadrului.<br />

LFV(i)<br />

RBS(i) (4.33)<br />

HFV(i)<br />

Raţia benzii sonore este netezită de un filtru median de ordinul 5. Estimarea benzii sonore<br />

EBS(i), în cadrul scalei continue [0,1], este calculată pentru fiecare cadru prin compararea raţiei<br />

benzii sonore netezite cu cele două valori de prag. Estimarea este dată de [Chi00]:<br />

<br />

0, RBS(<br />

i)<br />

T<br />

upper<br />

<br />

EBS(i) <br />

1,<br />

RBS(<br />

i)<br />

T<br />

lower<br />

RC(<br />

i)<br />

T<br />

lower Tlower<br />

RBS(<br />

i)<br />

T<br />

<br />

,<br />

T<br />

upper T<br />

lower<br />

unde Tupper = 30 şi Tlower =10.<br />

4.3.3.5. Detectarea nazalelor<br />

upper<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

(4.34)<br />

Detectarea nazalelor este realizată prin compararea amplitudinii estimate ale primilor doi<br />

formanţi obţinuţi în detectorul de formanţi McCandless. O raţie nazală RN(i) este calculată<br />

pentru fiecare cadru, după cum urmează [Chi00]:<br />

unde:<br />

A2(i)<br />

RN(i) (4.35)<br />

A1(i)<br />

- A1(i) este estimarea amplitudinii primului formant,<br />

- A2(i) reprezintă estimarea amplitudinii celui de-al doilea formant,<br />

- i este indexul cadrului curent.<br />

Raţia nazalei este netezită de un filtru median de ordinul 5. Estimarea nazalei EN(i), în<br />

cadrul scalei continue [0,1], este calculată pentru fiecare cadru prin compararea raţiei nazalei<br />

netezite cu cele două valori de prag. Estimarea nazalei este dată de [Chi00]:


0, RN(<br />

i)<br />

T<br />

upper<br />

<br />

EN(i) <br />

1,<br />

RN(<br />

i)<br />

T<br />

lower<br />

T<br />

upper RN(<br />

i)<br />

Tlower<br />

RN(<br />

i)<br />

T<br />

<br />

,<br />

T<br />

upper T<br />

lower<br />

76<br />

upper<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Cap. 4. Analiza semnalului vocal<br />

(4.36)<br />

unde Tupper= 20 şi Tlower = 0.05. Valorile de prag sunt determinate empiric.<br />

4.3.3.6. Detectarea semivocalelor<br />

Detectarea semivocalelor se bazează pe o metodă dezvoltată de Espy­Wilson [Esp86].<br />

Algoritmul deviază uşor de la detectorul standard, deşi utilizează funcţia volum din ecuaţia<br />

(4.18). Se calculează mai întâi funcţia LFV cu G=1, A=1, B=20.<br />

În acest caz, LFV este echivalent cu un filtru trece bandă de la 20 Hz la 391 Hz. O<br />

funcţie HFV este calculată din ecuaţia (4.18) pentru G=1, A=21 şi B=50. HFV este echivalent cu<br />

un filtru trece bandă de la 410 Hz la 977 Hz. O raţie ‚murmur’ RM(i) este calculată pentru fiecare<br />

cadru după cum urmează [Chi00]:<br />

LFV(i)<br />

RM(i) (4.37)<br />

HFV(i)<br />

Raţia murmur este netezită de un filtru median de ordinul 5. Estimarea murmurului,<br />

EM(i), în cadrul scalei continue [0,1], este calculată pentru fiecare cadru prin compararea raţiei<br />

murmurului netezit cu cele două valori de prag. Estimarea murmurului este dată de [Chi00]:<br />

<br />

1,<br />

RM ( i)<br />

T<br />

upper<br />

<br />

EM(i) <br />

0,<br />

RM ( i)<br />

T<br />

lower<br />

RM<br />

( i)<br />

T<br />

lower Tlower<br />

RM<br />

( i)<br />

T<br />

<br />

,<br />

Tupper<br />

T<br />

lower<br />

unde Tupper= 12 şi Tlower = 3.<br />

upper<br />

<br />

<br />

<br />

(4.38)<br />

<br />

<br />

<br />

Estimarea semivocalei ESV(i) este calculată pentru fiecare cadru astfel [Chi00]:<br />

ESV(i) = (1- EM(i))(1- EBS(i)) EC(i) (4.39)<br />

unde:<br />

- i este indexul cadrului curent,<br />

- EBS(i) este estimarea benzii sonore din (4.34), iar<br />

- EC(i) este estimarea consoanei sonore din (4.32).<br />

Valoarea ESV(i) este limitată la o scară [0,1]. Dacă ESV(i) este mai mare de 1, este setată<br />

la unitate. Ecuaţia (4.39) arată următorul fapt: dacă acel cadru are o estimare bună a consoanei<br />

sonore, o estimare slabă a murmurului şi a benzii vocale, atunci estimarea semivocalei va fi<br />

ridicată.


4.3.3.7. Detectarea fricativelor sonore<br />

77<br />

Cap. 4. Analiza semnalului vocal<br />

Algoritmul de detectare a fricativelor sonore deviază faţă de detectorul standard, deşi<br />

calculează estimările caracteristicilor din valori de praguri fixe. Primul pas în detectarea<br />

fricativelor sonore este o preaccentuare a răspunsului în frecvenţă a filtrului format de<br />

coeficienţii LPC. Preaccentuarea se face printr-o funcţie pondere W în domeniul frecvenţă astfel<br />

[Chi00]:<br />

m<br />

j<br />

m<br />

256 W ( e ) <br />

256<br />

, cu 0 ≤ m ≤ 255 (4.40)<br />

Răspunsul în frecvenţă (preemfazat) pentru cadrul i, Ĥi , este [Chi00]:<br />

Ĥi<br />

( e<br />

m<br />

j<br />

256<br />

m<br />

j<br />

m<br />

j<br />

256<br />

256<br />

) W ( e ) H ( e ) , pentru 0 ≤ m ≤255 (4.41)<br />

unde Hi este calculat din ecuaţia (4.19) pentru cadrul i cu G=1.<br />

i<br />

Frecvenţa mediană a răspunsului în frecvenţă preemfazat, MF(i), se calculează pentru<br />

fiecare cadru astfel [Chi00]:<br />

1<br />

MF(<br />

i)<br />

<br />

H<br />

255<br />

<br />

total(<br />

i)<br />

m0<br />

m Fs<br />

( | H i ( e<br />

256 2<br />

unde: - Fs= 10 KHz,<br />

- i este indexul cadrului,<br />

- Htotal(i) este dat pentru cadru [Chi00]:<br />

255<br />

Htotal(i) = | m0<br />

H<br />

m<br />

j<br />

256<br />

i ( ) | e<br />

<br />

m<br />

j<br />

256<br />

) |)<br />

(4.42)<br />

(4.43)<br />

Spre deosebire de cazurile anterioare, unde filtrul median de netezire era de ordinul 5,<br />

MF(i) este netezit de un filtru median de ordinul trei. Estimarea frecvenţei înalte HFS(i) este<br />

calculată pentru fiecare cadru după cum urmează [Chi00]:<br />

<br />

1,<br />

MF(<br />

i)<br />

T<br />

upper<br />

<br />

HFS(i) <br />

0,<br />

MF(<br />

i)<br />

T<br />

lower<br />

MF(<br />

i)<br />

T<br />

lower Tlower<br />

MF(<br />

i)<br />

T<br />

<br />

,<br />

T<br />

upper T<br />

lower<br />

upper<br />

<br />

<br />

<br />

(4.44)<br />

<br />

<br />

<br />

unde Tupper= 3200 şi Tlower = 240. Valorile de prag sunt determinate empiric.


78<br />

Cap. 4. Analiza semnalului vocal<br />

Estimarea fricativei sonore EFS(i) este calculată utilizând HFS(i).<br />

Dacă acel cadru este de tip voiced, dar estimarea sonoră SS(i) din (4.28) este zero, atunci<br />

EFS(i) = 1 pentru cadru. Aceasta se realizează deoarece cadrul este sonor şi există în plus o<br />

cantitate relativ mare de energie de înaltă frecvenţă.<br />

Dacă în schimb cadrul este voiced şi estimarea sonoră SS(i) este egală cu 1, atunci EFS(i)<br />

= HFS(i) pentru cadru. În acest caz estimarea fricativelor sonore depinde doar de distribuţia<br />

energiei de frecvenţă înaltă a cadrului.<br />

4.3.3.8. Detectarea stopurilor şi fricativelor nesonore<br />

Un cadru este clasificat ca fiind nesonor (unvoiced) dacă el conţine o fricativă nesonoră<br />

sau un stop nesonor. Algoritmul utilizat pentru a diferenţia cele două tipuri de segmente diferă de<br />

detectorul standard de caracteristici. Acesta utilizează atât parametrii bazaţi pe frecvenţă cât şi<br />

parametrii temporali. Pentru început se calculează frecvenţa medie pentru fiecare cadru utilizând<br />

ecuaţiile (4.40) - (4.43). Frecvenţa medie este netezită apoi de un filtru median de ordinul trei.<br />

Estimarea frecvenţei se face pentru fiecare cadru pe baza ecuaţiei (4.44) cu Tupper = 3800<br />

şi Tlower = 2400.<br />

Pentru fiecare cadru, pe baza analizei LPC, se calculează logaritmul în baza 10 al puterii<br />

semnalului, Plog10. Toate cadrele nesonore ( unvoiced) adiacente sunt grupate în segmente. De<br />

exemplu, cuvântul sit are două segmente nesonore, /s/ şi /t/ şi fiecare din aceste segmente este<br />

compus din mai multe segmente unvoiced adiacente.<br />

Este examinată panta graficului Plog10 pentru primele 12 cadre (60msec) al e fiecărui<br />

segment. Dacă segmentul este mai scurt de 12 cadre, se utilizează toate cadrele. Se calculează o<br />

aproximare de ordinul I (în linie dreaptă) Mseg(j) a pantei Plog10 .<br />

Estimarea înclinării segmentului, MSseg(j), se face pentru fiecare segment pornind de la<br />

Mseg(j), astfel [Chi00]:<br />

<br />

0,<br />

<br />

MSseg(j)<br />

<br />

1,<br />

T<br />

upper M<br />

<br />

Tupper<br />

T<br />

unde:<br />

- Tupper= 1, Tlower = -1 ,<br />

- j este indexul cadrului curent.<br />

seg<br />

lower<br />

( j)<br />

,<br />

T<br />

lower<br />

M<br />

M<br />

seg<br />

seg<br />

M<br />

( j)<br />

T<br />

( j)<br />

T<br />

seg<br />

upper<br />

lower<br />

( j)<br />

T<br />

upper<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

(4.45)<br />

Estimarea înclinării Mseg(j) se calculează ca o singură valoare pentru tot segmentul<br />

nesonor. Tuturor cadrelor dintr-un anume segment nesonor le este alocată o aceeaşi valoare<br />

MSseg. Estimarea înclinării unui cadru este notată cu MS(i). Atunci MS(i) = MSseg (j) pentru<br />

fiecare cadru i din segmentul j.<br />

Estimarea stopurilor USS(i) are avantajul că stopurile sunt mai scurte ca şi durată decât<br />

fricativele nesonore. Estimarea stopurilor este dată pentru fiecare cadru de formula [Chi00]:


unde:<br />

unde:<br />

- i este indexul cadrului curent,<br />

- Ks este dat de [Chi00]:<br />

K<br />

s<br />

USS(i)=Ks MS(i) (4.46)<br />

Tstop<br />

L<br />

j<br />

G<br />

S (1<br />

),<br />

<br />

Tstop<br />

<br />

1,<br />

L j T<br />

fric -1<br />

(1<br />

) ,<br />

<br />

T fric<br />

T<br />

stop<br />

- Gs= 8.0, Tstop= 50msec, Tfric=80msec,<br />

L<br />

L<br />

j<br />

T<br />

L<br />

j<br />

j<br />

T<br />

79<br />

stop<br />

T<br />

fric<br />

fric<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

- Lj lungimea segmentului nesonor j (în milisecunde).<br />

Cap. 4. Analiza semnalului vocal<br />

(4.47)<br />

Cele două valori de prag şi câştigul Gs sunt determinate empiric. Termenul Ks acţionează<br />

ca un factor de scală dependent de durată şi amplifică într-o mare măsură estimarea stopurilor<br />

pentru segmentele nesonore mai scurte de 50msec. Într-o măsură mai mică, Ks atenuează de<br />

asemenea estimarea stopurilor pentru segmente mai lungi de 80msec. Estimarea stopurilor<br />

USS(i) este o valoare în domeniul [0,1]. Dacă USS(i) este mai mare de 1 pentru cadrul respectiv,<br />

atunci este setată la unitate.<br />

[Chi00]:<br />

Estimarea finală a fricativelor nesonore UFS(i) se face pentru fiecare cadru astfel<br />

UFS(i) = HFS(i) (4.48)<br />

unde HFS(i) este scorul frecvenţelor înalte pentru cadrul respectiv.<br />

4.3.4. Detectarea graniţelor dintre segmente<br />

Algoritmul descris în secţiunea 4.3.3 se concentrează în principal asupra caracteristicilor<br />

acustice asociate cadrelor individuale. Pentru segmentarea şi etichetarea vorbirii în categoriile de<br />

segmente descrise anterior, trebuie trasate graniţele dintre segmentele fonematice. Aceasta se<br />

realizează cu doi algoritmi descrişi în subcapitolele următoare. Rezultatele celor doi algoritmi<br />

sunt combinate pentru a determina graniţele finale ale segmentului şi durata acestuia.<br />

4.3.4.1. Detectarea bazată pe graniţa spectrală şi segmentare<br />

Primul algoritm se bazează pe schimbările din spectrul de frecvenţe al semnalului.<br />

Algoritmul dezvoltat de Glass şi Zue [Gla86] măsoară similaritatea dintre cadrul curent şi vecinii<br />

acestuia. Pentru aceasta, se calculează valoarea absolută a răspunsului în frecvenţă al filtrului<br />

generat de coeficienţii LPC din ecuaţiile ( 4.19) şi ( 4.20), pentru fiecare cadru. Distanţa<br />

euclidiană dintre două cadre vecine x şi y se defineşte în felul următor [Chi00]:


D(x,y)<br />

255<br />

<br />

m0<br />

|| H ( e<br />

x<br />

m<br />

j<br />

256 256<br />

) | |<br />

H ( e ) ||<br />

y<br />

80<br />

m<br />

j<br />

unde:<br />

- x este indexul cadrului curent,<br />

- y este indexul cadrului precedent sau următor,<br />

m<br />

j<br />

x e<br />

<br />

Cap. 4. Analiza semnalului vocal<br />

(4.49)<br />

256 - ( ) H este răspunsul în frecvenţă evaluat pentru cadrul x în punctele exp(jπm/256)<br />

pentru 0 ≤ m ≤ 255.<br />

În continuare, se ia decizia de a grupa cadrul curent cu cadre din trecut, dacă:<br />

max(D(x,y)) < min(D(x,v)) , cu x-4 ≤y ≤ x-2, x+2 ≤ v ≤ x+4 (4.50)<br />

şi decizia de a cumula cadrul curent cu cadrele următoare dacă:<br />

min(D(x,y)) > max(D(x,v)) , cu x-4 ≤ y ≤ x-2, x+2 ≤ v ≤ x+4 (4.51)<br />

Dacă niciuna dintre cele două condiţii nu este îndeplinită, nu se realizează gruparea cu<br />

alte cadre. După ce fiecare cadru este asociat într-unul din cele trei moduri posibile, se stabileşte<br />

o graniţă a segmentului când apar schimbări de asociere pentru cadrul curent (din trecu t către<br />

viitor). Localizarea graniţei este la primul eşantion al cadrului unde se realizează tranziţia.<br />

Postprocesarea elimină graniţele care apar în mijlocul segmentelor de linişte.<br />

4.3.4.2. Detectarea graniţelor prin metoda S/U/V<br />

Acest algoritm de segmentare se bazează pe rezultatele algoritmului de detectare S/U/V,<br />

calculând graniţele de segment prin cumularea cadrelor de acelaşi tip. Cadrele mai mici ca<br />

lungime se pot compacta cu vecinii, chiar dacă sunt de tipuri diferite. Se pot formula următoarele<br />

reguli de modificare a segmentării [Chi00]:<br />

Tabelul 4.1. Setul de reguli pentru calculul segmentării finale<br />

Pattern iniţial Condiţii Pattern final<br />

VUS<br />

L(V)> 100 ms<br />

L(U)< 25 ms<br />

VVS<br />

XSY L(S)< 10 ms XXS<br />

SUV L(U)< 7.5 ms SSV<br />

XUY L(U)< 10 ms (X=S)? XYY : XXY<br />

În tabelul 4.1, X şi Y sunt segmente oarecare, S = Silence, U = Unvoiced, V = Voiced.<br />

Graniţele dintre segmente apar atunci când apar tranziţiile ( i , j<br />

) { 0,<br />

1,<br />

2},<br />

i<br />

<br />

j în<br />

detectorul S/U/V. Graniţa este marcată la primul eşantion al noului segment.


4.3.5. Segmentarea finală<br />

81<br />

Cap. 4. Analiza semnalului vocal<br />

Procesul final de segmentare ţine cont de rezultatele segmentării spectrale şi ale<br />

segmentării S/U/V.<br />

La început, toate graniţele obţinute prin algoritmul S/U/V sunt marcate ca şi graniţe în<br />

segmentarea finală. O graniţă determinată în algoritmul spectral, care apare în mijlocul unui<br />

segment vocal, aşa cum a fost el determinat prin algoritmul S/U/V, va face parte din rezultatul<br />

final numai dacă graniţa apare la un cadru localizat la distanţă de cele puţin două cadre faţă de<br />

graniţa segmentului de tip S, U sau V. Această „regulă de două cadre” previne marcarea prin cei<br />

doi algoritmi a aceloraşi graniţe ca şi graniţe separate, dar foarte apropiate una de alta.<br />

Graniţele spectrale care apar în mijlocul segmentelor nesonore sunt ignorate. Aceasta se<br />

realizează în cazul analizei cu un sistem care nu conţine pattern-uri pentru consoane duble.<br />

Pentru limbile care conţin astfel de pattern-uri (cum ar fi limba engleză), aceste graniţe spectrale<br />

din interiorul segmentelor nesonore vor trebui incluse în rezultatul final al segmentării.<br />

4.3.6. Etichetarea segmentelor<br />

Etichetarea segmentelor constă în atribuirea corectă a unei etichete - corespunzând unei<br />

categorii de segment din cele prezentate anterior - unui segment oarecare detectat de algoritmul<br />

de segmentare.<br />

Algoritmul pentru etichetare examinează mai întâi rezultatele S/U/V pentru fiecare<br />

segment. Dacă segmentul este sonor ( voiced), poate fi etichetat ca vocală, semivocală, nazală,<br />

fricativă sonoră sau bandă sonoră. Dacă segmentul este nesonor (unvoiced), el poate fi etichetat<br />

ca stop nesonor sau fricativă nesonoră. Dacă segmentul este o regiune de linişte (silence), poate<br />

fi etichetat doar ca şi segment de linişte.<br />

Pentru un segment dat se calculează un scor al fiecărei caracteristici, mediat pe toată<br />

lungimea segmentului. De exemplu, dacă un segment este nesonor atunci se calculează scorurile<br />

pentru stopurile nesonore USS(i) şi fricativele nesonore UFS(i) pentru fiecare cadru din acel<br />

segment, iar apoi se mediază valorile obţinute. Pentru acest segment nesonor, nu e necesar să fie<br />

calculate estimările medii pentru vocale EVmed(i), nazale ENmed(i), semivocale ESVmed(i), bandă<br />

sonoră EBSmed(i) şi fricative sonore EFSmed(i).<br />

Dacă segmentul este sonor, se calculează estimările medii de caracteristici EVmed(i),<br />

ENmed(i), ESVmed(i), EBSmed(i), EFSmed(i), dar nu se mai calculează estimările USSmed(i) şi<br />

UFSmed(i).<br />

De exemplu, estimarea medie a stopului nesonor USSmed (i) este dată de [Chi00]:<br />

unde:<br />

1<br />

USS med ( j)<br />

USS(<br />

i)<br />

(4.52)<br />

b a<br />

1<br />

b<br />

<br />

ia<br />

- a este indexul cadrului de început al segmentului j,<br />

- b este indexul final în segmentul j.<br />

Estimările medii pentru restul caracteristicilor sunt calculate în aceeaşi manieră.


82<br />

Cap. 4. Analiza semnalului vocal<br />

Odată stabilite estimările medii pentru toate segmentele necunoscute, pentru fiecare<br />

segment j se stabilesc la început două etichete L1(j) şi L2(j). Prima etichetă este caracteristica cu<br />

estimarea medie cea mai bună. A doua etichetă o reprezintă caracteristica cu a doua estimare<br />

medie cea mai bună.<br />

Există cazuri când etichetarea trebuie să ţină seama şi de coarticularea segmentelor, când<br />

algoritmul de segmentare spectrală poate schimba categoria din care face parte segmentul.<br />

Se pot defini astfel estimările robuste pentru L1(j) şi L2(j).<br />

Estimarea robustă R1(j) pentru L1(j) este definită ca estimarea medie pentru categoria de<br />

segment corespunzătoare lui L1(j), împărţită la suma tuturor estimărilor medii pentru acest<br />

segment. De exemplu, dacă segmentul este sonor şi L1(j) este nazală, atunci R1(j) este dată de<br />

[Chi00]:<br />

ENmed<br />

( j)<br />

R1(<br />

j)<br />

(4.53)<br />

EV ( j)<br />

ESV<br />

( j)<br />

EN<br />

( j)<br />

EBS<br />

( j)<br />

EFS<br />

( j)<br />

med<br />

med<br />

med<br />

Dacă segmentul este nesonor şi scorul corespunzător lui L1(j) dă o fricativă nesonoră,<br />

atunci R1(j) este dată de [Chi00]:<br />

UFSmed<br />

( j)<br />

R1(<br />

j)<br />

(4.54)<br />

UFS ( j)<br />

USS<br />

( j)<br />

med<br />

În mod asemănător e definită şi estimarea robustă R2(j) pentru L2(j), ca estimarea medie<br />

pentru categoria de segment corespunzătoare lui L2(j) împărţită la suma tuturor estimărilor medii<br />

pentru acel segment.<br />

Dacă R2(j) > R1(j), iar scorul corespunzător lui L1(j) are valori mai mici decât o valoare<br />

de prag TS (TS ~ 0.5), atunci categoria de segment poate fi schimbată de la L1(j) la L2(j).<br />

4.3.7. Rezultate şi concluzii privind metoda generică de segmentare<br />

Metoda prezentată în acest capitol, propusă de Childers în [Chi00], poate detecta trei<br />

categorii principale din semnalul vocal: linişte (silence), sonor (voiced) şi nesonor (unvoiced), pe<br />

care le clasifică în 9 clase de regiuni: linişte, vocală, consoană sonoră, semivocală, nazală, bandă<br />

sonoră, fricativă sonoră, fricativă nesonoră şi stop nesonor. Astfel, în categoria sonor ( voiced)<br />

intră clasele: vocală, semivocală, consoană sonoră, nazală, fricativă sonoră şi bandă sonoră. În<br />

categoria nesonor (unvoiced) avem clasele: stop nesonor şi fricativă nesonoră. În categoria linişte<br />

(silence) există o singură clasă: linişte.<br />

Pentru fiecare clasă s-a definit câte un detector sau estimator de caracteristică, care<br />

calculează un scor al caracteristicii respective pe semnalul din cadrul curent. Cadrul se<br />

etichetează cu caracteristica având scorul cel mai mare, iar cadrele succesive care sunt etichetate<br />

la fel se grupează în regiuni. În faza finală se reevaluează cadrele singulare şi se ajustează<br />

graniţele de segment. În figura 4.11 se prezintă rezultatele segmentării pentru un semnal vocal<br />

rostit în limba engleză.<br />

med<br />

med<br />

med


(a)<br />

(b)<br />

(c)<br />

83<br />

Cap. 4. Analiza semnalului vocal<br />

În concluzie, se poate spune că această metodă bazată pe detectori de caracteristici poate<br />

fi considerată o metodă generică pentru problema segmentării semnalului vocal în regiuni. Din<br />

experimentele realizate cu această metodă a reieşit faptul că exactitatea clasificărilor depinde în<br />

mare măsură de parametrii empirici care trebuie furnizaţi, acesta fiind punctul sensibil al metodei<br />

şi totodată o anumită limitare a acesteia.<br />

Figura 4.11. Rezultatele segmentării prin metoda Childers [Chi00]<br />

(a) Semnalul original: sintagma “Should we chase those cowboys”<br />

(b) Segmentarea finală după ajustarea graniţelor de segment.<br />

În tabelul 4.2 se prezintă semnificaţia simbolurilor utilizate la etichetare.<br />

Tabelul 4.2. Simbolurile utilizate la etichetarea segmentelor<br />

si silence linişte<br />

UF unvoiced fricative fricativă nesonoră<br />

V vowel vocală<br />

N nasal nazală<br />

US unvoiced stop stop nesonor<br />

VB voice bar bandă sonoră<br />

SV semivowel semivocală<br />

VC voiced consonant consoană sonoră<br />

VF voiced fricative fricativă sonoră


84<br />

Cap. 4. Analiza semnalului vocal<br />

4.4. Contribuţii aduse în procesul segmentării automate a semnalului<br />

vocal<br />

Aşa cum s-a precizat în paragraful anterior, găsirea unei metode optime de segmentare a<br />

semnalului vocal reprezintă o operaţie absolut necesară în procesul de construire a bazei de date<br />

vocale. În acest paragraf este prezentată metoda proiectată de autor, care este capabilă să<br />

detecteze automat componentele S/U/V ale semnalului ( Silence – linişte, Unvoiced – nesonor,<br />

Voiced – sonor), să împartă aceste componente în regiuni şi subregiuni cu anumite proprietăţi, iar<br />

apoi să pună în corespondenţă aceste regiuni cu o secvenţă cunoscută de foneme (figura 4.12):<br />

Semnal vocal<br />

Segmentare S/U/V<br />

Detecţie regiuni<br />

Compactare<br />

Segmentare fonematică<br />

Subregiuni<br />

Figura 4.12. Metoda de segmentare automată propusă de autor<br />

Algoritmul propus utilizează analiza în domeniul timp a semnalului vocal. După o filtrare<br />

trece-jos a semnalului, se detectează mai întâi punctele de trecere prin zero Zi din forma de undă.<br />

Apoi se calculează punctele de valoare minimă mi şi maximă Mi dintre două puncte de zero.<br />

Separarea linişte/vorbire se realizează utilizând o valoare de prag Ts aplicată asupra<br />

amplitudinii semnalului vocal. În segmentele de linişte (silence), toate punctele mi şi Mi trebuie<br />

să fie mai mici decât Ts .<br />

Pentru fiecare segment din semnalul vocal se calculează apoi distanţa dintre două puncte<br />

de zero adiacente Di . Se ia decizia de segment sonor (voiced) dacă această distanţă este mai mare<br />

decât o valoare de prag V.<br />

Un segment este considerat nesonor (unvoiced) dacă distanţa Di dintre punctele de zero<br />

adiacente este mai mică decât un prag U.<br />

Se definesc de asemeni segmente tranzitorii, acestea fiind segmentele pentru care<br />

condiţiile de mai sus nu sunt îndeplinite.<br />

În urma operaţiei de segmentare S/U/V (detectarea segmentelor de tip silence/ unvoiced<br />

/voiced), va avea loc o împărţire a semnalului vocal în clase de regiuni distincte, în scopul<br />

determinării proprietăţilor semnalului pe regiuni şi punerii în corespondenţă cu setul de foneme<br />

prezent la intrare.<br />

După o primă aplicare a algoritmului de mai sus, va fi generat un număr mare de regiuni.<br />

În timp ce regiunile sonore sunt determinate corect de la început, regiunile nesonore sunt


85<br />

Cap. 4. Analiza semnalului vocal<br />

fragmentate de o serie de regiuni de linişte, din cauza faptului că de obicei aceste regiuni<br />

nesonore au amplitudine mică. Toate aceste regiuni vor fi compactate într-o singură regiune<br />

nesonoră în cea de-a doua trecere a algoritmului.<br />

După segmentare, regiunile detectate vor fi puse în corespondenţă cu şirul de foneme<br />

prezent la intrare, pe baza unor reguli stabilite în funcţie de proprietăţile acustice ale fiecărei<br />

foneme rostite în limba română. Aşa cum se va arăta în paragrafele următoare, acest proces de<br />

punere în corespondenţă între regiunile distincte din semnalul vocal şi foneme are un rol foarte<br />

important în generarea automată a bazei de date vocale, şi se pretează la multe alte aplicaţii –<br />

inclusiv în domeniul recunoaşterii vorbirii.<br />

În cele ce urmează, se vor detalia algoritmii corespunzători fiecărei etape de segmentare.<br />

4.4.1. Detectarea punctelor de zero, minim şi maxim<br />

Detectarea punctelor de zero, minim şi maxim reprezintă primul pas al metodei de<br />

segmentare automată a regiunilor. Algoritmul propus utilizează analiza în domeniul timp a<br />

semnalului vocal. După o filtrare trece-jos a semnalului, se detectează mai întâi punctele de<br />

trecere prin zero (Zi) din forma de undă. Apoi se calculează punctele de valoare minimă (mi) şi<br />

maximă (Mi) dintre două puncte de zero, conform următorului algoritm :<br />

Detectarea punctelor de zero Zi , minim mi şi maxim Mi :<br />

Pentru fiecare eşantion Q(k) ce urmează după un punct de zero Z(i):<br />

(1) Dacă eşantionul k e mai mare decât maximul curent al segmentului i, Q(k) > M(i),<br />

atunci se actualizează maximul curent : M(i) = Q(k).<br />

(2) Dacă eşantionul k e mai mic decât minimul curent al segmentului i, Q(k) < m(i),<br />

atunci se actualizează minimul curent : m(i) = Q(k).<br />

(3) Se verifică condiţia de trecere prin zero :<br />

C_ZERO = ((Q(k-1) < 0) AND (Q(k) > 0)) OR (Q(k-1) > 0) AND (Q(k) < 0) )<br />

(4) Dacă este îndeplinită condiţia C_ZERO, se memorează valorile m(i), M(i), Z(i+1) ;<br />

Z(i+1) devine noua origine de segment şi algoritmul se reia de la punctul de start.<br />

În figura 4.13 se arată un exemplu de detectare automată a punctelor de zero, minim şi<br />

maxim dintr-un segment vocal (v alorile numerice reprezintă amplitudinea semnalului în<br />

punctele detectate).<br />

Figura 4.13. Determinarea punctelor de zero, minim, maxim


86<br />

Cap. 4. Analiza semnalului vocal<br />

Primele zece puncte rezultate în urma aplicării algoritmului pe segmentul din figura 4.13<br />

sunt prezentate în tabelul 4.3. Pe prima linie sunt figurate tipul punctelor găsite (Z – zero, M –<br />

maxim, m – minim), iar pe linia a doua amplitudinile eşantioanelor în valoare absolută:<br />

Tabelul 4.3. Rezultatele algoritmului zero-minim-maxim<br />

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10<br />

Tip M0 Z1 m1 Z2 M2 Z3 m3 Z4 M4 Z5<br />

Amp. 9992 161 4311 54 10760 190 4881 56 11406 166<br />

4.4.2. Segmentarea S/U/V şi detecţia de regiuni<br />

Algoritmul propus de autor realizează segmentarea automată a semnalului vocal în 10<br />

clase de regiuni. Se împarte mai întâi semnalul vocal în 4 categorii de bază: linişte ( Silence),<br />

vocală sonoră ( Voiced), consoană nesonoră ( Unvoiced), respectiv tranziţie, apoi se realizează<br />

clasificarea acestora în 10 clase distincte de regiuni: linişte, consoană nesonoră, vocală sonoră,<br />

linişte-nesonoră, regiune de tip salt, neregulată, tranzitorie, tranzitorie densă, discontinuă de tip R<br />

şi discontinuă de tip G.<br />

Algoritmul comportă o abordare top-down, pe cinci nivele (vezi figura 4.14). Mai întâi,<br />

pe nivelul superior sunt detectate categoriile: linişte (L), vocală (V), consoană nesonoră (C). Pe<br />

nivelul doi se detectează categoria tranziţie ( T). Pe nivelul trei se clasifică categoriile de pe<br />

nivelurile unu şi doi în cele 10 clase de regiuni; pe nivelele patru şi cinci se găsesc clasele (1) -<br />

(10).<br />

N 1<br />

N 2<br />

N 3<br />

N 4<br />

N 5<br />

L V L C<br />

T T T<br />

L V L C<br />

L LB V VS T TN TD C<br />

V VR VG<br />

Figura 4.14. Algoritmul de detecţie a regiunilor<br />

Categorii LCV (SUV)<br />

Categoria T<br />

Clasificare<br />

Clase de regiuni<br />

Subtipuri


Au fost definite următoarele categorii de bază şi clase de regiuni :<br />

Tabelul 4.4. Categoriile de bază şi clasele de regiuni<br />

Categorii de bază Clase de regiuni<br />

1. L – Linişte<br />

2. V – Vocală (sonoră)<br />

3. C – Consoană (nesonoră)<br />

4. T – Tranziţie<br />

1. L - REG_LIN – Regiune de linişte<br />

87<br />

Cap. 4. Analiza semnalului vocal<br />

2. LB - REG_LIN_CONS - Regiune de tip linişte nesonoră<br />

3. V - REG_VOC - Regiune de tip vocală sonoră<br />

4. VS - REG_SALT - Regiune de tip salt<br />

5. T - REG_TRANZ- Regiune tranzitorie<br />

6. TD - REG_TRANZ_DENSA- Regiune tranzitorie densă<br />

7. TN - REG_NEREG - Regiune neregulată scurtă<br />

8. C - REG_CONS - Regiune de tip consoană nesonoră<br />

9. VR - REG_R - Regiune de discontinuitate de tip “R”<br />

10.VG - REG_G - Regiune de discontinuitate de tip “G”<br />

Corespondenţele dintre categoriile de bază şi clasele de regiuni sunt arătate în figura 4.15:<br />

CLASĂ<br />

CATEGORIE<br />

Figura 4.15. Relaţia dintre categoriile de bază şi clasele de regiuni<br />

Cele 10 clase de regiuni sunt următoarele :<br />

1. Regiune de tip linişte (REG_LIN)<br />

Este o regiune în care nu se detectează semnal vorbit, respectiv amplitudinea semnalului<br />

este foarte mică.<br />

2. Regiune de tip consoană nesonoră (REG_CONS)<br />

Pentru limba română, aici intră consoanele fricative /S/, /Ş/, /Ţ/, /F/, /Z/, /J/, /H/, precum<br />

şi africativele /Ce/, /Ci/, /Ge/, /Gi/ .<br />

Regiune<br />

L V T C<br />

L LB V VR VG VS T TN TD C


3. Regiune de tip vocală sonoră (REG_VOC)<br />

88<br />

Cap. 4. Analiza semnalului vocal<br />

Aici avem toate vocalele din limba română: /A/, /E/, /I/, /O/, /U/, /Ǎ/, /Î/, dar tot aici intră<br />

consoanele glide şi nazale /L/, /M/, /N/, precum şi unele dintre consoanele plozive /P/,<br />

/B/, /D/.<br />

4. Regiune de tip linişte-nesonoră (REG_LIN_CONS)<br />

Acest tip de regiune este o combinaţie între regiunea de tip linişte şi regiunea de tip<br />

consoană nesonoră. Detectarea acestei regiuni ca o categorie separată a fost necesară<br />

deoarece consoanele fricative sunt rostite de multe ori cu o intensitate scăzută, putând să<br />

fie regăsite în regiuni de tip linişte.<br />

5. Regiune de tip salt (REG_SALT)<br />

Este o regiune asemănătoare cu regiunea vocalică, dar fără să fie periodică. Se datoreşte<br />

balansului de semnal vocal deasupra sau dedesubtul liniei de zero. Necesitatea distingerii<br />

acesteia de regiunea vocalică se datoreşte faptului că ei nu-i corespunde în semnalul<br />

vorbit o vocală, ci o zonă tranzitorie sau de coarticulare.<br />

6. Regiune neregulată scurtă (REG_NEREG)<br />

Este o regiune ce permite detectarea consoanelor plozive precum /C/, /G/ sau /P/. De<br />

obicei apare după o zonă de linişte, având o durată scurtă şi o gamă de frecvenţe<br />

intermediară între vocale şi consoanele nesonore.<br />

7. Regiune tranzitorie (REG_TRANZ)<br />

Este regiunea intermediară situată şi ea în domeniul de frecvenţe dintre vocale şi<br />

consoane, dar fără să aibă caracteristicile regiunilor (R4)-(R6).<br />

8. Regiune tranzitorie densă (REG_TRANZ_DENSA)<br />

Este o regiune tranzitorie în care apar frecvenţe de ordin superior, ce poate corespunde<br />

consoanelor fricative. Semnalul nu este catalogat în categoria (R2) datorită balansului<br />

pozitiv sau negativ faţă de linia de zero.<br />

9. Regiune de discontinuitate de tip “R” (REG_R)<br />

Corespunde unei regiuni de discontinuitate vocalică asociată cu un minim de energie, ce<br />

poate fi datorată în mod particular consoanei glide /R/ care desparte o secvenţă de vocale.<br />

10. Regiune de discontinuitate de tip “G” (REG_G)<br />

Este o regiune de discontinuitate vocalică ce corespunde frecvenţelor intermediare<br />

asociate cu consoanele plozive (în particular cu /C/ şi /G/), ce apar atunci când aceste<br />

consoane se află în interiorul unei secvenţe vocalice.<br />

Experimentele efectuate au condus la realizarea unor corespondenţe între fonemele limbii<br />

române şi clasele de regiuni. Rezultatele la care a ajuns autorul sunt prezentate în tabelul 4.5.


Tabelul 4.5. Apartenenţa fonemelor limbii române la diferitele clase de regiuni<br />

A<br />

Ǎ<br />

B<br />

C<br />

Če<br />

D<br />

E<br />

F<br />

G<br />

Ğe<br />

H<br />

I<br />

Î<br />

J<br />

L<br />

M<br />

N<br />

O<br />

P<br />

R<br />

S<br />

Ş<br />

T<br />

Ţ<br />

U<br />

V<br />

X<br />

Z<br />

89<br />

Cap. 4. Analiza semnalului vocal<br />

LIN LCON VOC SALT CONS NERG TRZ DENS VR VG<br />

În cele ce urmează vor fi prezentate modurile de detectare a celor patru categorii de bază<br />

precum şi modurile de clasificare în cele 10 clase de regiuni.<br />

4.4.2.1. Detectarea categoriei Linişte<br />

Separarea linişte/vorbire din semnalul vocal se realizează utilizând o valoare de prag Ts<br />

aplicată asupra amplitudinii semnalului. În segmentele de Linişte ( Silence), toate punctele de<br />

minim mi şi maxim Mi (detectate prin algoritmul Zero-Min-Max) trebuie să fie mai mici decât<br />

pragul Ts :<br />

|<br />

M i | T<br />

s<br />

, i = s… s+n (4.55)<br />

|<br />

mi<br />

| T<br />

s<br />

unde:<br />

- s reprezintă indexul eşantionului curent din segmentul vocal, iar<br />

- n este numărul de eşantioane din acel segment.


90<br />

Cap. 4. Analiza semnalului vocal<br />

Detectarea categoriei Linişte se face pe primul nivel al algoritmului de segmentare.<br />

Algoritmul după care funcţionează acest detector este următorul:<br />

Detectorul pentru categoria Linişte :<br />

Pentru fiecare punct P(i) de tip zero (ZERO), minim (MIN) sau maxim (MAX) :<br />

(1) Se calculează condiţia:<br />

C_LIN = (P(i) = ZERO) OR ((P(i) = MIN) OR (P(i) = MAX)) AND (|P(i)| < Prag)<br />

(2) Cât timp C_LIN este adevărată, P(i) se cumulează în regiunea curentă<br />

Reg[ireg] ce se cataloghează ca Linişte .<br />

(3) Dacă durata regiunii Reg[ireg] este mai mare decât un prag de 0.5 ms<br />

(D(Reg[ireg]) > 0.5), atunci regiunea e validată şi se trece la pasul următor.<br />

(4) Se ajustează capetele segmentului la puncte de zero.<br />

(5) Se declanşează clasificatorul de nivel 3 pentru categoria Linişte.<br />

Ca urmare a aplicării acestui algoritm, vor fi detectate regiuni de tipul REG_LIN<br />

(regiune de linişte) şi REG_LIN_CONS (regiune de tip linişte nesonoră). Cele două tipuri de<br />

regiuni vor fi departajate prin clasificatorul categoriei Linişte :<br />

Clasificatorul pentru categoria Linişte :<br />

(1) Se calculează numărul de puncte de zero NZ(ireg) pentru regiunea curentă.<br />

(2) Dacă D(ireg) este durata regiunii curente, se calculează condiţia :<br />

CLAS_LIN = NZ(ireg) / D(ireg) > K1;<br />

(3) Dacă condiţia CLAS_LIN este adevărată, atunci se clasifică regiunea curentă<br />

de tip REG_LIN_CONS ; dacă CLAS_LIN este falsă, regiunea se clasifică<br />

REG_LIN .<br />

Figurile 4.16 şi 4.17 prezintă rezultatele detectării automate a unor regiuni din categoria<br />

Linişte. Figura 4.17 arată o regiune de tip linişte nesonoră, posibil candidat pentru o consoană<br />

fricativă.<br />

Figura 4.16. Detectarea unei regiuni de de tip REG_LIN (linişte)


Figura 4.17. Detectarea unei regiuni de tip REG_LIN_CONS (linişte nesonoră)<br />

4.4.2.2. Detectarea categoriei Vocală<br />

91<br />

Cap. 4. Analiza semnalului vocal<br />

Categoria Vocală corespunde segmentelor sonore din semnalul vocal. Pentru segmentele<br />

de vorbire se calculează distanţa dintre două puncte de zero adiacente Di = d(Zi, Zi+1). Se ia<br />

decizia de segment Sonor (Voiced) dacă această distanţă este mai mare decât o valoare de prag<br />

V :<br />

Di V , i = s,… , s+n (4.56)<br />

În figura 4.18, Z1, A, B, Zn reprezintă puncte de zero, M1 este un punct de maxim, iar m2<br />

e un punct de minim, punctele fiind detectate prin algoritmul Zero-Min-Max.<br />

Figura 4.18. Porţiune sonoră dintr-un segment de vorbire<br />

Pentru ca puncte de zero precum cele dintre punctele A şi B din figură să fie incluse în<br />

segmentul sonor, se aplică o tehnică de tip look-ahead. Astfel, un număr de maximum Nk puncte<br />

de zero dintre Zi şi Zi+k pot fi inserate în regiunea sonoră dacă Di-1 > V şi Di+k > V :<br />

D<br />

<br />

D<br />

i<br />

<br />

D<br />

i<br />

j<br />

1<br />

k<br />

V<br />

V<br />

V<br />

Z1<br />

D1<br />

M1<br />

m2<br />

, i = s,… , s+n ; j = i .. k ; k


92<br />

Cap. 4. Analiza semnalului vocal<br />

Detectorul pentru categoria Vocală :<br />

(1) Dacă P(i)=MAX, se calculează distanţa faţă de maximul precedent Dmax(i).<br />

(2) Se calculează condiţia pentru vocală: C_VOC = (Dmax(i) > Delta_Vocală) .<br />

(3) Dacă C_VOC este adevărată, P(i) se cumulează în regiunea curentă Reg[ireg] ce se<br />

cataloghează ca Vocală ; i = i+1; se reia algoritmul de la punctul (1).<br />

(4) Dacă C_VOC este falsă, se verifică extensia regiunii de la pasul următor.<br />

(5) Extensia regiunii : se calculează condiţia C_VOC pentru umătoarele N_Look_Ahead<br />

maxime. Dacă există un punct P(i) pentru care condiţia e adevărată, algoritmul se<br />

reia de la punctul (3).<br />

(6) Dacă durata regiunii Reg[ireg] este mai mare decât un prag de 5 ms (D(Reg[ireg]) ><br />

5), atunci regiunea e validată şi se trece la pasul următor.<br />

(7) Se ajustează capetele segmentului la puncte de zero.<br />

(8) Se declanşează clasificatorul de nivel 3 pentru categoria Vocală.<br />

Figura 4.19 prezintă rezultatele detectării automate a unei regiuni din categoria Vocală.<br />

Se observă periodicitatea şi amplitudinea mărită a semnalului din regiunea vocalică.<br />

Figura 4.19. Detectarea unei regiuni de tip REG_VOC (sonoră vocalică)<br />

În continuare se prezintă clasificatorul pentru categoria Vocală, ce clasifică regiunea ca o<br />

regiune vocalică sau de tip salt. Pentru o regiune vocalică, se împarte regiunea în subregiuni<br />

pentru a detecta eventuale discontinuităţi ce pot apărea datorită consoanelor glide (R) sau plozive<br />

(G, C) intercalate în acea regiune.<br />

Clasificatorul pentru categoria Vocală :<br />

(1) Se apelează detectorul pentru clasa REG_SALT ; dacă acesta întoarce o valoare<br />

pozitivă, regiunea se etichetează ca regiune de tip salt REG_SALT; dacă detectorul<br />

întoarce o valoare negativă, regiunea se etichetează ca Vocală REG_VOC , apoi se<br />

merge la pasul următor pentru determinarea subregiunilor vocalice.<br />

(2) Se determină perioadele din regiunea vocalică.<br />

(3) Pentru fiecare perioadă Per[iper], se apelează detectorul pentru clasa REG_R<br />

(subregiune sonoră corespunzătoare consoanei /R/) ; dacă detectorul întoarce o<br />

valoare pozitivă, se construieşte o subregiune etichetată REG_R , având centrul în<br />

perioada curentă Per[iper].<br />

(4) Pentru fiecare perioadă Per[iper], se apelează detectorul pentru clasa REG_G<br />

(subregiune sonoră corespunzătoare consoanelor /G/ sau /C/) ; dacă detectorul<br />

întoarce o valoare pozitivă, se construieşte o subregiune etichetată REG_G , având<br />

centrul în perioada curentă Per[iper].


93<br />

Cap. 4. Analiza semnalului vocal<br />

Detectorul pentru regiunea de tip Salt ia în considerare faptul că în urma detecţiei<br />

vocalelor pot apărea situaţii de evidenţiere a unor regiuni tranzitorii care nu sunt periodice, ci<br />

prezintă doar o semiperioadă de durată relativ mare; în cele mai multe cazuri această<br />

semiperioadă este pozitivă, şi se datoreşte balansării semnalului deasupra liniei de zero. Figura<br />

4.20 arată două astfel de regiuni:<br />

Figura 4.20. Detectarea regiunilor de tip REG_SALT (regiune sonoră de tip salt).<br />

Detecţia regiunilor de tip Salt se bazează pe calculul densităţii energiei negative (adică a<br />

energiei semnalului de amplitudine negativă) Eneg :<br />

Eneg<br />

DEN<br />

(4.58)<br />

N<br />

unde N este numărul de eşantioane din regiune.<br />

Detectorul pentru regiunea de tip Salt :<br />

(1) Se calculează raportul D_EN[ireg] pentru regiunea curentă.<br />

(2) Dacă D_EN[ireg] < KS , se returnează True pentru a indica detecţia regiunii de tip<br />

Salt.<br />

4.4.2.3. Împărţirea în subregiuni vocalice<br />

Aşa cum se va arăta în capitolul dedicat segmentării fonematice, o regiune vocalică<br />

poate conţine, pe lângă vocale, şi anumite consoane care au o formă de undă apropiată de<br />

cea a vocalelor, ce apare din cauza coarticulării. Aceste consoane sunt : consoanele glide /L/,<br />

/R/, nazale /M/, /N/, dar şi unele consoane plozive : /C/, /G/, /P/, /D/. În scopul detectării<br />

acestor consoane din interiorul regiunilor vocalice, s-a proiectat un algoritm de împărţire a<br />

regiunilor în subregiuni. Algoritmul este adaptat în special detectării consoanelor /R/, /C/,<br />

/G/, care în urma experimentelor efectuate s-au dovedit a fi cel mai uşor de pus în evidenţă<br />

dacă ele apar în interiorul regiunilor vocalice.


4.4.2.3.1. Detectarea subregiunilor corespunzătoare consoanei /R/<br />

Consoana /R/ ce apare într-o regiune vocalică de forma :<br />

REG_VOC = {VOC}+R{VOC}+ ,<br />

94<br />

Cap. 4. Analiza semnalului vocal<br />

unde notaţia {VOC}+ înseamnă o succesiune de una sau mai multe vocale,<br />

corespunde fie cu un minim de amplitudine, fie cu un hiatus de periodicitate a semnalului<br />

vocal. Figura 4.21 arată un astfel de exemplu :<br />

Figura 4.21. Consoana /R/ în regiunea vocalică /AREA/<br />

Modul de detectare a hiatusurilor de periodicitate va fi explicat în paragraful dedicat<br />

determinării perioadelor din regiunile vocalice sonore.<br />

În continuare se arată modul de detectare a minimelor locale de amplitudine a<br />

perioadelor, corespunzătoare regiunilor de tip REG_R.<br />

Pentru fiecare perioadă PC se ia un interval de 7 perioade centrat în PC, aşa cum se<br />

arată în figura 4.22. Punctele de maxim ale fiecărei perioade se notează P[0], P[1], ..., P[6].<br />

În continuare se verifică relaţiile de ordonare:<br />

P[0] > P[1] > P[2] > P[3] (4.59)<br />

P[6] > P[5] > P[4] > P[3]<br />

Dacă relaţiile (4.59) sunt satisfăcute, punctul P[3] corespunzător perioadei PC este un<br />

punct de minim şi intervalul considerat se va eticheta ca regiune REG_R.<br />

0<br />

1<br />

R<br />

2<br />

3<br />

Figura 4.22. Determinarea minimului local al perioadelor<br />

4<br />

5<br />

6


95<br />

Cap. 4. Analiza semnalului vocal<br />

Dacă relaţiile (4.59) nu sunt satisfăcute din cauza punctelor de capăt P[0] sau P[6],<br />

atunci se admite şi condiţia ca P[3] să fie minim pentru intervalul ordonat [1,5], iar punctele<br />

de capăt P[0] şi P[6] să fie apropiate ca valoare de P[1], respectiv P[5].<br />

Algoritmul în pseudocod este următorul:<br />

Detectorul pentru subregiunea de tip R :<br />

If (P[2]>P[1]) return false;<br />

If (P[3]>P[2]) return false;<br />

If (P[3]>P[4]) return false;<br />

If (P[4]>P[5]) return false;<br />

If (P[0]


96<br />

Cap. 4. Analiza semnalului vocal<br />

4.4.2.3.2. Detectarea subregiunilor corespunzătoare consoanelor /C/, /G/<br />

Detecţia regiunilor de tip REG_G, corespunzătoare consoanelor /C/ şi /G/ se bazează<br />

pe faptul că în banda de [3500-6500] Hz există în acest caz frecvenţe spectrale de<br />

amplitudine mărită, spre deosebire de cazul vocalelor în care aceste frecvenţe nu există. În<br />

figura 4.25 se arată spectrul unei regiuni de tip REG_G, comparativ cu cel al unei regiuni<br />

vocalice:<br />

Figura 4.24. Consoana /G/ (stânga) şi vocala /O/ (dreapta)<br />

Figura 4.25. Spectrele asociate consoanei /G/ şi vocalei /O/<br />

Detectorul pentru subregiunea de tip G :<br />

(1) Se calculeaza maximul amplitudinii spectrale din banda [1,2500] Hz MAX1,<br />

pentru o fereastră W de N perioade din regiunea curentă.<br />

(2) Se calculeaza maximul amplitudinii spectrale din banda [3500,6500] Hz MAX2<br />

pentru fereastra W.<br />

(3) Se calculează raportul RGC[W] = MAX2/MAX1.<br />

(4) Dacă RGC[W] > KGC , se returnează True pentru a indica detecţia subregiunii de<br />

tip G.<br />

4.4.2.4. Detectarea categoriei Consoană :<br />

Categoria Consoană corespunde segmentelor nesonore. Un segment de vorbire este<br />

considerat Nesonor (Unvoiced) dacă distanţa Di dintre două puncte de zero adiacente este mai<br />

mică decât un prag U:<br />

Di U , i = s,… , s+n (4.60)


Figura 4.26. Porţiune nesonoră dintr-un segment de vorbire<br />

97<br />

Cap. 4. Analiza semnalului vocal<br />

Detectarea categoriei Consoană se face tot pe primul nivel al algoritmului de segmentare,<br />

în paralel cu detectarea celeilalte categorii corespondente de pe acest nivel: categoria Vocală. În<br />

continuare se prezintă algoritmul după care funcţionează acest detector :<br />

Detectorul pentru categoria Consoană :<br />

(1) Dacă P(i)=MAX, se calculează distanţa faţă de maximul precedent Dmax(i).<br />

(2) Se calculează condiţia pentru consoană :<br />

C_CONS = (Dmax(i) < Delta_Consoană).<br />

(3) Dacă C_CONS este adevărată, P(i) se cumulează în regiunea curentă Reg[ireg]<br />

ce se cataloghează ca şi Consoană ; i = i+1; se reia algoritmul de la punctul (1).<br />

(4) Dacă C_CONS este falsă, se verifică extensia regiunii de la pasul următor.<br />

(5) Extensia regiunii: se calculează condiţia C_CONS pentru umătoarele<br />

N_Look_Ahead maxime. Dacă există un punct P(i) pentru care condiţia e<br />

adevărată, algoritmul se reia de la punctul (3).<br />

(6) Dacă durata regiunii Reg[ireg] este mai mare decât un prag de 0.5 ms<br />

(D(Reg[ireg]) > 0.5), atunci regiunea e validată şi se trece la pasul următor.<br />

(7) Se ajustează capetele segmentului la puncte de zero.<br />

Di<br />

(8) Se etichetează regiunea curentă ca regiune de tip consoană nesonoră :<br />

Tip(Reg[ireg]) = REG_CONS.<br />

Figura 4.27 prezintă rezultatele detectării automate a unei regiuni din categoria<br />

Consoană. Caracteristic este numărul mare de treceri prin zero a semnalului din această regiune.<br />

Figura 4.27. Detectarea unei regiuni de tip REG_CONS (consoană nesonoră)


4.4.2.5. Detectarea categoriei Tranziţie<br />

98<br />

Cap. 4. Analiza semnalului vocal<br />

Detectarea categoriei Tranziţie se face pe nivelul doi al algoritmului de segmentare, după<br />

ce categoriile Linişte, Vocală şi Consoană au fost identificate. Se parcurg regiunile în ordine iar<br />

cele care nu au fost etichetate la nivelul 1 se etichetează ca regiuni de tranziţie. Pentru aceste<br />

regiuni se lansează clasificatorul categoriei Tranziţie :<br />

Clasificatorul pentru categoria Tranziţie :<br />

(1) Se lansează detectorul pentru regiune de tip REG_NEREG (regiune<br />

neregulată). Dacă detectorul întoarce un rezultat afirmativ, regiunea curentă se<br />

etichetează ca REG_NEREG. Dacă detectorul întoarce un rezultat negativ, se<br />

continuă cu pasul doi.<br />

(2) Se lansează detectorul pentru regiune de tip REG_TRANZ_DENSA (regiune<br />

tranzitorie densă). Dacă detectorul întoarce un rezultat pozitiv, regiunea<br />

curentă se etichetează ca REG_TRANZ_DENSA. Dacă detectorul întoarce un<br />

rezultat negativ, regiunea curentă se etichetează ca REG_TRANZ<br />

Detectarea regiunilor de tip Neregulată are ca scop evidenţierea “zimţurilor” care apar în<br />

semnal, adică a unor neregularităţi care indică posibilitatea rostirii unor consoane plozive (/C/<br />

sau /G/). Aceste consoane au forma unor impulsuri de durată scurtă ce urmează după o perioadă<br />

de aprox. 5 ms de linişte (vezi figura 4.28) :<br />

Figura 4.28. Consoana plozivă /C / din cadrul silabei /CA/<br />

În figura 4.28 se observă că această consoană are forma a trei succesiuni de impulsuri<br />

care urmează după mici perioade de linişte. Ca modalitate de detecţie, se calculează energia<br />

negativă (adică energia semnalului de amplitudine negativă) Eneg(m) din stânga fiecărui punct de<br />

minim m, începind cu dx = -0.225 ms, pe o durată D = 1 ms. Dacă raportul: Rneg = m 2 / Eneg(m)<br />

este mai mare decât un prag dat, atunci regiunea este de tip Neregulată. Algoritmul de detecţie<br />

este următorul:<br />

Detectorul pentru regiunea Neregulată:<br />

(1) Pentru fiecare punct P(i) de tip minim (MIN) se calculează energia negativă<br />

E_NEG(i) din stânga lui P(i) pe durata D.<br />

(2) Se calculează raportul R_NEG(i) şi se reţine raportul maxim R_NEG_MAX.<br />

(3) Dacă R_NEG_MAX > K şi durata regiunii D(ireg) < 10ms, se returnează<br />

True pentru a eticheta regiunea curentă ca regiune de tip Neregulată.


Figura 4.29 arată rezultatul detectării acestui tip de regiune:<br />

99<br />

Cap. 4. Analiza semnalului vocal<br />

Figura 4.29. Detectarea regiunilor de tip REG_NEREG (regiune neregulată scurtă).<br />

Regiunile clasificate astfel sunt figurate cu galben.<br />

Detectarea regiunilor de tip Tranzitorie densă este necesară pentru evidenţierea unor<br />

regiuni cu pondere mare a frecvenţelor ridicate în spectru, care pot fi de tipul consoanelor<br />

fricative. Detecţia acestui tip de regiuni se bazează pe calculul unui raport dintre amplitudinile<br />

frecvenţelor spectrale ale unui filtru trece-bandă 2500Hz – 4000Hz şi ale unui filtru trece-jos cu<br />

frecvenţa de tăiere 1000Hz, astfel:<br />

unde:<br />

R<br />

T 2<br />

<br />

kT<br />

1<br />

dens P<br />

<br />

k1<br />

FFT ( k)<br />

FFT ( k)<br />

(4.61)<br />

- FFT(k) este modulul transformatei Fourier a semnalului din poziţia spectrală k ;<br />

- T1 este poziţia spectrală corespunzătoare frecvenţei de 2000Hz :<br />

2500N<br />

T1 , cu N = numărul de eşantioane din segmentul curent, Fes fiind frecvenţa<br />

F / 2<br />

es<br />

de eşantionare ;<br />

- T2 este poziţia spectrală corespunzătoare frecvenţei de 3000Hz :<br />

4000N<br />

T2 , cu N = numărul de eşantioane din segmentul curent, Fes = frecvenţa de<br />

F / 2<br />

es<br />

eşantionare ;<br />

- P este poziţia spectrală corespunzătoare frecvenţei de 700Hz :<br />

1000N<br />

P .<br />

F / 2<br />

es


Detectorul regiunii tranzitorii dense funcţionează după următorul algoritm:<br />

Detectorul pentru regiunea Tranzitorie densă :<br />

(1) Se calculează transformata Fourier pe termen scurt pentru<br />

segmentul considerat.<br />

(2) Se calculează raportul R_DENS(ireg).<br />

(3) Dacă R_DENS(ireg) > KD, se returnează valoarea True<br />

pentru a eticheta regiunea curentă ca regiune de tip<br />

Tranzitorie densă.<br />

100<br />

Cap. 4. Analiza semnalului vocal<br />

Figura 4.30 prezintă comparativ graficul spectral FFT pentru o vocală (figura 4.30a) şi o<br />

consoană fricativă (figura 4.30b). Se observă diferenţa amplitudinilor de frecvenţă în benzile 0-<br />

1000Hz, respectiv 2500Hz-4000Hz.<br />

Figura 4.31 prezintă rezultatul detectării regiunii de tip Tranzitorie densă.<br />

(a) (b)<br />

Figura 4.30. Graficul spectrelor FFT pentru o vocală (a) şi o consoană fricativă (b)<br />

Figura 4.31. Detectarea unei regiuni de tip REG_TRANZ_DENSA (regiune tranzitorie densă)<br />

În stânga: spectrul FFT ; în dreapta: regiunea detectată, figurată prin line roşie dublă.


4.4.3. Compactarea regiunilor<br />

101<br />

Cap. 4. Analiza semnalului vocal<br />

După etapa de detectare a regiunilor, integrarea acestora într-o categorie segmentală de<br />

tipul Linişte, Sonoră, Nesonoră respectiv Tranziţie, şi după clasificarea într-una din cele 10<br />

clase de regiuni, urmează faza de compactare. Compactarea realizează gruparea regiunilor de<br />

dimensiuni mici într-o aceeaşi categorie segmentală.<br />

S-a remarcat faptul că după prima aplicare a algoritmului de segmentare se generează un<br />

număr mare de regiuni. Dacă regiunile sonore sunt determinate corect de la început, regiunile<br />

nesonore sunt fragmentate de o serie de regiuni de linişte, din cauza faptului că de obicei aceste<br />

regiuni nesonore au amplitudine mică. De asemeni, din cauza balansării semnalului deasupra sau<br />

dedesubtul liniei de zero, în cadrul unui segment nesonor pot apărea şi segmente tranzitorii.<br />

Algoritmul de compactare stabileşte mai întâi o secvenţă de regiuni ale cărei capete pot fi<br />

vocale Sonore sau Linişte :<br />

unde :<br />

R R ,..., R R <br />

S , , cu<br />

0, 1 n1<br />

n<br />

R , Rn<br />

VL {<br />

REG _VOC,<br />

REG _ LIN}<br />

(4.62)<br />

0<br />

c k 1,<br />

VL<br />

Ri C k | 10 , i 1 , n 1<br />

Ri reprezintă regiunile clasificate într-una din cele 10 clase ck (figura 4.32).<br />

R0<br />

. . .<br />

R1 R2<br />

Rn-1<br />

Rn<br />

Figura 4.32. Secvenţa de regiuni de compactat<br />

După stabilirea secvenţei de regiuni de compactat (regiunile de capăt R0 şi Rn nu se<br />

compactează), se încearcă gruparea regiunilor într-una sau eventual mai multe regiuni nesonore<br />

astfel :<br />

Cazul 1. Dacă ponderea regiunilor de tip consoană nesonoră REG_CONS este mai mare<br />

decât un prag K1, atunci secvenţa S se compactează într-o singură regiune de tip consoană<br />

nesonoră REG_CONS.<br />

Algoritmul care detectează acest tip de compactare este următorul (ireg1 este indicele<br />

regiunii R0, iar ireg2 este indicele regiunii Rn):<br />

for (i = ireg1+1; i < ireg2; i++)<br />

{<br />

durata = Reg[i].stop - Reg[i].start;<br />

SumTotal += durata;<br />

if (Reg[i].tip == REG_CONS)<br />

SumCons+=durata;<br />

}<br />

p = SumCons / SumTotal;<br />

if (p>0.5) return true;<br />

else return false.


102<br />

Cap. 4. Analiza semnalului vocal<br />

Compactarea unei secvenţe de regiuni într-o singură regiune de tip consoană nesonoră<br />

este ilustrată în figurile 4.33 şi 4.34. Marginea din stânga (regiunea 23) este o regiune de tip<br />

linişte, iar marginea din dreapta (regiunea 38) este o regiune vocalică:<br />

Figura 4.33. Secvenţa de regiuni după prima aplicare a algoritmului<br />

Figura 4.34. Compactarea regiunilor într-un segment de tip consoană nesonoră<br />

Cazul 2. Dacă ponderea regiunilor de tip consoană nesonoră REG_CONS şi a regiunilor<br />

de tip linişte-nesonoră REG_LIN_CONS este mai mare decât un prag K2, atunci secvenţa S se<br />

compactează într-o singură regiune de tip linişte-nesonoră REG_LIN_CONS. Algoritmul pentru<br />

acest caz este următorul :<br />

for (i = ireg1+1; i < ireg2; i++)<br />

{<br />

durata = Reg[i].stop - Reg[i].start;<br />

SumTotal += durata;<br />

if ((Reg[i].tip == REG_CONS) or (Reg[i].tip == REG_LIN_CONS)<br />

SumLinCons+=durata;<br />

}<br />

p = SumLinCons / SumTotal;<br />

if (p>0.3)<br />

return true;<br />

else<br />

return false.


103<br />

Cap. 4. Analiza semnalului vocal<br />

Un exemplu de segmentare pentru o regiune de tip linişte nesonoră este arătat în figurile<br />

4.35, respectiv 4.36. Aici regiunile numerotate sunt nesonore, regiunile figurate cu o singură<br />

linie, nenumerotate, sunt regiuni de linişte, iar regiunile figurate cu linie dublă sunt regiuni<br />

tranzitorii :<br />

Figura 4.35. Regiunile dintr-un segment nesonor după prima aplicare a algoritmului<br />

Toate aceste regiuni vor fi compactate în cea de-a doua trecere a algoritmului, astfel că<br />

rezultatul va fi o singură regiune de tip linişte-nesonoră, aşa cum se poate vedea în figura 4.36 :<br />

Figura 4.36. Compactarea regiunilor într-un segment de tip linişte-nesonoră<br />

Cazul 3. Dacă cele două condiţii anterioare de la punctele 1 şi 2 nu sunt îndeplinite,<br />

atunci secvenţa de regiuni se compactează în felul următor :<br />

Regiunile neregulate scurte (REG_NEREG) şi regiunile de tip linişte nesonoră<br />

(REG_LIN_CONS) de durată mai mare de 5 ms vor fi lăsate pe loc, iar celelalte regiuni vor fi<br />

compactate într-o singură regiune tranzitorie.<br />

Regiunile ce se compactează pot fi de tipul : consoană nesonoră, linişte-nesonoră de<br />

durată mică, de tip salt, tranzitorie sau tranzitorie densă, ţinând cont că la capetele secvenţei de<br />

compactare avem întotdeauna regiuni vocale sau linişte.<br />

R0<br />

1 2 3 4 5 6 7 8<br />

C1<br />

LIN NRG<br />

Figura 4.37. Compactarea regiunilor tranzitorii<br />

În figura 4.37, regiunile 1, 2 şi 3 se vor compacta în regiunea tranzitorie C1, iar regiunile<br />

5 şi 6 în regiunea tranzitorie C2.<br />

C2<br />

Rn


Algoritmul de compactare în acest caz arată astfel :<br />

st = ireg1;<br />

for (dr = st+1;dr< = ireg2;dr++)<br />

{<br />

duration = (TabReg[dr].stop-TabReg[dr].start);<br />

tip = TabReg[dr].tip;<br />

if ( (dr == ireg2) or (tip == REG_NEREG) or<br />

((duration>5) and (tip == REG_LIN_CONS)) )<br />

{<br />

nr_compactări = dr-st-2;<br />

if (nr_compactări >0)<br />

{<br />

TabReg[st+1].tip = REG_TRANZ;<br />

// Se mută regiunile la stânga cu dr-st-2 poziţii<br />

for(i = dr;i


4.4.4. Rezultatul final al segmentării în clase de regiuni<br />

105<br />

Cap. 4. Analiza semnalului vocal<br />

În figura 4.40 se prezintă rezultatul final al segmentării în clase de regiuni pentru<br />

sintagma « Evidenţierea unui cadru general ». Se pot observa aici următoarele clase: vocale-<br />

sonore – desenate cu portocaliu, consoane nesonore – o linie roşie, regiuni de tranziţie – linie<br />

roşie dublă, linişte – fără linie, linişte nesonoră – albastru.<br />

Figura 4.40. Rezultatul final al segmentării în clase de regiuni pentru sintagma :<br />

« Evidenţierea unui cadru general »


106<br />

Cap. 4. Analiza semnalului vocal<br />

4.4.5. Concluzii privitoare la segmentarea semnalului vocal în clase de<br />

regiuni<br />

Aşa cum am văzut, segmentarea în clase de regiuni este o etapă a analizei semnalului<br />

vocal utilizată atât în sinteza, cât şi în recunoaşterea vorbirii. Pentru sinteza bazată pe corpus în<br />

general, şi pentru sinteza bazată pe concatenarea unităţilor, este de mare importanţă segmentarea<br />

şi adnotarea corpusului vorbit, respectiv crearea unei baze de date cu unităţi acustice, într-un<br />

mod cât mai eficient. Segmentarea automată a semnalului vocal în clase de regiuni împlineşte<br />

aceste necesităţi, alături de segmentarea fonematică - ce va fi prezentată în capitolul următor.<br />

Algoritmul propus de autor realizează segmentarea automată a semnalului vocal în 10<br />

clase de regiuni. Abordarea este în domeniul timp al analizei, deşi detectarea unor clase<br />

particulare a necesitat şi calcule în domeniul frecvenţelor. Algoritmul împarte mai întâi semnalul<br />

vocal în 4 categorii de bază : linişte, sonoră, nesonoră, respectiv tranziţie, apoi realizează<br />

clasificarea în cele 10 clase distincte de regiuni: linişte, consoană nesonoră, vocală sonoră,<br />

linişte-nesonoră, de tip salt, neregulată, tranzitorie, tranzitorie densă, discontinuă de tip R şi<br />

discontinuă de tip G.<br />

Avantajul algoritmului faţă de alte abordări este rapiditatea derivată din efectuarea<br />

calculelor în domeniul timp şi detectarea categoriilor de bază dintr-o singură parcurgere a<br />

eşantioanelor de semnal. De asemeni, diferitele tipuri de regiuni sunt detectate în principal pe<br />

baza parametrilor obţinuţi în prima fază a algoritmului.<br />

În această etapă s-au proiectat:<br />

- un algoritm de determinare a punctelor de zero, minim şi maxim din semnalul vocal în<br />

domeniul timp;<br />

- o metodă de detecţie a segmentelor S/U/V (Silence/Voiced /Unvoiced) şi clasificare în<br />

tipuri de regiuni a semnalului vocal, metodă ce cuprinde :<br />

- 4 detectori pentru categoriile de bază (linişte, sonoră, nesonoră, tranziţie) ;<br />

- 8 clasificatori pentru clasele de regiuni propriu-zise (linişte, consoană nesonoră, vocală<br />

sonoră, linişte-nesonoră, de tip salt, neregulată, tranzitorie, tranzitorie densă);<br />

de tip G);<br />

- 2 detectori pentru determinarea subregiunilor (discontinuitate de tip R şi discontinuitate<br />

- un algoritm de compactare a regiunilor pentru gruparea regiunilor similare şi reducerea<br />

numărului de regiuni.


107<br />

Cap. 4. Analiza semnalului vocal<br />

4.5. Detectarea perioadelor din forma de undă. Punctele de închidere<br />

glotală<br />

Detectarea perioadelor din forma de undă, corespunzând frecvenţei fundamentale a<br />

semnalului, este importantă atât pentru analiza sincronă cu frecvenţa ( pitch synchronous<br />

analysis), cât şi pentru modificarea proprietăţilor semnalului vocal în domeniul timp (de exemplu<br />

modificarea tonalităţii, intonaţiei şi ritmului vorbirii).<br />

Metodele folosite pentru detectarea perioadelor formei de undă [Nay07] utilizează<br />

modelarea LPC, calculând vârfurile din semnalul rezidual LPC prin filtrare adaptivă, sau calculul<br />

discontinuităţilor spectrale prin transformate timp-frecvenţă, discontinuităţi de energie în<br />

semnalul vorbit sau în forma de undă corespunzătoare tractului vocal.<br />

O metodă generică este cea prezentată de Childers şi Hu în [Chi94]. Metoda utilizează<br />

rezultatele segmentării S/U/V a semnalului vocal precum şi semnalul erorii de predicţie e(n) din<br />

analiza LPC pentru a detecta atât perioadele din forma de undă a semnalului de intrare, cât şi<br />

punctele de închidere glotală GCI ( Glottal Closure Instants). Punctele GCI corespund cu<br />

momentele de vibraţie ale glotei în producerea semnalului vocal, respectiv cu trenurile de<br />

impulsuri în semnalul de excitaţie glotală.<br />

Algoritmul de detecţie constă din două etape: (1) estimarea perioadelor din forma de<br />

undă şi (2) alegerea vârfului de semnal corespunzător fiecărei perioade.<br />

1. Estimarea perioadelor din forma de undă<br />

Algoritmul de estimare a perioadelor din semnalul de intrare este următorul:<br />

P1. Se consideră un segment din semnalul erorii de predicţie LPC, semnal notat cu eLp(n).<br />

P2. Se aplică un filtru trece-jos segmentului considerat.<br />

P3. Se calculează cepstrumul Ce(n) pe segmentul n:<br />

Ce Lp<br />

( n)<br />

IFFT (| FFT ( e ( n))<br />

|), 1n<br />

N<br />

(4.63)<br />

unde N este dimensiunea cadrului ( N 25).<br />

P4. Se caută indexul m pentru care Ce(m) are amplitudinea maximă în subsetul:<br />

i)<br />

| 25 i<br />

N<br />

<br />

C e<br />

( (4.64)<br />

P5. Se caută indexul k pentru care Ce(k) are amplitudinea maximă în subsetul:<br />

( i)<br />

| 25 i m<br />

25<br />

C e<br />

(4.65)<br />

P6. Dacă Ce(k) > K Ce(m) (unde constanta K ~ 0.7), k este perioada estimată; în caz contrar<br />

se alege indicele m pentru această estimare.<br />

P7. Dacă se observă o schimbare bruscă în perioada formei de undă în comparaţie cu<br />

perioadele detectate anterior, atunci semnalului i se aplică un filtru trece-jos şi<br />

algoritmul se reia cu pasul 3.


108<br />

Cap. 4. Analiza semnalului vocal<br />

2. Detectarea vârfului de semnal corespunzător GCI pentru fiecare perioadă<br />

Detectarea vârfului de semnal corespunzător GCI se realizează astfel:<br />

P1. În fiecare cadru analizat (de 256 de eşantioane) se caută vârful cu valoarea minimă<br />

negativă din eLp(n).<br />

P2. Se ia o fereastră în jurul vârfului considerat. Dacă N este numărul total de eşantioane din<br />

fereastră, atunci se consideră N/3 eşantioane în faţa vârfului, şi 2N/3 eşantioane în<br />

spatele vârfului (se ia N=46).<br />

P3. Se calculează funcţia de corelaţie a ferestrei considerate faţă de semnalul eLp(n). Astfel<br />

se creează semnalul de corelaţie Cte(n).<br />

P4. Vârfurile pozitive din Cte(n) dau estimările iniţiale pentru punctele GCI.<br />

P5. Se ajustează estimările iniţiale ale GCI pe baza perioadelor detectate cu algoritmul de la<br />

punctul 1; se ţine cont şi de faptul că perioada minimă este 25 de eşantioane.<br />

a)<br />

GCI GCI GCI GCI<br />

b)<br />

Figura 4.41. Ilustrarea algoritmului de detecţie a perioadelor şi punctelor glotale GCI.<br />

a) secvenţa erorii de predicţie eLp(n); b)secvenţa semnalului corelat Cte(n)


109<br />

Cap. 4. Analiza semnalului vocal<br />

4.6. Contribuţii ale autorului în determinarea perioadelor de semnal<br />

Aşa cum am văzut în secţiunea 4.5, una din cele mai uzuale metode de determinare a<br />

punctelor de impuls glotal (corespunzătoare perioadelor de semnal) se bazează pe calculul erorii<br />

de predicţie LPC, deci are la bază un mod de calcul indirect [Chi94]. De asemeni, au fost<br />

dezvoltate metode folosind funcţia de autocorelaţie, calculul cepstrumului şi filtrarea inversă<br />

(SIFT) pentru a estima perioada de semnal [Nay07], sau metode statistice, precum [Sak03].<br />

Aceste metode determină valori medii ale perioadei - necesare în procesul analizei - dar nu<br />

determină în mod exact cadrul corespunzător pentru fiecare perioadă.<br />

În scopul extragerii proprietăţilor glotale corespunzătoare unei perioade de semnal, este<br />

necesară o abordare sincronă cu frecvenţa. Algoritmul propus de autor realizează acest lucru, şi<br />

se aplică nu unui semnal generic oarecare, ci în mod specific unui semnal vocal sonor,<br />

cvasiperiodic.<br />

4.6.1. Algoritmul de determinare a perioadelor şi maximelor de perioadă<br />

Algoritmul propus de autor se bazează pe un mod de calcul exclusiv în domeniul timp,<br />

ceea ce îl face deosebit de rapid şi eficient. Alte avantaje care derivă din această abordare sunt:<br />

detectarea exactă a capetelor intervalului de perioadă, determinarea precisă a fiecărei perioade<br />

dintr-un segment sonor cvasiperiodic cu frecvenţa variabilă, determinarea rapidă a maximelor de<br />

perioadă.<br />

Algoritmul este prezentat în figura 4.42 :<br />

Determinare Pivot<br />

Estimare Perioadă<br />

Detecţie Puncte de Maxim Detecţie Puncte Hiatus<br />

Marcare Perioadă<br />

Figura 4.42. Algoritmul de determinare a perioadelor de semnal<br />

Aşa cum se observă din figura 4.42, algoritmul are 4 paşi succesivi: determinarea<br />

punctului de plecare (punctul pivot), determinarea unei estimări a perioadei, detecţia punctelor<br />

de maxim şi de hiatus pentru fiecare perioadă, şi apoi marcarea intervalelor de perioadă.<br />

Punctul pivot este necesar a fi determinat pentru a şti poziţia primului maxim de<br />

perioadă, în funcţie de care se vor calcula toate celelalte puncte de maxim. Pentru determinarea


110<br />

Cap. 4. Analiza semnalului vocal<br />

acestuia, după o filtrare mediană a semnalului, se calculează cu algoritmul ZeroMinMax<br />

(prezentat în paragraful 4.4.1) punctele de zero, minim şi maxim din semnalul sonor. Apoi se ia<br />

eşantionul din semnal care are amplitudinea cea mai mare dintre punctele de maxim, pe o<br />

distanţă D de la începutul segmentului considerat. Acesta este punctul pivot.<br />

Apoi se încearcă estimarea perioadei actuale a semnalului în jurul punctului pivot. Pentru<br />

aceasta se determină punctele din vecinătatea stânga şi dreapta a punctului pivot care au<br />

amplitudinea comparabilă cu acesta. Prin medierea distanţelor între aceste două puncte şi punctul<br />

pivot central se obţine estimarea iniţială a perioadei.<br />

În pasul al treilea se determină toate maximele de perioadă, pornind de la punctul pivot<br />

către stânga, respectiv către dreapta. Un maxim de perioadă se determină astfel: ştiindu-se că<br />

distanţa faţă de punctul anterior este egală cu perioada estimată, se găseşte punctul de maxim<br />

local care se află la distanţa minimă faţă de această poziţie.<br />

Dacă la o anumită iteraţie nu se găseşte un punct de maxim care să se găsească în poziţia<br />

preconizată, fie din cauza depăşirii perioadei admise, fie din cauza amplitudinii mici de semnal,<br />

următorul punct de maxim local se marchează ca hiatus de perioadă – în primul caz, respectiv ca<br />

hiatus de amplitudine – în cel de-al doilea.<br />

În final, în pasul patru, după determinarea tuturor punctelor de maxim de perioadă, se<br />

calculează punctele de capăt ale intervalelor de perioadă. Punctul de start al fiecărui interval se ia<br />

ca fiind primul punct de zero care precede maximul de perioadă corespunzător. Astfel fiecare<br />

interval de perioadă începe la punctul său de zero iniţial şi durează până la punctul iniţial al<br />

intervalului următor.<br />

Algoritmul Determina_Perioade :<br />

P1. Pe segmentul considerat se determină punctul pivot.<br />

P2. Se determină perioada iniţială prin găsirea punctelor de amplitudine<br />

comparabilă cu pivotul în stânga şi dreapta sa.<br />

P3. Se determină maximele de perioadă :<br />

a) între poziţia de start a segmentului şi poziţia pivotului;<br />

b) între poziţia pivotului şi poziţia de sfârşit a segmentului.<br />

Dacă în acest pas se gaseşte un punct de hiatus, atunci se apelează<br />

recursiv algoritmul între poziţia de hiatus şi poziţia finală.<br />

P4. Se marchează intervalele de perioadă prin găsirea punctelor de zero<br />

ce preced maximele de perioadă.<br />

Din descrierea algoritmului global în pseudocod reiese modul cum se apelează<br />

procedurile corespunzătoare celor 4 etape :<br />

DeterminaPerioade(poz_start, poz_stop, perioada)<br />

// Calculeaza maximele de perioadă pentru un segment sonor<br />

// La inceput perioada =0<br />

{<br />

// P1. Determinarea punctului pivot:<br />

pivot=DeterminaPivot(poz_start, poz_stop, poz_pivot);


P2. Estimarea perioadei:<br />

if(perioada==0.)<br />

EstimarePerioada(poz_pivot,poz_start,poz_stop,perioada);<br />

// P3a. Determinarea maximelor de perioadă<br />

// între poziţia de start a segmentului şi poziţia pivotului<br />

perioada1=perioada;<br />

complet=DeterminaMaximePerioade(poz_pivot,poz_start,perioada1,poz_hiat);<br />

if(!complet)<br />

{<br />

if(DurationIndex(poz_hiat,poz_start) > 45 /* ms */)<br />

perioada1=0; // se recalculează şi perioada<br />

DeterminaPerioade(poz_start,poz_hiat,perioada1);<br />

}<br />

// P3b. Determinarea maximelor de perioadă<br />

// între poziţia pivotului şi poziţia de sfârşit a segmentului<br />

perioada2=perioada;<br />

complet=DeterminaMaximePerioade(poz_pivot,poz_stop,perioada2,poz_hiat);<br />

if(!complet)<br />

{<br />

if(DurationIndex(poz_stop,poz_hiat) > 45)<br />

perioada2=0; // se recalculează şi perioada<br />

DeterminaPerioade(poz_hiat,poz_stop,perioada2);<br />

}<br />

// P4. Marcarea intervalelor de perioadă:<br />

MarcarePerioade(poz_start, poz_stop);<br />

}<br />

4.6.1.1. Determinarea pivotului<br />

111<br />

Cap. 4. Analiza semnalului vocal<br />

Punctul pivot reprezintă punctul de referinţă în funcţie de care se vor calcula toate<br />

celelalte puncte de maxim de perioadă. Pentru determinarea acestuia, după o filtrare mediană a<br />

semnalului, se calculează cu algoritmul ZeroMinMax punctele de zero, minim şi maxim din<br />

semnalul sonor. Apoi se ia eşantionul din semnal care are amplitudinea cea mai mare dintre<br />

punctele de maxim, pe o distanţă D de la începutul segmentului considerat. Acesta este punctul<br />

de start: punctul pivot.<br />

Mk(i)<br />

D<br />

PIV<br />

Figura 4.43. Determinarea punctului pivot


Punctul pivot se determină conform relaţiei :<br />

PIV max( M k ( i)),<br />

k 0,..<br />

N ; i D<br />

(4.66)<br />

unde N reprezintă numărul de maxime locale Mk din segmentul considerat.<br />

Algoritmul Determină_Pivot :<br />

(1) Se iniţializează valoarea pivotului: PIV=0 ;<br />

112<br />

Cap. 4. Analiza semnalului vocal<br />

(2) Pentru fiecare punct Mk(i) de tip maxim local (MAX) se execută paşii (3) şi (4)<br />

(3) Se determină condiţia C_PIV = (Mk(i) > PIV ) AND (Mk(i) != HIAT_PERIOD)<br />

AND (Mk(i) != HIAT_AMPLITUDE)<br />

(4) Dacă C_PIV este adevărată, atunci PIV = Mk (i).<br />

(5) Dacă PIV>0 se returnează True, altfel False.<br />

Prin modul de determinare a punctului pivot se observă că acesta este întotdeauna un<br />

punct de maxim de perioadă. Astfel el poate fi considerat ca fiind punctul de referinţă pentru<br />

determinarea celorlalte maxime de perioadă din segmentul de semnal analizat.<br />

4.6.1.2. Estimarea perioadei<br />

În pasul al doilea se face estimarea perioadei actuale a semnalului în jurul punctului<br />

pivot. Pentru a face estimarea se determină punctele din vecinătatea stânga şi dreapta a punctului<br />

pivot care au amplitudinea comparabilă cu acesta. Dacă cele două estimări sunt aproximativ<br />

egale, estimarea iniţială a perioadei se obţine prin medierea distanţelor între aceste două puncte<br />

şi punctul pivot central. Dacă cele două estimări sunt diferite, atunci se ia perioada cea mai<br />

apropiată de valoarea medie a perioadelor vocalice determinate până în acel moment. Acest mod<br />

de calcul creşte robusteţea algoritmului ducând la minimizarea erorilor de estimare pentru<br />

perioada de semnal.<br />

MS(i) PIV MD(j)<br />

D1 D2<br />

Figura 4.44. Estimarea perioadei actuale a semnalului


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.


4.6.1.3. Detectarea maximelor de perioadă<br />

114<br />

Cap. 4. Analiza semnalului vocal<br />

În această etapă se determină toate maximele de perioadă, pornind de la punctul pivot<br />

către stânga, respectiv către dreapta. Pornind de la un maxim care a fost determinat, următorul<br />

maxim de perioadă se găseşte astfel: mai întâi se face o estimare a poziţiei acestui punct ştiinduse<br />

că distanţa faţă de punctul anterior este egală cu perioada curentă estimată, apoi se determină<br />

punctul de maxim local care se află la distanţa minimă faţă de poziţia estimată. Perioada curentă<br />

se actualizează în conformitate cu poziţia ultimului punct găsit.<br />

Dacă la o anumită iteraţie nu se găseşte un punct de maxim care să se găsească cu o<br />

marjă de eroare în poziţia preconizată, fie din cauza depăşirii perioadei admise, fie din cauza<br />

amplitudinii mici de semnal, următorul punct de maxim local se marchează ca hiatus de perioadă<br />

– în primul caz, respectiv ca hiatus de amplitudine – în cel de-al doilea.<br />

k=NS<br />

Mk-1(j)<br />

Mk(i)<br />

Dk<br />

Pk-1<br />

Figura 4.45. Detectarea maximelor de perioadă pornind de la punctul pivot<br />

în stânga, respectiv în dreapta<br />

Condiţia pentru determinarea unui maxim de perioadă Mk(i) este următoarea:<br />

D<br />

k d<br />

( M k 1<br />

( j),<br />

M k ( i))<br />

<br />

(4.68)<br />

| Dk<br />

P<br />

k 1<br />

| / Pk<br />

1<br />

<br />

unde:<br />

- Dk este distanţa dintre punctul de maxim precedent Mk-1(j) şi punctul maxim curent Mk(i);<br />

k = 1.. NS în stânga pivotului, k = 1.. ND în dreapta pivotului;<br />

- Pk-1 este perioada estimată la pasul anterior, unde P0 a fost determinată conform<br />

algoritmului din paragraful 4.6.1.2 ;<br />

- Δ este pragul pentru eroarea relativă între perioada estimată la pasul anterior şi distanţa<br />

efectivă dintre ultimele două puncte de maxim.<br />

După determinarea unui maxim de perioadă Mk(i) se realizează actualizarea perioadei<br />

estimate Pk:<br />

Pk k<br />

k<br />

PIV<br />

k=0<br />

( P 1 N(<br />

k)<br />

D<br />

) /( N(<br />

k)<br />

1<br />

)<br />

(4.69)<br />

În relaţia (4.69), N(k) este un factor de ponderare care poate fi ales egal cu numărul de<br />

perioade parcurse până la pasul anterior, adică N(k) = k - 1, sau poate fi ales egal cu o constantă.<br />

În algoritmul prezentat mai jos s-a ales varianta constantei ( N=4) care introduce o modificare<br />

mult mai rapidă a perioadei estimate curente, ce ţine seama de modificările reale ale frecvenţei<br />

semnalului datorită folosirii intonaţiei în rostire.<br />

k=ND


115<br />

Cap. 4. Analiza semnalului vocal<br />

Algoritmul pentru determinarea maximelor de perioadă este descris în cele ce urmează:<br />

Algoritmul Determina_Maxime_Perioade:<br />

(1) Se iniţializează intervalele de căutare pentru un maxim de perioadă : Dmin =<br />

Per0(1-Δ); DMax = Per0(1+Δ), unde Per0 este perioada estimată iniţial cu algoritmul<br />

EstimarePerioadă ;<br />

(2) Se iniţializează amplitudinea maximului curent cu 0: MaxCrt = 0, respectiv a<br />

maximului anterior cu valoarea (ca amplitudine) a pivotului : MaxAnter = PIV ;<br />

(3) Pentru fiecare punct Mk(i) de tip maxim local (MAX) situat între poziţia pivotului şi<br />

capătul din stânga, respectiv dreapta al segmentului, se execută paşii (4) – (13)<br />

(4) Se calculează distanţa Dk dintre punctul maxim curent Mk(i) şi punctul maxim<br />

anterior Mk-1(j) (primul maxim este pivotul): Dk = d( Mk(i), Mk-1(j) ) ;<br />

(5) Dacă Dk < Dmin, se merge la pasul (3) cu următoarea iteraţie ;<br />

(6) Dacă Dk < Dmax : dacă Mk(i) > MaxCrt, atunci MaxCrt = Mk(i) şi se merge la pasul<br />

(3) cu următoarea iteraţie<br />

(7) Dacă Dk > Dmax, verificăm dacă am găsit următorul maxim de perioadă ; se<br />

execută paşii (8) – (13) ;<br />

(8) Dacă MaxCrt == 0, înseamnă că n-am găsit nici un maxim în intervalul preconizat<br />

de o perioadă ; în acest caz maximul următor se marchează ca fiind un punct de hiatus de<br />

perioadă : Mk(i) = HIAT_PERIOD ; se iese din program cu valoarea False, indicându-se<br />

faptul că algoritmul s-a oprit la un punct de hiatus.<br />

(9) Dacă MaxCrt Prag_Linişte, atunci am găsit următorul maxim de perioadă; se<br />

marchează maximul curent ca un maxim de perioadă : Mk(i) = MAX_PERIOD şi se execută<br />

paşii (11) - (13).<br />

(11) Se actualizează perioada curentă : Per 4Per<br />

D<br />

) / 5.<br />

k<br />

( k 1 k<br />

(12) Se refac iniţializările pentru găsirea următorului maxim de perioadă : MaxCrt =0 ;<br />

Dmin = Perk(1-Δ) ; DMax = Perk(1+Δ).<br />

(13) Se merge la pasul (3) cu următoarea iteraţie.<br />

(14) În finalul iteraţiilor, am ajuns la capătul segmentului cu toate punctele de maxim de<br />

perioadă determinate ; se returnează valoarea True.<br />

Un exemplu de determinare automată a maximelor de perioadă, în care s-a identificat de<br />

asemeni şi un punct de hiatus, este ilustrat în figura 4.46.<br />

Figura 4.46. Detectarea automată a maximelor de perioadă


116<br />

Cap. 4. Analiza semnalului vocal<br />

În figura 4.46, toate punctele 1 – 22 fac parte din aceeaşi regiune vocalică. Algoritmul a<br />

identificat punctul 9 ca fiind punctul pivot, apoi a determinat maximele de perioadă mai întâi spre<br />

stânga (punctele 8 – 1) şi apoi spre dreapta (punctele 10 – 13). După punctul 13 nu s-a mai putut<br />

identifica un maxim situat la distanţa estimată de perioadă, deci punctul s-a marcat ca un hiatus,<br />

şi algoritmul se reia începând cu acest punct până la capătul segmentului. Din nou s-a determinat<br />

punctul pivot (19), s -a estimat o nouă perioadă, şi s-au determinat toate celelalte maxime de<br />

perioadă.<br />

4.6.1.4. Marcarea intervalelor de perioadă<br />

După determinarea tuturor punctelor de maxim de perioadă, se calculează punctele de<br />

capăt ale intervalelor de perioadă. Punctul de start al fiecărui interval se ia ca fiind primul punct<br />

de zero care precede maximul de perioadă corespunzător. Astfel fiecare interval de perioadă<br />

începe la punctul său de zero iniţial şi durează până la punctul iniţial al intervalului următor.<br />

Mk(i) Mk+1(j)<br />

Zk(m) Zk+1(n)<br />

PERk<br />

Figura 4.47. Determinarea intervalelor de perioadă<br />

Intervalul de perioadă PERk corespunzător punctului de maxim Mk(i) se calculează<br />

conform relaţiei :<br />

PERk d(<br />

Z k ( m),<br />

Z k 1<br />

( n))<br />

(4.70)<br />

unde:<br />

- Zk(m) este primul punct de zero anterior lui Mk(i)<br />

- Zk+1(n) este primul punct de zero anterior lui Mk+1(j)<br />

Calculată în număr de eşantioane, PERk = n-m , iar pe axa timpului :<br />

PERk(t) = (n-m)/Fes , unde Fes este frecvenţa de eşantionare.<br />

Algoritmul care realizează marcarea intervalelor de perioadă este următorul :<br />

Algoritmul Marcare_Perioade:<br />

(0) Se iniţializează începutul primului interval de perioadă: k = 0 şi Start0 = Start_Segment;<br />

(1) Pentru fiecare punct P(i) din interiorul segmentului considerat, se execută paşii (2) – (6)<br />

(2) Dacă P(i) este un punct de tip ZERO, se reţine poziţia lui : Zk(m)=P(i).<br />

(3) Dacă P(i) este un punct de tip maxim de perioadă (MAX_PERIOD), se execută paşii (4)<br />

– (6) ; dacă nu, se merge la pasul (6).<br />

(4) Pentru k >= 1, se reţine poziţia de început a perioadei curente : Startk = m, unde m este<br />

indicele ultimului punct de zero detectat la pasul (2).


117<br />

Cap. 4. Analiza semnalului vocal<br />

(5) Pentru k >= 1, se marchează începutul şi sfârşitul intervalului de perioadă anterior:<br />

PERk-1.start = Startk-1 ; PERk-1.end = Startk ; k = k+1.<br />

(6) Se merge la pasul (1) cu iteraţia următoare.<br />

(7) La sfârşit, se marchează şi ultimul interval de perioadă : PERk-1.start = Startk-1 ;<br />

PERk-1.end = End_Segment.<br />

4.6.1.5. Rezultate obţinute cu algoritmul propriu de determinare a intervalelor de<br />

perioadă<br />

Algoritmul funcţionează cu rezultate bune atât în cazul vocii masculine, cât şi în cazul<br />

celei feminine. În cazul vocilor cu timbru normal, rezultatele sunt exacte. Dacă timbrul vocii este<br />

foarte bogat în armonici, din cauză că semnalul baleiază foarte rapid peste linia de zero, uneori<br />

pot exista variaţii de 1-5% în determinarea punctelor de capăt pentru unele perioade, dar aceste<br />

variaţii sunt compensate la perioadele vecine.<br />

Algoritmul propus aici este mult mai precis decât metodele care implică analiza<br />

semnalului în domeniul frecvenţă, dat fiind faptul că aici (în metoda propusă) se analizează<br />

direct eşantioanele de semnal, fără a fi necesară ferestruirea – ce conduce întotdeauna la<br />

aproximaţii.<br />

În figura 4.48 se arată rezultatul final al determinării intervalelor de perioadă pentru o<br />

vocală rostită de un vorbitor masculin:<br />

Figura 4.48. Rezultatul final al determinării intervalelor de perioadă<br />

Tabelul 4.6 indică lungimea intervalelor de perioadă pentru segmentul vocal de mai sus.<br />

Tabelul 4.6. Lungimea intervalelor de perioadă pentru segmentul vocal exemplificat<br />

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 Pmed<br />

Nw 271 240 261 287 323 350 354 353 355 366 323 507 387 337<br />

Tw<br />

(ms)<br />

6.12 5.42 5.89 6.48 7.30 7.91 8.00 7.98 8.02 8.27 7.30 11.4 8.75 7.60<br />

În tabelul 4.6, NW indică lungimea celor 13 intervale de perioadă în număr de eşantioane, iar<br />

Tw în milisecunde. Pe ultima coloană s-a calculat perioada medie.


118<br />

Cap. 4. Analiza semnalului vocal<br />

4.6.1.6. Concluzii cu privire la algoritmul propriu de determinare a intervalelor de<br />

perioadă<br />

În acest capitol s-a prezentat un algoritm propriu de determinare a intervalelor de<br />

perioadă pentru un semnal vocal. Algoritmul este deosebit de exact, lucrând exclusiv în<br />

domeniul timp al analizei. Spre deosebire de alte metode de calcul în domeniul frecvenţă, el nu<br />

necesită ferestruire şi nici calcule complexe, fiind foarte rapid.<br />

Metoda comportă patru paşi succesivi :<br />

a. Determinarea punctului de plecare (punctul pivot);<br />

b. Determinarea unei estimări a perioadei de semnal;<br />

c. Detecţia punctelor de maxim şi de hiatus pentru fiecare perioadă;<br />

d. Marcarea intervalelor de perioadă prin detectarea punctelor de capăt.<br />

Fiecare etapă a necesitat elaborarea a câte unui algoritm distinct, care a fost prezentat<br />

împreună cu rezultatele obţinute.<br />

Au fost proiectaţi astfel 4 algoritmi :<br />

- un algoritm în domeniul timp pentru determinarea punctului pivot, primul maxim de perioadă<br />

în funcţie de care se calculează toate celelalte puncte de maxim ;<br />

- un algoritm în domeniul timp pentru determinarea unei estimări a perioadei de semnal în jurul<br />

punctului pivot ;<br />

- un algoritm în domeniul timp pentru determinarea maximelor de perioadă, pornind de la<br />

punctul pivot către stânga, respectiv către dreapta, în segmentul considerat ; algoritmul este de<br />

asemenea capabil să detecteze punctele de hiatus care apar în segmentul vocal, şi le clasifică<br />

în hiatus de perioadă, respectiv hiatus de amplitudine ;<br />

- un algoritm în domeniul timp pentru determinarea punctelor de capăt ale intervalelor de<br />

perioadă, puncte ce sunt strâns legate de maximele de perioadă.


4.7. Segmentarea fonematică<br />

119<br />

Cap. 4. Analiza semnalului vocal<br />

În ultimii ani, sinteza vorbirii realizată prin concatenare a devenit din ce în ce mai<br />

populară pentru înalta calitate a vocii sintetice pe care o oferă. Prin selectarea şi concatenarea<br />

unităţilor de vorbire stocate într-o bază de date, astfel de sintetizatoare pot selecta o secvenţă de<br />

unităţi ce corespunde foarte precis contextului de la intrare. Prin acest proces, modificarea<br />

semnalului este minimă, păstrându-se astfel caracterul natural al discursului original.<br />

Cu toate acestea, calitatea semnalului de vorbire obţinut la ieşire este extrem de<br />

dependentă de corpusul din baza de date şi de prelucrările operate pe acest corpus. Rezultă de<br />

aici importanţa etichetării şi adnotării corecte a corpusului existent, proces în care transcrierea<br />

fonetică şi segmentarea fonematică sunt sarcini de primă importanţă.<br />

Segmentarea fonematică reprezintă procesul de asociere a unor simboluri fonematice<br />

prezente în textul de la intrare cu semnalul vorbit. În urma segmentării, din semnalul vorbit se<br />

vor extrage unităţile acustice, care vor fi înregistrate apoi în baza de date.<br />

Dacă transcrierea fonetică a textului nu implică dificultăţi deosebite, cea mai grea sarcină<br />

în procesul de prelucrare a corpusului şi de creare a bazei de date vocale este cea de segmentare.<br />

Acest lucru se datorează faptului că metodele de segmentare automată nu sunt suficient de fiabile<br />

la ora actuală, şi astfel verificarea manuală a segmentării rămâne obligatorie, proces extrem de<br />

costisitor atât în termeni de timp cât şi în costuri de dezvoltare.<br />

Această nevoie de intervenţie manuală este considerată ca un factor de limitare pentru<br />

construirea de noi corpusuri utilizate în sinteză. Având în vedere creşterea cererii înspre<br />

diversificarea vocilor de sinteză, se impune îmbunătăţirea preciziei şi gradului de automatizare a<br />

segmentării şi adnotării corpusurilor utilizate în aplicaţii de tip text-to-speech.<br />

Pe plan internaţional au fost dezvoltate mai multe metode în vederea segmentării<br />

automate sau semiautomate a semnalului vocal: metode iterative bazate pe antrenare, metode<br />

bazate pe reguli de asociere, metode bazate pe calcule statistice, etc. Prezentăm în continuare pe<br />

scurt trei dintre acestea, pe care le considerăm generice pentru rezolvarea acestui tip de<br />

problemă.<br />

Cele trei metode sunt: segmentarea cu modele Markov ascunse (Hidden Markov Models -<br />

HMM), rafinarea frontierelor de regiuni, segmentarea bazată pe probabilităţi generalizate<br />

(Generalized Likelihood Ratio - GLR).<br />

4.7.1. Segmentarea fonematică folosind modele Markov ascunse<br />

Această abordare este considerată o abordare standard pentru segmentarea semnalului<br />

vocal. Algoritmul constă din doi paşi. Primul pas este o fază de antrenare care are ca scop<br />

estimarea modelelor acustice. În al doilea pas se utilizează aceste modele, generându-se<br />

clasificări ale segmentelor vocale prin intermediul algoritmului Viterbi, făcându-se o aliniere<br />

între modelele asociate secvenţei cunoscute de foneme şi semnalul vorbit.<br />

Faza de antrenare e importantă pentru că acurateţea segmentării prin modele Markov<br />

HMM depinde de calitatea estimării modelelor. Există câteva metode pentru determinarea<br />

acestor modele.


120<br />

Cap. 4. Analiza semnalului vocal<br />

O primă metodă (HMM standard) utilizează antrenarea iterativă [You02] pe întreg<br />

corpus-ul. Frontierele de regiuni rezultate dintr-o parcurgere manuală a corpus-ului sunt utilizate<br />

pentru iniţializarea şi re-estimarea modelelor prin algoritmul Baum-Welch. După câteva iteraţii<br />

ale procesului de antrenare, diferenţele dintre frontierele obţinute manual şi cele obţinute prin<br />

metoda HMM se reduc semnificativ.<br />

O altă metodă (HMMSeg) este cea ilustrată în figura 4.49. Ea utilizează o bază de date de<br />

mici dimensiuni segmentată şi etichetată manual pentru estimarea modelelor [Mat03]. În faza<br />

următoare întreg corpus-ul va fi segmentat folosind aceste modele. Dacă baza de date iniţială<br />

folosită la antrenare conţine câteva variante ale fiecărei foneme, atunci procesul de iniţializare a<br />

modelelor este bun şi metoda va genera rezultate bune la segmentare [Jar06].<br />

Estimare<br />

Baum-Welch<br />

Figura 4.49. Segmentarea HMM bazată pe un corpus segmentat manual [Jar08]<br />

4.7.2. Segmentarea bazată pe rafinarea frontierelor<br />

Ideea principală a acestei metode este de a antrena un set de modele de segmentare<br />

folosind o bază de date de mici dimensiuni segmentată şi etichetată manual. Apoi, aceste modele<br />

vor servi la rafinarea frontierelor segmentării iniţiale pe corpusul dorit [Wan04]. Mai exact,<br />

această metodă este realizată în doi paşi, aşa cum se arată în figura 4.50.<br />

Segmentare<br />

iniţială<br />

Rafinarea<br />

frontierelor din<br />

segmentare<br />

Segmentare<br />

finală<br />

Iniţializare<br />

Modele<br />

Potrivire<br />

Viterbi<br />

Segmentare<br />

Corpus de<br />

antrenare<br />

segmentat manual<br />

Modele GMM<br />

Figura 4.50. Paşii algoritmului de segmentare bazat pe rafinarea frontierelor [Jar08]<br />

Pentru fiecare frontieră din corpusul de antrenare, se creează un supervector prin<br />

concatenarea vectorilor acustici a (2N+1) cadre din jurul frontierei stabilită manual. Fiecare<br />

frontieră B depinde de fonema din stânga X şi de fonema din dreapta Y, grupul (X,B,Y)


Pasul<br />

Frontiera Mărimea<br />

cadrului<br />

121<br />

Cap. 4. Analiza semnalului vocal<br />

alcătuind o aşa-numită pseudo-trifonă [Wan04]. Mai întâi pseudo-trifonele sunt grupate în clase<br />

folosind un arbore de regresie şi clasificare ( Classification and Regression Tree - CART)<br />

[Ode95], apoi se estimează un model Gaussian GMM (Gaussian Mixture Model) pentru fiecare<br />

clasă.<br />

Figura 4.51. Modul de construcţie a unui supervector [Jar08]<br />

Al doilea pas urmăreşte rafinarea frontierelor de segment pentru o segmentare iniţială<br />

dată. Având la intrare un corpus vorbit şi segmentarea lui iniţială, se caută în vecinătatea fiecărei<br />

frontiere de segment punctul care maximizează o funcţie de potrivire pentru supervectorul<br />

corespunzător acelui punct. Funcţia de potrivire se calculează astfel: pentru fiecare punct din<br />

vecinătatea frontierei considerate, se construieşte un supervector centrat pe cadrul curent, la fel<br />

ca în faza de antrenare; cum acest supervector reprezintă o pseudo-trifonă, se utilizează arborele<br />

de regresie CART [Ode95] pentru a determina clasa ce corespunde cu acea pseudo-trifonă.<br />

Funcţia de potrivire se calculează între clasa psedo-trifonei şi supervectorul curent folosind<br />

mixturi gaussiene GMM.<br />

Algoritmul foloseşte constrângerea lingvistică prin faptul că necesită cunoaşterea iniţială<br />

a secvenţei de foneme asociate corpusului pentru a crea modelele de segmentare.<br />

Figura 4.52. Pseudo-trifonele din propoziţia în limba franceză “On comptait deux projets<br />

d’entreprise distincts” [Jar08]


4.7.3. Segmentarea bazată pe probabilităţi generalizate<br />

4.7.3.1. Algoritmul de bază<br />

122<br />

Cap. 4. Analiza semnalului vocal<br />

Scopul metodei utilizată de Brandt [Bra83] este de a detecta discontinuităţile din<br />

semnalul vocal. Semnalul vocal este constituit dintr-o suma de segmente omogene. Fiecare<br />

segment w este o secvenţă finită w=(yn) de eşantioane care respectă următorul model<br />

autoregresiv:<br />

(4.71)<br />

În ecuaţia (4.71 ), p este ordinul modelului, acelaşi pentru toate segmentele, en este un<br />

zgomot alb Gaussian de medie nulă cu varianţa σ 2 .<br />

Un astfel de segment w este caracterizat de un vector Θ = (a1, … , ap, σ). Fie w0 un<br />

segment având N eşantioane, Θ0 fiind vectorul corespondent. Se urmăreşte să se decidă dacă w0<br />

trebuie împărţit în două subsegmente w1 şi w2 sau nu. Segmentul iniţial se va împărţi în două<br />

dacă există un salt între vectorii Θ1 şi Θ2 corespunzători celor două subsegmente. Pentru a lua<br />

această decizie, se utilizează raţia de probabilitate generalizată ( Generalized Likelihood Ratio<br />

GLR) [Bra83] (presupunând că y1, … , yn sunt gaussiene):<br />

(4.72)<br />

unde:<br />

- r este numărul de eşantioane corespunzător subsegmentului w1,<br />

- şi sunt estimările deviaţiilor standard ale zgomotului pentru modelele caracterizate<br />

de vectorii Θ1 şi Θ2.<br />

Metoda decide dacă apare un salt între vectorii Θ1 şi Θ2 corespunzători subsegmentelor<br />

w1 şi w2 prin compararea valorii maxime a lui DN(r) cu o valoare de prag [And88].<br />

4.7.3.2. Algoritmul ce foloseşte o segmentare iniţială după secvenţa de foneme<br />

Metoda de bază, care are ca scop detectarea discontinuităţilor din semnalul vocal, se<br />

poate adapta pentru cazul în care secvenţa de foneme asociată semnalului este cunoscută. În<br />

acest caz, se obţine mai întâi o segmentare iniţială folosind metoda bazată pe modele Markov<br />

HMM. Pentru fiecare frontieră de segment, se ia un interval pe care se aplică metoda GLR, care<br />

va produce o segmentare mai precisă a regiunilor separate de acea frontieră.<br />

Astfel, presupunem că (U0, U1, … , UL) sunt frontierele segmentării iniţiale. În continuare<br />

U i 1 U<br />

i<br />

se caută o discontinuitate a semnalului între punctele Vi<br />

<br />

2<br />

U i U<br />

i1<br />

şi V i1<br />

, cu i în<br />

2<br />

intervalul (1, … , L − 1), prin determinarea punctului care maximizează raţia GLR.<br />

În acest mod se produce o redistribuţie mult mai precisă a frontierelor de segment.


123<br />

Cap. 4. Analiza semnalului vocal<br />

4.7.4. Rezultate obţinute prin cele trei metode de segmentare fonematică<br />

Pentru evaluarea celor trei metode de segmentare, s-a calculat eroarea de segmentare a<br />

metodei automate faţă de metoda manuală, cu o toleranţă de 20 ms. Eroarea s-a calculat pe 2<br />

corpusuri diferite segmentate manual, pentru limba franceză şi engleză. S-au luat în considerare<br />

mai întâi 100 de propoziţii, apoi 300 şi în final 700.<br />

Rezultatele testului sunt prezentate în tabelul 4.7.<br />

Tabelul 4.7. Acurateţea segmentării pentru cele trei metode de segmentare [Jar08]<br />

AlgSize HMMSeg (%) RefinedHMMSeg (%) BrandtSeg (%)<br />

FRcorpus 100 91.71 91.08 83.22<br />

ENcorpus 91.98 89.58 86.78<br />

FRcorpus 300 92.51 93.26 83.39<br />

ENcorpus 92.95 92.46 87.10<br />

FRcorpus 700 92.47 94.00 83.38<br />

ENcorpus 93.00 93.50 87.09


124<br />

Cap. 4. Analiza semnalului vocal<br />

4.8. Contribuţii ale autorului în problematica segmentării fonematice<br />

automate a semnalului vocal<br />

Aşa cum am văzut, segmentarea fonematică reprezintă procesul de asociere a<br />

simbolurilor fonematice prezente în textul de la intrare cu semnalul vorbit. Scopul acestei<br />

asocieri este de a realiza o decupare automată a semnalului în segmentele acustice<br />

corespunzătoare unităţilor lingvistice de la intrare care trebuie sintetizate (figura 4.53).<br />

EVIDENŢIEREA UNUI CADRU GENERAL ...<br />

Figura 4.53. Evidenţierea segmentelor corespunzătoare unităţilor lingvistice<br />

Aceste unităţi lingvistice pot fi litere (foneme), silabe, grupuri d e litere sau cuvinte<br />

întregi, în funcţie de metoda abordată. După separarea segmentelor din semnalul înregistrat,<br />

unităţile acustice sunt parametrizate, etichetate şi integrate în baza de date folosită în sinteză.<br />

Metoda de segmentare propusă de autor este o metodă bazată pe reguli de asociere, ce<br />

realizează o corespondenţă între grupuri de litere prezente la intrare şi regiunile distincte ale<br />

semnalului vocal. Algoritmul de segmentare urmăreşte textul de la intrare, şi încearcă să<br />

găsească cea mai bună potrivire pentru fiecare grup de litere prezentat cu una sau mai multe<br />

regiuni din semnalul vocal (vezi figura 4.54).<br />

În figura 4.54 se observă că textul de la intrare este mai întâi rescris într-o anumită<br />

transcripţie fonetică, folosind un tabel simplu de corespondenţe. Textul transcris se desparte apoi<br />

într-o secvenţă de grupuri fonetice Gi. Pe baza regulilor de asociere Ri se stabileşte o<br />

corespondenţă cu regiunile segmentate din semnalul vocal REGj.<br />

Aşadar metoda prezentată comportă trei paşi distincţi :<br />

1. Transcrierea fonetică a textului de la intrare ;<br />

2. Segmentarea semnalului vocal în regiuni ;<br />

3. Scrierea regulilor de asociere pentru fiecare grup fonetic.<br />

În capitolele anterioare a fost descrisă deja etapa B, de segmentare a semnalului vocal în<br />

regiuni. În cele ce urmează vor fi prezentate celelalte două etape: A, transcrierea fonetică şi C,<br />

scrierea regulilor de asociere.


TEXT<br />

Text<br />

Transcris<br />

Regiuni<br />

Dsitincte<br />

SEMNAL<br />

VOCAL<br />

GL1 GL2 GLn<br />

REG1<br />

Stream FONEME<br />

R1 R2 Rn<br />

REG2<br />

Stream REGIUNI<br />

Figura 4.54. Metoda de segmentare fonematică propusă de autor<br />

4.8.1. Transcrierea fonetică a textului de la intrare<br />

125<br />

Cap. 4. Analiza semnalului vocal<br />

Transcrierea fonetică a textului este necesară pentru a diferenţia rostirile diferite ale<br />

aceleiaşi foneme în funcţie de contextul în care ea apare (de exemplu pentru fonema /C/, avem<br />

rostirile « Ca-să », respectiv « Ce-ta-te »), dar şi pentru a îngloba caracterele speciale din text<br />

care implică separarea cuvintelor ( cum ar fi , , virgula, punctul, etc.). De<br />

asemenea a fost luată în considerare şi pauza de rostire care apare uneori între două foneme<br />

succesive (de exemplu în cazul grupului vocală+consoană : {VOC}{C}, unde {C} este o<br />

consoană plozivă precum /C/ , /G/ sau /P/).<br />

Transcrierea fonetică se face conform următorului tabel de corespondenţe:<br />

Tabelul 4.8. Tabel de corespondenţe pentru transcrierea fonetică<br />

REGm<br />

Caracter din text Transcriere fonetică<br />

început de fişier B<br />

Vocală {VOC} {VOC} în lowercase<br />

l, r, m, n l, r, m, n<br />

ce, ci, ge, gi TCe, TCi, TGe, TGi<br />

che, chi, ghe, ghi Tce, Tci, Tge, Tgi<br />

ş, ţ TS, Tþ<br />

orice altă consoană {CONS} T{CONS}<br />

cratima se omite<br />

spaţiu, tab, virgulă Z<br />

alte caractere speciale Z<br />

Se observă că în transcripţia fonetică se face distincţia dintre caractere mici (lowercase)<br />

şi majuscule ( uppercase). Vocalele, precum şi consoanele /l/, /r/, /m/, /n/ rămân neschimbate.<br />

…<br />


126<br />

Cap. 4. Analiza semnalului vocal<br />

Pentru celelalte consoane observăm inserarea unui caracter suplimentar ca şi prefix: /T/. Acesta<br />

semnifică o pauză care poate apărea înaintea rostirii acelei consoane. Caracterele speciale şi<br />

caracterele despărţitoare , , virgula, punctul, etc., se notează cu /Z /,<br />

semnificând o pauză mai mare în rostire.<br />

Ca un exemplu, secvenţa:<br />

<br />

se transcrie fonetic astfel:<br />

.<br />

4.8.2. Proiectarea regulilor de asociere pentru fiecare grup fonetic<br />

După etapele de transcriere fonetică a textului de la intrare şi segmentare a semnalului<br />

vocal în regiuni, urmează etapa de asociere între diferitele grupuri de caractere fonetice şi<br />

regiunile din semnal (figura 4.55).<br />

ik k<br />

Figura 4.55. Asocierea grupurilor fonetice cu regiunile<br />

În figura 4.55, fiecare grup Gi se asociază cu o serie de regiuni REGik, unde<br />

1 i<br />

1<br />

, k 1<br />

.. m , şi card({ ik<br />

, k 1 .. m})<br />

1<br />

, adică fiecare grup Gi se va asocia cu una sau mai<br />

multe regiuni succesive din semnalul vocal.<br />

Fie un grup fonetic notat cu Gi. Acesta va fi asociat cu o secvenţă de caractere fonetice<br />

astfel :<br />

i<br />

G1<br />

Gn<br />

Gi<br />

i<br />

i i<br />

F F F<br />

G ,...,<br />

(4.73)<br />

1 , 2<br />

unde Fp i este un caracter din transcrierea fonetică, cu p = 1, ..., ki.<br />

ki<br />

REGi1<br />

REGim<br />

REGik


În mod analog, grupul Gi+1 este asociat cu secvenţa:<br />

1 i<br />

1<br />

i1<br />

i1<br />

i<br />

F , F ,..., F<br />

G (4.74)<br />

1<br />

2<br />

k ( i1<br />

)<br />

127<br />

Cap. 4. Analiza semnalului vocal<br />

unde ind(F1 i+1 ) = ind(Fki i ) + 1, notându-se prin ind(Fp i ) indicele caracterului Fp i din<br />

transcrierea fonetică.<br />

Se urmăreşte asocierea grupurilor fonetice succesive cu două secvenţe de regiuni care să<br />

fie de asemenea succesive, astfel :<br />

Gi <br />

REG(<br />

i,<br />

1)<br />

... REG(<br />

i,<br />

Ni<br />

) }<br />

G REG i 1<br />

, 1)<br />

... REG(<br />

i 1<br />

, N ) } (4.75)<br />

i1<br />

( i1<br />

unde:<br />

- REG(i,p)) este regiunea cu numărul de ordine p din secvenţa asociată grupului Gi .<br />

Dacă notăm cu ind(REG(i,p)) indicele global al regiunii REG(i,p)) în secvenţa totală de<br />

regiuni,<br />

atunci avem îndeplinite condiţiile:<br />

ind(REG(i, p+1)) = ind(REG(i, p)) + 1<br />

ind(REG(i+1, 1)) = ind(REG(i, Ni)) + 1 (4.76)<br />

Prima relaţie din (4.76) semnifică faptul că regiunile cu care se asociază fiecare grup Gi<br />

sunt succesive, iar cea de-a doua relaţie semnifică faptul că secvenţele de regiuni cu care sunt<br />

asociate cele două grupuri Gi şi Gi+1 trebuie să fie şi ele succesive.<br />

În continuare mai rămâne să explicităm grupurile fonetice, respectiv caracterele care pot<br />

intra în componenţa fiecărui grup, precum şi regulile de asociere grupuri-regiuni, care trebuie să<br />

respecte condiţiile (4.73) – (4.76).<br />

Pentru asocierea grupurilor fonetice cu secvenţele de regiuni corespunzătoare, s-a folosit<br />

generatorul automat de analizoare pentru intrări de tip şiruri de caractere ( text stream parser)<br />

numit LEX [Fre05]. LEX-ul generează un analizor lexical (scanner) de text conform cu un set de<br />

reguli furnizate în notaţia Bachus-Naur Form (vezi Anexa 1).<br />

Fiecare regulă din setul de reguli conţine specificarea unui pattern de caractere, care<br />

trebuie potrivit cu şirul curent de la intrare, şi o acţiune care se execută. În cazul nostru acţiunea<br />

care se execută este verificarea unei condiţii pentru secvenţa de regiuni care poate corespunde cu<br />

pattern-ul fonetic.<br />

Scanner-ul generat are la intrare şirul de caractere rezultat din transcripţia fonetică, şi pe<br />

baza regulilor înmagazinate realizează următoarele acţiuni :<br />

1) preia secvenţa curentă de caractere din şirul de intrare ;<br />

2) identifică regula corespunzătoare prin pattern-matching;<br />

3) încearcă să găsească o secvenţă de regiuni din tabela de regiuni care să se potrivească<br />

cu condiţia specificată de regulă.


128<br />

Cap. 4. Analiza semnalului vocal<br />

Figura 4.56 prezintă un exemplu de asociere între secvenţa de foneme i<br />

i i<br />

G i F1<br />

, F2<br />

,..., Fk<br />

şi secvenţa de regiuni i<br />

i i<br />

SR N ) REG , REG ,..., REG , prin identificarea unei reguli de<br />

( 1 2<br />

corespondenţă [ Ri : Gi Cond_Regi ] :<br />

Input<br />

Scanner<br />

Output<br />

…<br />

…<br />

…<br />

i<br />

REG1<br />

i<br />

F1<br />

Figura 4.56. Scanner-ul generat şi asocierea de regiuni<br />

Algoritmul de căutare a unei asocieri între secvenţa curentă (grupul) de caractere şi o<br />

secvenţă de regiuni este următorul:<br />

Algoritmul Grupuri--Regiuni :<br />

i i<br />

F2 … Fk … …<br />

R1: G1 Cond_Reg1<br />

Ri: Gi Cond_Regi<br />

Rn: Gn Cond_Regn<br />

SR<br />

i<br />

REG2<br />

P1. Se preia secvenţa maximă de caractere i<br />

i i<br />

G F F ,..., F<br />

Gi<br />

…<br />

i<br />

N<br />

i<br />

REGN<br />

astfel încât să existe o<br />

1 , 2<br />

regulă [ Rj : Gj Cond_Regj ] pentru care există corespondenţa : Gi Gj.<br />

P2. Se caută un indice N pentru care secvenţa curentă de regiuni SR(N) = {REG1,<br />

REG2,...REGN } verifică condiţia Cond_Regj ; dacă există, se face asocierea Gi SR(N) şi<br />

se returnează True.<br />

P3. Dacă nu se găseşte SR(N) în tabela de regiuni, atunci regula Rj se abandonează şi<br />

se merge la pasul următor P4.<br />

P4. Se caută o nouă regulă subsecventă [ Rj+k : Gj+k Cond_Regj+k ] astfel încât să existe<br />

corespondenţa Gi Gj+k. Dacă există, se merge la pasul P2 ; dacă nu, se continuă cu<br />

pasul P5.<br />

P5. Se reduce secvenţa de caractere cu unu (k=k-1) ; dacă avem k>=1, se reia algoritmul<br />

de la pasul P1 pentru a căuta o asociere pentru noul pattern Gi.<br />

P6. Dacă avem k


129<br />

Cap. 4. Analiza semnalului vocal<br />

La început sunt definite macro-urile care specifică fonemele urmărite la intrare, apoi<br />

urmează regulile propriu-zise. Au fost definite următoarele macro-uri :<br />

CONS [bpsþGCSzx]<br />

VOC1 [aeiouãîâ]<br />

VOC ([aeiouãîâ]|[mnl])<br />

LIT [a-zþãîâ]<br />

Unei acţiuni corespunzătoare unei reguli i s-a asociat o serie de funcţii primitive, unde<br />

fiecare funcţie are rolul de a testa o condiţie pentru validarea acelei reguli, şi anume:<br />

rule.action.CheckRule(n) verifică dacă analizorul a trecut sau nu de regula curentă<br />

într-o fază anterioară de căutare a secvenţei fonetice; se<br />

aplică pentru o singură regiune<br />

rule.action.CheckFirstRule(n) verifică dacă analizorul a trecut sau nu de regula<br />

curentă într-o fază precedentă de căutare; se aplică pentru o<br />

sumă de regiuni<br />

rule.action.CheckRegion(type) verifică dacă regiunea curentă din tabela de regiuni<br />

este de tipul <br />

rule.action.CheckSumReg(type) verifică dacă o sumă (serie) de regiuni este de tipul<br />

specificat<br />

rule.action.SetLen(len1,len2) setează lungimea minimă, respectiv maximă pentru<br />

o regiune<br />

rule.action.SetGrupLen() setează lungimea minimă, respectiv maximă pentru o<br />

secvenţă de regiuni, în funcţie de fonemele găsite la intrare<br />

rule.action.TestReject() verifică dacă secvenţa de regiuni din tabela de regiuni<br />

respectă condiţiile impuse; dacă da, atunci se face o asociere<br />

între secvenţa de foneme de la intrare şi secvenţa de regiuni;<br />

dacă nu, regula curentă e abandonată şi se trece la următoarea<br />

regulă, pentru aceeaşi secvenţă fonetică de la intrare<br />

rule.action.TestUnput() verifică dacă secvenţa de regiuni din tabela de regiuni<br />

respectă condiţiile impuse, şi dacă da, atunci se face o<br />

asociere între secvenţa de foneme de la intrare şi secvenţa de<br />

regiuni; dacă nu, secvenţa fonetică curentă e abandonată (nu i<br />

s-a găsit nici o potrivire) şi se încearcă o nouă potrivire<br />

pentru secvenţa fonetică anterioară.


130<br />

Cap. 4. Analiza semnalului vocal<br />

Astfel, pentru fiecare grup fonetic care a fost potrivit cu o regulă prin pattern matching,<br />

se încearcă asocierea cu o regiune sau o serie de regiuni consecutive care respectă condiţiile<br />

specificate de acea regulă. Aceste condiţii se referă la lungimea minimă şi maximă pe care<br />

trebuie să o aibă regiunea sau secvenţa de regiuni, precum şi la tipul regiunilor.<br />

Fiecare vorbitor prezintă anumite tipare în care se incadrează rostirea lui. Astfel, fiecare<br />

fonemă, vocală sau consoană, va avea propriile caracteristici în ceea ce priveşte: (1) durata<br />

rostirii şi (2) forma semnalului, aflată în concordanţă cu un anumit tip de regiune detectată din<br />

semnalul vorbit.<br />

Toate aceste caracteristici trebuie evidenţiate în setul de reguli care va fi proiectat, astfel<br />

încât să se respecte anumite limite în ceea ce priveşte durata, respectiv anumite tipuri generice de<br />

regiuni în ceea ce priveşte forma de semnal.<br />

Uneori pentru o anumită fonemă sau un acelaşi grup de foneme trebuie scrise mai multe<br />

reguli (rareori mai mult de două sau trei), care să specifice toate instanţele (formele concrete)<br />

care se caută în semnal. La sfârşitul fiecărui grup de reguli trebuie invocată primitiva<br />

TestUnput() pentru a indica faptul că au fost efectuate toate încercările de potrivire pentru<br />

grupul fonetic curent. Dacă analizorul ajunge la această regulă şi nu o validează (nu găseşte nici<br />

o potrivire pentru grupul fonetic curent), atunci se revine la secvenţa fonetică anterioară pentru a<br />

încerca o nouă potrivire.<br />

Avantajul acestei abordări cu privire la asocierea foneme-regiuni, abordare bazată pe<br />

reguli de asociere, este următoarea: odată scris un set de reguli pentru un vorbitor, el va putea fi<br />

adaptat cu uşurinţă pentru un altul rescriind doar condiţiile de validare pentru grupurile<br />

fonematice; în general, vor trebui modificate duratele fonemelor, precum şi unele caracteristici<br />

pentru regiuni.<br />

Setul de reguli prezentat a fost proiectat iniţial pentru un vorbitor masculin şi apoi a fost<br />

extins şi pentru un vorbitor feminin.<br />

A. Pentru duratele fonemelor s-a folosit următoarea notaţie:<br />

L_ ,<br />

unde: specifică fonema sau categoria fonematică respectivă,<br />

de exemplu: VOC vocală, CONS consoană, D fonema /d/<br />

specifică durata minimă (n=1), respectiv maximă (n=2) a fonemei<br />

În tabelul 4.9 se prezintă duratele rostirii pentru diferite grupuri de foneme :<br />

B. Pentru tipurile de regiuni avem următoarele notaţii:<br />

- R_LIN - Regiune de linişte sau linişte nesonoră<br />

- R_VOC - Regiune de tip vocală sonoră<br />

- R_CONS - Regiune de tip consoană nesonoră<br />

- R_ZT – Zonă tranzitorie: poate fi o regiune de tip tranzitorie, tranzitorie<br />

densă, de tip salt, sau o regiune neregulată scurtă<br />

- R_ANY – orice tip de regiune


Tabelul 4.9. Duratele rostirii pentru diferite grupuri de foneme<br />

Notaţie<br />

Durată<br />

minimă<br />

(ms)<br />

Notaţie<br />

131<br />

Durată<br />

maximă<br />

(ms)<br />

Tip fonemă<br />

L_BEGIN1 0. L_BEGIN2 1500. Început fişier<br />

L_VOC1_SING 21. L_VOC2_SING 230. Vocală singulară<br />

L_VOC1 42. L_VOC2 150. Vocală<br />

L_CONS1 18. L_CONS2 220. Consoană<br />

Cap. 4. Analiza semnalului vocal<br />

L_LMN1 0. L_LMN2 40. Consoane glide: /l/, /m/, /n/<br />

L_C1 2.5 L_C2 45. /c/<br />

L_G1 2.5 L_G2 45. /g/<br />

L_V1 10. L_V2 80. /v/<br />

L_D1 5. L_D2 70. /d/<br />

L_P1 1.3 L_P2 33. /p/<br />

L_B1 1.1 L_B2 22. /b/<br />

L_R1 5. L_R2 50. /r/ scurt<br />

L_REND1 17. L_REND2 70. /r/ lung<br />

L_PBI1 20. L_PBI2 70. /pi/, /bi/<br />

L_DR1 20. L_DR2 100. /dr/<br />

L_PR1 10. L_PR2 80. /pr/<br />

L_T1 7. L_T2 150. /t/<br />

L_TR1 22. L_TR2 120. /tr/<br />

L_F1 20. L_F2 135. /f/<br />

L_TRANZ_FON1 0. L_TRANZ_FON2 143. Tranziţie între foneme<br />

L_TRANZ_CUV1 0. L_TRANZ_CUV2 650. Tranziţie între cuvinte<br />

Aşa cum aminteam anterior, fiecare regulă se termină cu una din primitivele<br />

TestReject() sau TestUnput(). Dacă regiunile din tabelul de regiuni respectă condiţiile<br />

de formă şi durată impuse de fiecare regulă, atunci regula se validează şi se face asocierea<br />

grupului de foneme curent cu setul de regiuni. Dacă nu se respectă condiţiile impuse, atunci se<br />

trece la regula următoare.<br />

În continuare se prezintă câteva exemple din setul de reguli de asociere foneme-regiuni.


132<br />

Cap. 4. Analiza semnalului vocal<br />

SETUL DE REGULI PENTRU ASOCIEREA FONEME-REGIUNI (extras)<br />

{VOC}+(r|Zr|T[cgbdvp])+{VOC}+ {<br />

// sir de vocale continind mai multe consoane<br />

// consecutive precum ‘r’,’c’,’g’,’b’,’d’,’v’,’p’<br />

//ex: ‘s-eCVen-ţiali’<br />

SetGrupLen();<br />

if(ok=CheckRegion(R_VOC))<br />

ok=CheckRule(3);<br />

TestReject();<br />

}<br />

{VOC}+r{VOC}+(r{VOC}*)?Z{VOC}+ {<br />

/*sir de vocale inglobind 'r' si 'Z' (terminator de cuvint)<br />

*/<br />

nrvoc=yyleng-1;<br />

SetLen(nrvoc*L_VOC1,nrvoc*L_VOC2);<br />

ll1+=L_R1; ll2+=L_R2;<br />

if(ok=CheckRegion(R_VOC))<br />

ok=CheckRule(10);<br />

TestReject();<br />

}<br />

{VOC}+iZ/{VOC}+ {<br />

/*sir de vocale cu ‘i’ la sfirsit */<br />

nrvoc=yyleng-1;<br />

SetLen(nrvoc*L_VOC1,nrvoc*L_VOC2);<br />

if(ok=CheckRegion(R_VOC))<br />

ok=CheckRule(15);<br />

TestReject();<br />

}<br />

{VOC}+Z{VOC}+ {<br />

/*sir de vocale inglobind 'Z' */<br />

nrvoc=yyleng-1;<br />

SetLen(nrvoc*L_VOC1,nrvoc*L_VOC2);<br />

if(ok=CheckRegion(R_VOC))<br />

ok=CheckRule(15);<br />

TestReject();<br />

}<br />

{VOC}+ { // sir de mai multe vocale<br />

nrvoc=yyleng;<br />

if(nrvoc==1)<br />

SetLen(nrvoc*L_VOC1_SING,nrvoc*L_VOC2_SING);<br />

else<br />

SetLen(nrvoc*L_VOC1,nrvoc*L_VOC2);<br />

if(ok=CheckRegion(R_VOC))<br />

ok=CheckRule(25);<br />

TestUnput();<br />

}<br />

sTt { /* grupul ‘st’ */<br />

SetLen(L_CONS1+L_T1,L_CONS2+L_T2);<br />

if(ok=CheckRegion(R_CONS))<br />

ok=CheckRule(34);


TestReject();<br />

}<br />

{CONS} { /* CONSOANA SINGULARA */<br />

SetLen(L_CONS1,L_CONS2);<br />

if(ok=CheckRegion(R_CONS))<br />

ok=CheckRule(35);<br />

TestReject();<br />

}<br />

r/Z { // ‘r’ la sfirsitul cuvintului<br />

CheckFirstRule(49);<br />

SetLen(L_REND11,L_REND2);<br />

ok=CheckSumReg(R_ANY);<br />

if(!ok) ilexreg=ilexreg1;<br />

TestReject();<br />

}<br />

r { // ‘r’ la mijlocul cuvintului<br />

CheckFirstRule(51);<br />

SetLen(L_R1,L_R2);<br />

ok=CheckSumReg(R_ANY);<br />

TestUnput();<br />

}<br />

c { //’c’: suma de regiuni<br />

CheckFirstRule(73);<br />

SetLen(L_C1,L_C2);<br />

ok=CheckSumReg(R_ANY);<br />

TestUnput();<br />

}<br />

tr { // grupul ‘tr’<br />

CheckFirstRule(95);<br />

MarkLenGrup(); // mai multe caractere<br />

SetLen(L_TR1,L_TR2);<br />

r=R_ANY;<br />

ok=CheckSumReg(r);<br />

TestReject();<br />

}<br />

T { /* TRANZITIE INTRE FONEME */<br />

// se consuma o SUMA de regiuni<br />

CheckFirstRule(151);<br />

SetLen(L_TRANZ_FON1,L_TRANZ_FON2);<br />

ok=CheckSumReg(R_ANY);<br />

TestUnput();<br />

}<br />

Z { /* TRANZITIE INTRE CUVINTE */<br />

// se consuma o SUMA de regiuni<br />

CheckFirstRule(161);<br />

SetLen(L_TRANZ_CUV1,L_TRANZ_CUV2);<br />

r=R_ANY; //& ~R_VOC;<br />

ok=CheckSumReg(r);<br />

TestUnput();<br />

}<br />

133<br />

Cap. 4. Analiza semnalului vocal


134<br />

Cap. 4. Analiza semnalului vocal<br />

4.8.3. Rezultate obţinute în urma aplicării metodei propuse de asociere<br />

foneme-regiuni<br />

Pentru un anumit vorbitor, rezultatele asocierii dintre şirul de foneme de la intrare şi setul<br />

de regiuni din semnalul vocal depind de doi factori:<br />

1. Modul de segmentare al semnalului vocal.<br />

2. Setul de reguli de asociere corespunzător acelui vorbitor.<br />

Am văzut că segmentarea semnalului vocal cu metoda propusă de autor împarte semnalul<br />

în 10 clase de regiuni distincte, frontierele dintre regiuni fiind bine delimitate. Problema cea mai<br />

delicată o constituie construirea setului de reguli de asociere pentru vorbitorul considerat.<br />

Proiectarea setului de reguli se face folosind un corpus de înregistrări ale vorbitorului, pe baza<br />

căruia se scriu regulile pentru fiecare grup de foneme care prezintă o rostire distinctă.<br />

Odată ce a fost scris un set de reguli pentru un vorbitor, transcrierea sa pentru un altul se<br />

face mai uşor, modificând doar elementele de durată şi eventual tipul de regiuni asociate pentru<br />

fiecare grup de foneme. Autorul a proiectat mai întâi un set de reguli pentru un vorbitor<br />

masculin, ce a fost apoi uşor adaptat şi pentru un vorbitor feminin.<br />

În urma aplicării metodei proprii de asociere foneme-regiuni, problemă întrucâtva mai<br />

simplă decât recunoaşterea fonemelor direct din semnalul vocal, s-a constatat că aceste<br />

constrângeri de durată şi formă de semnal sunt suficiente pentru a face o asociere corectă.<br />

Desigur că este necesară o proiectare atentă a regulilor.<br />

S-a constatat că setul de reguli proiectat asigură o asociere corectă dintre foneme şi<br />

regiuni, cu erori mici care apar doar în cazul când în semnal apar regiuni tranzitorii succesive de<br />

durată scurtă. Unele dintre aceste regiuni pot fi puse în corespondenţă cu grupul de foneme<br />

considerat (dacă respectă condiţiile de durată), sau pot fi incluse în tranziţiile intrafonematice,<br />

fapt care nu are o importanţă deosebită, ţinând cont că de obicei procesul de asociere foneme-<br />

regiuni se face pentru detectarea unor unităţi fonetice de tip grup de foneme, şi nu pentru foneme<br />

singulare. Acesta este şi cazul lucrării de faţă, în care s-a utilizat o abordare bazată pe silabe.<br />

Ca un fapt interesant care s-a constatat pe măsura proiectării setului de reguli, dacă o<br />

anumită regulă de asociere lipsea din set, procesul de asociere automată se oprea exact la grupul<br />

de foneme care nu avea regula corectă, şi nu avansa cu o asociere greşită. Acest fapt a constituit<br />

un avantaj în procesul proiectării regulilor, şi demonstrează că aceste constrângeri bazate pe<br />

durată şi tip de regiune sunt valide.<br />

În continuare se prezintă comparativ rezultatele aplicării metodei de asociere foneme-<br />

regiuni asupra unei fraze rostite de un vorbitor masculin (figura 4.57), respectiv asupra unei fraze<br />

rostite de un vorbitor feminin (figura 4.58).


135<br />

Cap. 4. Analiza semnalului vocal<br />

Figura 4.57. Asocierea foneme – regiuni pentru sintagma : rostită de un vorbitor masculin


136<br />

Cap. 4. Analiza semnalului vocal<br />

Figura 4.58. Asocierea foneme – regiuni pentru sintagma : rostită de un vorbitor feminin


4.8.4. Experimente privind segmentarea în subregiuni fonematice<br />

137<br />

Cap. 4. Analiza semnalului vocal<br />

În urma procesului de asociere a grupurilor de foneme cu regiunile din semnalul vocal,<br />

vor exista două situaţii distincte de asociere:<br />

1) o anumită fonemă este asociată în mod unic cu o regiune sau un set de regiuni;<br />

2) un grup de mai multe foneme va fi asociat cu o regiune sau un set de regiuni.<br />

Primul caz apare de regulă atunci când e vorba de o consoană nesonoră (/s/, /ş/, /t/, /ţ/, /j/,<br />

/f/, /č/, /ğ/) sau de o vocală singulară (ce nu apare într -un grup de vocale). În acest caz<br />

segmentarea este în mod precis determinată.<br />

Al doilea caz apare atunci când se întâlneşte un grup de foneme alcătuit din vocale,<br />

consoane glide (/l/, /m/, /n/) sau /r/. De cele mai multe ori, un astfel de grup va fi asociat cu o<br />

singură regiune de tip sonor-vocalic (vezi figura 4.59).<br />

a) b)<br />

Figura 4.59. Asocierea unui grup de mai multe foneme cu o singură regiune<br />

a) grupul /milor/ din cuvântul <br />

b) grupul /area/ din cuvântul <br />

Aşa cum am subliniat în subcapitolul precedent, acest caz particular nu împietează asupra<br />

procesului de detectare a unităţilor lingvistice folosit în construirea corpusului vocal adnotat, mai<br />

ales atunci când unităţile lingvistice sunt alcătuite din grupuri de foneme, precum silabele.<br />

Totuşi, dacă se doreşte separarea fonemelor dintr-o astfel de regiune corespunzătoare<br />

unui grup de foneme, vor trebui utilizate anumite metode bazate pe detectarea caracteristicile<br />

intrinseci ale fiecărei foneme.<br />

Autorul a experimentat două metode:<br />

M1. O metodă bazată pe determinarea translaţiilor bruşte din regiune;<br />

M2. O metodă bazată pe modelare fonematică.<br />

Ambele metode presupun calcularea coeficienţilor de semnal caracteristici fiecărei<br />

foneme (s-au folosit coeficienţii Fourier), precum şi calculul unei distanţe între două seturi de<br />

coeficienţi de comparat.


4.8.4.1. Calculul distanţei dintre două seturi de coeficienţi fonematici<br />

138<br />

Cap. 4. Analiza semnalului vocal<br />

Există mai multe metode de calcul a distanţei dintre două seturi de coeficienţi asociaţi<br />

unor cadre de semnal. Astfel, pentru două seturi de vectori X={x1, x2, …, xp} şi Y={y1, y2, …, yp},<br />

putem calcula distanţele [Web02]:<br />

Distanţa Euclidiană: (4.77)<br />

Distanţa Manhattan: (4.78)<br />

Distanţa Cebîşev: (4.79)<br />

Distanţa Minkovski: (4.80)<br />

Toate aceste distanţe se calculează pe baza diferenţei coeficienţilor corespunzători din cei<br />

doi vectori. Totuşi, pentru două seturi de coeficienţi Fourier este mult mai adecvat calculul pe<br />

baza rapoartelor de coeficienţi decât pe baza diferenţelor.<br />

Acest fapt este simplu de observat în cazul a două cadre de semnal de aceeaşi formă dar<br />

de amplitudine diferită (de exemplu o aceeaşi vocală rostită cu intensităţi diferite). În acest caz<br />

cele două seturi de coeficienţi Fourier sunt asemenea şi se obţin unul din altul prin aplicarea unui<br />

factor de multiplicare proporţional cu raportul intensităţilor celor două forme de semnal.<br />

Ca urmare, s-a urmărit calcularea unei distanţe între două seturi de coeficienţi Fourier<br />

a={a1, a2, …,an} şi b={b1, b2, …,bn} între care se calculează un raport r, distanţă notată cu<br />

E(a,b,r). Acestă distanţă are rol de eroare pătratică minimă şi respectă proprietăţile:<br />

P1. E(a,b,r)= E(b,a,1/r)<br />

P2. E(a,a,1)=0 (4.81)<br />

P3. E(a,ra,r)=0<br />

P4. E(a,b,r)= E(na,mb,(m/n)r)<br />

Proprietatea P1 reprezintă proprietatea de comutativitate a distanţei. Proprietatea P2<br />

statuează faptul că distanţa E calculată asupra aceluiaşi vector este nulă. P3 este proprietatea de<br />

scalare a unui vector: distanţa dintre un vector şi vectorul scalat cu un raport r este nulă. P4 este<br />

proprietatea de scalare generalizată: distanţa dintre doi vectori având raportul r este aceeaşi cu<br />

distanţa dintre vectorii scalaţi cu factorii n, respectiv m, raportul modificându-se proporţional cu<br />

factorii de scalare.<br />

S-a luat următoarea formulă de calcul pentru distanţa E bazată pe raportul r dintre<br />

vectorii a şi b :<br />

2<br />

a <br />

i bi<br />

1<br />

E(<br />

a,<br />

b,<br />

r)<br />

r <br />

<br />

(4.82)<br />

i1 , nb<br />

i ai<br />

r <br />

Se observă că distanţa definită de relaţia (4.82) respectă condiţiile P1 ... P4 din (4.81).<br />

În continuare se urmăreşte calculul raportului r astfel încât distanţa E (cu rol de eroare<br />

pătratică) să fie minimă.


Dacă notăm<br />

sau, explicitând suma:<br />

a<br />

a<br />

a<br />

1<br />

2<br />

n<br />

p1 , p 2 , …, p n , atunci relaţia (4.82) devine:<br />

b1<br />

b2<br />

bn<br />

139<br />

2<br />

Cap. 4. Analiza semnalului vocal<br />

1 <br />

E(<br />

a,<br />

b,<br />

r)<br />

p<br />

ir<br />

<br />

<br />

(4.83)<br />

i1 , n<br />

pi<br />

r <br />

2 2<br />

2 2 1 1 1 1<br />

E(<br />

a,<br />

b,<br />

r)<br />

( p1<br />

p<br />

2 ...<br />

p<br />

n ) r (<br />

...<br />

) 2<br />

n (4.84)<br />

2 2<br />

2 2<br />

p p p r<br />

dE<br />

Punând condiţia ca E să fie minimă, avem 0<br />

, adică:<br />

dr<br />

2 2<br />

2 1 1 1 1<br />

2( p1<br />

p<br />

2 ...<br />

p<br />

n ) r 2<br />

( ...<br />

) 0<br />

2 2<br />

2 3<br />

p p p r<br />

Rezultă valoarea lui r care minimizează distanţa E:<br />

Sau dacă notăm<br />

r<br />

4<br />

2<br />

1<br />

2<br />

1<br />

2<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

2<br />

n<br />

2<br />

n<br />

2<br />

n<br />

n<br />

(4.85)<br />

1 1 1<br />

...<br />

<br />

p p p<br />

(4.86)<br />

p p<br />

...<br />

p<br />

1 1 1<br />

I ...<br />

şi<br />

p p p<br />

2<br />

1<br />

2<br />

2<br />

r <br />

I<br />

S<br />

2<br />

n<br />

S p p<br />

p<br />

, atunci:<br />

2 2<br />

2<br />

1 2 ... n<br />

2 (4.87)<br />

Din (4.87), expresia lui E devine:<br />

2 1<br />

E ( a , b,<br />

r ) Sr I<br />

2<br />

n<br />

(4.88)<br />

2<br />

r<br />

Înlocuind pe (4.87) în (4.88), obţinem distanţa minimă dintre a şi b în funcţie de r:<br />

E r ( a , b ) 2 ( IS n<br />

)<br />

(4.89)<br />

min,<br />

Astfel putem alege expresia distanţei dintre a şi b:<br />

E ( a,<br />

b)<br />

IS n<br />

1<br />

expresie ce are proprietatea: ( E ( a,<br />

b))<br />

0<br />

, sau:<br />

min 1<br />

a,<br />

b<br />

(4.90)<br />

E2 ( a,<br />

b)<br />

IS , cu min( E2<br />

( a,<br />

b))<br />

n<br />

. (4.91)<br />

a,<br />

b<br />

De aici obţinem valoarea distanţei pătratice minime în raport cu r dintre vectorii a şi b:<br />

2<br />

IS , unde min(<br />

E(<br />

a,<br />

b))<br />

0<br />

a,<br />

b<br />

E ( a , b ) n<br />

. (4.92)


F(C1)<br />

C1 C2<br />

Np<br />

E(a,b)<br />

140<br />

Dp<br />

Cap. 4. Analiza semnalului vocal<br />

Valoarea distanţei pătratice minime dată de formula ( 4.92) a fost folosită pentru<br />

determinarea gradului de asemănare dintre două seturi de coeficienţi corespunzătoare a două<br />

forme de undă.<br />

În continuare vom explicita cele două metode de segmentare în subregiuni fonematice<br />

prezentate la începutul lui 4.8.4, metode ce se bazează pe calculul distanţei pătratice minime<br />

E(a,b).<br />

4.8.4.2. Metoda de segmentare în subregiuni fonematice bazată pe determinarea<br />

tranziţiilor bruşte din regiune<br />

Această metodă de segmentare presupune calculul coeficienţilor Fourier pentru două<br />

cadre succesive sau apropiate din semnal şi compararea acestora folosind distanţa pătratică<br />

minimă (paragraful 4.8.4.1) în scopul detectării tranziţiilor bruşte care apar în regiunea studiată.<br />

Aceste tranziţii bruşte reprezintă tranziţiile de la o fonemă la alta şi corespund cu frontierele de<br />

subregiuni.<br />

Cadrele de semnal se iau sincron cu frecvenţa, şi cuprind un număr de Np perioade (de<br />

obicei Np = 1, 2 sau 3). Distanţa dintre cele două cadre de referinţă va fi Dp (se ia la fel Dp = 1,<br />

2 sau 3 perioade). Apoi se extrag cei doi vectori ce cuprind primii n coeficienţi Fourier pentru<br />

cele două cadre, şi se calculează E(a,b) – figura 4.60.<br />

a1<br />

a2<br />

a3<br />

...<br />

...<br />

an<br />

F(C2)<br />

Figura 4.60. Metoda de segmentare bazată pe determinarea tranziţiilor bruşte din regiune<br />

b1<br />

b2<br />

b3<br />

...<br />

...<br />

bn


141<br />

Cap. 4. Analiza semnalului vocal<br />

Algoritmul de stabilire a frontierelor de subregiuni prin metoda tranziţiilor este următorul:<br />

Algoritmul Subregiuni – Metoda Tranziţiilor<br />

P1. Pentru fiecare regiune REG de tip sonor-vocalică se execută paşii P2 – P8.<br />

P2. Se iniţializează indicele de perioadă curent Ip = 0.<br />

P3. Cât timp indicele de perioadă curent Ip este în interiorul regiunii curente REG, se execută<br />

paşii P4 – P8.<br />

P4. Se găseşte cadrul C2(Ip, Np) de lungime Np perioade, care începe la indicele de perioadă<br />

Ip.<br />

P5. Se calculează vectorul coeficienţilor Fourier pentru cadrul C2, b = F(C2) .<br />

P6. Dacă s-a găsit cadrul anterior C1(Ip - Dp, Np) de lungime Np perioade, care începe la<br />

indicele de perioadă Ip – Dp, se ia vectorul coeficienţilor Fourier pentru cadrul C1, a =<br />

F(C1) şi se calculează distanţa pătratică minimă E(a,b).<br />

P7. Dacă distanţa E(a,b) este mai mare decât un prag dat Ptb, atunci înseamnă că între cele<br />

două cadre C1 şi C2 a apărut o tranziţie bruscă, şi se marchează o frontieră de<br />

subregiune la perioada de indice Ip-Dp/2.<br />

P8. Se incrementează indicele de perioadă: Ip = Ip +1, şi se reiau paşii P3, P4 cu următorul<br />

cadru C2(Ip, Np).<br />

4.8.4.3. Rezultate obţinute prin metoda de segmentare bazată pe determinarea<br />

tranziţiilor bruşte din regiune<br />

S-au făcut experimente pentru diferite valori ale parametrilor Np şi Dp, pentru regiuni de<br />

tip sonor-vocalic la care s-a aplicat metoda curentă de segmentare în subregiuni.<br />

În continuare se ilustrează câteva exemple de segmentare în subregiuni pentru diferite<br />

cadre de semnal preluate de la un vorbitor masculin şi unul feminin.<br />

1) Vorbitor masculin:<br />

Figura 4.61. Segment vocalic pentru un vorbitor masculin - secvenţa <br />

În figura 4.61 avem un segment vocalic compus din 3 subregiuni fonematice,<br />

corespunzând cu fonemele /E/, /L/, /O/. Tabelul 4.10 prezintă rezultatul comparării perioadelor<br />

de semnal folosind parametrii Np=2, Dp=1, Prag=30, respectiv Np=2, Dp=2, Prag=50. În primul<br />

caz frontierele sunt situate la perioadele 5/6, respectiv 14/15; în al doilea caz, la 15/16.


Tabelul 4.10. Stabilirea frontierelor pentru segmentul <br />

Np=2, Dp=1, Prag=30 Np=2, Dp=2, Prag=50<br />

142<br />

Cap. 4. Analiza semnalului vocal<br />

Perioade E(a,b) Front. Perioada a - b E(a,b) Front<br />

Period 1 - 2 13 0 Period 1 - 3 16 0<br />

Period 2 - 3 1 0 Period 2 - 4 6 0<br />

Period 3 - 4 4 0 Period 3 - 5 3 0<br />

Period 4 - 5 5 0 Period 4 - 6 386 1<br />

Period 5 - 6 191 1 Period 5 - 7 342 1<br />

Period 6 - 7 9 0 Period 6 - 8 29 0<br />

Period 7 - 8 6 0 Period 7 - 9 13 0<br />

Period 8 - 9 3 0 Period 8 - 10 1 0<br />

Period 9 - 10 3 0 Period 9 - 11 7 0<br />

Period 10 - 11 6 0 Period 10 - 12 9 0<br />

Period 11 - 12 4 0 Period 11 - 13 9 0<br />

Period 12 - 13 3 0 Period 12 - 14 38 0<br />

Period 13 - 14 56 1 Period 13 - 15 32 0<br />

Period 14 - 15 42 1 Period 14 - 16 165 1<br />

Period 15 - 16 49 1 Period 15 - 17 74 1<br />

Period 16 - 17 8 0 Period 16 - 18 9 0<br />

Period 17 - 18 1 0 Period 17 - 19 1 0<br />

Period 18 - 19 1 0 Period 18 - 20 2 0<br />

Period 19 - 20 0 0 Period 19 - 21 1 0<br />

Period 20 - 21 0 0 Period 20 - 22 1 0<br />

Period 21 - 22 0 0 Period 21 - 23 1 0<br />

Period 22 - 23 0 0 Period 22 - 24 1 0<br />

Period 23 - 24 1 0 Period 23 - 25 2 0<br />

Period 24 - 25 0 0 Period 24 - 26 1 0<br />

Period 25 - 26 0 0 Period 25 - 27 1 0<br />

Period 26 - 27 1 0 Period 26 - 28 3 0<br />

Period 27 - 28 0 0 Period 27 - 29 5 0<br />

Period 28 - 29 7 0 Period 28 - 30 1 0<br />

Period 29 - 30 3 0<br />

În figura 4.62 avem un segment vocalic compus din subregiunile corespunzătoare<br />

fonemelor /A/, /R/, /EA/. Tabelul 4.11 prezintă rezultatul comparării perioadelor de semnal<br />

folosind parametrii Np=2, Dp=1, Prag=30, respectiv Np=2, Dp=2, Prag=50. În primul caz avem<br />

o frontieră situată la intervalul de perioadă 17/18, delimitând segmentul în două regiuni /AR/ şi<br />

/EA/; în al doilea caz, avem două frontiere apropiate, la indicii 16, respectiv 18, delimitând<br />

segmentul în trei regiuni: /A/, /R/ şi /EA/.<br />

Figura 4.62. Segment vocalic pentru un vorbitor masculin - secvenţa


Tabelul 4.11. Stabilirea frontierelor pentru segmentul <br />

2) Vorbitor feminin:<br />

Np=2, Dp=1, Prag=30 Np=2, Dp=2, Prag=50<br />

143<br />

Cap. 4. Analiza semnalului vocal<br />

Perioade E(a,b) Front. Perioada a - b E(a,b) Front<br />

Period 1 - 2 4 0 Period 1 - 3 8 0<br />

Period 2 - 3 2 0 Period 2 - 4 5 0<br />

Period 3 - 4 1 0 Period 3 - 5 2 0<br />

Period 4 - 5 0 0 Period 4 - 6 0 0<br />

Period 5 - 6 0 0 Period 5 - 7 1 0<br />

Period 6 - 7 0 0 Period 6 - 8 1 0<br />

Period 7 - 8 0 0 Period 7 - 9 1 0<br />

Period 8 - 9 0 0 Period 8 - 10 1 0<br />

Period 9 - 10 0 0 Period 9 - 11 1 0<br />

Period 10 - 11 1 0 Period 10 - 12 5 0<br />

Period 11 - 12 2 0 Period 11 - 13 11 0<br />

Period 12 - 13 3 0 Period 12 - 14 8 0<br />

Period 13 - 14 1 0 Period 13 - 15 6 0<br />

Period 14 - 15 2 0 Period 14 - 16 12 0<br />

Period 15 - 16 4 0 Period 15 - 17 70 1<br />

Period 16 - 17 28 0 Period 16 - 18 9 0<br />

Period 17 - 18 30 1 Period 17 - 19 63 1<br />

Period 18 - 19 12 0 Period 18 - 20 31 0<br />

Period 19 - 20 3 0 Period 19 - 21 5 0<br />

Period 20 - 21 1 0 Period 20 - 22 4 0<br />

Period 21 - 22 2 0 Period 21 - 23 4 0<br />

Period 22 - 23 1 0 Period 22 - 24 1 0<br />

Period 23 - 24 0 0 Period 23 - 25 1 0<br />

Period 24 - 25 0 0 Period 24 - 26 0 0<br />

Period 25 - 26 0 0 Period 25 - 27 2 0<br />

Period 26 - 27 1 0 Period 26 - 28 5000 1<br />

Period 27 - 28 5000 0 Period 27 - 29 8 0<br />

Figura 4.63. Segment vocalic pentru un vorbitor feminin - secvenţa


144<br />

Cap. 4. Analiza semnalului vocal<br />

În figura 4.63 avem un segment vocalic compus din subregiunile corespunzătoare<br />

fonemelor /E/, /N/, /E/, /R/, /A/, /L/. Tabelul 4.12 prezintă rezultatul comparării perioadelor de<br />

semnal folosind parametrii Np=2, Dp=2, Prag=50, respectiv Np=2, Dp=3, Prag=50. Rezultatele<br />

delimitării frontierelor de subregiuni sunt arătate în tabelul 4.13.<br />

Tabelul 4.12. Compararea perioadelor pentru secvenţa <br />

Np=2, Dp=2, Prag=50 Np=2, Dp=3, Prag=50<br />

Perioade E(a,b) Front. Perioade E(a,b) Front.<br />

Period 1 - 3 323 1 Period 1 - 4 469 1<br />

Period 2 - 4 27 0 Period 2 - 5 46 0<br />

Period 3 - 5 36 0 Period 3 - 6 36 0<br />

Period 4 - 6 3 0 Period 4 - 7 8 0<br />

Period 5 - 7 3 0 Period 5 - 8 17 0<br />

Period 6 - 8 13 0 Period 6 - 9 30 0<br />

Period 7 - 9 16 0 Period 7 - 10 47 0<br />

Period 8 - 10 15 0 Period 8 - 11 36 0<br />

Period 9 - 11 16 0 Period 9 - 12 21 0<br />

Period 10 - 12 10 0 Period 10 - 13 17 0<br />

Period 11 - 13 5 0 Period 11 - 14 8 0<br />

Period 12 - 14 2 0 Period 12 - 15 4 0<br />

Period 13 - 15 5 0 Period 13 - 16 105 1<br />

Period 14 - 16 96 1 Period 14 - 17 170 1<br />

Period 15 - 17 117 1 Period 15 - 18 179 1<br />

Period 16 - 18 39 0 Period 16 - 19 216 1<br />

Period 17 - 19 369 1 Period 17 - 20 631 1<br />

Period 18 - 20 47 0 Period 18 - 21 34 0<br />

Period 19 - 21 6 0 Period 19 - 22 14 0<br />

Period 20 - 22 9 0 Period 20 - 23 20 0<br />

Period 21 - 23 6 0 Period 21 - 24 7 0<br />

Period 22 - 24 7 0 Period 22 - 25 31 0<br />

Period 23 - 25 26 0 Period 23 - 26 171 1<br />

Period 24 - 26 173 1 Period 24 - 27 258 1<br />

Period 25 - 27 519 1 Period 25 - 28 619 1<br />

Period 26 - 28 42 0 Period 26 - 29 114 1<br />

Period 27 - 29 26 0 Period 27 - 30 37 0<br />

Period 28 - 30 17 0 Period 28 - 31 27 0<br />

Period 29 - 31 6 0 Period 29 - 32 7 0<br />

Period 30 - 32 2 0 Period 30 - 33 3 0<br />

Period 31 - 33 3 0 Period 31 - 34 3 0<br />

Period 32 - 34 1 0 Period 32 - 35 2 0<br />

Period 33 - 35 1 0 Period 33 - 36 6 0<br />

Period 34 - 36 10 0 Period 34 - 37 8 0<br />

Period 35 - 37 7 0 Period 35 - 38 2 0<br />

Period 36 - 38 7 0 Period 36 - 39 12 0<br />

Period 37 - 39 8 0 Period 37 - 40 9 0<br />

Period 38 - 40 1 0 Period 38 - 41 2 0<br />

Period 39 - 41 1 0 Period 39 - 42 1 0<br />

Period 40 - 42 0 0 Period 40 - 43 1 0<br />

Period 41 - 43 0 0 Period 41 - 44 2 0<br />

Period 42 - 44 1 0 Period 42 - 45 0 0<br />

Period 43 - 45 0 0 Period 43 - 46 2 0<br />

Period 44 - 46 7 0 Period 44 - 47 1 0<br />

Period 45 - 47 1 0 Period 45 - 48 2 0<br />

Period 46 - 48 3 0 Period 46 - 49 6 0<br />

Period 47 - 49 3 0 Period 47 - 50 16 0<br />

Period 48 - 50 10 0 Period 48 - 51 5000 1


145<br />

Cap. 4. Analiza semnalului vocal<br />

Period 49 - 51 5000 1 Period 49 - 52 5000 1<br />

Period 50 - 52 5000 1 Period 50 - 53 5000 1<br />

Period 51 - 53 5000 1 Period 51 - 54 5000 1<br />

Period 52 - 54 5000 1 Period 52 - 55 5000 1<br />

Period 53 - 55 5000 1 Period 53 - 56 5000 1<br />

Period 54 - 56 5000 1 Period 54 - 57 5000 1<br />

Period 55 - 57 5000 1 Period 55 - 58 5000 1<br />

Period 56 - 58 37 0 Period 56 - 59 76 1<br />

Period 57 - 59 5000 1 Period 57 - 60 5000 1<br />

Period 58 - 60 13 0 Period 58 - 61 17 0<br />

Period 59 - 61 23 0 Period 59 - 62 36 0<br />

Period 60 - 62 5 0 Period 60 - 63 19 0<br />

Period 61 - 63 13 0 Period 61 - 64 28 0<br />

Period 62 - 64 12 0 Period 62 - 65 21 0<br />

Period 63 - 65 6 0 Period 63 - 66 21 0<br />

Period 64 - 66 10 0 Period 64 - 67 13 0<br />

Period 65 - 67 17 0 Period 65 - 68 29 0<br />

Period 66 - 68 5 0 Period 66 - 69 2 0<br />

Period 67 - 69 4 0 Period 67 - 70 5 0<br />

Period 68 - 70 1 0 Period 68 - 71 2 0<br />

Period 69 - 71 3 0 Period 69 - 72 6 0<br />

Period 70 - 72 3 0 Period 70 - 73 6 0<br />

Period 71 - 73 3 0 Period 71 - 74 3 0<br />

Period 72 - 74 1 0 Period 72 - 75 1 0<br />

Period 73 - 75 0 0 Period 73 - 76 1 0<br />

Period 74 - 76 0 0 Period 74 - 77 0 0<br />

Period 75 - 77 0 0 Period 75 - 78 0 0<br />

Period 76 - 78 0 0 Period 76 - 79 0 0<br />

Period 77 - 79 1 0 Period 77 - 80 1 0<br />

Period 78 - 80 1 0 Period 78 - 81 2 0<br />

Period 79 - 81 1 0 Period 79 - 82 3 0<br />

Period 80 - 82 2 0 Period 80 - 83 39 0<br />

Period 81 - 83 29 0 Period 81 - 84 49 0<br />

Period 82 - 84 35 0 Period 82 - 85 13 0<br />

Period 83 - 85 6 0 Period 83 - 86 4 0<br />

Period 84 - 86 4 0 Period 84 - 87 2 0<br />

Period 85 - 87 10 0 Period 85 - 88 31 0<br />

Period 86 - 88 19 0 Period 86 - 89 76 1<br />

Period 87 - 89 37 0 Period 87 - 90 189 1<br />

Period 88 - 90 78 1 Period 88 - 91 205 1<br />

Period 89 - 91 72 1 Period 89 - 92 115 1<br />

Period 90 - 92 18 0 Period 90 - 93 31 0<br />

Period 91 - 93 10 0 Period 91 - 94 13 0<br />

Period 92 - 94 7 0 Period 92 - 95 25 0<br />

Period 93 - 95 8 0 Period 93 - 96 24 0<br />

Period 94 - 96 15 0 Period 94 - 97 13 0<br />

Period 95 - 97 4 0 Period 95 - 98 14 0<br />

Period 96 - 98 10 0 Period 96 - 99 5 0<br />

Period 97 - 99 3 0 Period 97 - 100 5 0<br />

Period 98 - 100 3 0 Period 98 - 101 2 0<br />

Period 99 - 101 1 0 Period 99 - 102 2 0<br />

Period 100 - 102 2 0 Period 100 - 103 5 0<br />

Period 101 - 103 3 0 Period 101 - 104 8 0<br />

Period 102 - 104 6 0 Period 102 - 105 68 1<br />

Period 103 - 105 86 1 Period 103 - 106 50 1<br />

Period 104 - 106 50 1 Period 104 - 107 59 1<br />

Period 105 - 107 67 1 Period 105 - 108 57 1<br />

Period 106 - 108 16 0 Period 106 - 109 82 1<br />

Period 107 - 109 68 1 Period 107 - 110 186 1<br />

Period 108 - 110 154 1


Tabelul 4.13. Stabilirea frontierelor pentru secvenţa <br />

146<br />

Cap. 4. Analiza semnalului vocal<br />

Np=2, Dp=2, Prag=50 Np=2, Dp=3, Prag=50<br />

Indice Front. Perioade Front. Frontiera Perioade Front. Frontiera<br />

F1 14 - 19 16/17 13- 20 16/17<br />

F2 24 – 27 25/26 23 – 29 26<br />

F3 49 -51 50 48 – 51 49/50<br />

F4 57 - 59 58 57 – 60 58/59<br />

F5 88 - 91 89/90 86 – 92 89<br />

F6 103 - 110 106/107 102 - 110 106<br />

Din tabelul 4.12 se observă că subregiunea delimitată de frontierele F3 şi F4 este<br />

neperiodică, ea va fi asociată cu consoana glidă /R/. Asocierea foneme-subregiuni va fi<br />

următoarea:<br />

E<br />

Figura 4.64. Determinarea subregiunilor vocalice pentru secvenţa <br />

Din experimentele prezentate se vede că rezultatele sunt convergente atât în cazul<br />

vorbitorului masculin, cât şi în cazul vorbitorului feminin, chiar folosind diferite seturi de<br />

parametri. Avantajul metodei derivă din simplitatea şi cantitatea redusă de calcule necesară.<br />

Ca o observaţie care trebuie să fie făcută relativ la acestă metodă, dacă numărul de<br />

frontiere detectate este mai mare decât N-1, unde N este numărul de subregiuni fonematice în<br />

care se împarte regiunea, atunci vor trebui luate în consideraţie şi tranziţiile fonematice<br />

(difonemele). Astfel, pentru cazul vorbitorului feminin prezentat anterior, a fost considerată şi<br />

tranziţia /A/ - /L/ (difonema /AL/).<br />

N E R A AL L<br />

Fstart F1 F2 F3 F4 F5 F6 Fend<br />

Pentru a asocia în mod corect fonemele şi tranziţiile fonematice cu subregiunile detectate,<br />

va trebui folosită o metodă de recunoaştere a fonemelor pe baza caracteristicilor spectrale, aşa<br />

cum este metoda prezentată în cele ce urmează.


147<br />

Cap. 4. Analiza semnalului vocal<br />

4.8.4.4. Metoda de segmentare în subregiuni fonematice bazată pe modelarea<br />

caracteristicilor spectrale<br />

Această metodă de segmentare în subregiuni fonematice se bazează tot pe calculul<br />

coeficienţilor Fourier, şi se aplică asupra regiunilor sonor-vocalice din semnalul vocal, la fel ca<br />

şi metoda bazată pe detectarea tranziţiilor bruşte. Metoda presupune modelarea caracteristicilor<br />

spectrale ale fiecărei foneme de tip vocală sau consoană glidă şi detectarea fonemelor din<br />

regiunea ţintă prin compararea cu modelul.<br />

Metoda cuprinde 4 faze: (1) faza de modelare; (2) compararea vectorilor regiunii ţintă cu<br />

modelul; (3) regăsirea modelului fonematic şi etichetarea regiunilor; (4) gruparea fonemelor şi<br />

determinarea subregiunilor.<br />

1) Faza de modelare<br />

Faza de modelare cuprinde realizarea în regim manual a mai multor modele pentru<br />

fiecare fonemă în parte. Această fază corespunde cu faza de antrenare caracteristică oricărui<br />

proces de recunoaştere bazată pe model. Modelarea se face pentru un singur vorbitor (se<br />

construieşte câte un fişier model pentru fiecare vorbitor). Fonemele pentru care se realizează<br />

modelarea sunt: vocalele /a/, /e/, /i/, /o/, /u/, /ă/, /î/, şi respectiv consoanele glide /l/, /m/, /n/.<br />

Crearea unui model implică:<br />

a) Alegerea unui cadru din semnal ce corespunde cu fonema dorită. Cadrele se aleg<br />

sincron cu frecvenţa şi pot avea o lungime de 1,2, 3 sau 4 perioade. Fiecare fişier model se va<br />

crea utilizând o lungime prestabilită a cadrelor.<br />

b) Calculul coeficienţilor Fourier corespunzători. În metoda prezentată s-a ales utilizarea<br />

primilor N= 10 .. 12 coeficienţi ce corespund primelor N= 10..12 maxime din spectrul Fourier.<br />

c) Memorarea în fişierul model.<br />

În figura 4.65 se prezintă un exemplu de modelare pentru fonemele /A/ şi /E/ preluate de<br />

la un vorbitor masculin. Cadrele au o lungime de două perioade, iar în fişierul model se vor<br />

introduce primele 12 maxime (corespunzătoare formanţilor) din spectrul Fourier.<br />

(1) (2)<br />

Figura 4.65. Modelarea fonemelor (1) /E/, (2) /A/; sus: cadrul de semnal, jos: spectrul Fourier


2) Compararea vectorilor din regiunea ţintă cu modelul<br />

148<br />

Cap. 4. Analiza semnalului vocal<br />

Această fază presupune detectarea cadrelor din regiunea ţintă de lungime egală cu<br />

lungimea cadrelor aleasă pentru modelare, calculul coeficienţilor Fourier de aceeaşi manieră ca<br />

şi în faza precedentă, construirea vectorilor de caracteristici, şi compararea vectorilor cu<br />

modelele din fişierul model. Compararea se face pe baza distanţei minime pătratice E(a,b)<br />

expusă în paragraful 4..8.4.1.<br />

Compararea vectorilor din regiunea ţintă cu modelul este ilustrată în figura 4.66. C este<br />

cadrul curent, F(C) este vectorul coeficienţilor Fourier asociat cadrului C, MF este modelul<br />

asociat fonemei F.<br />

F(C)<br />

Model<br />

Figura 4.66. Compararea vectorilor din regiunea ţintă cu modelul<br />

În urma fazei de comparare a vectorilor din regiunea ţintă cu modelele din fişierul model<br />

rezultă câte un set de modele corespondente pentru fiecare cadru C:<br />

C<br />

M M M <br />

SM ,..., , (4.93)<br />

f 1,<br />

f 2<br />

unde Mfi sunt instanţe ale modelelor fonematice, având:<br />

fi<br />

C<br />

F1 F2 F3 F4 … Fn-1 Fn<br />

MA ME MI<br />

MO MU ML<br />

f<br />

fn<br />

E( M , F(<br />

C))<br />

P<br />

, i 1..<br />

n , (4.94)<br />

unde Pf este un prag fixat, iar F(C) este vectorul de caracteristici al cadrului C.


3) Regăsirea modelului fonematic şi etichetarea regiunilor<br />

149<br />

Cap. 4. Analiza semnalului vocal<br />

Această fază presupune găsirea modelului fonematic cel mai probabil de asociat cu cadrul<br />

curent din regiunea ţintă. Etichetarea cu foneme poate fi făcută pentru fiecare cadru independent<br />

sau în corelaţie cu cadrele învecinate.<br />

minimă :<br />

În primul caz modelul asociat MC este cel pentru care distanţa pătratică E(MC,F(C)) este<br />

E( M C , F(<br />

C))<br />

min E(<br />

M fi , F(<br />

C))<br />

, (4.95)<br />

unde M fi SM C .<br />

i1<br />

.. n<br />

În al doilea caz, în care etichetarea se face în corelaţie cu cadrele învecinate, dacă aceste<br />

cadre vecine fac parte dintr-un şir etichetat cu o aceeaşi fonemă fk, şi dacă Mfk face parte din setul<br />

SMC, atunci Mfk se va asocia cu cadrul C chiar dacă nu respectă condiţia (4.95).<br />

4) Gruparea fonemelor şi determinarea subregiunilor<br />

În această ultimă fază subregiunile sunt determinate prin găsirea şi extinderea secvenţelor<br />

de cadre vecine etichetate cu aceeaşi fonemă. Dacă o secvenţă {Fi} este întreruptă de o fonemă<br />

singulară diferită Fp, secvenţa va fi extinsă şi peste cadrul respectiv:<br />

Fi Fi … Fi Fp Fi -> Fi Fi … Fi Fi Fi<br />

Figura 4.67. Extinderea secvenţelor fonematice<br />

În finalul procesului de extindere a secvenţelor fonematice, Ure se marchează graniţele de<br />

subregiuni ca fiind graniţele secvenţelor fonematice.<br />

În concluzie, metoda de segmentare în subregiuni fonematice bazată pe modelarea<br />

caracteristicilor spectrale are o mare aplicabilitate practică. Dacă se foloseşte în corelaţie cu<br />

metoda de segmentare fonematică prezentată în secţiunea 4.8, atunci cunoscându-se secvenţa<br />

fonematică asociată cu fiecare regiune, se va putea determina corespondenţa exactă dintre fiecare<br />

fonemă şi cadrele din acea regiune.<br />

1 2 k-1 k k+1 1 2 k-1 k k+1<br />

Pe de altă parte metoda de segmentare în subregiuni bazată pe model poate fi folosită şi<br />

în recunoaşterea vorbirii. În acest caz vor trebui luate în consideraţie toate combinaţiile de<br />

foneme care rezultă din setul SMC ( 4.93), iar combinaţia exactă va trebui determinată prin<br />

utilizarea unei predicţii lingvistice bazată pe vocabular.<br />

che<br />

a<br />

me<br />

die


150<br />

Cap. 4. Analiza semnalului vocal<br />

4.8.4.5. Rezultate obţinute prin metoda de segmentare în subregiuni fonematice<br />

bazată pe modelarea caracteristicilor spectrale<br />

S-au făcut experimente pentru diferite lungimi de cadre, pentru regiuni de tip sonorvocalic<br />

la care s-a aplicat metoda curentă de segmentare în subregiuni. S-a constatat o bună<br />

funcţionalitate a metodei chiar pentru fişiere model de mici dimensiuni, de aproximativ 15-20 de<br />

modele pentru o fonemă. Erorile care apar sunt mici şi ele derivă din cazurile de coarticulare<br />

nemodelate, când o anumită fonemă este rostită în mod asemănător cu o alta.<br />

În continuare se ilustrează un exemplu de segmentare în subregiuni pentru o regiune<br />

vocalică preluată de la un vorbitor masculin.<br />

Exemplu: Vorbitor masculin; regiune sonor-vocalică; lungime cadru: două perioade<br />

Figura 4.68. Regiune sonor-vocalică corespunzând cu secvenţa /E/, /N/, /E/<br />

a) În faza de modelare s-au introdus în baza de modele următoarele foneme :<br />

/A / : 9 instanţe<br />

/E/ : 20 instanţe<br />

/I/ : 3 instanţe<br />

/L/ : 6 instanţe<br />

/M/ : 3 instanţe<br />

/N/ : 6 instanţe<br />

/O/ : 10 instanţe<br />

/U/ : 3 instanţe<br />

Total : 60 modele<br />

b) În faza de comparare s-au obţinut următoarele valori pentru distanţa pătratică E(a,b)<br />

(s-au prezentat doar valorile corespunzătoare primelor 9 cadre) :<br />

Tabelul 4.14. Compararea cadrelor cu modelele<br />

Per 2 Per 3 Per 4 Per 5 Per 6 Per 7 Per 8 Per 9 Per 10<br />

A 141.8 288.4 150.5 73.3 59.9 68.1 168.5 8034.4 3444.8<br />

A 173.7 334.2 188.2 97.7 73.7 79.4 230.4 9487.5 3966.5<br />

A 280.2 521.1 288.6 151.1 115.9 117.8 353.0 13643.1 5778.5<br />

A 265.1 566.4 299.8 146.1 135.6 164.6 399.8 18084.1 7620.7<br />

A 167.0 341.1 180.5 87.0 84.8 135.7 324.5 10683.3 4439.0<br />

A 221.1 361.3 206.0 112.3 75.4 71.1 243.0 8073.2 3327.2


151<br />

Cap. 4. Analiza semnalului vocal<br />

A 45.8 93.2 41.3 15.4 15.7 48.9 91.6 2463.0 1071.3<br />

A 25.1 65.2 42.6 27.5 20.7 28.5 36.2 2331.5 993.5<br />

A 31.6 70.9 49.0 32.7 19.5 19.6 32.0 2314.3 973.5<br />

E 575.1 297.4 559.1 887.6 420.3 198.1 119.9 232.6 113.0<br />

E 294.5 117.1 227.4 467.7 489.0 780.5 302.8 8.3 9.8<br />

E 175.6 96.2 140.7 254.5 315.4 708.6 329.4 148.7 109.6<br />

E 22.7 12.4 17.6 31.6 20.3 38.7 20.5 182.3 73.7<br />

E 2.3 5.9 0.8 3.6 7.8 45.8 26.1 358.4 159.3<br />

E 4.0 2.1 1.3 8.9 10.7 41.7 15.0 236.2 102.0<br />

E 42.3 44.6 30.2 25.6 5.7 3.1 20.6 721.2 288.4<br />

E 7.2 15.1 4.3 5.2 17.5 85.7 47.4 429.8 213.2<br />

E 14.4 28.6 8.4 1.7 9.9 65.8 58.1 759.5 342.8<br />

E 16.3 40.2 13.6 2.5 10.7 66.6 69.2 1155.5 522.7<br />

E 13.9 34.1 10.8 1.6 8.3 58.4 60.8 986.1 446.1<br />

E 52.0 32.7 31.1 53.6 77.1 238.1 117.4 149.5 92.9<br />

E 3.2 4.6 0.8 3.9 8.5 48.4 24.4 303.9 134.6<br />

E 65.1 114.7 71.2 41.4 20.1 16.7 60.9 2976.8 1228.8<br />

E 14.9 23.1 7.9 4.2 9.8 55.7 46.3 626.2 268.9<br />

E 7.2 19.5 4.8 0.6 4.3 40.1 34.8 675.9 302.3<br />

E 59.6 116.2 49.9 18.8 24.0 78.2 129.7 2677.3 1198.0<br />

E 32.2 67.6 26.4 8.8 15.6 69.0 87.5 1565.3 726.0<br />

E 141.4 260.4 133.0 63.8 52.7 76.1 209.9 6465.2 2757.5<br />

E 24.0 59.3 23.4 6.9 14.2 66.1 77.4 1729.3 779.6<br />

I 231.2 98.5 198.8 391.9 373.3 488.8 166.5 11.1 11.1<br />

I 184.5 100.3 204.9 395.2 419.1 520.5 141.3 36.8 38.3<br />

I 67.7 28.8 56.7 102.7 62.2 44.7 8.3 141.2 52.2<br />

L 169.1 83.7 171.0 302.6 219.5 214.4 74.3 56.5 27.8<br />

L 34.9 21.1 42.2 71.5 45.8 47.5 13.7 205.2 84.3<br />

L 309.9 146.7 284.4 479.4 268.3 169.0 73.4 107.3 48.2<br />

L 97.8 36.2 82.3 171.1 152.7 173.8 47.2 29.1 11.2<br />

L 61.2 36.7 54.0 104.4 169.1 480.9 168.5 83.1 74.0<br />

L 46.1 24.3 55.5 111.7 114.7 145.4 30.9 109.9 56.5<br />

M 111.1 59.5 129.0 250.4 236.5 227.3 50.7 110.9 64.1<br />

M 812.4 314.9 554.0 1128.1 1226.1 2164.0 821.9 8.5 33.4<br />

M 158.7 71.7 147.6 302.7 339.8 515.3 155.4 14.6 19.6<br />

N 231.3 79.1 149.3 312.5 301.2 454.6 181.3 7.2 1.2<br />

N 177.4 76.8 150.4 291.9 253.9 233.6 75.4 79.4 37.2<br />

N 77.5 32.4 74.7 157.8 164.1 219.6 55.8 37.0 21.2<br />

N 134.5 66.9 136.6 270.1 255.7 239.6 55.9 113.0 64.8<br />

N 44.1 22.3 39.3 66.9 35.8 23.1 1.8 244.5 93.6<br />

N 97.2 48.8 85.2 148.0 107.5 78.6 23.9 249.6 95.8<br />

O 23.1 53.9 21.0 8.9 26.1 118.8 99.9 1235.9 609.4<br />

O 23.4 52.2 18.8 4.7 14.6 79.5 85.3 1327.1 609.0<br />

O 17.2 29.0 10.2 5.0 8.5 51.8 54.3 604.8 280.3<br />

O 18.4 35.4 13.7 7.1 15.7 78.4 75.0 721.7 347.6<br />

O 33.7 68.7 28.2 10.6 16.2 68.2 94.1 1539.9 709.1<br />

O 34.6 71.1 30.1 11.2 13.6 53.6 84.3 1718.0 774.1<br />

O 31.8 65.4 26.5 9.6 14.6 63.5 87.3 1491.9 685.4<br />

O 63.8 124.1 55.3 22.6 22.4 56.1 106.3 2885.4 1298.5<br />

O 312.2 501.0 346.1 217.9 117.6 60.8 208.6 10500.7 4278.5<br />

O 66.5 147.1 66.3 27.2 36.9 105.6 155.5 3922.2 1780.5<br />

U 11.4 4.0 12.8 33.5 38.3 73.5 15.6 168.4 74.9<br />

U 85.0 95.4 90.2 85.9 33.0 4.1 18.8 1588.2 624.6<br />

U 53.4 30.9 47.3 72.7 33.9 15.3 2.7 339.8 127.9


c) În faza de etichetare s-a mers pe regăsirea modelului cu distanţa E(a,b) minimă.<br />

S-au obţinut următoarele asocieri (vezi figura 4.69):<br />

C7<br />

C8<br />

Figura 4.69. Etichetarea perioadelor din regiune<br />

152<br />

Cap. 4. Analiza semnalului vocal<br />

d) În faza de determinare a subregiunilor fonematice, se verifică dacă există secvenţe de cadre<br />

de lungime redusă (unul sau două cadre). Aceste secvenţe reprezintă :<br />

(1) cadre de tranziţie, dacă despart două secvenţe fonematice diferite, sau<br />

(2) artefacte, dacă sunt incluse într-o secvenţă corespunzătoare unei singure foneme.<br />

În exemplul nostru cadrele 14-17 sunt cadre de tranziţie, iar cadrul 23 e un artefact.<br />

De asemeni, aici trebuie ţinut cont de faptul că s-au considerat cadre de lungime egală<br />

cu două perioade. Astfel, cadrul 7, compus din perioadele 7 şi 8, este asociat cu fonema /E/, iar<br />

cadrul 8, compus din perioadele 8 şi 9, cu fonema /N/. Ca urmare va trebui luat în considerare un<br />

cadru intermediar, de tranziţie, la nivelul perioadei 8. Dacă însă există o succesiune de tip<br />

secvenţă fonematică – cadru de tranziţie, atunci nu se mai ia în considerare cadrul intermediar.<br />

În urma procesului de grupare a fonemelor şi extindere a secvenţelor fonematice, s-au<br />

obţinut următoarele subregiuni (cadrele figurate cu galben sunt cadre de tranziţie):<br />

t t<br />

Figura 4.70. Determinarea subregiunilor fonematice prin metoda modelării


153<br />

Cap. 4. Analiza semnalului vocal<br />

4.8.5. Aplicaţii ale segmentării fonematice în realizarea bazelor de date<br />

acustice<br />

Metodele de segmentare fonematică descrise anterior au fost proiectate în vederea<br />

adnotării şi segmentării corpusului vorbit pentru realizarea bazei de date cu unităţi acustice. Baza<br />

de date vocală este constituită din acel set de sunete elementare prin concatenarea cărora se poate<br />

genera un semnal sonor corespunzător unui text oarecare.<br />

Aceste unităţi de bază pot fi alese dintre: cuvinte, propoziţii, morfeme, silabe, foneme,<br />

difoneme etc., în funcţie de cerinţele aplicaţiei. Folosirea cuvintelor şi propoziţiilor (înregistrarea<br />

lor ca forme de undă, inclusiv intonaţie, articulare etc.) duce la obţinerea unei vorbiri de bună<br />

calitate, dar pentru un domeniu lingvistic restrâns.<br />

Autorul a ales pentru implementare varianta folosirii silabelor ca unităţi de bază. Această<br />

alegere are avantajul utilizării unor segmente de vorbire suficient de mari ca să păstreze<br />

elmentele de prozodie intrasegmentală (cum ar fi accentele), dar suficient de mici ca să asigure o<br />

dimensiune rezonabilă a bazei de date. Un alt avantaj al folosirii silabelor este faptul că prin<br />

concatenare nu rezultă artefacte acustice, cum este cazul difonemelor de exemplu, caz în care<br />

este necesar să se realizeze un proces de interpolare în punctele de concatenare.<br />

Corpusul vorbit folosit pentru extragerea unităţilor acustice a fost alcătuit atât din<br />

propoziţii obişnuite şi cuvinte care conţin grupurile fonematice dorite (silabele în cazul nostru),<br />

precum şi din cuvinte artificiale folosite pentru a evidenţia mai bine un anumit grup de foneme.<br />

Realizarea bazei de date presupune separarea unităţilor acustice din semnalul vocal<br />

printr-o metodă manuală sau automată, şi apoi stocarea acestora în structura ierarhică a bazei de<br />

date. Aşa cum se va prezenta în capitolul dedicat metodei proprii de sinteză, autorul a folosit o<br />

metodă semiautomată, în care unităţile acustice sunt determinate pe baza aplicării metodei de<br />

segmentare fonematică asupra unui corpus paralel text-voce.<br />

Un exemplu de extragere a unităţilor acustice din cuvinte artificiale este ilustrat în figura<br />

următoare:<br />

T A T I T A T A D E T A<br />

BD vocală<br />

Figura 4.71. Extragerea unităţilor acustice din semnalul vocal


154<br />

Cap. 4. Analiza semnalului vocal<br />

4.8.6. Concluzii privitoare la contribuţiile autorului în segmentarea<br />

fonematică a semnalului vocal<br />

Metodele de segmentare fonematică a semnalului vocal sunt foarte utile în procesul de<br />

creare a bazei de date acustice, când avem de-a face cu un corpus de dimensiuni mari care<br />

trebuie segmentat şi adnotat. Cu cât aceste metode sunt mai automatizate, cu atât munca depusă<br />

de operatorul uman este mult uşurată. Metodele propuse de autor vin în întâmpinarea acestui<br />

deziderat şi aduc o contribuţie importantă în acest domeniu al analizei şi prelucrării corpusului<br />

vocal.<br />

O altă aplicaţie foarte importantă a acestor metode de detectare a unităţilor fonematice<br />

din semnalul vocal este în domeniul recunoaşterii vorbirii. Dezvoltarea şi aprofundarea<br />

metodelor de segmentare fonematică va duce implicit şi la soluţionarea problemei recunoaşterii,<br />

arătând astfel domeniul vast de aplicabilitate şi operabilitate al acestor metode.<br />

S-au propus în acest capitol trei metode pentru segmentarea fonematică, metode ce pot fi<br />

utilizate individual sau coroborat. Prima metodă detectează grupurile de foneme din semnalul<br />

vocal pe baza textului cunoscut de la intrare, folosind segmentarea prealabilă în regiuni. A doua<br />

metodă realizează împărţirea regiunilor în subregiuni fonematice, calculând tranziţiile dintre<br />

cadrele fiecărei regiuni. A treia metodă detectează separat fonemele din regiunile<br />

multifonematice şi funcţionează pe bază de model.<br />

Avantajul acestor metode derivă din modul de abordare sincron cu frecvenţa, ceea ce le<br />

dă o notă de precizie în plus faţă de alte abordări.<br />

În acestă fază s-au realizat:<br />

a) o metodă de segmentare în grupuri de foneme a semnalului vocal pe baza textului cunoscut de<br />

la intrare; pentru aceasta s-a proiectat:<br />

- un set de reguli care impun anumite constrângeri de formă şi durată pentru fiecare grup<br />

fonematic;<br />

- un algoritm de asociere între un grup fonematic şi o secvenţă de regiuni;<br />

b) o metodă ce realizează împărţirea regiunilor în subregiuni fonematice, calculând tranziţiile<br />

dintre cadrele fiecărei regiuni; pentru aceasta s-a proiectat:<br />

- un mod de calcul a distanţei minime pătratice dintre două cadre de semnal, distanţă ce<br />

se aplică vectorilor de caracteristici bazaţi pe coeficienţi Fourier;<br />

- un algoritm de detectare a frontierelor de subregiuni pe baza tranziţiilor bruşte dintre<br />

cadre;<br />

c) o metodă ce separă fonemele din regiunile multifonematice, funcţionând pe bază de model;<br />

pentru aceasta s-au proiectat 4 algoritmi şi metode:<br />

- o metodă de modelare semiautomată a fonemelor;<br />

- un algoritm de comparare a vectorilor regiunii ţintă cu modelul;<br />

- un algoritm de regăsire a modelului fonematic şi de etichetare a regiunilor;<br />

- un algoritm de grupare a fonemelor şi segmentare în subregiuni.


5. Sinteza de voce<br />

5.1. Modelul general al sintezei vorbirii<br />

Sinteza vorbirii presupune generarea automată a vorbirii de către un sistem automat. Din<br />

punct de vedere al realizării fizice, sinteza de voce poate fi implementată atât pe un calculator cât<br />

şi pe diverse dispozitive electronice sau de telecomunicaţii prin componente dedicate (circuite<br />

integrate, circuite programabile, microcontroler, etc.).<br />

Există două concepte de bază ce definesc sistemele de sinteză a vocii: conversia textrostire<br />

(sistemele text-to-speech), şi sinteza propriu-zisă a vorbirii. Sistemele text-to-speech<br />

(figura 5.1) pornesc de la un text de sintetizat, parcurg o fază de analiză lexicală în care sunt<br />

determinate unităţile lexicale componente (prop oziţii, cuvinte, silabe, foneme), apoi pe baza<br />

acestor unităţi lexicale vor fi generaţi anumiţi parametri acustici care vor fi utilizaţi în generarea<br />

vorbirii [Bur96].<br />

Analiză<br />

Generare<br />

Text Rostire<br />

lexicală<br />

parametri<br />

Figura 5.1. Sistem de sinteză a vorbirii pornind de la text<br />

Ultima etapă procesuală din cadrul sistemului text-to-speech, şi anume generarea rostirii<br />

pe baza parametrilor acustici, reprezintă sinteza de voce propriu-zisă. Sistemele sintetizatoare de<br />

voce diferă deci de sistemele text-to-speech prin faptul că primele utilizează la intrare nu direct<br />

textul de sintetizat, ci parametrii acustici pe baza cărora va fi posibilă generarea rostirii.<br />

Există două faze principale în cadrul procesului de sinteză a vorbirii:<br />

1. Faza de analiză, ce presupune înregistrarea, codificarea şi parametrizarea unor unităţi<br />

acustice într-o bază de date vocală. Unităţile acustice pe baza cărora se va realiza sinteza unui<br />

text sau a unei rostiri se preiau în general dintr-o rostire preliminară a unui vorbitor.<br />

2. Faza de sinteză reprezintă sinteza propriu-zisă a vorbirii: se porneşte de la un text care<br />

se prelucrează şi apoi se generează semnalul vocal pe baza cunoştinţelor înmagazinate a-priori în<br />

baza de date vocală.<br />

Aceste două faze din cadrul procesului de sinteză a vorbirii sunt ilustrate în figurile<br />

următoare. Prima fază – faza de analiză – este ilustrată în figura 5.2:<br />

Rostire<br />

Segmentare<br />

Unităţi<br />

acustice<br />

Codificare -<br />

Parametrizare<br />

Figura 5.2. Faza de analiză din cadrul sintezei vorbirii<br />

155<br />

Unităţi acustice<br />

codificate sau<br />

parametrizate<br />

Înregistrare<br />

date<br />

Baza de<br />

date vocală


156<br />

Cap. 5. Sinteza de voce<br />

Aşa cum se observă din figura 5.2, faza de analiză presupune ca dintr-o rostire<br />

preliminară a unui vorbitor să se determine anumite unităţi acustice ce vor fi folosite ulterior în<br />

procesul de sinteză. Unităţile acustice se generează în cadrul unui proces de segmentare ce<br />

presupune separarea rostirii iniţiale în componente: cuvinte, silabe, foneme sau difoneme<br />

(jumătăţi de foneme). Segmentarea rostirii este realizată în general printr-un proces manual sau<br />

semiautomat [Bur96].<br />

Unităţile acustice obţinute în urma procesului de segmentare vor fi apoi codificate şi<br />

parametrizate în vederea stocării pe suport magnetic digital într-o bază de date. Codificarea este<br />

necesară pentru a reduce dimensiunea înregistrărilor din baza de date, ţinând cont că unităţile<br />

acustice iniţiale conţin eşantioane vocale digitizate reprezentând un mare volum de informaţie.<br />

Suplimentar, unităţile acustice vor fi parametrizate în vederea reconstrucţiei ulterioare a<br />

semnalului vocal. În final, unităţile acustice codificare şi parametrii obţinuţi se vor introduce în<br />

baza de date vocală.<br />

Urmează faza de sinteză propriu-zisă pornind de la un text de intrare:<br />

Text<br />

Analiză<br />

lingvistică<br />

Unităţi<br />

lexicale<br />

Figura 5.3. Faza de sinteză din cadrul sintezei vorbirii<br />

În cadrul acestei faze, printr-un proces de analiză lingvistică, textul de sintetizat este<br />

descompus mai întâi în unităţi lexicale de tip propoziţie, cuvânt, fonemă. Pentru fiecare unitate<br />

lexicală se caută apoi punerea în corespondenţă cu unităţile acustice stocate în baza de date<br />

vocală. După găsirea celei mai bune potriviri cu o unitate acustică, se regăsesc parametrii<br />

acustici corespunzători stocaţi în baza de date. Pe baza unităţilor acustice parametrizate se<br />

generează formele de undă necesare printr-un proces de sinteză de semnal vocal. Rostirea<br />

propriu-zisă se produce prin concatenarea formelor de undă ce vor fi trimise apoi către un<br />

dispozitiv fizic generator de semnal.<br />

Baza de<br />

date vocală<br />

Regăsire<br />

parametrii<br />

Unităţi acustice<br />

parametrizate<br />

Sinteza<br />

semnalului<br />

vocal<br />

Rostire<br />

Generare forme<br />

de undă


5.2. Sistemul de sinteză text-to-speech<br />

157<br />

Cap. 5. Sinteza de voce<br />

5.2.1. Caracteristicile unui sistem text-to-speech. Metode de bază folosite<br />

Sistemul text-to-speech este sistemul care asigură realizarea unui proces complet de<br />

conversie a unui text în vorbire continuă. În cadrul acestui proces sunt prezente două faze<br />

distincte: faza de analiză lingvistică şi faza de generare a parametrilor acustici, aşa cum se<br />

prezintă în figură:<br />

Text<br />

Tex<br />

tto-<br />

Spe<br />

Analiză<br />

lingvistică<br />

Generare<br />

parametrii<br />

acustici<br />

Figura 5.4. Sistemul text-to-speech<br />

Analiza lingvistică are ca scop determinarea unităţilor lingvistice din cadrul textului, cum<br />

ar fi: propoziţii, ech cuvinte, silabe, foneme. Generarea parametrilor acustici urmăreşte identificarea<br />

şi extragerea dintr-o Text bază de date vocală a parametrilor corespunzători unităţilor lingvistice. Pe<br />

baza acestor parametrii, un sintetizor vocal va genera rostirea propriu-zisă.<br />

Există trei metode de bază în sinteza text-to-speech: metoda bazată pe concatenarea<br />

formelor de undă, metoda bazată pe analiză-sinteză, şi metoda bazată pe reguli [Bur97].<br />

1. Metoda directă, bazată pe concatenarea formelor de undă, este cea mai simplă şi<br />

presupune înregistrarea în baza de date vocală a sunetelor înregistrate ca atare (codificate sau<br />

nu). Rostirea este generată prin alăturarea înregistrărilor ce corespund unităţilor lingvistice al<br />

textului de sintetizat. Metoda este schematizată în figura 5.5.<br />

Forme de<br />

undă<br />

Codificare<br />

Memorare<br />

Compunerea<br />

formelor de<br />

undă<br />

Rostire<br />

Figura 5.5. Metoda bazată pe concatenarea formelor de undă [Bur97]<br />

Rostire<br />

Metoda directă are avantajul unei calităţi ridicate a vorbirii sintetizate, având rata<br />

debitului de date de 64-128 kbit/s (fără codificare). Calitatea rostirii depinde de calitatea<br />

unităţilor acustice stocate în baza de date vocală, precum şi de modul de conectare al unităţilor<br />

acustice. În schimb este dificilă schimbarea trăsăturilor prozodice ale vorbirii: ritm, intonaţie,<br />

accent şi timbru. Pentru reducerea dimensiunilor bazei de date, de obicei formele de undă se<br />

codifică folosind metodele PCM sau ADPCM, rezultând astfel o rată de date de 16-32 kbit/s<br />

2. În cadrul metodei bazată pe analiză-sinteză, formele de undă preînregistrate sunt<br />

transformate în secvenţe de parametrii care se memorează în baza de date vocală. Metoda<br />

presupune două faze distincte: faza de analiză, în care sunt generaţi parametrii din formele de<br />

undă iniţiale, şi faza de sinteză, în care se generează rostirea prin concatenarea secvenţelor de<br />

parametrii şi trimiterea secvenţei rezultate către sintetizatorul de voce.


158<br />

Cap. 5. Sinteza de voce<br />

Metodele clasice care ilustrează această categorie sunt metoda formantică şi metoda<br />

predicţiei liniare LPC.<br />

În primă fază, se înregistrează unităţile acustice dintr-o rostire preliminară. Apoi se va<br />

genera secvenţa de parametri corespunzătoare unităţilor acustice. În cadrul metodei formantice,<br />

secvenţa de parametri este constituită pe baza frecvenţelor şi lăţimilor de bandă ale formanţilor.<br />

Metoda LPC furnizează ca secvenţă de parametri de sinteză un set de coeficienţi de predicţie,<br />

care aproximează forma spectrală a undei sonore. În a treia fază se concatenează secvenţele de<br />

parametri şi se generează rostirea propriu-zisă [Bur97].<br />

Metoda este ilustrată în figura 5.6.<br />

Secvenţă de<br />

parametri<br />

Codificare<br />

Memorare<br />

Figura 5.6. Metoda bazată pe analiză-sinteză [Bur97]<br />

Analiza se bazează de obicei pe un model de producţie vocală, care este specific metodei<br />

folosite. Astfel, unităţile sonore preînregistrate sunt analizate în conformitate cu acest model de<br />

producţie vocală, se parametrizează şi se înregistrează în baza de date secvenţa de parametri<br />

corespunzătoare unităţilor acustice. Sinteza va rezulta în urma compunerii secvenţelor de<br />

parametri caracteristice fiecărei unităţi.<br />

Metoda formantică utilizează ca model de producţie vocală o secvenţă de circuite de<br />

rezonanţă acordate pe frecvenţele formanţilor. Metoda LPC foloseşte ca model un filtru liniar ce<br />

are la intrare un semnal de excitaţie sonor sau nesonor.<br />

Rata debitului de date în cazul metodei bazată pe analiză-sinteză este mult mai redusă<br />

datorită avantajului parametrizării, şi anume de 2,5-9 kbit/s.<br />

3. Metoda bazată pe reguli are la intrare o secvenţă de litere sau simboluri fonematice,<br />

un set de parametri care modelează trăsăturile prozodice ale secvenţei (cum ar fi frecvenţa<br />

fundamentală, amplitudinea, durata), şi un set de reguli de sinteză fonetice şi lingvistice care<br />

specifică modalităţile de recompunere a unităţilor acustice pentru a genera rostirea [Bur97].<br />

Metoda este ilustrată în figura 5.7.<br />

Secvenţă de<br />

simboluri<br />

Trăsături<br />

prozodice<br />

Set de<br />

reguli<br />

Codificare<br />

Memorare<br />

Codificare<br />

Memorare<br />

Codificare<br />

Memorare<br />

Figura 5.7. Metoda bazată pe reguli [Bur97]<br />

Compunerea<br />

secvenţelor de<br />

parametri<br />

Generare<br />

parametri<br />

Rostire<br />

Rostire


159<br />

Cap. 5. Sinteza de voce<br />

În baza de date se memorează parametrii caracteristici pentru unităţile elementare cu care<br />

se lucrează (foneme, difoneme, silabe). În faza de sinteză, unităţile se vor concatena pe baza unor<br />

reguli de concatenare. Trăsăturile prozodice (amplitudine, tonalitate, durată) se controlează<br />

printr-un set de reguli prozodice ce se aplică pentru fiecare unitate în parte.<br />

Calitatea sintezei depinde în acest caz atât de calitatea unităţilor elementare înregistrate în<br />

baza de date, cât şi de modul de realizare şi performanţa regulilor prozodice şi de concatenare<br />

[Bur97].<br />

5.2.2. Etape în sinteza de voce pornind de la text<br />

Etapele procesuale ale sintezei text-to-speech se împart în două categorii de bază<br />

[Bur97]:<br />

1) Analiza textului de la intrare în scopul obţinerii unei reprezentări fonetice şi prozodice<br />

a textului;<br />

2) Transformarea reprezentării fonetice-prozodice în semnal vocal, pe baza folosirii unor<br />

reguli de sinteză.<br />

Analiza textului cuprinde: preprocesarea lingvistică, analiza sintactică şi lexicală,<br />

transcrierea fonetică şi determinarea prozodiei.<br />

Sinteza presupune generarea secvenţei de parametri corespunzătoare textului şi sinteza<br />

propriu-zisă a vorbirii.<br />

Preprocesarea lingvistică este prima etapă în analiza textului de la intrare, în care se<br />

urmăreşte aducerea textului la o formă normalizată. Aici se refac abrevierile (de exemplu „Dr.”<br />

devine „doctor”), se transformă numerele care apar ca cifre în numere exprimate literar („1000”<br />

devine „o mie”), şi de asemenea tot în acestă fază se detectează terminatorii de propoziţie, care<br />

vor da primele informaţii despre tipul propoziţiei (` . ` ` ? ` `! ` , ce corespund cu o propoziţie<br />

afirmativă, interogativă, respectiv imperativă).<br />

Analiza sintactică este necesară pentru a aduce textul la o formă corectă din punct de<br />

vedere gramatical, ştiut fiind faptul că orice greşeală de scriere a unui cuvânt îl poate face greu<br />

inteligibil în urma sintezei vocale. Astfel, cuvintele sunt confruntate cu modul corect de scriere<br />

aşa cum apare de exemplu într-un dicţionar, şi de asemenea, în cazul limbii române, se verifică şi<br />

corectitudinea inserării diacriticelor (`ă` `î` `ş` `ţ`).<br />

Urmează etapa de determinare a unităţilor lexicale, efectuată prin intermediul unui<br />

parser sau analizor lexical. Aici se determină unităţile textuale dorite, cum ar fi: propoziţii,<br />

cuvinte, silabe, foneme. Dacă de exemplu se doreşte regăsirea silabelor din cadrul cuvintelor,<br />

analizorul va trebui să fie ghidat de un set de reguli sintactice şi de despărţire a cuvintelor în<br />

silabe, reguli specifice limbii pentru care se va realiza sinteza.<br />

Etapa de transcriere fonetică are ca scop realizarea unei transcrieri standardizate a<br />

fonemelor din text (grafeme), folosind un set de simboluri fonetice standardizate ( de exemplu<br />

grupul `che` va avea transcrierea fonetică [ce], iar `ce` va avea transcrierea fonetică [c~e]; astfel<br />

sintetizatorul va şti că va trebui să folosească seturi diferite de parametrii pentru a genera două<br />

tipuri distincte de rostire).


160<br />

Cap. 5. Sinteza de voce<br />

Urmează apoi etapa de determinare a prozodiei pentru segmentele vocale analizate. Pe<br />

baza unor reguli prozodice specifice limbii, se va determina accentul, intonaţia şi ritmul corect<br />

pentru fiecare unitate fonematică. Regulile prozodice se aplică atât la nivelul suprasegmental al<br />

propoziţiilor, realizându-se un contur prozodic al propoziţiei, cât şi la nivel segmental, în<br />

interiorul cuvintelor.<br />

Regulile aplicate dau pentru fiecare unitate de sintetizat o anumită corecţie la nivelul<br />

parametrilor: frecvenţă fundamentală, amplitudine şi durată, în funcţie de tipul popoziţiei<br />

determinat în etapa de procesare lingvistică, de locul cuvântului în propoziţie, precum şi de locul<br />

silabei sau fonemei în cadrul cuvântului.<br />

Pe lângă prozodia lingvistică, care se determină pe baza analizei lingvistice a textului, în<br />

ultimii ani se ţine cont tot mai mult şi de prozodia emoţională, pentru a simula stările emoţionale<br />

pe care le poate avea un vorbitor (bucurie, teamă, linişte, etc.).<br />

După aceste etape de analiză a textului, urmează etapele încadrate în faza de sinteză.<br />

Prima dintre ele este etapa de generare a parametrilor acustici pentru sinteză. Pe baza<br />

simbolurilor fonematice care provin din etapa de transcriere fonetică şi a modificărilor prozodice<br />

determinate pe baza regulilor privind intonaţia şi ritmul, se generează secvenţa de parametrii<br />

corespunzătoare textului de sintetizat.<br />

Text<br />

Simboluri fonetice<br />

( a b c ...)<br />

Prozodie Cunoştinţe<br />

Secvenţă de parametri<br />

( a1 a2 a3 ...)<br />

Figura 5.8. Etapa de generare a parmetrilor acustici [Bur97]<br />

Baza de<br />

date<br />

vocală<br />

În această etapă se folosesc cunoştinţele înmagazinate în baza de date vocală, de unde se<br />

regăsesc parametrii de bază pentru fiecare unitate fonetică. Parametrii de bază se vor modifica în<br />

urma alterărilor prozodice, şi apoi se vor concatena pentru a genera secvenţa parametrică pentru<br />

întregul context propoziţional.<br />

În continuare urmează faza de sinteză propriu-zisă, în care secvenţele de parametri se<br />

transformă în forme de undă care pot fi redate sonor prin intermediul unui dispozitiv audio.<br />

Constituirea formelor de undă din secvenţa de parametri se realizează pe baza unor reguli de<br />

sinteză bine determinate.


Etapele procesuale ale sintezei TTS sunt ilustrate în figura 5.9:<br />

Text<br />

Preprocesare lingvistică Text în formă normalizată<br />

Analiză sintactică Text corect gramatical<br />

Determinare unităţi<br />

lexicale<br />

Figura 5.9. Etapele procesuale ale sintezei TTS [Bur97]<br />

161<br />

Propoziţii, cuvinte, foneme<br />

Transcriere fonetică Simboluri fonetice<br />

Determinarea prozodiei Parametrii prozodici<br />

Generare parametri<br />

acustici<br />

Parametrii de sinteză<br />

Sinteza Forme de undă<br />

Rostire<br />

Cap. 5. Sinteza de voce


6. Metode de sinteză de voce<br />

6.1. Clasificarea metodelor de sinteză de voce<br />

Sinteza vorbirii poate fi realizată prin mai multe metode, care diferă în funcţie de nivelul<br />

abordării, modelul de producere a vorbirii şi domeniul de analiză şi prelucrare a semnalului<br />

vocal.<br />

A. În funcţie de nivelul abordării, metodele de sinteză se grupează în două categorii:<br />

metode care abordează sinteza de nivel jos, respectiv sinteza de nivel înalt.<br />

Metodele care abordează sinteza de nivel jos pornesc de la specificarea unor parametri<br />

acustici şi generează vorbirea sintetică prin re-crearea formei de undă a semnalului vocal<br />

[Bur96].<br />

Această categorie cuprinde:<br />

- metode bazate pe codificarea şi recompunerea vorbirii, metode implementate în sistemele<br />

de tip vocoder;<br />

- metode de sinteză formantică, ce utilizează specificarea parametrilor formantici din<br />

spectrul acustic pentru generarea vorbirii;<br />

- metode de sinteză bazate pe predicţie liniară, ce urmăresc prezicerea eşantioanelor de<br />

semnal pe baza eşantioanelor precedente;<br />

- metode de sinteză prin concatenarea formelor de undă, ce implică preînregistrarea şi apoi<br />

recompunerea formelor de undă corespunzătoare unităţilor acustice;<br />

- sinteza articulativă, ce implică utilizarea unor parametri generaţi pe baza unui model<br />

articulator de producere a vorbirii.<br />

Sintetizatoarele de vorbire care implementează metodele de nivel jos generează semnalul<br />

vocal de la ieşirea unui sistem de sinteză vocală. Exemple de astfel de sintetizatoare sunt:<br />

sistemul Holmes de sinteză formantică cu rezonatori în paralel, sistemul Klatt ce foloseşte o<br />

metodă formantică hibridă serie-paralel, sistemul PSOLA bazat pe concatenarea formelor de<br />

undă. Toate aceste sisteme nu pot genera semnal vocal cât timp ele nu sunt controlate de către un<br />

software de sinteză de nivel înalt.<br />

Metodele de sinteză de nivel înalt sunt de tipul text-to-speech sau concept-to-speech.<br />

Sistemele text-to-speech generează vorbirea pe baza textului de la intrare, iar sistemele conceptto-speech<br />

sunt sisteme de dialog vocal în care vorbirea se generează pe baza unei descrieri<br />

lingvistice ce rezultă în urma dialogului cu utilizatorul. Caracteristic acestor metode este faptul<br />

că ele includ o abordare lingvistică, prin aceasta diferenţiându-se de metodele de nivel jos<br />

[Bur96].<br />

Problemele specifice abordate de către aceste metode de nivel înalt sunt: conversia<br />

ortografie-foneme, descompunerea cuvintelor în morfeme, crearea de dicţionare cu informaţie<br />

sintactică şi fonetică, crearea regulilor de pronunţie, determinarea prozodiei (intonaţiei) din<br />

cadrul elementelor fonetice – propoziţii şi cuvinte.<br />

Sintetizatoarele de nivel înalt sunt responsabile pentru generarea intrării către<br />

sintetizatoarele de nivel jos. Intrarea într-un sistem de sinteză de nivel înalt este constituită din<br />

textul de sintetizat, în timp ce ieşirea furnizează parametrii acustici necesari sintezei vocale.<br />

162


163<br />

Cap. 6. Metode de sinteză de voce<br />

Exemple de sintetizatore de nivel înalt sunt: INFOVOX, DECTalk, SPRUCE. Primele<br />

două sunt conectate la generatoare de semnal vocal dedicate, pe când al treilea poate controla<br />

orice tip de sintetizator de nivel jos.<br />

B. În funcţie de domeniul de analiză abordat, metodele de sinteză a vorbirii se împart<br />

în două categorii: metode de sinteză în domeniul timp şi metode de sinteză în domeniul frecvenţă<br />

[Bur96].<br />

Metodele de sinteză în domeniul timp realizează concatenarea directă a formelor de undă<br />

stocate în prealabil în baza de date vocală. Cele mai simple sintetizatoare bazate pe aceste<br />

metode nu utilizează parametrizarea unităţilor acustice, utilizând direct forma de undă a<br />

semnalului în domeniul timp.<br />

Modelul general al acestui tip de sinteză este ilustrat în figura 6.1.<br />

Rostire<br />

CODIFICARE<br />

Text<br />

SINTEZA<br />

Unităţi<br />

acustice<br />

Unităţi<br />

lexicale<br />

Formă de undă<br />

codificată<br />

Secvenţe de<br />

forme de undă<br />

Figura 6.1. Modelul sintezei în domeniul timp<br />

Baza de date<br />

vocală<br />

Rostire<br />

În cadrul acestui model, într-o primă fază de codificare şi înregistrare a formelor de undă,<br />

unităţile acustice de tipul silabelor, fonemelor, demifonemelor, se înregistrează dintr-o rostire<br />

preliminară a unui vorbitor. Ele se vor înregistra ca forme de undă cu o anumită codificare (de<br />

exemplu PCM) într-o bază de date vocală.<br />

În faza de sinteză propriu-zisă, după separarea unităţilor lexicale din textul de sintetizat<br />

(unităţi lexicale care trebuie să fie de acelaşi tip cu unităţile acustice preînregistrate), se va<br />

urmări punerea în corespondenţă cu unităţile acustice din baza de date vocală şi reconstituirea<br />

secvenţelor de undă asociate. Apoi printr-un proces de concatenare a secvenţelor de undă se va<br />

genera rostirea propriu-zisă.<br />

Avantajul major al acestor metode de sinteză prin concatenare în domeniul timp este<br />

reprezentat de calitatea aproape naturală a vocii sintetizate. Dintre dezavantaje se pot aminti o<br />

cantitate importantă de resurse folosite în procesul memorării formelor de undă, dar şi<br />

dificultăţile legate de modificarea prozodiei vorbirii.


164<br />

Cap. 6. Metode de sinteză de voce<br />

Metodele de sinteză în domeniul frecvenţă realizează sinteza vocală pe baza unor<br />

parametri acustici generaţi în urma aproximării unor caracteristici spectrale din domeniul<br />

frecvenţă. Astfel, pentru a realiza sinteza unui text, mai întâi se generează parametrii acustici<br />

corespunzători rostirii, şi apoi sunt generate formele de undă ale semnalului vocal [Bur96].<br />

Modelul general al sintezei vorbirii în domeniul frecvenţă este ilustrat în figura 6.2:<br />

Rostire<br />

ANALIZA<br />

Text<br />

SINTEZA<br />

Unităţi<br />

acustice<br />

Unităţi<br />

lexicale<br />

Generare<br />

parametri<br />

Secvenţe de<br />

parametri<br />

Figura 6.2. Modelul sintezei în domeniul frecvenţă<br />

Baza de date<br />

parametrizată<br />

Generare forme<br />

de undă<br />

Rostire<br />

În faza de analiză a sintezei din domeniul frecvenţă, unităţile acustice separate din<br />

rostirea preliminară sunt parametrizate în funcţie de caracteristicile spectrale ale semnalului<br />

vocal. Parametrii sunt apoi înregistraţi în baza de date şi indexaţi în scopul unei regăsiri facile.<br />

În faza de sinteză, unităţile lexicale (cuvinte, silabe, foneme) din textul de sintetizat sunt<br />

transformate în secvenţe de parametri regăsiţi din baza de date parametrizată. Parametrii acustici<br />

sunt ajustaţi în funcţie de prozodia cerută, iar pe baza lor vor fi generate formele de undă<br />

corespondente.<br />

Avantajul metodelor bazate pe sinteza în domeniul frecvenţă constă în primul rând din<br />

posibilitatea realizării facile a aspectelor de prozodie (ritm, accent, intonaţie) prin calculul şi<br />

generarea corespunzătoare a parametrilor acustici şi spectrali. Un alt avantaj rezultă din faptul că<br />

în baza de date se păstrează nu formele de undă, ca în cazul metodelor din domeniul timp, ci<br />

parametrii acustici, ceea ce duce la o mare economie de resurse de memorie şi computaţionale.<br />

Ca dezavantaj se poate aminti faptul că parametrizarea rostirii de la intrare în faza de<br />

analiză duce la aproximarea semnalului vocal şi ca urmare în faza de reconstrucţie a semnalului<br />

de la ieşire vorbirea rezultată va avea o calitate ‚sintetică’, depărtându-se de vorbirea naturală.<br />

În continuare se prezintă câteva metode uzuale ce generează rezultate bune în sinteză, atât<br />

pentru domeniul frecvenţă cât şi pentru domeniul timp.


6.2. Metode de sinteză în domeniul frecvenţă<br />

165<br />

Cap. 6. Metode de sinteză de voce<br />

Ca exemple de metode ce utilizează analiza semnalului vocal în domeniul frecvenţă<br />

putem aminti:<br />

- metoda de sinteză prin predicţie liniară, ce utilizează pentru generarea semnalului vocal<br />

o serie de parametri numiţi coeficienţi de predicţie;<br />

- metoda de sinteză formantică, ce utilizează informaţiile despre formanţii spectrali în<br />

procesul generării unităţilor acustice.<br />

6.2.1. Sinteza bazată pe predicţie liniară<br />

Termenul de predicţie liniară a fost introdus prima dată de către N. Wiener în 1949<br />

([Wie49], [Har01]), această tehnică fiind folosită într-o gamă largă de aplicaţii. În domeniul<br />

cercetării semnalului vocal, această tehnică a fost folosită prima dată de către Itakura şi Saito (în<br />

1968) şi Atal şi Schroeder (în 1968), pentru analiza şi sinteza semnalului vocal [Ave04].<br />

Importanţa predicţiei liniare constă în faptul că sursa de semnal vocal şi caracteristicile ei<br />

spectrale pot fi reprezentate în mod exact şi eficient de un număr mic de parametri. În plus, aceşti<br />

parametri se obţin prin calcule relativ simple [Tod05].<br />

La început această tehnică a fost dezvoltată cu scopul de a coda semnalul vocal, iar mai<br />

apoi a devenit foarte importantă în analiza şi sinteza acestuia [Hu93].<br />

Această metodă de sinteză este cunoscută sub denumirea de sinteză LPC ( Linear<br />

Predictive Coding synthesis) şi face parte din categoria sistemelor de analiză-sinteză a<br />

semnalului vocal (analysis by synthesis systems).<br />

Într-un sistem de analiză-sinteză, unda vocală este sintetizată folosind o sursă de excitaţie<br />

şi parametri de articulaţie, care au fost în prealabil extraşi cu ajutorul unui circuit care modelează<br />

mecanismul de producere al vorbirii. Modelul sistemului fonator pe care se bazează metoda<br />

analizei şi sintezei prin predicţie liniară este modelul ‘sursă-filtru’, model prezentat în figura<br />

următoare:<br />

F0<br />

Sursă<br />

G<br />

Filtru variabil<br />

H(z)<br />

Parametrii<br />

tractului vocal<br />

Figura 6.3. Modelul producerii vorbirii prin metoda LPC<br />

Modelul LPC al producerii vorbirii este generat în concordanţă cu producerea sunetului<br />

de către sistemul fonator uman. Astfel, energia sonoră de bază este furnizată de către un semnal<br />

de excitaţie, care poate să fie periodic sau neperiodic, în funcţie de sunetul produs (tren de<br />

impulsuri periodice pentru cazul vocalelor sau zgomot alb în cazul consoanelor). Pentru un<br />

semnal de excitaţie periodic, se furnizează frecvenţa fundamentală F0 ca parametru de intrare în<br />

generator.<br />

s(n)


166<br />

Cap. 6. Metode de sinteză de voce<br />

Semnalul de excitaţie este apoi amplificat cu un factor G (numit câştigul modelului) şi<br />

trecut printr-un filtru variabil având funcţia de transfer H(z). Filtrul variabil modelează<br />

comportamentul tractului vocal din cadrul sistemului fonator, şi va produce la ieşire semnalul<br />

scontat s(n). Filtrul este controlat pe baza unor parametri care sunt coeficienţii LPC {ak}.<br />

Parametrii sunt calculaţi pentru fiecare segment de vorbire de aproximativ 10-30 ms.<br />

Funcţia de transfer a filtrului are expresia [Tod05]:<br />

G<br />

H ( z)<br />

p<br />

1<br />

k 1<br />

a<br />

k<br />

z<br />

k<br />

G<br />

<br />

A(<br />

z)<br />

unde: G este câştigul filtrului, iar<br />

ak sunt coeficienţii de predicţie LPC.<br />

(6.1)<br />

Câştigul se poate determina pe baza erorii de predicţie dintre semnalul calculat cu<br />

ajutorul filtrului recursiv şi semnalul original. Pentru calculul parametrilor ak există mai multe<br />

metode, dintre care cele mai cunoscute sunt metoda autocorelaţiei (prin algoritmul Levinson -<br />

Durbin) şi metoda covarianţei.<br />

Astfel, metoda de sinteză LPC are ca obiectiv estimarea parametrilor unui sistem<br />

susceptibil de a genera un semnal artificial cât mai apropiat de semnalul original. În cazul acestei<br />

metode de sinteză, semnalul sintetizat poate fi văzut ca şi o combinaţie liniară a p eşantioane<br />

precedente la care se adaugă şi efectul semnalului de excitaţie.<br />

Un aspect important în analiza prin predicţie liniară este alegerea numărului de<br />

coeficienţi de predicţie p. Acesta depinde de frecvenţa de eşantionare a semnalului: de exemplu<br />

la o frecvenţă de eşantionare de 8 kHz se vor lua în calcul 10 –12 poli. De asemenea numărul<br />

coeficienţilor utilizaţi este în strânsă corelare cu eroarea de predicţie. Astfel s-a observat că<br />

eroarea de predicţie scade o dată cu creşterea numărului de coeficienţi de predicţie luaţi în calcul.<br />

Cu ajutorul sintezei prin predicţie liniară se poate obţine o voce sintetizată de calitate<br />

destul se bună. Totuşi, datorită modelului numai poli folosit în această metodă de sinteză, în<br />

cazul sunetelor nazalizate de exemplu, modelarea spectrală a formanţilor este de o calitate mai<br />

slabă. În astfel de situaţii, sintetizorul LPC produce frecvent vârfuri spectrale (spectral peaks ) a<br />

căror lăţime de bandă este prea mare, acest lucru concretizându-se în vocea sintetizată prin<br />

apariţia unui bâzâit (‘buzzines’ ).<br />

Pentru îmbunătăţirea determinării funcţiei de transfer a tractului vocal se pot calcula şi<br />

zerourile pe lângă polii spectrali. Astfel, este posibilă transformarea unui pol în zerou, printr-o<br />

dezvoltare în serie şi de asemenea, în mod asemănător se poate elimina un zerou spectral.<br />

Această soluţie este însă incompatibilă cu cerinţa de compresie a datelor, respectiv cu cerinţa de<br />

reducere a debitului de informaţie.


6.2.2. Sinteza formantică<br />

167<br />

Cap. 6. Metode de sinteză de voce<br />

Sinteza formantică a apărut prin anii ’50 prin contribuţia specialiştilor Lawrence şi Fant.<br />

La baza metodei stă faptul că în timp ce sunetul vocal parcurge distanţa de la glotă până la buze,<br />

spectrul larg al sursei de excitaţie este modulat datorită selectivităţii în frecvenţă a tractului<br />

vocal, rezultând formaţii. Ideea sintezei formantice este generarea unui spectru vocal în jurul<br />

acestor formanţi şi cu lărgimea benzii corespunzătoare ([Bod02], [Tod09]).<br />

Fiecare formant, caracterizat prin frecvenţa de rezonanţă Fk şi banda de trecere Bk, este<br />

realizat printr-un rezonator de ordinul doi. În general sunt utilizaţi trei-patru formanţi, eventual şi<br />

alţi formanţi de ordin superior. Rezonatorii pot fi conectaţi în serie (ca scadă) sau în paralel<br />

rezultând două structuri specifice [Fer97]:<br />

Configuraţia în serie se bazează numai pe polii funcţiei de transfer a tractului vocal, ceea<br />

ce este insuficient pentru reprezentarea tuturor sunetelor vocale. Mai mult decât atât s-a<br />

observat în spectrul vorbirii reale că amplitudinea formanţilor superiori este funcţie a<br />

formanţilor inferiori, deoarece aceştia din urmă introduc în spectru o pantă de 12<br />

db/octavă. Acest fenomen nu se poate simula prin serializarea filtrelor.<br />

Configuraţia paralelă a filtrelor cu doi poli complex conjugaţi este mai generală. Aceasta<br />

permite obţinerea unei funcţii de transfer cu poli şi zerouri dorite, motiv pentru care<br />

această metodă este convenabilă pentru generarea sunetelor care conţin zerouri (de<br />

exemplu sunetele nazale).<br />

Avantajele metodei de sinteză formantică sunt [Fer97]:<br />

Parametrii de sinteză sunt în relaţie strânsă cu producerea şi propagarea sunetului prin<br />

tractul vocal. Dacă se respectă condiţia continuităţii în evoluţia parametrilor,<br />

sintetizoarele formantice pot genera sunete sintetice cu sonoritate plăcută.<br />

Pe lângă tipurile de excitaţie uzuale (sonor, nesonor) sintetizoarele formantice permit<br />

utilizarea excitaţiei mixte adică generarea unui semnal de excitaţie care conţine atât o<br />

componentă periodică cât şi o componentă aleatoare de tip zgomot.<br />

Dintre dezavantaje amintim [Fer97]:<br />

Problema majoră a sintetizoarelor formantice este obţinerea datelor cu care se va opera.<br />

Urmărirea traiectoriei formanţilor este o sarcină foarte dificilă datorită faptului că această<br />

analiză nu poate fi automatizată complet, iar determinarea lăţimilor de bandă aferente<br />

este şi mai problematică.<br />

Alt dezavantaj provine din sonoritatea prea netedă realizată. În vorbirea reală există şi<br />

tranziţii rapide, iar anumiţi formanţi pot să dispară pe durata acestora. Modelarea acestor<br />

efecte necesită reguli precise şi numeroase, dar care duc la creşterea corespunzătoare a<br />

calităţii vocii sintetizate.<br />

Sinteza formantică permite generarea unei voci sintetice de calitate foarte bună, dar faza<br />

de analiză şi pregătirea datelor poate fi greoaie, iar valoarea parametrilor finali trebuie<br />

determinată prin încercări succesive sau utilizând metode de optimizare pe baza unor criterii<br />

specifice.


168<br />

Cap. 6. Metode de sinteză de voce<br />

O altă variantă a sintezei formantice, şi anume metoda sintezei formantice în domeniul<br />

timp, se utilizează pentru sinteza vocii cântate [Fer97]. Această metodă se bazează pe<br />

superpoziţia şi concatenarea formelor aferente diferiţilor formanţi.<br />

Metoda permite stabilirea exactă a timpului de atac şi a perioadei de cădere (amortizare),<br />

factorii având importanţă deosebită în cazul sunetelor muzicale, permiţând obţinerea unor<br />

rezultate de o calitate remarcabilă. Achiziţia şi pregătirea datelor este însă la fel de anevoioasă ca<br />

şi în cazul sintezei formantice în domeniul frecvenţă.<br />

6.2.2.1. Realizarea excitaţiei<br />

În cazul sistemului fonator, funcţionarea sursei (corzi vocale) şi a filtrului (tractul vocal)<br />

poate fi considerată independentă. Acest fapt prezintă avantaj în cadrul sintezei. Plecând de la<br />

observarea directă a mişcării corzilor vocale, Flanagan a determinat pe bază de calcule forma<br />

undei glotice. Aceasta variază numai puţin în funcţie de sunetele emise.<br />

Deschiderea glotei se produce lent, după care urmează închiderea bruscă a acesteia.<br />

spectrul aferent prezintă o pantă asimptotică de -40 db/decadă.<br />

Practic se încearcă reproducerea acestui spectru cu diferite aproximaţii. A fost<br />

experimentată, de exemplu, aproximaţia triunghiulară. Aceasta este foarte simplă, dar spectrul<br />

său poate să prezinte un zero, ceea ce ar perturba primul formant.<br />

Cea mai bună aproximare se poate obţine cu aproximaţia polinomială, dar şi aceasta<br />

prezintă discontinuităţi ale derivatei sale. De obicei această undă se interpolează în funcţie de<br />

variaţia perioadei fundamentale.<br />

O altă metodă utilizată constă în excitarea unui filtru trece jos de ordinul doi printr-un<br />

tren de impulsuri.<br />

Se poate observa că, faţă de unda glotică naturală, aceasta este inversată în timp, motiv<br />

pentru care se modifică faza spectrului, nu însă şi amplitudinea. Frecvenţa de tăiere a filtrului<br />

trece-jos utilizat este de ordinul a 50 Hz.<br />

Acestea au fost metodele de excitare pentru sunetele sonore.<br />

Cele nesonore se obţin prin excitarea cu secvenţe pseudoaleatoare a căror caracter<br />

periodic este insesizabil, dacă perioada depăşeşte 5 secunde.<br />

6.2.2.2. Sinteza în cascadă<br />

Acest tip de sinteză constă în înscrierea a 3 sau 4 rezonatori de ordinul doi, care<br />

realizează fiecare câte un formant de frecvenţa Fk şi banda de trecere Bk. Transmitanţa se<br />

normează pentru a obţine câştig nul la frecvenţă zero.<br />

Transmitanţa are expresia [Fer97]:<br />

unde :<br />

T<br />

B<br />

k<br />

k z 1 2<br />

1b<br />

1 z b<br />

2 z<br />

k<br />

k<br />

(6.2)


2k k<br />

b1k 2<br />

b2<br />

cos k<br />

Bk 1<br />

b<br />

1 b<br />

k 2k<br />

1<br />

2<br />

B<br />

/ f<br />

169<br />

es<br />

2 F<br />

/ f <br />

(6.3)<br />

k<br />

es<br />

Cap. 6. Metode de sinteză de voce<br />

Dacă transmitanţa canalului vocal se consideră a poseda numai poli, transmitanţa globală<br />

va fi [Fer97]:<br />

T<br />

K<br />

z <br />

k1<br />

1b<br />

1k<br />

B<br />

z<br />

k<br />

1 b<br />

2k<br />

Pentru sunete nazale sinteza în cascadă necesită câteva celule antirezonante, realizând<br />

astfel câte un antiformant. Aceste celule au o pereche de zerouri conjugate şi sunt caracterizate<br />

printr-o frecvenţă de rezonanţă F şi o bandă de trecere B.<br />

Transmitanţa unei asemenea celule este [Fer97]:<br />

unde<br />

şi<br />

z<br />

z<br />

2<br />

(6.4)<br />

1 2<br />

T a 0 a<br />

1z<br />

a<br />

2z<br />

(6.5)<br />

a<br />

a<br />

0<br />

12<br />

B / f<br />

(6.6)<br />

2 <br />

es<br />

2 F<br />

f <br />

a a<br />

cos /<br />

(6.7)<br />

1<br />

2 2<br />

Alura curbei de câştig este aceeaşi ca şi în cazul anterior, dar cu vârful întors spre jos.<br />

În principiu ordinea conectării acestor celule este arbitrară, dar pentru asigurarea unei<br />

repartiţii uniforme a energiei la diferitele nivele ale cascadei, se alege ordinea F3, F1, F2 pentru<br />

sintetizoare cu trei formanţi.<br />

Schema bloc a unui sintetizor în cascadă este dată în figura 6.4. Ramura sunetelor sonore<br />

conţine trei rezonatori şi o celulă bipătratică (pentru sunete nazale). Cealaltă ramură, a sunetelor<br />

nesonore, conţine doi rezonatori şi o celulă antirezonantă.<br />

generator periodic<br />

generator periodic<br />

<br />

A<br />

<br />

A<br />

es<br />

rezonator<br />

F1 F2 3<br />

rezonator<br />

<br />

F1<br />

Figura 6.4. Sintetizor în cascadă [Fer97]<br />

B - Q<br />

F F z,<br />

n F p,<br />

n<br />

B - Q<br />

<br />

F F<br />

2<br />

z<br />

s<br />

n<br />

<br />

Parametrii de comandă sunt indicaţi în figură. Aceştia se obţin prin analiza automată sau<br />

pot fi extraşi manual dintr-o bază de date. Parametrii Fz,n corespund cu sunetele sonore, Fp,n - cu<br />

sunete nazale, iar Fz - cu sunetele fricative.<br />

În urma încercărilor practice se recomandă ca rapoartele Fk/Bk ce caracterizează<br />

selectivitatea rezonatorilor să fie menţinute fixe.


170<br />

Cap. 6. Metode de sinteză de voce<br />

Tabelul 6.1 indică domeniile de frecvenţă ale parametrilor Fk şi Bk (sunete sonore), Fz,n şi<br />

Fp,n (sunete nazale), respectiv F1 + , F2 - , Fz (sunete fricative), valori determinate statistic [Fer97].<br />

Tabelul 6.1. Domeniile de frecvenţă ale parametrilor Fk şi Bk<br />

Sunete sonore<br />

Primul formant (F1)<br />

Al doilea formant (F2)<br />

Al treilea formant (F3)<br />

Rezonanţă nazală (Fp,n)<br />

Antirezonanţa (Fz,n)<br />

Sunete nesonore<br />

Primul formant (F1 + )<br />

Al doilea formant (F2 - )<br />

Antiformant (Fz)<br />

6.2.2.3. Sinteza în paralel<br />

F (Hz) B (Hz)<br />

100 – 1100<br />

500 – 2500<br />

1500 – 3500<br />

200 – 1000<br />

200 – 1000<br />

200 – 500<br />

1500 – 3500<br />

800 – 2000<br />

45 – 130<br />

5 – 190<br />

70 – 260<br />

100<br />

60 – 300<br />

60 – 200<br />

Structura în paralel a rezonatoarelor determină o situaţie mai delicată decât în cazul<br />

sintezei în cascadă, deoarece în acest caz este necesară cunoaşterea câştigului asociat fiecărui<br />

formant. Aceste câştiguri corespund reziduurilor polilor rezultaţi din descompunerea<br />

transmitanţei T(z) în fracţii simple. Calcularea şi realizarea lor trebuie să se facă cu mare<br />

precizie, fără a introduce zerouri în transmitanţa globală, care are expresia [Fer97]:<br />

T<br />

K<br />

z <br />

k1<br />

1b<br />

1<br />

k<br />

h<br />

z<br />

k<br />

1 b<br />

2<br />

k<br />

z<br />

2<br />

Prin procedee delicate, acest efect poate fi folosit pentru generarea sunetelor nazale. Se<br />

obţine o calitate superioară a semnalul generat, motiv pentru care sinteza în paralel este<br />

preferată, mai ales datorită progresului actual al tehnologiei.<br />

6.3. Metode de sinteză în domeniul timp<br />

În continuare se vor prezenta două dintre cele mai cunoscute metode de sinteză în<br />

domeniul timp, care asigură totodată o calitate înaltă semnalului sintetizat:<br />

- metoda TD-PSOLA, ce foloseşte principiul compunerii de segmente vocale care se<br />

întrepătrund, şi<br />

- metoda bazată pe corpus, ce foloseşte o bază de date (corpus vocal) de dimensiuni mari<br />

în scopul producerii unei vorbiri de calitate cât mai naturală.<br />

(6.8)


6.3.1. Metoda TD-PSOLA<br />

171<br />

Cap. 6. Metode de sinteză de voce<br />

Numele metodei constituie un acronim pentru Time Domain - Pitch Synchronous<br />

Overlapp and Add, adică metoda în domeniul timp ce foloseşte suprapunerea şi compunerea<br />

formelor de undă sincron cu frecvenţa ([Dut93], [Ver93]).<br />

Metoda comportă două faze principale, care sunt comune şi altor metode: faza de analiză<br />

şi faza de sinteză.<br />

În faza de analiză se împarte semnalul original în segmente de durată mică (de obicei<br />

având ca durată dublul perioadei fundamentale a semnalului 2T0), segmente care nu sunt<br />

separate, ci se suprapun. Aceste segmente se aleg sincron cu frecvenţa (numită pitch). Pentru<br />

aceasta, aici în faza de analiză se aleg nişte indicatori de fecvenţă numiţi pitch marks, ce vor<br />

indica centrul segmentului corespunzător din cadrul semnalului vocal.<br />

În faza de sinteză se calculează durata şi frecvenţa de bază a semnalului din cadrul<br />

segmentului considerat. În funcţie de aceşti parametrii, ţinând cont şi de indicatorii pitch markers<br />

stabiliţi în faza de analiză, segmentul vocal se rearanjează pe axa timpului, modificându-şi<br />

frecvenţa fundamentală, dilatându-se sau contractându-se temporal dacă cum este necesar.<br />

În final semnalul sintetizat rezultă prin compunerea segmentelor vocale ce se suprapun<br />

(Overlap and Add). Aici va trebui avut grijă la îmbinarea segmentelor, pentru a nu apărea<br />

discontinuităţi spectrale deranjante în vorbirea sintetizată.<br />

6.3.1.1. Modelare matematică<br />

Modelul metodei de sinteză TD-PSOLA este ilustrat în figura 6.5.<br />

(x1, p1)<br />

(X1, P1)<br />

(x2, p2)<br />

(X2, P2)<br />

x(n) Extragerea<br />

segmentelor<br />

.<br />

.<br />

.<br />

Mapare<br />

.<br />

.<br />

.<br />

Overlap<br />

X(n)<br />

.<br />

.<br />

(xn, pn)<br />

(Xm, Pm)<br />

ANALIZA<br />

SINTEZA<br />

Segmente suprapuse Segmente mapate<br />

Figura 6.5. Metoda de sinteză TD-PSOLA<br />

Faza de analiză porneşte de la semnalul original x(n), şi printr-un procedeu special de<br />

segmentare, se vor obţine segmentele suprapuse (adică segmente care se intersectează pe axa<br />

timpului): x1, x2, ... xn . Corespunzător fiecărui segment se aleg indicatorii de frecvenţă ( pitch<br />

marks): p1, p2, ... , pn . Indicatorii de frecvenţă se pot alege la mijlocul segmentului sau la<br />

valoarea maximă a intensităţii de semnal.


172<br />

Cap. 6. Metode de sinteză de voce<br />

Segmentele suprapuse xi(n) (overlapping segments) vor fi extrase prin aplicarea unei<br />

funcţii fereastră segmentului original [Bur97]:<br />

xi(n) = x(n) h(n-pi) , (6.9)<br />

unde: h(n) este funcţia fereastră, iar<br />

pi este indicatorul de frecvenţă pentru segmentul i.<br />

Semnalul original va fi atunci regăsit ca o sumă de segmente vocale suprapuse:<br />

x(n) = xi(n) (6.10)<br />

unde simbolul reprezintă o sumă de intervale care se suprapun (overlapping sum).<br />

În faza de sinteză va avea loc un proces de mapare a setului de segmente s={xi(n)}<br />

determinate anterior într-un alt set de segmente S={Xi(n)}. Segmentele Xi(n) se numesc<br />

segmente mapate sau repoziţionate, setul S fiind un subset sau supraset al lui s, fiind constituit<br />

din segmentele iniţiale xi(n) repoziţionate pe axa timpului.<br />

S este un subset al lui s dacă există elemente xi(n) din semnalul original care nu vor fi<br />

utilizate în compunerea semnalului sintetizat. Dacă, dimpotrivă, în faza de sinteză se vor utiliza<br />

dubluri ale segmentelor originale, atunci S se va constitui într-un set extins (supraset) al lui s.<br />

Maparea segmentelor se va face în următorul mod:<br />

x<br />

i ( n)<br />

X i ( n)<br />

A S<br />

Fi<br />

Fi<br />

A S<br />

Di<br />

Di<br />

unde: - xi(n) sunt segmentele suprapuse iniţiale,<br />

- Xi(n) sunt segmentele mapate sau repoziţionate,<br />

-<br />

-<br />

A<br />

i<br />

S<br />

i<br />

(6.11)<br />

F , F reprezintă frecvenţele de bază ale segmentului cu indicele i în faza de analiză,<br />

respectiv sinteză, iar<br />

D , reprezintă durata segmentului i în faza de analiză, respectiv sinteză.<br />

A S<br />

i Di<br />

i<br />

Ultima fază reprezintă sinteza propriu-zisă, în care are loc compunerea segmentelor<br />

mapate Xi(n) printr-un proces de suprapunere (overlapping):<br />

X(n) = Xi(n) , (6.12)<br />

i<br />

unde: X(n) reprezintă semnalul sintetizat de la ieşire, iar<br />

Xi(n) reprezintă segmentele repoziţionate în urma fazei de mapare.<br />

În figura 6.6 se arată modul de segmentare a unui semnal şi de repoziţionare pe axa<br />

timpului a segmentelor extrase. Să presupunem că avem un semnal x(t) care prezintă vârfuri de<br />

intensitate la perioada T0.


173<br />

Cap. 6. Metode de sinteză de voce<br />

În faza de analiză, se vor extrage două segmente x1(t) şi x2(t) de perioadă 2T0 centrate în<br />

vârfurile de intensitate, aşa cum se observă din figură. Cele două segmente se suprapun pe axa<br />

timpului de-a lungul unei perioade de semnal T0, şi corespund cu două maxime succesive de<br />

intensitate ale semnalului original.<br />

Fiecare segment va avea un indicator de frecvenţă pitch mark ales ca un punct de<br />

referinţă pe axa timpului al segmentului respectiv. Acesta se poate alege în orice poziţie în<br />

interiorul segmentului. În cazul nostru, vom alege poziţia sa la mijlocul segmentului,<br />

corespunzând chiar maximului de intensitate al semnalului.<br />

După extragerea segmentelor din semnalul iniţial, acestea vor fi ponderate prin<br />

intermediul unei funcţii fereastră special alese (de obicei se aleg funcţiile Blackman, Hanning<br />

sau Hamming). Ponderarea cu funcţia fereastră are ca scop aplatizarea formei de undă la capetele<br />

segmentului pentru a nu denatura semnalul original, care trebuie să se regăsească prin<br />

compunerea segmentelor extrase, conform relaţiei (6.10).<br />

Urmează faza de sinteză, în care va avea loc procesul de mapare al segmentelor. Maparea<br />

reprezintă o repoziţionare pe axa timpului a segmentelor extrase, în funcţie de modificările<br />

parametrilor prozodici, şi anume a frecvenţei şi duratei semnalului.<br />

În cazul în care se doreşte modificarea frecvenţei semnalului pentru a schimba tonalitatea<br />

(înălţimea) vocii, segmentele iniţiale trebuie deplasate pe axa timpului. Deplasarea în avans<br />

determină mărirea frecvenţei (T1 < T0 , unde T1 este noua perioadă ), iar întârzierea segmentului<br />

determină micşorarea frecvenţei (T1 > T0 ), situaţie care este ilustrată în figura 6.6.<br />

Dacă se doreşte modificarea duratei semnalului sintetizat pentru a schimba ritmul<br />

vorbirii, frecvenţa va trebui să rămână aceeaşi pentru a nu altera tonalitatea vocii. De asemenea,<br />

în acest caz nu trebuie modificată lungimea segmentului considerat, pentru că aceasta ar duce<br />

implicit la modificarea frecvenţei semnalului. Schimbarea duratei se va face doar prin adăugarea,<br />

respectiv omiterea unor perioade întregi ale formei de undă, cu alte cuvinte unele segmente vor fi<br />

dublate, iar altele omise în cadrul semnalului sintetizat.<br />

Maparea, adică repoziţionarea segmentelor pe axa timpului, se va face astfel: mai întâi se<br />

determină noua frecvenţa şi durată a semnalului. Cunoscând noua durată se determină<br />

segmentele care vor intra în compunerea semnalului sintetizat. Pentru aceste segmente, pe baza<br />

noilor frecvenţe, se calculează poziţiile indicatorilor de frecvenţă pitch marks de-a lungul axei<br />

timpului. Apoi eşantioanele de semnal se deplasează în poziţia indicată de fiecare dintre aceste<br />

referinţe.<br />

În final, segmentele repoziţionate vor fi îmbinate pentru a recompune semnalul sintetizat.<br />

Pe porţiunile comune ale segmentelor, semnalul va trebui normat. Normarea se face prin<br />

medierea pătratică a amplitudinilor celor două segmente:<br />

x1(<br />

n)<br />

x<br />

2 ( n)<br />

x(<br />

n)<br />

(6.13)<br />

2 2<br />

x ( n)<br />

x<br />

( n)<br />

1<br />

2


x(t)<br />

x1(t)<br />

x2(t)<br />

x1(t)<br />

x2(t)<br />

X1(t)<br />

X2(t)<br />

p1(t)<br />

p1(t)<br />

p1(t)<br />

T0<br />

T0<br />

T1 > T0<br />

Figura 6.6. Extragerea şi maparea segmentelor în sinteza TD-PSOLA<br />

174<br />

p2(t)<br />

p2(t)<br />

p2(t)<br />

Cap. 6. Metode de sinteză de voce<br />

SEMNALUL<br />

ORIGINAL<br />

SEGMENTELE<br />

EXTRASE<br />

SEGMENTELE<br />

PONDERATE<br />

SEGMENTELE<br />

MAPATE


6.3.1.2. Avantajele şi dezavantajele metodei TD-PSOLA<br />

175<br />

Cap. 6. Metode de sinteză de voce<br />

Metoda asigură o calitate superioară a sintezei rezultată în urma utilizării segmentelor de<br />

vorbire extrase direct din vorbirea umană reală. Modul de alegere a segmentelor centrate pe<br />

maximul de intensitate sonoră asigură erori minime datorate compunerii segmentelor suprapuse.<br />

Astfel, erorile vor putea apare doar la capetele intervalelor, unde semnalul sonor are energie<br />

mică [Dut93], [Edg96].<br />

De asemenea, un alt avantaj major al metodei constă în posibilitatea modificării facile a<br />

frecvenţei şi duratei de semnal, ceea ce asigură schimbarea prozodiei semnalului vocal sintetizat<br />

şi implicit creşterea calităţii sintezei.<br />

Ca dezavantaje, trebuie totuşi menţionate zgomotele care pot apărea la capetele<br />

intervalelor de segment, datorită erorilor introduse de mediere. De asemenea, în interiorul<br />

tranziţiilor pot apărea distorsiuni cauzate de erorile de fază, unele porţiuni nesonore putând<br />

deveni sonore în urma compunerii segmentelor suprapuse.<br />

6.3.1.3. Îmbunătăţiri ale metodei<br />

Pentru a elimina o parte din neajunsurile metodei, au fost încercate diferite abordări sau<br />

îmbunătăţiri. Cele mai cunoscute sunt LP-PSOLA şi MBROLA.<br />

Tehnica LP-PSOLA (Linear Prediction PSOLA) este o combinaţie între alogoritmul de<br />

sinteză LPC şi algoritmul PSOLA. Metoda separă excitaţia de semnalul corespunzător tractului<br />

vocal într-un mod asemănător metodei prin predicţie liniară LPC, folosind minimizarea erorii<br />

e(t) a semnalului de predicţie (eroare ce se mai numeşte semnal rezidual). Ap oi algoritmul<br />

PSOLA se aplică doar pe acest semnal rezidual, care are proprietatea de a fi decorelat în<br />

interiorul fiecărui segment considerat [Edg96].<br />

Avantajul care apare din această abordare constă în controlul mult mai bun asupra<br />

structurii spectrale a semnalului, precum şi în calitatea mult îmbunătăţită a tranziţiilor dintre<br />

segmente.<br />

Metoda MBROLA ( Multiband Resynthesis Overlap and Add), proiectată în cadrul<br />

Facultăţii politehnice din Mons, Belgia, are avantajul de a netezi discontinuităţile spectrale ce<br />

apar în TD-PSOLA. Metoda lucrează şi ea în domeniul timp, folosind o bază de date vocală<br />

normalizată şi interpolări la capetele intervalelor de sinteză. Metoda este implementată în cadrul<br />

unui sintetizor de voce care primeşte la intrare un fişier cu parametrii prozodici şi produce<br />

vorbirea sintetizată pe baza concatenării difonemelor din baza de date vocală [Dut93].


6.3.2. Metoda bazată pe corpus<br />

176<br />

Cap. 6. Metode de sinteză de voce<br />

Metoda bazată pe corpus este o metodă relativ nouă (bazele teoretice ale metodei s -au<br />

dezvoltat în anii 1996-1997), ce elimină unele deficienţe ale sistemelor de concatenare ce<br />

folosesc unităţi lexicale fixe (foneme, difoneme). Metoda îmbunătăţeşte calitatea semnalului<br />

sintetizat prin utilizarea unor segmente fonetice cât mai lungi, ştiut fiind faptul că sistemele care<br />

folosesc îmbinări frecvente ale unităţilor lexicale pierd mult din naturaleţea vorbirii [Hun96],<br />

[Mob00].<br />

Metoda utilizează un corpus vorbit (o bază de date cu înregistrări din vorbirea naturală)<br />

de dimensiuni relativ mari. În timpul sintezei se vor selecta cele mai lungi unităţi (segmente)<br />

fonetice din acel corpus pentru generarea vorbirii. Aceasta va duce pe de o parte la reducerea<br />

numărului de concatenări şi implicit la creşterea calităţii vorbirii, iar pe de altă parte la reducerea<br />

necesităţilor de prelucrare a semnalului vocal prin utilizarea tehnicilor DSP (de prelucrare<br />

digitală a semnalului).<br />

Problemele care trebuie rezolvate aici sunt ([Mob00], [Lee01]):<br />

1. Măsurarea distanţelor acustice între unităţi pentru alegerea segmentelor fonetice celor<br />

mai potrivite. Baza de date va conţine mai multe unităţi fonetice corespunzătoare unui anumit<br />

segment lingvistic (de exemplu o mulţime de foneme „a”, o mulţime de silabe „ma”, etc.), iar<br />

dintre acestea va trebui selectată doar o singură unitate, ce se potriveşte cel mai bine contextului<br />

vorbirii.<br />

2. Construirea optimă a bazei de date vocale în raport cu domeniul lingvistic, din punct<br />

de vedere al vocabularului şi limbajului folosit.<br />

De obicei se folosesc baze de date vocale ce conţin mai multe ore de vorbire înregistrată.<br />

Baza de date este marcată pentru a ţine cont de caracteristicile prozodice.<br />

3. Acordarea trăsăturilor unităţilor ce se concatenează. Aici se folosesc două tipuri de<br />

trăsături: segmentale şi prozodice.<br />

Trăsăturile segmentale se referă la concatenarea a două segmente din context lingvistic<br />

apropiat. Astfel, este de urmărit să se concateneze două segmente cu trăsături spectrale cât mai<br />

apropiate pentru a asigura o tranziţie cât mai fină între unităţi.<br />

Trăsăturile prozodice se referă la concatenarea a două unităţi integrate pe aceeaşi linie<br />

prozodică, pentru a nu apărea salturi în intonaţia şi melodicitatea vorbirii.<br />

6.3.2.1. Algoritmul de selecţie a unităţilor acustice<br />

În vederea selectării unităţilor fonetice din baza de date vocală se va lua în considerare<br />

minimizarea a două tipuri de costuri: costul pentru distorsiunea unităţilor (Target Cost) şi costul<br />

pentru distorsiunea concatenării (Concatenation Cost).


177<br />

Cap. 6. Metode de sinteză de voce<br />

Costul pentru distorsiunea unităţilor (Target Cost) calculează distanţele acustice dintre<br />

unităţile candidat din baza de date vocală şi unităţile ţintă care apar în textul de sintetizat<br />

[Mob00]:<br />

TC = d( UC , UT ) (6.14)<br />

unde:<br />

- TC = Target Cost,<br />

- UC reprezintă unitatea candidat,<br />

- UT este unitatea ţintă.<br />

Costul pentru distorsiunea concatenării ( Concatenation Cost) calculează distanţele<br />

spectrale dintre cele două unităţi care se concatenează. Distanţele spectrale se calculează în<br />

punctul de concatenare [Mob00]:<br />

CC = d( UN , UN+1 ) (6.15)<br />

unde:<br />

- CC = Concatenation Cost,<br />

- UN şi UN+1 reprezintă două unităţi fonetice succesive din semnalul sintetizat.<br />

6.3.2.2. Adnotarea bazei de date vocală<br />

Unităţile acustice din baza de date vocală se adnotează prin vectori de trăsături<br />

multidimensionali, ce conţin proprietăţile segmentale şi prozodice ale semnalului vocal.<br />

Proprietăţile segmentale (din interiorul unităţilor fonetice) se referă la parametrii<br />

lingvistici şi de semnal din segmentul considerat.<br />

Parametrii lingvistici pot fi:<br />

- fonemele asociate unităţii acustice L[i],<br />

- contextul lingvistic al unităţii fonematice C[i].<br />

Parametrii de semnal se referă la:<br />

- frecvenţa fundamentală F0,<br />

- durata D,<br />

- amplitudinea de semnal A(n),<br />

- coeficienţii spectrali X(n).<br />

Proprietăţile prozodice ţin cont de prozodia segmentală, care este legată de accentuarea<br />

silabelor din interiorul unui cuvânt, precum şi de prozodia suprasegmentală, legată de intonaţia<br />

şi modul de rostire al propoziţiilor. Proprietăţile prozodice sunt:<br />

- conturul frecvenţei fundamentale ΔF(n),<br />

- conturul amplitudinii de semnal ΔA(n),<br />

- modificarea duratei segmentului ΔD.<br />

Astfel, vectorul de trăsături corespunzător unităţii fonetice este de forma:<br />

VT = [ L[i], C[i] ; F0, A(n), D, X(n) ; ΔF(n), ΔA(n), ΔD ] (6.16)<br />

unde:


178<br />

Cap. 6. Metode de sinteză de voce<br />

- VT reprezintă vectorul de trăsături al unităţii fonetice,<br />

- L[i], C[i] reprezintă parametrii lingvistici ai unităţii,<br />

- F0, A(n), D, X(n) reprezintă parametrii de semnal,<br />

- ΔF(n), ΔA(n), ΔD reprezintă parametrii prozodici ai segmentului considerat, toţi<br />

parametrii având semnificaţia indicată mai sus.<br />

6.3.2.3. Potrivirea unităţilor candidat cu unităţile ţintă<br />

Paragraful curent se bazează pe lucrările [Hun96] şi [Mob00].<br />

Potrivirea unităţilor candidat cu unităţile ţintă se face în timpul rulării (run-time), după<br />

cum urmează:<br />

Pentru distorsiunea unităţilor (Target Cost) se compară trăsăturile ce derivă din textul de<br />

sintetizat cu trăsăturile unităţilor din baza de date vocală. Nu se iau în calcul toate trăsăturile care<br />

apar în vectorul de trăsături ( 6.16), ci doar cele care se pot determina în timpul rulării. De<br />

exemplu, pentru unităţile ţintă, ce derivă din textul de intrare, nu se pot determina parametrii de<br />

semnal.<br />

Text<br />

[VT-ţintă] [VT-candidat]<br />

Figura 6.7. Potrivirea unităţii fonetice cu unităţile candidate<br />

Pentru distorsiunea de concatenare ( Concatenation Cost) se iau în considerare toate<br />

trăsăturile unităţilor candidate. Acestea sunt integrate în baza de date, fiind calculate în cadrul<br />

unui proces off-line.<br />

ma<br />

ma<br />

ma<br />

ma<br />

ma<br />

[VT (`ma`)] [VT (`şi`)] [VT (`na`)]<br />

ma<br />

ma<br />

ma<br />

ma<br />

Figura 6.8. Potrivirea unităţilor de concatenat<br />

şi<br />

şi<br />

şi<br />

şi<br />

na<br />

na<br />

na<br />

na<br />

Baza de date<br />

vocală


179<br />

Cap. 6. Metode de sinteză de voce<br />

În vederea calculării costurilor, fiecare unitate din baza de date va fi asociată cu o stare<br />

într-un graf. Fiecare stare are asociat un Target Cost, iar fiecare tranziţie în graf are asociat un<br />

Concatenation Cost. În figura 6.9, Tij reprezintă costul unităţii ( Target Cost), iar<br />

reprezintă costul concatenării (Concatenation Cost).<br />

Figura 6.9. Calculul costurilor pentru selecţia unităţilor<br />

i k<br />

C ij<br />

) 1 ( <br />

De exemplu, în cazul folosirii silabelor ca unităţi fonetice de bază, nodurile grafului<br />

conţin toate variantele de silabe din baza de date care sunt asociate cuvântului căutat. Astfel,<br />

pentru cuvântul maşină, prima coloană a grafului conţine toate variantele din baza de date pentru<br />

silaba ma, a doua coloană conţine variantele silabice pentru şi, iar a treia coloană – silabele nă .<br />

Fiecare silabă sau nod în graf are asociat un cost de unitate care exprimă calitatea şi proprietăţile<br />

prozodice ale unităţii (silabei), iar tr anziţiile în graf au asociate un cost de tranziţie sau<br />

concatenare, care exprimă calitatea îmbinării dintre două silabe.<br />

Selecţia optimă a unităţilor pentru sinteza textului dorit va fi echivalentă cu găsirea căii<br />

care minimizează costul total al parcurgerii grafului. Costul total are expresia :<br />

COST<br />

N<br />

<br />

i1<br />

( T C<br />

) , j 1 , ni;<br />

k 1 , ni1<br />

(6.17)<br />

ij<br />

( i1<br />

) k<br />

ij<br />

unde :<br />

- COST este costul total al parcurgerii grafului,<br />

- i este indicele de nivel al grafului,<br />

- N este numărul total de nivele,<br />

- j exprimă indicele unităţii curente alese de pe nivelul i,<br />

- k exprimă indicele unităţii alese de pe nivelul următor (i+1),<br />

- ni este numărul de noduri de pe nivelul i,<br />

- Tij este costul unităţii curente de pe nivelul i,<br />

-<br />

S<br />

T11<br />

T12<br />

21<br />

C13<br />

T13<br />

22<br />

C12<br />

22<br />

C11<br />

22<br />

C13<br />

21<br />

C11<br />

23<br />

C13<br />

21<br />

C12<br />

23<br />

C12<br />

i k<br />

C ij<br />

) 1 ( este costul de tranziţie dintre unitatea curentă şi unitatea următoare.<br />

Aşadar algoritmul de găsire a căii din graf care minimizează acest cost va duce la selecţia<br />

optimă a unităţilor (numită în literatură unit selection).<br />

23<br />

C11<br />

T21<br />

T22<br />

T23<br />

F


Cost<br />

180<br />

Cap. 6. Metode de sinteză de voce<br />

6.3.2.4. Calculul costurilor şi măsurile distanţelor dintre unităţi [Mob00]<br />

Există două metode pentru calculul costurilor (Target Cost Tij , respectiv Concatenation<br />

i k<br />

C ij<br />

) 1 ( ) din graful stărilor: metoda de căutare în spaţiul stărilor ( Weight Space Search) şi<br />

metoda de grupare a unităţilor în funcţie de context (Context Clustering).<br />

6.3.2.4.1. Metoda de căutare în spaţiul stărilor (Weight Space Search)<br />

Această metodă calculează spaţiul total de ponderi (costuri) din graf prin intermediul unei<br />

abordări de tip analiză-sinteză. Astfel, se iau diferite texte de intrare care se sintetizează prin<br />

toate posibilităţile de combinare a unităţilor din baza de date. Apoi textul se rosteşte propriu-zis<br />

de către un vorbitor uman şi apoi se calculează distanţele dintre rostirea sintetizată şi rostirea<br />

naturală.<br />

Distanţele calculate în interiorul unităţilor dau costul unităţii (Target Cost), iar distanţele<br />

calculate în vecinătatea punctelor de concatenare dau costurile de tranziţie (Concatenation Cost).<br />

Pentru calculul distanţelor se poate folosi distanţa euclidiană cepstrală, calculată pe baza<br />

parametrilor de semnal ai unităţilor acustice.<br />

i<br />

( c ')<br />

D<br />

i c i<br />

2<br />

(6.18)<br />

unde:<br />

- D este distanţa euclidiană cepstrală;<br />

- Ci, respectiv Ci’ sunt coeficienţii cepstrali ai segmentelor acustice comparate.<br />

Pe lângă distanţele cepstrale se pot folosi diferenţe perceptuale între semnalul sintetizat şi<br />

rostirea naturală. Se pot calcula şi predictorii perceptuali care să cuantifice calitatea rostirii<br />

sintetizate prin concatenarea a două unităţi.<br />

Metoda de căutare în spaţiul stărilor este o metodă care dă rezultate bune, dar are<br />

dezavantajul că necesită un număr mare de rostiri pentru calculul ponderilor. Metoda pe care o<br />

vom prezenta în paragraful următor nu necesită rostiri suplimentare pentru determinarea acestor<br />

ponderi, folosind distanţe bazate pe similarităţi acustice.<br />

6.3.2.4.2. Metoda de grupare a unităţilor în funcţie de context (Context Clustering)<br />

Metoda aceasta se bazează pe construirea unor arbori de decizie (decision tree clustering)<br />

care grupează în clase de echivalenţă toate apariţiile fonematice din baza de date. O clasă de<br />

echivalenţă conţine toate apariţiile unei foneme din baza de date care se referă la acelaşi context<br />

lexical.<br />

În exemplul următor, pentru fonema « a », celor trei contexte lexicale diferite le sunt<br />

asociate trei clase de echivalenţă, fiecare clasă conţinând costuri asociate fiecărei apariţii ale<br />

fonemei în contextul respectiv din baza de date :<br />

[a] : Clasa 1. « masă » : Ctx=[ms] ; Costuri: [T11, CC11], ..., [T1n , CC1n];<br />

Clasa 1. « casă » : Ctx=[cs] ; Costuri: [T21, CC21], ..., [T2n , CC2n];<br />

Clasa 2. « fată » : Ctx=[ft] ; Costuri: [T31, CC31], ..., [T3n , CC3n];<br />

. . . . .


181<br />

Cap. 6. Metode de sinteză de voce<br />

În exemplul de mai sus, parametrul Ctx indică apariţia contextuală a fonemei, Tij este<br />

costul unităţii ( Target Cost), CCij este costul de concatenare ( Concatenation Cost), aici fiind<br />

luate în considerare ponderile asociate contextului stânga, respectiv dreapta al fonemei. Arborele<br />

de decizie asociat acestui exemplu cu trei clase de echivalenţă este dat în figura 6.10:<br />

Figura 6.10. Arborele de decizie pentru fonema “a”<br />

În interiorul clasei de echivalenţă pentru o anumită fonemă, costurile se păstrează ca nişte<br />

măsuri de similaritate acustică. Astfel, pentru costul unităţii Target Cost se calculează o distanţă<br />

spectrală a segmentului faţă de un segment de referinţă ales din interiorul clasei, iar pentru costul<br />

de concatenare Concatenation Cost - o distanţă spectrală calculată în punctele de concatenare,<br />

relativă la acelaşi segment de referinţă.<br />

Dacă în cadrul unui cuvânt de sintetizat, pentru o anumită fonemă nu se găseşte o clasă de<br />

echivalenţă corespunzătoare contextului dorit, se va folosi aceeaşi fonemă dar dintr-o altă clasă<br />

de echivalenţă (dintr-un alt context), iar costurile se vor interpola pe baza ponderilor existente.<br />

La fel se va proceda şi în cazul în care nu este disponibilă o fonemă cu caracteristicile prozodice<br />

de tipul dorit.<br />

Selecţia unităţilor de concatenat se face pe baza arborilor de decizie fonematici, folosind<br />

costurile de unitate şi de concatenare pentru fonemele componente. Funcţiile de cost TC (Target<br />

Cost) şi CC (Concatenation Cost) sunt minimizate folosind un algoritm de programare dinamică.<br />

Secvenţa de foneme care minimizează costul global pe toată propoziţia va fi secvenţa optimă de<br />

concatenat.<br />

T11, CC11<br />

Avantajul metodei Context Clustering este acela că baza de date cu unităţile acustice e<br />

organizată off-line, reducându-se astfel timpul de calcul al sintezei.<br />

a<br />

Ctx=[ms] Ctx=[cs] Ctx=[ft]<br />

T1n , CC1n<br />

T21, CC21<br />

T2n , CC2n<br />

T31, CC31<br />

T3n , CC3n


6.3.2.5. Algoritmul metodei de sinteză bazată pe corpus vocal<br />

182<br />

Cap. 6. Metode de sinteză de voce<br />

Paşii algoritmului metodei bazată pe corpus vocal sunt prezentaţi în cele ce urmează<br />

(pentru abordarea Context Clustering) :<br />

A. Faza de analiză :<br />

1. Se înregistrează baza de date vocală.<br />

2. Baza de date este segmentată în unităţi acustice de diferite lungimi.<br />

3. Baza de date se adnotează cu informaţiile contextuale, prozodice şi de semnal,<br />

calculându-se vectorii de trăsături ai unităţi acustice.<br />

4. Se construiesc arborii de decizie bazaţi pe clasele de echivalenţă.<br />

5. Se calculează costurile Target Cost, Concatenation Cost şi se introduc în arborii de<br />

decizie.<br />

B. Faza de sinteză :<br />

1. Se preia textul de la intrare şi se determină unităţile lexicale (propoziţii, cuvinte,<br />

silabe şi foneme).<br />

2. Se determină toate posibilităţile de construire a propoziţiilor pe baza unităţilor<br />

lexicale componente.<br />

3. Pentru fiecare secvenţă de unităţi lexicale se determină informaţia de context şi<br />

caracteristicile prozodice.<br />

4. Se caută în arborii de decizie secvenţa optimă de unităţi acustice corespun-<br />

zătoare contextului lexical.<br />

5. Se sintetizează rostirea prin concatenarea unităţilor acustice din baza de date.<br />

6.3.2.6. Avantajele şi dezavantajele metodei bazate pe corpus<br />

Metoda bazată pe corpus este o metodă performantă de sinteză a vorbirii, ce utilizează<br />

concatenarea unităţilor acustice maximale care se găsesc înregistrate într-un corpus vocal.<br />

Calculul vectorilor de trăsături ale unităţilor în faza de analiză ce se realizează off-line, definirea<br />

unor ponderi care să asigure concatenarea unităţilor optime, includerea trăsăturilor prozodice în<br />

calculul costurilor, reducerea sau chiar anularea nevoii de procesare a semnalului vocal, toate<br />

acestea reprezintă caracteristicile şi totodată avantajele cele mai importante ale metodei.<br />

Ca dezavantaje sunt de menţionat necesitatea înregistrării şi întreţinerii unui corpus vocal<br />

de dimensiuni mari, precum şi faza de analiză laborioasă necesară adnotării bazei de date cu<br />

caracteristici prozodice şi segmentale. Aceste aspecte pot reprezenta provocări majore pentru cei<br />

care vor să abordeze metoda bazată pe corpus.


6.4. Contribuţii în proiectarea metodelor de sinteză de voce<br />

6.4.1. Metoda de sinteză bazată pe silabe pentru limba română<br />

183<br />

Cap. 6. Metode de sinteză de voce<br />

Ca o dezvoltare specifică metodelor de sinteză prin concatenare, autorul a proiectat şi<br />

implementat o metodă de sinteză pornind de la text, metodă bazată pe concatenarea silabelor.<br />

Pentru implementarea metodei a fost necesară stabilirea unor reguli lingvistice în faza de analiză<br />

a textului şi a unor reguli de îmbinare a formelor de undă pe baza caracteristicilor prozodice.<br />

Din punct de vedere al clasificării sistemelor text-to-speech, metoda dezvoltată este<br />

mixtă. Aceasta îmbină caracteristici ale abordării bazate pe concatenarea formelor de undă şi ale<br />

abordării bazate pe reguli (a se vedea clasificarea făcută în secţiunea 5.2.1 ce prezintă sistemele<br />

text-to-speech; alte abordări se pot vedea în [Jos97], [Lew99], [Men02]).<br />

Sinteza de voce prin această metodă se realizează în două faze: analiza textului şi,<br />

respectiv, sinteza vorbirii (figura 6.11):<br />

Preprocesare<br />

Analiza sintaxei<br />

Determinarea<br />

unităţilor lingvistice<br />

Determinarea<br />

prozodiei locale<br />

Regăsirea unităţilor<br />

acustice<br />

Concatenarea<br />

unităţilor<br />

Sinteza<br />

ANALIZA DE TEXT<br />

Silabe<br />

Accente<br />

BD<br />

vocală<br />

SINTEZA VORBIRII<br />

Figura 6.11. Metoda de sinteză bazată pe concatenarea silabelor


Fiecare fază cuprinde mai multe etape procesuale, astfel:<br />

I. Analiza textului de sintetizat:<br />

1. Preprocesarea textului.<br />

2. Analiza de sintaxă.<br />

3. Determinarea unităţilor lingvistice: silabele.<br />

4. Determinarea prozodiei intrasegmentale: accentuarea.<br />

184<br />

Cap. 6. Metode de sinteză de voce<br />

II. Sinteza vorbirii:<br />

5. Regăsirea unităţilor acustice din baza de date corespunzătoare unităţilor lingvistice<br />

din textul de la intrare.<br />

6. Concatenarea unităţilor acustice.<br />

7. Sinteza propriu-zisă a vorbirii.<br />

În faza de analiză de text, preprocesarea este necesară pentru transcrierea fonetică a<br />

numerelor şi abrevierilor din interiorul textului. Analiza de sintaxă evidenţiază eventualele erori<br />

care apar în scrierea textului de sintetizat. Urmează apoi determinarea unităţilor lingvistice de<br />

bază, care în abordarea de faţă sunt silabele. În ultima etapă a analizei de text este determinată<br />

prozodia intrasegmentală, în corelaţie cu accentuarea cuvintelor. Pentru fiecare etapă din cadrul<br />

analizei de text au fost concepute seturi de reguli specifice.<br />

În faza de sinteză, pe baza unui algoritm de căutare în baza de date vocală sunt regăsite<br />

mai întâi unităţile acustice corespunzătoare unităţilor silabice din textul de la intrare. Unităţile<br />

acustice sunt concatenate şi apoi convertite sonor în ultima etapă a sintezei vorbirii.<br />

În continuare sunt prezentate pe rând cele 7 etape procesuale ale metodei de sinteză<br />

propusă de autor.<br />

6.4.2. Preprocesarea textului<br />

Preprocesarea textului se referă la transcrierea în formă textuală a informaţiilor din textul<br />

iniţial care:<br />

a) nu sunt scrise cu foneme, ci folosind alte caractere: cifre sau simboluri;<br />

b) nu formează direct unităţi lexicale, ci prescurtări ale acestora (abrevieri).<br />

a) Din prima categorie fac parte numerele, alcătuite din cifre, precum şi anumite simboluri<br />

scrise cu caractere speciale, cum ar fi :<br />

Simboluri pentru operaţiile aritmetice :<br />

‘+’ ‘plus’<br />

’-’ ‘minus’<br />

’x’ ‘ori’ ‘înmulţit cu’<br />

’ :’ sau ’/’ ’supra’ ’împărţit la’<br />

Simboluri pentru operatorii aritmetici :<br />

’’ ‘mai mare’<br />


’>=’ ‘mai mare sau egal’<br />

’=’ ‘egal’<br />

’!=’ sau ‘’ ‘diferit’<br />

b) Abrevierile sunt şi ele împărţite pe categorii:<br />

Unităţi de măsură:<br />

‘m’ ‘metru’<br />

‘g’ ‘gram’<br />

‘l’ ‘litru’ ,<br />

‘Hz’ ‘herţi’<br />

‘dB’ ‘decibeli’<br />

Prefixe reprezentând subunităţi de măsură:<br />

‘n’ ‘nano’<br />

‘m’ ‘mili’<br />

‘c’ ‘centi’<br />

‘d’ ‘deci’<br />

‘da’ ‘deca’<br />

‘k’ ‘kilo’<br />

‘M’ ‘mega’<br />

Grade ştiinţifice şi universitare:<br />

‘dr.’ ‘doctor’<br />

‘ing.’ ‘inginer’<br />

‘asist.’ ‘asistent’<br />

‘sl.’ ‘şef lucrări’<br />

‘conf.’ ‘conferenţiar’<br />

‘prof.’ ‘profesor’<br />

Grade de armată:<br />

‘serg.’ ‘sergent’<br />

‘plut.’ ‘plutonier’<br />

‘mai.’ ‘maior’<br />

‘căp.’ ‘căpitan’<br />

‘col.’ ‘colonel’<br />

‘gen.’ ‘general’<br />

Alte abrevieri:<br />

‘loc.’ ‘localitatea’<br />

‘str.’ ‘strada’<br />

‘bl.’ ‘bloc’<br />

‘sc.’ ‘scara’<br />

‘ap.’ ‘apartamentul’<br />

‘tel.’ ‘telefon’<br />

185<br />

Cap. 6. Metode de sinteză de voce


186<br />

Cap. 6. Metode de sinteză de voce<br />

Dintre toate aceste categorii de informaţii, cele mai importante şi cel mai des folosite<br />

sunt numerele. Pentru explicitarea acestora sub formă textuală, fonematică, au fost concepute<br />

reguli lexicale speciale. Aceste reguli ţin cont de poziţia unei anumite cifre în cadrul numărului<br />

pentru a o denomina printr-o anumită categorie verbală:<br />

Tabelul 6.2. Denominarea unei cifre în cadrul numărului<br />

Indice Categorie<br />

n=0 unităţi<br />

n=1 zeci<br />

n=2 sute<br />

n=3 mii<br />

n=4 zeci de mii<br />

n=5 sute de mii<br />

n=6 milioane<br />

n=7 zeci de milioane<br />

...<br />

În continuare se prezintă un extras al setului de reguli pentru transcrierea fonetică a<br />

numerelor:<br />

// Definire sufixe :<br />

term_1x = "sprezece";<br />

term[] = {""," ","zeci şi "," sute "," mii ","zeci şi "," sute ","<br />

milioane "};<br />

// Numărul de cifre:<br />

nrcif;<br />

// Numărul tradus in litere:<br />

Cuvint;<br />

// Definire macrouri:<br />

CIFRA [0-9]<br />

1. Reguli pentru tratarea excepţiilor pentru numere alcătuite din două cifre :<br />

10 { //zece<br />

// 1023 să nu declanşeze regula :<br />

if((nrcif!=2)&&(nrcif!=5)&&(nrcif!=8))<br />

REJECT;<br />

copy(Cuvint,"zece ");<br />

return(NUMAR);<br />

}<br />

1{CIFRA} { /* unsprezece, doisprezece */<br />

// 1234 sau 123456 să nu declanşeze regula<br />

if((nrcif!=2)&&(nrcif!=5)&&(nrcif!=8))<br />

REJECT;<br />

// Se marchează excepţia:<br />

exc_1x=1;


Se repune {CIFRA} in stream-ul de intrare:<br />

nrcif--;<br />

unput(yytext[1]);<br />

}<br />

2. Regula pentru tratarea cifrei ‘0’ :<br />

0 { // cifra 0 singulară<br />

if((nrcif==1)&&(nrini==1))<br />

{<br />

copy(Cuvint,"zero");<br />

return(NUMAR);<br />

}<br />

// Dacă nu e singulară<br />

// nu se mai rosteşte "zero zeci", "zero sute"<br />

nrcif--;<br />

}<br />

3. Reguli pentru tratarea cifrelor ‘1’, ‘2’, ‘3’, … :<br />

1 { //unu<br />

copy(Cuvint,"unu");<br />

cat(Cuvint,term[nrcif]);<br />

// Excepţiile pentru o sută, o mie, un milion :<br />

if((nrcif==3)||(nrcif==6))<br />

copy(Cuvint,"o suta ");<br />

// 1000=o mie, dar:<br />

// 31000= treizeci si unu mii<br />

if((nrcif==4)&&(nrini==4))<br />

copy(Cuvint,"o mie ");<br />

if((nrcif==7))<br />

copy(Cuvint,"un milion ");<br />

// Excepţie pentru două cifre: ‘unsprezece’<br />

if(exc_1x)<br />

{ copy(Cuvint,"un"); // un<br />

cat(Cuvint,term_1x); // sprezece<br />

cat(Cuvint,term[nrcif]); // mii sau milioane<br />

exc_1x=0; }<br />

if(nrcif>0) nrcif--;<br />

return(NUMAR);<br />

}<br />

2 { //doi<br />

if(nrcif>=2)<br />

copy(Cuvint,"doua");<br />

else<br />

copy(Cuvint,"doi");<br />

// Excepţie pentru două cifre: ‘doisprezece’<br />

if(exc_1x)<br />

{<br />

cat(Cuvint,term_1x);<br />

exc_1x=0;<br />

}<br />

187<br />

Cap. 6. Metode de sinteză de voce


cat(Cuvint,term[nrcif]);<br />

if(nrcif>0) nrcif--;<br />

return(NUMAR);<br />

}<br />

3 { //trei<br />

copy(Cuvint,"trei");<br />

// Excepţie pentru două cifre: ‘treisprezece’<br />

if(exc_1x)<br />

{<br />

cat(Cuvint,term_1x);<br />

exc_1x=0;<br />

}<br />

cat(Cuvint,term[nrcif]);<br />

if(nrcif>0) nrcif--;<br />

return(NUMAR);<br />

}<br />

188<br />

Cap. 6. Metode de sinteză de voce<br />

În exemplele de mai sus, copy() şi cat() sunt fucţiile de copiere, respectiv de<br />

concatenare, iar nrcif este numărul de cifre din care este alcătuit numărul.<br />

intrare:<br />

În figura 6.12 se prezintă rezultatul transcrierii fonetice pentru un număr preluat de la<br />

= ‘9451029’<br />

= ‘nouă milioane patru sute cincizeci<br />

şi unu mii douăzeci şi nouă’<br />

Figura 6.12. Un exemplu de transcriere fonetică pentru numere


6.4.3. Analiza sintaxei<br />

189<br />

Cap. 6. Metode de sinteză de voce<br />

Analiza corectitudinii textului din punct de vedere al sintaxei reprezintă al doilea pas<br />

preliminar efectuat în vederea realizării unei sinteze de vorbire de calitate. Orice greşeală de<br />

sintaxă care apare în textul iniţial (generată de obicei prin omiterea unei litere din cuvânt sau de<br />

omiterea diacriticelor) va duce la sinteza unui cuvânt eronat, ceea ce va avea ca efect atât o<br />

senzaţie de notă discordantă în rostirea globală, cât şi solicitarea unui efort din partea auditorului<br />

de recreare mentală a cuvântului corect. Acest efort induce diminuarea atenţiei faţă de cuvintele<br />

care urmează, şi chiar la pierderea sensului întregii propoziţii care conţine aceste cuvinte.<br />

Pentru a înlătura aceste dezavantaje şi a realiza o sinteză de voce de calitate ridicată, este<br />

prin urmare nevoie de un analizor de verificare a corectitudinii sintactice a textului. Un astfel de<br />

analizor se poate proiecta prin două metode de bază: prin construirea unui vocabular complet<br />

pentru limba respectivă, sau prin folosirea unor reguli gramaticale sintactice, însoţite de<br />

specificarea unor condiţii de excepţie.<br />

Prima metodă este mai completă, dar are dezavantajul unui efort mare de construire a<br />

unui vocabular pentru acea limbă (care poate avea mai multe zeci de mii de cuvinte), vocabular<br />

ce trebuie să conţină şi informaţii despre construirea formei flexionate a cuvintelor (de exemplu<br />

rădăcină sau morfemă, terminaţii pentru declinare sau conjugare).<br />

A doua metodă necesită generarea unui set de reguli pentru regăsirea formei de bază<br />

neflexionate a cuvintelor şi verificarea corectitudinii acestora printr-un dicţionar. Metoda are<br />

dezavantajul unui anumit grad de necompletitudine, depinzând de numărul de excepţii introduse<br />

în analizor.<br />

Pentru limba română s-au construit câteva variante de vocabulare sau lexicoane ([Dia09],<br />

[Rol09]), şi un analizor de sintaxă integrat în produsul Microsoft Office Word. Toate aceste<br />

variante au necesitat un volum mare de muncă din partea unor echipe întregi de lingvişti şi<br />

programatori.<br />

Autorul a propus în această lucrare o metodă bazată pe reguli gramaticale, variantă cu un<br />

cost de proiectare mult mai redus decât în cazul realizării de vocabulare. Metoda are ca punct de<br />

plecare generatorul automat de analizoare LEX [Fre05], alimentat de o gramatică ce specifică<br />

regulile sintactice de flexionare a cuvintelor din limba română. Pe lângă aceste reguli au fost<br />

introduse şi un număr de excepţii care asigură un grad înalt de completitudine în ceea ce priveşte<br />

acoperirea formelor gramaticale din limba română.<br />

Metoda este prezentată în figura 6.13. La intrare se prezintă un text cursiv ce conţine<br />

cuvinte în limba română în diferite forme flexionate. Folosind un set de reguli sintactice de<br />

flexionare şi un set de excepţii, analizorul LEX generează forma de bază, neflexionată, a fiecărui<br />

cuvânt de la intrare şi o caută într-un dicţionar. O interfaţă grafică va pune apoi în evidenţă<br />

cuvintele care au o sintaxă greşită sau care nu au fost potrivite cu setul de reguli din LEX.


TEXT<br />

Forma<br />

flexionată<br />

Figura 6.13. Metoda de analiză de sintaxă propusă de autor<br />

190<br />

Cap. 6. Metode de sinteză de voce<br />

Analizorul sintactic ia în considerare următoarele categorii sau părţi de vorbire din limba<br />

română:<br />

SUBSTANTIV<br />

VERB<br />

ADJECTIV<br />

PǍRŢI DE VORBIRE ADVERB<br />

ARTICOL<br />

CONJUNCŢIE<br />

PREPOZIŢIE<br />

NUMERAL<br />

PRONUME<br />

INTERJECŢIE<br />

Părţile principale de vorbire pot fi flexionate astfel:<br />

SUBSTANTIV Propriu<br />

ADJECTIV Nominativ / Acuzativ<br />

ADVERB<br />

ARTICOL Genitiv / Dativ<br />

PRONUME<br />

VERB<br />

REGULI<br />

de<br />

flexionare<br />

EXCEPŢII<br />

Comun<br />

LEX<br />

Diminutiv<br />

Infinitiv<br />

Prezent<br />

Imperfect<br />

Conjunctiv<br />

Nominativ / Acuzativ<br />

Genitiv / Dativ<br />

Vocativ<br />

Forma de<br />

bază<br />

neflexionată<br />

Participiu<br />

Perfect Simplu<br />

Mai Mult Ca Perfect<br />

Gerunziu<br />

Viitor<br />

DICŢIONAR


191<br />

Cap. 6. Metode de sinteză de voce<br />

Pe lângă aceste flexionări, trebuie să se ia în considerare de asemeni şi formele de<br />

singular/plural, articulat/nearticulat aplicabile substantivului, adjectivului, articolului şi<br />

pronumelui [Con94].<br />

Pentru generarea regulilor de flexionare, metoda ia în considerare terminaţiile cuvintelor<br />

care pot apărea în diferite forme flexionate. Setul de reguli introdus în LEX este organizat pe 10<br />

grupe distincte, corespunzătoare celor 10 tipuri gramaticale (părţi de vorbire) prezentate anterior.<br />

Fiecare grupă are un subset de reguli care în funcţie de terminaţia cuvântului construiesc forma<br />

neflexionată corespunzătoare şi o transferă modulului de verificare cu dicţionarul.<br />

6.4.3.1. Modul de funcţionare al analizorului de sintaxă<br />

Pentru fiecare cuvânt din textul sursă se parcurge tot setul de reguli, încercându-se<br />

potrivirea cu fiecare clasă corespunzătoare unei părţi de vorbire. Dacă se întâlneşte terminaţia<br />

specificată de o regulă, atunci acea regulă se activează, se înlocuieşte terminaţia curentă cu forma<br />

neflexionată precizată tot de regula respectivă, apoi se declanşează acţiunea de verificare a<br />

existenţei formei neflexionate în dicţionar. Dacă există, cuvântul se memorează împreună cu<br />

modul de flexionare specificat de acea regulă. Modul de flexionare cuprinde : cazul, genul,<br />

articularea, numărul persoanei – pentru substantive, iar pentru verbe – tipul de conjugare. Apoi<br />

cuvântul se confruntă cu următoarele reguli, generându-se în final o listă cu toate formele găsite<br />

posibile de analizor (figura 6.14) :<br />

Cuvânt neflexionat<br />

Cnf1<br />

Cnf2<br />

Cnfn<br />

Cuvânt flexionat<br />

Cf1<br />

Cf2<br />

Cfn<br />

Tip dicţionar Td1 Td2 Tdn<br />

Parte de vorbire Pv1 Pv2 Pvn<br />

Număr persoane Np1 Np2 Npn<br />

Gen G1 G2 Gn<br />

Caz C1 C2 Cn<br />

Timp T1 T2 Tn<br />

Articulare A1 A2 An<br />

Figura 6.14. Lista generată cu formele flexionate posibile<br />

În lista din figura 6.14, reprezintă categoria sintactică specificată de<br />

dicţionar, iar reprezintă categoria specificată de analizor. La modul esenţial<br />

cele două categorii trebuie să coincidă, dar există cazuri în care categoria specificată de dicţionar<br />

este o particularizare a unui caz mai general, specificat de regulile analizorului.<br />

De exemplu, fie regula :<br />

Ri : Term_flex.=’A’ => Term_nonflex.=’Ǎ’ ; Pv.=’SUBST’ ; Np.=’SING’ ;<br />

G.=’FEM’ ; C.=’NOM’ ; A.=’HOT’<br />

Regula se referă la cuvinte care au terminaţia ‘A’. În acest caz se asumă cuvântul ca fiind<br />

substantiv, de număr singular, gen feminin, caz nominativ, articulat hotărât, având terminaţia<br />

formei neflexionate ‘Ǎ’. Dacă avem două cuvinte :


192<br />

Cap. 6. Metode de sinteză de voce<br />

1) cuvântul ‘FATA’: avem Pv.=’SUBST’ din analizor, iar din dicţionar Td.=<br />

’SUBST’, dar<br />

2) cuvântul ‘FRUMOASA’: avem Pv.=’SUBST’ din analizor, iar din dicţionar<br />

Td.= ’ADJ’.<br />

Pentru a verifica dacă formele găsite sunt valide, se face o confruntare pe bază de<br />

compatibilitate a categoriilor specificate de analizor prin reguli şi cele găsite din dicţionar. Dacă<br />

cele două categorii nu sunt compatibile, atunci acea formă se elimină din listă. Dacă sunt<br />

compatibile, atunci forma flexionată se declară validă.<br />

Compatibilităţile dintre categoriile sintactice analizor/dicţionar sunt următoarele:<br />

Tabelul 6.3. Compatibilităţile dintre categoriile sintactice analizor / dicţionar<br />

Categorie sintactică analizor Categorie sintactică dicţionar<br />

Substantiv Substantiv, Adjectiv, Adverb,<br />

Pronume<br />

Articol sau Numeral Articol, Numeral, Pronume<br />

Verb Verb<br />

6.4.3.2. Regulile specificate de analizorul de sintaxă<br />

Setul de reguli pentru analiza de sintaxă este organizat modular, urmărind cele 10<br />

categorii gramaticale prezente în dicţionar. Fiecare categorie se împarte în subcategorii (de ex.<br />

pentru substantive avem substantive comune, nume proprii, diminutive), iar pentru fiecare<br />

subcategorie se generează reguli pentru toate formele flexionate (declinări la substantive,<br />

conjugări la verbe), grupate după clase de terminaţii comune. La fiecare clasă se mai adaugă un<br />

set de excepţii (figura 6.15):<br />

REGULI<br />

SINTAXǍ<br />

CATEGORII<br />

SUBCATEGORII<br />

FORME<br />

FLEXIONATE<br />

TERMINAŢII<br />

EXCEPŢII<br />

Substantiv Adjectiv Verb …<br />

Subst. comun Diminutiv …<br />

Nominativ Dativ …<br />

Subst: ‘ea’ Subst: ‘ia’ …<br />

Figura 6.15. Organizarea setului de reguli pentru analiza de sintaxă


193<br />

Cap. 6. Metode de sinteză de voce<br />

Gramatica analizorului defineşte o serie de constante – folosite în definiţiile regulilor, şi o<br />

serie de primitive – invocate prin activarea regulilor.<br />

Constantele definite sunt următoarele :<br />

%}<br />

VOC [aeiouãîâyÃÎÂ] % Vocală<br />

CONS [bcdfghjklmnpqrstvxzºþªÞ] % Consoană<br />

LIT ([a-z]|[ãîâºþ]|[ÃΪÞ]) % Literă<br />

SEP [ \t,\n\r\?\!\x00] % Separator sau sfârşit de fişier<br />

SEPB [ \t,\n\r\?\!] % Separator<br />

SEP0 [\x00] % Sfârşit de fişier<br />

LIN [-–] % Cratimă<br />

%%<br />

Au fost definite următoarele primitive :<br />

Caut( tip, i, str)<br />

- Căutare în dicţionar a cuvântului curent, căruia i se asociază tipul de flexionare ;<br />

cuvântul neflexionat se construieşte prin înlocuirea terminaţiei de lungime printr-un<br />

substring <br />

CautVerbPrez( sterm, str)<br />

- Căutare în dicţionar a cuvântului curent, care se consideră verb la timpul prezent. Forma<br />

neflexionată se obţine prin înlocuirea terminaţiei specificate de prin substringul<br />

. Şirul specifică terminaţiile pentru persoanele întâia, a doua şi a treia<br />

singular, şi întâia, a doua şi a treia plural:<br />

= "t1_sg|t2_sg|t3_sg|t1_pl|t2_pl|t3_pl"<br />

CautVerbImperf( sterm, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat verb la timpul imperfect. Forma<br />

neflexionată se obţine prin înlocuirea terminaţiei specificate de prin substringul<br />

. Şirul specifică terminaţiile pentru persoanele întâia, a doua şi a treia singular<br />

şi plural, la fel ca mai sus.<br />

CautVerbPerfSimplu( sterm, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat verb la timpul perfect simplu. Forma<br />

neflexionată se obţine prin înlocuirea terminaţiei specificate de prin substringul<br />

.<br />

CautVerbMaiMultCaPerf( sterm, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat verb la timpul mai mult ca perfect.<br />

Forma neflexionată se obţine prin înlocuirea terminaţiei specificate de prin substringul<br />

.


194<br />

Cap. 6. Metode de sinteză de voce<br />

CautVbPrezN( sterm, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat verb neregulat la timpul prezent. Forma<br />

neflexionată se obţine prin înlocuirea sintagmei specificate de prin forma neflexionată<br />

. Şirul specifică forma verbului pentru persoanele întâia, a doua şi a treia<br />

singular, şi întâia, a doua şi a treia plural :<br />

= "vb1_sg|vb2_sg|vb3_sg|vb1_pl|vb2_pl|vb3_pl"<br />

CautVbImpfN( sterm, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat verb neregulat la timpul imperfect.<br />

Forma neflexionată se obţine prin înlocuirea terminaţiei specificate de prin forma<br />

neflexionată . Şirul specifică terminaţiile verbului pentru persoanele întâia, a<br />

doua şi a treia singular, şi întâia, a doua şi a treia plural : =<br />

"t1_sg|t2_sg|t3_sg|t1_pl|t2_pl|t3_pl"<br />

CautSAD(terminatie, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat Substantiv Singular<br />

Articulat sau Dativ. Terminaţiile sunt independente şi sunt specificate prin :<br />

="term_art-term_dat". Forma neflexionată se obţine prin înlocuirea<br />

terminaţiei specificate de prin substringul .<br />

CautSPAD(terminatie, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat Substantiv Plural<br />

Articulat sau Dativ. Terminaţiile sunt specificate prin :<br />

="sir_plural-term_art-term_dat". Terminaţiile formelor<br />

Articulat şi Dativ se adaugă terminaţiei "sir_plural". Forma neflexionată se<br />

obţine prin înlocuirea terminaţiei specificate de prin substringul .<br />

CautDat(terminatie, str)<br />

­ Căutare în dicţionar a cuvântului curent considerat Pronume Dativ cu formele<br />

Masculin, Feminin, Plural. Terminaţiile sunt independente şi sunt specificate prin<br />

şirul : ="term_masc-term_fem-term_plural". Forma neflexionată<br />

se obţine prin înlocuirea terminaţiei specificate de prin substringul .<br />

ReplaceLast(c_init, c_final)<br />

- Înlocuirea caracterului prin caracterul din cuvântul curent.<br />

Căutarea se face de la sfârşit către început.<br />

ReplaceSecond(c_init, c_final)<br />

- Înlocuirea celui de-al doilea caracter prin caracterul din<br />

cuvântul curent. Căutarea se face de la sfârşit către început.<br />

În plus, corespunzător cu primitivele Caut au fost definite o serie de primitive Caută<br />

care au aceeaşi semnificaţie cu primele, dar conţin încapsulate directiva REJECT, ceea ce va<br />

duce în mod automat la căutarea unei noi forme, indiferent dacă forma curentă a fost sau nu<br />

găsită în dicţionar.


195<br />

Cap. 6. Metode de sinteză de voce<br />

După această prezentare a primitivelor, în continuare se prezintă câteva reguli<br />

semnificative pentru categoriile gramaticale de bază, împreună cu exemplele asociate. Regulile<br />

conţin specificarea uneia sau mai multor terminaţii pentru formele flexionate, şi o acţiune care se<br />

va declanşa la validarea acelei reguli.<br />

SETUL DE REGULI PENTRU ANALIZA DE SINTAXǍ (extras)<br />

SUBSTANTIVE VOCATIV<br />

{LIT}+o/{SEP} {// ex: “frumoaso"<br />

tip=S_VOC_FEM_SG;<br />

// se repun literele in streamul de intrare<br />

// cu 'ã' la sfirsit: ‘frumoaso’ = 0; --i )<br />

unput( yytext[i] );<br />

}<br />

{LIT}+ule/{SEP} {/*VOCATIV<br />

domnule*/<br />

Cauta(S_VOC_MAS_SG,3,"");<br />

}<br />

DIMINUTIV NEARTICULAT<br />

{LIT}+uţã/{SEP} {/* DIMINUTIV<br />

cutie-cutiuţã, maşinã-maşinuţã*/<br />

ReplaceSecond('ã','a'); //mãsuţã


{LIT}+(le|lui)/{SEP} {/*peştele*/<br />

CautaSAD("le-lui","");<br />

}<br />

{LIT}+i(a|ei)/{SEP} {/*falia*/<br />

CautaSAD("a-ei","e");<br />

}<br />

{LIT}+a/{SEP} {/*fata*/<br />

Caut(S_ART_SG,1,"ã");<br />

if(!gasit) // vremea<br />

Caut(S_ART_SG,1,"");<br />

REJECT;<br />

}<br />

SUBSTANTIVE NEARTICULATE<br />

{LIT}+{CONS}ã/{SEP} {/*specificã*/<br />

TipLex="sf";<br />

Caut(S_SG,1,"");<br />

if(!gasit) // multiplã


PRONUME / ARTICOL<br />

197<br />

Cap. 6. Metode de sinteză de voce<br />

acel|acest|ãst|anumit|alt|atât|un|vreun)(ui|ei|or)/{SEP}<br />

{CautaDat("ui-ei-or","");<br />

}<br />

(ori|fie)?cãr(ui|ei|or)/{SEP} {<br />

CautaDat("ãrui-ãrei-ãror","are");<br />

}<br />

PARTICIPIU VERBAL<br />

{LIT}+t/{SEP} {/*purtat*/<br />

Cauta(V_PART_MAS,1,"");<br />

}<br />

{LIT}+tã/{SEP} {/*purtatã*/<br />

Cauta(V_PART_FEM,2,"");<br />

}<br />

VERBE GERUNZIU<br />

{LIT}+ând/{SEP} {// a juca - jucând<br />

Caut(V_GER,3,"a");<br />

if(!gasit) // a merge - mergând<br />

Caut(V_GER,3,"e");<br />

if(!gasit) // a doborâ -doborând<br />

Caut(V_GER,2,"");<br />

REJECT;<br />

}<br />

VERBE GRUPA A<br />

{LIT}+ez/{SEP} {/* a abona : abonez*/<br />

Cauta(V_PREZ_P1_SG,2,"a");<br />

}<br />

{LIT}+ezi/{SEP} {/* abonezi */<br />

Cauta(V_PREZ_P2_SG,3,"a");<br />

}<br />

{LIT}+eazã/{SEP} {/* aboneazã */<br />

Cauta(V_PREZ_P3_SP,4,"a");<br />

}<br />

VERBE GRUPA E<br />

{LIT}+{CONS}/{SEP} {/* a merge : merg */<br />

Cauta(V_PREZ_P1_SG,0,"e");<br />

}<br />

{LIT}+{CONS}i/{SEP} {/* mergi */<br />

Cauta(V_PREZ_P2_SG,1,"e");<br />

}


{LIT}+{CONS}e/{SEP} {/* merge */<br />

Cauta(V_PREZ_P3_SG,0,"");<br />

}<br />

VERBE GRUPA I<br />

{LIT}+iu/{SEP} {/* a şti: ştiu */<br />

Cauta(V_PREZ_P1_SG,1,"");<br />

}<br />

{LIT}+ii/{SEP} {/* ştii */<br />

Cauta(V_PREZ_P2_SG,1,"");<br />

}<br />

{LIT}+ie/{SEP} {/* ştie */<br />

Cauta(V_PREZ_P3_SG,1,"");<br />

}<br />

VERBE IMPERFECT GRUPA A<br />

{LIT}+am/{SEP} {/* IMPERFECT<br />

acceptam */<br />

Cauta(V_IMPERF_P1_SG,1,"");<br />

}<br />

{LIT}+ai/{SEP} {/* IMPERFECT acceptai */<br />

Cauta(V_IMPERF_P2_SG,1,"");<br />

}<br />

{LIT}+a/{SEP} {/* IMPERFECT accepta */<br />

Cauta(V_IMPERF_P3_SG,0,"");<br />

}<br />

VERBE IMPERFECT GRUPA E<br />

{LIT}+eam/{SEP} {/* IMPERFECT<br />

mergeam */<br />

Cauta(V_IMPERF_P1_SG,2,"");<br />

}<br />

{LIT}+ea/{SEP} {/* IMPERFECT mergea */<br />

Cauta(V_IMPERF_P3_SG,1,"");<br />

}<br />

{LIT}+eai/{SEP} {/* IMPERFECT mergeai */<br />

Caut(V_IMPERF_P2_SG,2,"");<br />

}<br />

VERBE IMPERFECT GRUPA I<br />

{LIT}+iam/{SEP} {/* IMPERFECT<br />

ştiam */<br />

Cauta(V_IMPERF_P1_SG,2,"");<br />

}<br />

198<br />

Cap. 6. Metode de sinteză de voce


{LIT}+ia/{SEP} {/* IMPERFECT ştia */<br />

Cauta(V_IMPERF_P3_SG,1,"");<br />

}<br />

{LIT}+iai/{SEP} {/* IMPERFECT ştiai */<br />

Cauta(V_IMPERF_P2_SG,2,"");<br />

}<br />

VERBE CONJUNCTIV<br />

{LIT}+e/{SEP} {/* CONJUNCTIV<br />

a verifica - sã verifice */<br />

Cauta(V_CONJ,1,"a");<br />

}<br />

{LIT}+ã/{SEP} {/* CONJUNCTIV<br />

a admite - sã admitã */<br />

Cauta(V_CONJ,1,"e");<br />

}<br />

VERBE PERFECT SIMPLU<br />

199<br />

Cap. 6. Metode de sinteză de voce<br />

{LIT}+(ui|uşi|u|urãm|urãţi|urã)/{SEP} {<br />

/*putea-putu*/<br />

CautVerbPerfSimplu("ui|uşi|u|urãm|urãţi|urã","ea");<br />

if(!gasit) // incepe - incepu<br />

CautVerbPerfSimplu("ui|uşi|u|urãm|urãţi|urã","e");<br />

REJECT;<br />

}<br />

VERBE MAI MULT CA PERFECT<br />

{LIT}+(usem|useşi|use|userãm|userãţi|userã)/{SEP} {<br />

// putea- putuse<br />

CautVerbMaiMultCaPerf("usem|useşi|use|userãm|userãţi|<br />

userã","ea");<br />

if(!gasit) // începe - începuse<br />

CautVerbMaiMultCaPerf("usem|useşi|use|userãm|userãţi|<br />

userã","e");<br />

REJECT;<br />

}<br />

NUMERAL<br />

(un|prim)ul/{SEP} {//NUMERAL<br />

TipLex="num";<br />

Cauta(GENERIC,2,"");<br />

}<br />

(un|trei|şase|şapte|opt|nou|zece)a/{SEP} {//NUMERAL<br />

TipLex="num";<br />

Cauta(GENERIC,1,"");<br />

}


200<br />

Cap. 6. Metode de sinteză de voce<br />

În setul de reguli prezentat, categoria gramaticală propusă de analizor (substantiv cu o<br />

anumită declinare, verb într-o anumită conjugare, etc.) se poate specifica în trei moduri distincte:<br />

a) implicit prin apelul unei primitive specifice pentru acea categorie, de exemplu :<br />

CautVerbMaiMultCaPerf(term, str) =><br />

P.v.=’VERB’; Timp=’MMCP’<br />

b) primul parametru al primitivei Caut / Caută , de exemplu :<br />

Caut(V_CONJ, len, str) =><br />

P.v.=’VERB’; Timp=’CONJUNCTIV’<br />

c) prin folosirea variabilei TipLex, care rescrie categoria gramaticală în modul<br />

specificat:<br />

TipLex=’sf’ => P.v.=’SUBST’; Gen=’FEM’<br />

În plus, pentru categoriile gramaticale neflexionate (cum ar fi pronume, adverbe,<br />

conjuncţii, interjecţii, verbe la infinitiv, substantive nearticulate) s-a introdus o regulă generală<br />

care caută acea formă direct în dicţionar, fără a mai urmări înlocuirea terminaţiei ca în modul<br />

flexionat:<br />

{LIT}+/{SEP} {/* Se caută cuvântul întreg neflexionat */<br />

Caut(GENERIC,0,"");<br />

}<br />

Desigur că aici nu au fost prezentate explicit regulile de flexionare ale limbii române<br />

pentru fiecare categorie gramaticală, pentru aceasta este de dorit a se consulta bibliografia<br />

indicată [Gra08].<br />

Cu privire la setul de reguli pentru analiza sintaxei prezentat în acest capitol, se poate<br />

face observaţia că au fost cuprinse în acest set categoriile gramaticale de bază, nu şi cele a căror<br />

formă nu se schimbă faţă de categoria principală de bază.<br />

Astfel, pentru categoria Substantiv declinările pentru cazul Dativ şi Genitiv sunt identice,<br />

ambele situaţii fiind memorate ca Dativ :<br />

Articol : Hotărât Nehotărât<br />

Dativ: ‘am dat fetei caietul’ ‘am dat unei fete caietul’<br />

Genitiv : ‘caietul fetei’ ‘caietul unei fete’<br />

De asemeni forma la Acuzativ este identică cu forma de Nominativ a substantivului :<br />

Articol : Hotărât Nehotărât<br />

Nominativ: ‘fata se plimba ’ ‘o fată se plimba ’<br />

Acuzativ : ‘mă plimbam cu fata’ ‘mă plimbam cu o fată’<br />

În cazul verbului, Imperativul are aceeaşi formă cu Prezentul :<br />

Singular Plural<br />

Imperativ: ‘Vorbeşte mai încet! ’ Imperativ : ‘Vorbiţi mai tare !’<br />

Prez. Pers. 3: ‘el vorbeşte încet’ Prez. Pers. 2: ‘voi vorbiţi tare’


De asemeni Viitorul se construieşte pe baza Infinitivului :<br />

Singular Plural<br />

Viitor: ‘va fi’ ; ‘va urma’ Viitor : ‘vor fi’ ; ‘vor urma’<br />

Infinitiv: ‘a fi’ ; ‘a urma’ Infinitiv: ‘a fi’ ; ‘a urma’<br />

201<br />

Cap. 6. Metode de sinteză de voce<br />

Tot în cazul verbului, Conjunctivul are aceeaşi formă cu Prezentul la persoana întâia<br />

singular şi plural, apărând diferenţe doar la persoana 3 singular şi plural :<br />

Conjunctiv Prezent<br />

Pers. 1 sg. să fac eu fac<br />

Pers. 2 sg. să faci tu faci<br />

Pers. 3 sg. să facă el face<br />

Pers. 1 pl. să facem noi facem<br />

Pers. 2 pl. să faceţi voi faceţi<br />

Pers. 3 pl. să facă ei fac<br />

6.4.3.3. Rezultate obţinute cu analizorul automat de sintaxă<br />

Analizorul automat de sintaxă se bazează pe un dicţionar ce conţine peste 30.000 de<br />

forme neflexionate ale limbii române şi pe un set de 550 de reguli de flexionare. Analizorul a<br />

fost testat pe o serie de texte în limba română de diferite genuri, de la literatură la documente<br />

tehnice, însumând peste 200.000 de cuvinte. Testele au dovedit o corectitudine de peste 98%<br />

cuvinte recunoscute corect, cuvintele nerecunoscute constituind excepţii care nu au fost încă<br />

introduse în setul de reguli. Aceste rezultate arată completitudinea setului de reguli proiectat,<br />

precum şi viabilitatea metodei propuse de autor.<br />

Pentru testarea analizorului a fost creată o aplicaţie în limbajul Visual C++, în care s-a<br />

integrat modulul de analiză generat prin LEX pe baza setului de reguli prezentat. În figura 6.16<br />

se poate observa interfaţa aplicaţiei în care cuvintele cu sintaxă incorectă sunt puse în evidenţă<br />

faţă de restul textului :<br />

Figura 6.16. Interfaţa aplicaţiei de analiză automată de sintaxă


202<br />

Cap. 6. Metode de sinteză de voce<br />

6.4.3.4. Concluzii cu privire la metoda de analiză automată a sintaxei propusă de<br />

autor<br />

În această secţiune a fost prezentată o metodă de analiză a sintaxei unui text bazată pe<br />

reguli. Pentru aceasta, s-a folosit un dicţionar acoperitor pentru formele neflexionate ale limbii<br />

române, şi s-a construit un set de reguli care să identifice formele flexionate dintr-un text. Setul<br />

de reguli a fost organizat pe categorii gramaticale, fiind completat cu un set consistent de<br />

excepţii.<br />

română ;<br />

Contribuţiile autorului prezentate în capitolul curent au fost următoarele :<br />

- dezvoltarea unei metode bazată pe reguli pentru analiza sintaxei unui text în limba<br />

- proiectarea unui set de reguli pentru flexionarea cuvintelor din limba română (setul<br />

cuprinde 550 de reguli de flexionare) ;<br />

- realizarea unei aplicaţii de test pentru validarea rezultatelor.<br />

Avantajele metodei prezentate sunt următoarele :<br />

- fiind o metodă bazată pe reguli asigură un efort de proiectare mult mai redus faţă de alte<br />

metode (cum ar fi cele bazate pe dicţionar de forme flexionate) ;<br />

- asigură identificarea categoriei gramaticale sintactice (partea de vorbire : substantiv,<br />

adjectiv, verb, etc.) a cuvintelor dintr-un text scris în limba română ;<br />

- asigură identificarea cuvintelor cu sintaxă incorectă .<br />

Dezvoltările posibile şi aplicaţiile metodei sunt şi ele importante :<br />

- determinarea părţilor de propoziţie (subiect, predicat) pe baza părţilor de vorbire<br />

detectate deja (substantiv, verb, etc.) va duce la determinarea înţelesului unei fraze, cu aplicaţii<br />

importante în dialogul om-calculator ;<br />

- analiza contextului în care apar părţile de vorbire detectate, alături de stabilirea modului<br />

corect de flexionare, vor duce la construirea unor traducătoare automate de limbaj de înaltă<br />

fidelitate.


6.4.4. Determinarea unităţilor lingvistice: silabele<br />

203<br />

Cap. 6. Metode de sinteză de voce<br />

Următoarea etapă în analiza textului de sintetizat constă în determinarea unităţilor<br />

lingvistice de bază, şi anume: propoziţiile, cuvintele şi silabele. Dacă extragerea propoziţiilor şi a<br />

cuvintelor nu ridică probleme deosebite, aceasta efectuându-se pe baza semnelor de punctuaţie şi<br />

a caracterelor de separaţie, nu acelaşi lucru se poate spune despre stabilirea silabelor componente<br />

ale unui cuvânt. Pentru a realiza acest deziderat a fost necesară proiectarea unui set de reguli<br />

fonetice pentru despărţirea în silabe.<br />

Principiul folosit la determinarea unităţilor lingvistice este ilustrat în figura 6.17. Astfel,<br />

analizorul lingvistic are o structură pe trei nivele, corespunzător cu trei module având roluri<br />

distincte în identificarea şi tratarea unităţilor fonetice. Cele trei module sunt:<br />

- modulul de comandă şi procesare computaţională (shell procesare) ;<br />

- modulul de analiză sintactică pentru determinarea propoziţiilor şi cuvintelor;<br />

- modulul de analiză lexicală pentru determinarea silabelor.<br />

Proceduri<br />

de calcul<br />

Reguli<br />

sintactice<br />

Text<br />

Reguli<br />

lexicale<br />

Shell<br />

Procesare<br />

Analizor<br />

Sintactic<br />

Analizor<br />

Lexical<br />

Procesare<br />

unităţi<br />

Propoziţii<br />

Cuvinte<br />

Silabe<br />

Figura 6.17. Analizorul lingvistic pentru despărţirea în silabe<br />

Shell-ul program are rolul de master, apelând modulele de nivel inferior. Astfel, acesta<br />

apelează analizorul sintactic pentru a-i returna unităţile sintactice. Analizorul sintactic va apela la<br />

rândul lui analizorul lexical pentru parcurgerea efectivă a textului şi regăsirea unităţilor lexicale<br />

de bază.<br />

Analizorul lexical extrage caracterele din text şi le grupează în unităţi fonetice primare.<br />

Aici intră determinarea caracterelor alfabetice, numerice, a caracterelor speciale şi semnelor de<br />

punctuaţie. Pe baza unor reguli de producţie lexicale, caracterele alfabetice vor fi grupate în<br />

silabe, caracterele numerice în cifre şi numere, iar caracterele speciale şi semnele de punctuaţie<br />

vor fi folosite în determinarea cuvintelor şi propoziţiilor.<br />

Cifre<br />

Separatori


204<br />

Cap. 6. Metode de sinteză de voce<br />

Analizorul sintactic preia silabele, respectiv caracterele speciale şi cifrele furnizate de<br />

analizorul lexical şi le grupează în cuvinte şi propoziţii. Şi aici a fost necesară stabilirea unui set<br />

de reguli sintactice pentru departajarea unităţilor fonetice corespunzătoare.<br />

Modulul de procesare preia în final unităţile fonetice găsite anterior şi, pe baza unor<br />

proceduri de calcul, le clasifică şi le memorează în structuri speciale. De aici vor fi preluate şi<br />

transformate în forme de undă de către modulul de sinteză.<br />

6.4.4.1. Analizorul sintactic folosit în extragerea propoziţiilor şi cuvintelor<br />

Analizorul sintactic foloseşte un set de reguli de producţie care specifică sintaxa textului<br />

de la intrare. Textul iniţial este considerat ca o listă de propoziţii, fiecare propoziţie fiind o listă<br />

de cuvinte, fiecare cuvânt fiind compus din mai multe silabe. Propoziţiile, respectiv cuvintele<br />

sunt despărţite prin separatori. Astfel, unităţile sintactice prezintă următoarea structură ierarhică:<br />

Text<br />

Propoziţie Separatori Propoziţie Separatori Propoziţie Separatori<br />

Spaţiu Tab Punct Tab Virgulă ? ! . . .<br />

Cuvânt Separatori Cuvânt Separatori Cuvânt Separatori<br />

Număr<br />

Spaţiu Tab Punct Tab Virgulă ? ! . . .<br />

Întreg Real<br />

Silabă Silabă Silabă Tab Silabă Silabă<br />

. . .<br />

Figura 6.18. Structura ierarhică a analizorului sintactic


205<br />

Cap. 6. Metode de sinteză de voce<br />

În figura 6.18, unităţile care apar pe un fond de culoare mai închisă (silabele, respectiv<br />

numerele întregi sau reale, precum şi separatorii) sunt de fapt ieşirile analizorului lexical, adică<br />

sunt unităţi care au fost determinate prin analiza lexicală a textului. Astfel, analizorul sintactic<br />

invocă analizorul lexical pentru a-i fi furnizat la fiecare apel unitatea lexicală următoare din text:<br />

o silabă, un număr sau un separator.<br />

Pe baza acestor unităţi lexicale, la acest nivel se formează unităţile sintactice de tip<br />

cuvânt, propoziţie sau text. Analizorul sintactic are posibilitatea ca după regăsirea fiecărui tip de<br />

unitate să apeleze o procedură de calcul pentru procesarea specifică a unităţii.<br />

6.4.4.1.1. Gramatica analizorului sintactic<br />

Folosind notaţia BNF, gramatica ce specifică regulile pentru analizorul sintactic prezintă<br />

următoarea formă:<br />

%token INTREG<br />

%token FLOTANT<br />

%token SILABA<br />

%token SPATIU<br />

%token TAB<br />

%token VIRGULA<br />

%token PCTVIRG<br />

%token PUNCT<br />

%token LINIE_NOUA<br />

%token LINIUTA<br />

%token INCEPUT_FISIER<br />

%token INTREBARE<br />

%token EXCLAMARE<br />

%token PARANTEZA<br />

%token PARANTEZA_INCHISA<br />

%start text<br />

%%<br />

text : propoziţie<br />

| separatori propoziţie<br />

| propoziţie separatori<br />

| separatori propoziţie separatori<br />

;<br />

propoziţie : lista_cuvinte<br />

;<br />

lista_cuvinte : cuvint separatori lista_cuvinte<br />

|cuvint<br />

;<br />

cuvint : lista_silabe<br />

| numar<br />

;<br />

lista_silabe : silaba lista_silabe<br />

|silaba<br />

;


silaba: SILABA<br />

{ ProcesareSilaba($1);}<br />

;<br />

numar: INTREG<br />

{ ProcesareSilaba($1);}<br />

| FLOTANT<br />

{ ProcesareSilaba($1);}<br />

;<br />

separatori : separator separatori<br />

| separator<br />

{<br />

InitSeparatori();<br />

}<br />

;<br />

206<br />

Cap. 6. Metode de sinteză de voce<br />

separator : SPATIU<br />

{ Spatiu=true;ProcesareSeparator(' ');}<br />

| TAB<br />

{ Tab=true;ProcesareSeparator('\t');}<br />

| VIRGULA<br />

{ Virgula=true;ProcesareSeparator(',');}<br />

| PCTVIRG<br />

{ PctVirg=true;ProcesareSeparator(';');}<br />

| PUNCT<br />

{ Punct=true;ProcesareSeparator('.');}<br />

| LINIE_NOUA<br />

{ LinieNoua=true;ProcesareSeparator('\n');}<br />

| LINIUTA<br />

{ Liniuta=true; ProcesareSeparator(' ');<br />

ProcesareSeparator('-');ProcesareSeparator(' ');<br />

}<br />

| INTREBARE<br />

{ Intrebare=true;ProcesareSeparator('?');}<br />

| EXCLAMARE<br />

{ Exclamare=true;ProcesareSeparator('!');}<br />

| PARANTEZA<br />

{ Paranteza=true;ProcesareSeparator('(');}<br />

| PARANTEZA_INCHISA<br />

{ ParantezaInchisa=true;<br />

ProcesareSeparator(')');}<br />

| INCEPUT_FISIER<br />

Unităţile care apar în gramatică cu majuscule, specificate la început prin cuvântul cheie token<br />

(SILABA, INTREG, FLOTANT, etc.), sunt unităţile lexicale returnate de analizorul lexical.<br />

Unităţile sintactice (care apar cu litere mici la începutul fiecărei reguli) sunt formate pe măsură<br />

ce analizorul lexical returnează tokenii corespunzători. Astfel, cuvintele sunt formate din silabe,<br />

iar propoziţiile din cuvinte, respectiv separatori. Se observă că pentru silabe, numere şi separatori<br />

se apelează proceduri corespunzătoare din cadrul modulului de procesare (explicat în cele ce<br />

urmează), iar pentru unităţile sintactice (cuvinte, propoziţii) nu sunt specificate apeluri speciale.<br />

Şi aceasta pentru că analizorul sintactic este încapsulat în interiorul modulului de procesare, şi nu<br />

ca un modul de sine stătător.


6.4.4.2. Analizorul lexical utilizat în determinarea silabelor<br />

207<br />

Cap. 6. Metode de sinteză de voce<br />

Analizorul lexical este apelat de către analizorul sintactic pentru regăsirea unităţilor<br />

fonetice de bază, şi anume: silabele, caracterele despărţitoare şi numerele. Analizorul sintactic va<br />

grupa aceste unităţi lexicale de bază în cuvinte şi propoziţii. Analizorul sintactic este<br />

implementat prin program, pe când analizorul lexical este rezultat în urma generării automate<br />

prin intermediul unui generator de parsere de text, numit LEX [Fre05].<br />

Generatorul automat LEX construieşte un analizor lexical pornind de la o gramatică ce<br />

descrie regulile de producţie ale analizorului. Gramatica se scrie în limbaj standard BNF<br />

(Backus-Naur Form) şi specifică secvenţele de caractere care trebuie recunoscute din textul de la<br />

intrare, precum şi acţiunile de efectuat corespunzătoare acestor secvenţe. Secvenţele de caractere<br />

de recunoscut ţin cont de contextul stânga şi dreapta în care ele apar.<br />

Analizorul generat preia aşadar de la intrare un text pe care îl va parcurge secvenţial în<br />

scopul regăsirii secvenţelor specificate în gramatica BNF. În cazul nostru secvenţele se referă la<br />

regăsirea numerelor, caracterelor speciale şi a silabelor. Procesul realizat de către analizorul<br />

lexical este ilustrat în figura 6.19.<br />

Text<br />

C C C C C C C C C C C C C<br />

Cifră Separator Alfanumeric<br />

Reguli de<br />

producţie<br />

Întreg Real Sep. 1 … Sep. n Silabă<br />

Tratare_număr Tratare_separator Tratare_silabă<br />

Figura 6.19. Analizorul lexical pentru regăsirea silabelor<br />

Aşa cum se vede din figura 6.19, textul de la intrare este interpretat ca un şir de caractere.<br />

La început, caracterul curent este clasificat într-una din categoriile: cifră, caracter special sau<br />

separator, respectiv caracter alfanumeric. Luând în considerare şi contextul anterior precum şi<br />

contextul următor în care poate să apară, caracterul curent împreună cu caracterele anterior<br />

parcurse se grupează pentru a alcătui o unitate lexicală: un număr, un separator sau o silabă.


208<br />

Cap. 6. Metode de sinteză de voce<br />

Reguli de producţie specifice pentru fiecare categorie indică modul în care se formează<br />

aceste unităţi, realizând totodată şi o subclasificare a lor (de exemplu pentru numere dacă este<br />

întreg sau real, iar pentru separator – tipul acestuia).<br />

Odată identificat tipul unităţii, caracterele componente sunt memorate şi transmise<br />

analizorului sintactic prin intermediul unor proceduri numerice (Tratare_număr,<br />

Tratare_separator, Tratare_silabă).<br />

6.4.4.2.1. Gramatica analizorului lexical<br />

Gramatica analizorului lexical se prezintă în format standard BNF. Pentru o listă<br />

completă a formatului de specificaţie a gramaticii precum şi a capabilităţilor generatorului LEX,<br />

este indicată consultarea bibliografiei selectate [Fre05] şi a Anexei 1.<br />

Macrourile definite în LEX au următoarea structură:<br />

CIFRA [0-9]<br />

VOC ([aeiouăîây]|[aăeiou][–]|[–][aăeiou])<br />

VMARE [AEIOUĂÎÂY]<br />

CONS [bcdfghjklmnpqrstvxzşţ]<br />

CMARE [BCDFGHJKLMNPQRSTVXZŞŢ]<br />

LIT [a-zşţăîâĂÎÂŞŢ]<br />

CRATIMA ([-](l|i|n|s|[mstşţ]i))<br />

DIFT (oa|uă|e[-]?a|îi|Îi|âi)<br />

IU (iu)<br />

CIO (cio)<br />

SEP ([ t\n\r,;:.?!{}\[\]()\x1f]|<br />

LIN [–]<br />

[~@#%^&*"'`\|\/\\]|[+=]|[\-][ ])<br />

Macrourile de mai sus definesc cifrele, vocalele, consoanele (scrise cu litere mari sau<br />

litere mici), literele (caracterele alfanumerice), cratima - ca fiind o linie ce desparte cuvântul<br />

propriu-zis de o terminaţie de tip pronominal (de exemplu ‘punându-l’), diftongii din limba<br />

română (alăturarea de două vocale care intră în componenţa unei singure silabe) şi separatorii<br />

(caracterele speciale care despart cuvintele sau propoziţiile).<br />

În cele ce urmează vor fi prezentate regulile de producţie pentru regăsirea silabelor. În<br />

primul rând, se ştie că fiecare regulă este urmată de o acţiune, care se realizează atunci când<br />

caracterele de la intrare sunt potrivite conform regulii respective. Să vedem care sunt acţiunile<br />

care au fost definite ca răspuns la fiecare potrivire a intrării.


6.4.4.2.2. Acţiunile de realizat la potrivirea intrării<br />

209<br />

Cap. 6. Metode de sinteză de voce<br />

1. Tratare_Silabă – este acţiunea care confirmă regăsirea unei silabe de la intrare.<br />

În urma unei astfel de potriviri, se memorează şirul de caractere identificat, se resetează flagul<br />

Separator pentru a indica modulului de procesare că e vorba de o silabă, şi nu un separator, şi se<br />

returnează analizorului sintactic tipul SILABĂ al unităţii fonetice.<br />

Definiţia acestei acţiuni este următoarea:<br />

#define Tratare_Silaba<br />

Memorare_Cuvint( );<br />

Separator=0;<br />

return(SILABA);<br />

2. Tratare_Început – este acţiunea care tratează o excepţie de la regulile de bază.<br />

De multe ori, în limba română apar situaţii în care un anumit şir de litere se desparte în mod<br />

diferit în silabe, în funcţie de locul pe care acest şir îl ocupă în cadrul cuvântului (la început, la<br />

mijloc sau la sfârşit).<br />

De exemplu, secvenţa ‘PIER’ se comportă diferit în cuvântul:<br />

(a)‘PIERDE’ , unde secvenţa apare la începutul cuvântului, descompunerea fiind<br />

‘PIER-DE’, faţă de cuvântul:<br />

(b)‘COPIERE’, unde secvenţa apare la mijlocul cuvântului, cu descompunerea în silabe<br />

‘CO-PI-E-RE’.<br />

Ca urmare, trebuie definită o modalitate care să diferenţieze cele două cazuri, mai precis<br />

să diferenţieze cazul în care o anumită secvenţă apare la începutul cuvântului. Pentru că<br />

gramatica LEX-ului nu permite specificarea directă a contextului stânga, se foloseşte flagul<br />

Separator pentru a trata distinct cele două cazuri.<br />

Se observă în exemplul de mai sus că în cazul (a) secvenţa ‘PIER’ apare la începutul<br />

cuvântului, adică după un separator, pe când în cazul (b) secvenţa apare la mijlocul cuvântului,<br />

adică imediat după regăsirea unei alte silabe. Făcând această observaţie, putem face distincţia<br />

între cele două cazuri astfel: în primul caz Separator=1, iar în cazul al doilea Separator=0.<br />

Prin urmare se poate scrie funcţia de tratare a unei secvenţe în cazul în care aceasta se<br />

află la începutul unui cuvânt, astfel:<br />

#define Tratare_Inceput<br />

if(Separator)<br />

{<br />

Separator=0;<br />

Memorare_Cuvint( );<br />

return(SILABA);<br />

}<br />

else<br />

REJECT;<br />

/* toata intrarea se revocă,<br />

mergându-se la potrivirea următoare */


210<br />

Cap. 6. Metode de sinteză de voce<br />

În cazul în care Separator=0 nu se acceptă potrivirea întregii secvenţe, şi ea va fi<br />

descompusă în silabe prin regulile următoare.<br />

3. Tratare_Număr – este acţiunea care specifică regăsirea unui număr alcătuit din<br />

mai multe cifre. Se admit numere întregi sau reale (cu virgulă). La regăsirea unui număr după o<br />

secvenţă de mai multe cifre, se memorează caracterele, se resetează flagul Separator şi se<br />

returnează analizorului sintactic tipul identificat (ÎNTREG sau FLOTANT).<br />

Definiţia acestei acţiuni este:<br />

#define Tratare_Numar(tip_numar)<br />

Memorare_Cuvint( );<br />

Separator=0;<br />

return(tip_numar);<br />

4. Tratare_Separator – este acţiunea care specifică potrivirea de la intrare a unui<br />

separator, adică a unui caracter despărţitor între cuvinte şi propoziţii.<br />

Definiţia acestei acţiuni este de forma:<br />

#define Tratare_Separator(tip_separator)<br />

Separator=0;<br />

return(tip_ separator);<br />

Aici nu mai este necesară memorarea caracterului separator, acesta rezultând implicit din<br />

tipul returnat.<br />

6.4.4.2.3. Regulile de producţie pentru despărţirea în silabe<br />

A. Formatul regulilor<br />

O regulă pentru despărţirea în silabe poate avea una din următoarele forme:<br />

{ROOT_PATTERN} { Tratare_Silaba;} (F1)<br />

{ROOT_PATTERN}/{PATTERN} { Tratare_Silaba;} (F2)<br />

{PATTERN}{ENDING_PATTERN}/{SEP} { Tratare_Silaba;} (F3)<br />

Regula(F1)se aplică de exemplu pentru diftongi precum /OA/ sau /IU/, respectiv grupuri<br />

de foneme care apar întotdeauna în aceeaşi silabă din cadrul rădăcinii unui cuvânt<br />

(ROOT_PATTERN), indiferent de contextul fonematic următor (contextul dreapta).<br />

Regula(F2)se aplică pentru silabe situate la începutul sau la mijlocul unui cuvânt, având<br />

ca şi context dreapta un grup de foneme sau o altă silabă.


211<br />

Cap. 6. Metode de sinteză de voce<br />

Regula(F3)se aplică pentru silabe situate la sfârşitul unui cuvânt, constituite dintr-un<br />

anumit tipar de silabe (PATTERN), o terminaţie ( ENDING_PATTERN) şi care sunt urmate de un<br />

separator (SEP).<br />

B. Definirea silabei<br />

Aşa cum se va vedea în regulile prezentate în continuare, silaba poate fi definită ca o<br />

succesiune de consoane urmate de o vocală :<br />

silabă ={CONS}*{VOC} , ca în ‘PA-SĂ-RE’ (R1)<br />

sau o succesiune de consoane urmată de o vocală şi apoi de încă o consoană, aceasta în<br />

contextul dreapta al unei noi consoane (cu alte cuvinte, în cazul a două consoane alăturate, prima<br />

consoană poate să migreze în silaba anterioară) :<br />

silabă ={CONS}*{VOC}{CONS}/{CONS} (R2)<br />

precum în ‘CAN-DE-LĂ’ ,<br />

sau după aceeaşi regulă ca mai sus, dar în contextul dreapta al unui separator (adică la<br />

sfârşitul cuvântului) :<br />

silabă ={CONS}*{VOC}{CONS}/{SEP}, (R3)<br />

precum în ‘COR-MO-RAN’ .<br />

Faţă de aceste reguli de bază, intervine o serie mare de excepţii care trebuie cuprinse într-<br />

un set de reguli corespunzătoare.<br />

În continuare sunt prezentate regulile de producţie pentru regăsirea silabelor, a numerelor<br />

şi a separatorilor din cadrul textului de la intrare. Faţă de cele trei reguli de mai sus, care<br />

constituie setul de bază pentru regăsirea silabelor, s-a definit un set extins de reguli pentru<br />

excepţiile de la setul de bază. Pentru a se potrivi primele, aceste reguli din setul de excepţii s-au<br />

definit în faţă. Dacă secvenţa curentă de caractere nu se potriveşte cu nici o regulă din setul de<br />

excepţii, atunci se merge la setul de bază. Să vedem care sunt regulile din cele două seturi.


212<br />

Cap. 6. Metode de sinteză de voce<br />

SETUL DE REGULI PENTRU DESPǍRŢIREA ÎN SILABE (extras)<br />

Mai întâi s-au definit reguli pentru anumite grupuri de două vocale care apar la<br />

sfârşitul cuvântului. Aceste grupuri nu sunt diftongi, iar după regulile de bază ar trebui să<br />

fie despărţite în două silabe distincte.<br />

--------------------------------------------------------------<br />

Grupuri de două vocale la sfârşitul cuvântului<br />

--------------------------------------------------------------<br />

{CONS}*e{LIN}?i/{SEP} {/* grupul "ei" la sf. cuvintului */<br />

Ma-ri-ei<br />

Tratare_Silaba;<br />

}<br />

{CONS}*ua{CRATIMA}?/{SEP} {/* grupul "ua" la sf. cuvintului */<br />

o-ca-ua<br />

Tratare_Silaba;<br />

}<br />

{CONS}*ou/{SEP} {/* grupul "ou" la sf. cuvintului */<br />

ma-crou<br />

Tratare_Silaba;<br />

}<br />

{CONS}*eu/{SEP} {/* grupul "eu" la sf. cuvintului */<br />

şe-mi-neu<br />

Tratare_Silaba;<br />

}<br />

{CONS}*oi/{SEP} {/* grupul "oi" la sf. cuvintului */<br />

tri-foi<br />

Tratare_Silaba;<br />

}<br />

În mod asemănător, s-au definit reguli pentru grupuri de mai multe litere situate<br />

în finalul cuvintelor, terminate cu ‘I’ moale :<br />

--------------------------------------------------------------<br />

Grupuri lungi la sfârşitul cuvântului, terminate cu I moale<br />

--------------------------------------------------------------<br />

(ci|{CONS}*)[ou]ri/{SEP} {<br />

/* grupul "ori" la sf. cuvintului -> co-cori<br />

grupul "uri" la sf. cuvintului -> gru-puri */<br />

Tratare_Silaba;<br />

}


{CONS}+ili/{SEP} {/* sub-tili */<br />

Tratare_Silaba;<br />

}<br />

{CONS}*e[cnsş]*[tţ]i/{SEP} {/* ci-teşti, gă-seşti,<br />

is-teţi, stu-denţi, repe-tenţi*/<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{VOC}ş[tţ]i/{SEP} {/* măşti puşti caşti */<br />

Tratare_Silaba;<br />

}<br />

{CONS}+er[şţ]i/{SEP} {/* verşi, terţi */<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{VOC}[nr]şi/{SEP} {/* urşi, stinşi */<br />

Tratare_Silaba;<br />

}<br />

213<br />

Cap. 6. Metode de sinteză de voce<br />

Un caz separat îl constituie grupul IA, care uneori se comportă ca un diftong<br />

(‘bă-iat’), alteori nu, fiind despărţit în silabe diferite (‘Ma-ri-a’, ‘A-dri-a-na’).<br />

--------------------------------------------------------------<br />

Grupul IA<br />

-------------------------------------------------------------ia<br />

|<br />

ia{CONS}/{CONS} |<br />

ia{CONS}/{SEP} {/* grupul "ia" la inceput<br />

ex: iar-na*/<br />

Tratare_Silaba;<br />

}<br />

[cfmpv]ia {/* grupul "ia" in prima silaba;<br />

ex: pia-tra, mia-zazi, fia-ra, via-ta... */<br />

Tratare_Inceput<br />

}<br />

ia[t]?/{SEP} {/* grupul SINGULAR "ia" sau "iat" la<br />

sfârşitul cuvântului<br />

ex: ful-gu-ia ; ba-iat*/<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{VOC}/{CONS}[rRlL] { /* A-DRi-a-na */<br />

Tratare_Silaba;<br />

}


214<br />

Cap. 6. Metode de sinteză de voce<br />

Un alt caz este cel al grupurilor CI, CE, CHI, CHE, GI, GE, GHI, GHE. Literele<br />

‘C’ şi ‘G’ alături de vocala ‘I’ au o comportare specifică, ele fiind situate întotdeauna în<br />

aceeaşi silabă, iar dacă în continuare apare şi vocala ‘U’, atunci grupul ‘IU’ se comportă<br />

ca un diftong.<br />

--------------------------------------------------------------<br />

Grupurile CI, CE, CHI, CHE, GI, GE, GHI, GHE<br />

--------------------------------------------------------------<br />

{CONS}*{VOC}/[cg][h] { /* ma-CHe-ta */<br />

Tratare_Silaba;<br />

}<br />

chi/ui{SEP} { /* CHI-U-I */<br />

Tratare_Inceput;<br />

}<br />

ghiul/{SEP} { /* ghiul */<br />

Tratare_Inceput;<br />

}<br />

ghi/ul(ui)?{SEP} |<br />

ghi/uri(lor)?{SEP} { /* burghi-ul */<br />

Tratare_Silaba;<br />

}<br />

[G]i/un[ie] |<br />

[G]IU/{SEP} |<br />

[G]I/UL{SEP} |<br />

[C]H*{IU} |<br />

[C]H*{IU}{CONS}+/{SEP} |<br />

[C]H*{IU}{CRATIMA}?/{SEP}<br />

{ /* CHIUL ; veCHIU-i; barcaGI-ul*/<br />

Tratare_Silaba;<br />

}<br />

În continuare este tratat cazul grupurilor ‘ui’ , ‘uCi’ , ‘uCCi’ de la sfârşitul<br />

cuvântului (aici C specifică o consoană oarecare, şi nu litera ‘C’). Aceste grupuri vor face<br />

parte din aceeaşi silabă.<br />

--------------------------------------------------------------<br />

Grupul UI sau U + consoane + I la sfârşitul cuvântului<br />

--------------------------------------------------------------<br />

[tţ]i/uni{SEP} { /* ac-ti-uni */<br />

Tratare_Silaba;<br />

}<br />

{CONS}?{CONS}?uni/{SEP} { /* co-muni, pruni */<br />

Tratare_Silaba;<br />

}


{CONS}*u[ln][şţ]i/{SEP} { /* ca-runţi, des-culţi */<br />

Tratare_Silaba;<br />

}<br />

{CONS}+ui/{SEP} { /* pu-tui, ca-prui */<br />

Tratare_Silaba;<br />

}<br />

{CONS}*uni/{SEP} { /* cap-ca-uni */<br />

Tratare_Silaba;<br />

}<br />

215<br />

Cap. 6. Metode de sinteză de voce<br />

Grupurile IU şi IE se comportă şi ele diferit, în unele cazuri ca diftongi, iar în altele – nu.<br />

--------------------------------------------------------------<br />

Grupul IU sau IE<br />

--------------------------------------------------------------<br />

[nstţ]i/u{CONS} { /* naţi-une, poţi-une, scati-ului */<br />

Tratare_Silaba;<br />

}<br />

{CONS}?i/u{CRATIMA}{SEP}{ /* scati-u-i */<br />

Tratare_Silaba;<br />

}<br />

{CONS}{IU} |<br />

({IU}|IE) |<br />

({IU}|IE){CONS}/{CONS} { /* iu-bi-re; IUR-TA ; ie-le; ier-na*/<br />

Tratare_Silaba;<br />

}<br />

{CONS}+{IU}/{SEP} { /* sca-tiu */<br />

Tratare_Silaba;<br />

}<br />

({IU}|IE){CONS}+/{SEP} { /* te-IUL */<br />

Tratare_Silaba;<br />

}<br />

ie[rtţ]i/{SEP} |<br />

[cdgt]eri/{SEP} { /* ieri; ca-deri, pu-teri, petreceri */<br />

Tratare_Silaba;<br />

}<br />

PIER/{CONS} { /* PIER-DE */<br />

Tratare_Inceput;<br />

}<br />

PIE/LE |<br />

PIE/{CONS}R { /* PIE-TRE; */<br />

Tratare_Inceput;<br />

}


216<br />

Cap. 6. Metode de sinteză de voce<br />

Şi alte grupe de două vocale trebuiesc analizate separat, neavând o comportare<br />

regulată. Astfel grupurile ‘IO’ şi ‘EA’ se comportă doar uneori ca diftongi (‘cio -ban’,<br />

‘tea-tru’), alteori nu (‘pi -o-let’, ‘re-al’). Cazurile când apare despărţirea în silabe sunt<br />

tratate de regulile din setul de bază, aici fiind specificate doar cazurile când cele două<br />

vocale apar în aceeaşi silabă.<br />

--------------------------------------------------------------<br />

Grupuri de vocale – excepţii la diftongi<br />

--------------------------------------------------------------<br />

(cioa|chioa) { /* pu-cioa-sa, o-chioa-sa */<br />

Tratare_Silaba;<br />

}<br />

{CIO} |<br />

{CIO}{CONS}+/{SEP} |<br />

{CIO}{CONS}/{CONS} { /* CIO-ban, ul-CIOR, CION-dani */<br />

Tratare_Silaba;<br />

}<br />

{CONS}+ea{LIN}?i/{SEP}|<br />

{CONS}+ea{CRATIMA}?/{SEP} { /* pu-teai*/<br />

Tratare_Silaba;<br />

}<br />

Acum sunt specificate regulile pentru diftongi, adică grupurile de vocale care apar<br />

împreună în aceeaşi silabă.<br />

--------------------------------------------------------------<br />

Diftongi<br />

--------------------------------------------------------------<br />

{CONS}*{DIFT}{CONS}+/{SEP} { /* miel; ciung */<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{DIFT}{CONS}/{CONS} { /* gean-ta */<br />

Tratare_Silaba;<br />

}<br />

Urmează în sfârşit regulile din setul de bază pentru definirea silabelor. Astfel,<br />

toate regulile de dinainte se pot constitui în excepţii de la această regulă simplă.


217<br />

Cap. 6. Metode de sinteză de voce<br />

Silaba normală<br />

--------------------------------------------------------------<br />

{CONS}*{VOC} { /* Silaba normala */<br />

CRA-ter ; PA-SĂ-RE<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{VOC}{CONS}/{CONS} { /* Silaba normala */<br />

CAN-DE-LĂ<br />

Tratare_Silaba;<br />

}<br />

{CONS}*{VOC}{CONS}/{SEP} { /* Silaba normala */<br />

COR-MO-RAN<br />

Tratare_Silaba;<br />

}<br />

Numerele sunt specificate în felul următor (sunt recunoscute două tipuri de numere:<br />

întregi, respectiv reale) :<br />

--------------------------------------------------------------<br />

Numere<br />

--------------------------------------------------------------<br />

{CIFRA}+ {<br />

Separator=0;<br />

Tratare_număr(INTREG);<br />

}<br />

{CIFRA}+[.,]{CIFRA}+ {<br />

Separator=0;<br />

Tratare_număr(FLOTANT);<br />

}<br />

Separatorii sunt acele caractere speciale care despart două cuvinte sau două<br />

propoziţii din text. Caracterele speciale de acelaşi tip se pot grupa, pentru a rezulta astfel<br />

un singur separator.<br />

--------------------------------------------------------------<br />

Separatori<br />

--------------------------------------------------------------<br />

[ ]+ {Separator=1; return(SPATIU);}<br />

[\t]+ {Separator=1; return(TAB);}<br />

[,]+ {Separator=1; return(VIRGULA);}<br />

[;] {Separator=1; return(PCTVIRG);}<br />

[:] {Separator=1; return(DOUAPUNCTE);}<br />

[.] {Separator=1; return(PUNCT);}<br />

[?] {Separator=1; return(INTREBARE);}<br />

[!] {Separator=1; return(EXCLAMARE);}


218<br />

Cap. 6. Metode de sinteză de voce<br />

6.4.4.2.4. Rezultate obţinute cu analizorul lexical pentru determinarea silabelor<br />

Analizorul lexical pentru determinarea silabelor cuprinde un set de peste 180 de reguli<br />

pentru descompunerea cuvintelor în silabe. Performanţa obţinută a fost de 98% cuvinte<br />

despărţite corect, rată calculată pe un set de 50000 de cuvinte extrase din texte de diferite<br />

genuri (literatură, economie, politică, ştiinţă şi tehnică, filozofie, religie, etc.). Performanţa este<br />

mai bună decât cea găsită la alţi cercetători români care au folosit reguli lexicale ([Tom09] –<br />

90%), ceea ce evidenţiază avantajul folosirii seturilor bazate pe expresii regulate, ca în<br />

abordarea autorului. Aceste reguli au permis specificarea de pattern-uri (tipare) variabile<br />

pentru silabe, precum şi a contextelor stânga şi dreapta în care ele apar, rezultând o modalitate<br />

de definire mult mai versatilă a silabelor şi configuraţiilor contextuale.<br />

Pentru testarea analizorului a fost creată o aplicaţie în limbajul Visual C++, în care s-a<br />

integrat modulul de analiză generat prin LEX pe baza setului de reguli prezentat. În figura 6.20<br />

se poate observa interfaţa aplicaţiei, precum şi un exemplu de despărţire automată în silabe :<br />

Figura 6.20. Despărţirea automată în silabe


6.4.5. Determinarea aspectelor prozodice: accentele<br />

219<br />

Cap. 6. Metode de sinteză de voce<br />

După etapa de separare a unităţilor lingvistice ( silabele) din text, urmează etapa de<br />

determinare a aspectelor prozodice. În această fază a proiectării au fost determinate aspectele<br />

prozodice intrasegmentale, şi anume accentele din interiorul cuvintelor. Ca dezvoltări ulterioare,<br />

se va urmări determinarea aspectelor suprasegmentale, de tipul intonaţiei la nivel propoziţional.<br />

La fel ca în cazul silabelor, şi aici a fost necesară proiectarea unui analizor şi a unui set de<br />

reguli lexicale pentru determinarea accentelor.<br />

6.4.5.1. Analizorul lexical utilizat în determinarea accentelor<br />

Schema de principiu a analizorului lexical folosit pentru determinarea accentelor este<br />

ilustrată în figura 6.21.<br />

Analizor<br />

sintactic<br />

F1 F2 ... Fn S<br />

CUVÂNT<br />

Figura 6.21. Analizorul lexical pentru determinarea accentelor<br />

Parserul de text sau analizorul sintactic returnează cuvântul curent din stream-ul de<br />

intrare, cuvânt alcătuit dintr-o serie de foneme F1, F2, …, Fk şi terminat cu un separator S.<br />

Cuvântul este introdus la intrarea analizorului lexical care, pe baza unor reguli lexicale, va<br />

determina silaba accentuată din cuvânt.<br />

În limba română, silaba accentuată poate fi una din ultimele trei silabe ale cuvântului (SN<br />

= ultima silabă, SN_1 = penultima silabă, respectiv SN_2, SN_3 = silabele anterioare).<br />

Setul de reguli se constituie din :<br />

Reguli<br />

lexicale<br />

Analizor<br />

lexical<br />

(a) o regulă de bază, şi anume aceea că penultima silabă SN_1 este cea accentuată (regula<br />

generală pentru limba română) :<br />

{LIT}+/{SEP} { return(SN_1);}<br />

ACCENTE<br />

SN_3<br />

SN_2<br />

SN_1<br />

(b) un set consistent de excepţii organizat pe grupuri de cuvinte ce au aceeaşi terminaţie.<br />

În cazul analizorului pentru detectarea accentului, fiecare regulă returnează modulului de<br />

procesare indicele silabei accentuate din cuvânt.<br />

SN


220<br />

Cap. 6. Metode de sinteză de voce<br />

Analizorul lexical pentru determinarea accentelor a fost proiectat tot pe baza facilităţilor<br />

oferite de către generatorul automat LEX. Astfel regulile analizorului sunt furnizate<br />

generatorului LEX în format BNF (vezi [Fre05] şi Anexa 1) , stream-ul de intrare fiind chiar<br />

cuvântul curent extras din text de către analizorul sintactic.<br />

6.4.5.2. Gramatica analizorului lexical pentru determinarea accentelor din limba<br />

română<br />

În continuare se prezintă gramatica furnizată generatorului LEX în vederea determinării<br />

accentelor. Chiar dacă această versiune poate fi îmbunătăţită, rezultatele experimentale indică o<br />

rată mare a determinărilor corecte.<br />

Regulile din setul de excepţii sunt tratate la început. Toate cuvintele care nu vor fi<br />

recunoscute prin acest set de reguli vor fi tratate prin regula de bază: penultima silabă este cea<br />

accentuată.<br />

Macrourile definite sunt asemănătoare cu cele expuse la analizorul lexical pentru<br />

despărţirea în silabe:<br />

VOC [aeiouăîâyĂÎÂ]<br />

VMARE [AEIOUĂÎÂY]<br />

CONS [bcdfghjklmnpqrstvxzşţŞŢ]<br />

CMARE [BCDFGHJKLMNPQRSTVXZŞŢ]<br />

LIT ([a-z]|[ăîâşţ]|[ĂÎÂŞŢ])<br />

DIFT (oa|ie|iu|uă|Oa|Ie|Iu|OA|IE|IU|ea|ii|<br />

SEP [ ]<br />

LIN [-]<br />

îi|âi|Ea|Ii|Îi|EA|II|ÎI|ÂI|UĂ)<br />

CRATIMA ([-](l|i|n|o|s|[mstşţ]i))<br />

Spre deosebire de cazul analizorului pentru despărţirea în silabe, aici regulile de<br />

producţie nu sunt urmate de acţiuni specifice pentru fiecare tip de token returnat. Acţiunile se<br />

constituie doar din returnarea unei constante care să indice silaba accentuată din cuvânt :<br />

SN = ultima silabă,<br />

SN_1 = penultima silabă,<br />

SN_2 = antepenultima silabă, respectiv<br />

SN_3 = silaba de rang N-3.


221<br />

Cap. 6. Metode de sinteză de voce<br />

SETUL DE REGULI PENTRU DETERMINAREA ACCENTELOR (extras)<br />

Primul caz considerat este cel al verbelor terminate cu vocala ‚A’, respectiv verbe la<br />

imperfect. Aici am prezentat un subset al acestei clase, pasul următor fiind integrarea unui<br />

dicţionar de verbe pentru limba română. În acest caz considerat, ultima silabă (SN) este cea<br />

accentuată.<br />

------------------------------------------------------------<br />

Verbe<br />

------------------------------------------------------------<br />

(r[eă]z[ei]m|a?lunec|înrăm|urc|cobor)a/{SEP} |<br />

(picur|lu|calcul|sec|furiş|hotăr|judec)a/{SEP} |<br />

(mir|scri|pict|desen|juc|disloc|(de)?conect)a/{SEP} |<br />

(planific|fur|căr|mut|ascult|m[îâ]nc|tăi|conjug)a/{SEP} |<br />

((a|re|de)nunţ|blam|boicot|(bine)?cuv[îâ]nt|creştin)a/{SEP} |<br />

(promulg|premedit|preocup|prepar|împresur|înregiment)a/{SEP}<br />

{<br />

/* verbe ce se termină în 'a' */<br />

return(SN);<br />

}<br />

(stud|răsfo|cop|tă|chinu|răsfo|preţu|miru|(păl|plăs)?mu)ia/{SEP} |<br />

(fornă|[pţ]iu|concil|îndo|trebălu|c[îâ]rmu|alin|dăru|îmbă?)ia/{SEP}<br />

{<br />

/* verbe la imperfect ce se termină în 'a' */<br />

return(SN);<br />

}<br />

De asemeni, unele plurale de substantive constituie excepţii de la regula de bază. Acestea<br />

sunt cele terminate cu ‘II’, respectiv substantive articulate şi nearticulate terminate cu ‘LE’.<br />

------------------------------------------------------------<br />

Plurale de substantive – terminate în II, ELE, ILE<br />

------------------------------------------------------------<br />

(scat|geamg|coliv|cop|pust|prost|pălăr|cut|terap)ii/{SEP} |<br />

(tehnolog|farmac|bater)ii/{SEP} {<br />

/* scatii, copii */<br />

return(SN);<br />

}<br />

(bre|a|cas|s|be|sal)tele/{SEP} {/* bretele, atele, castele */<br />

return(SN_1);<br />

}<br />

(po|ron|aca|mo)dele/{SEP} {/* podele, acadele */<br />

return(SN_1);<br />

}<br />

{LIT}+(d|l|m|n|t)ele/{SEP} {/* peretele,stelele,ramele,numele */<br />

return(SN_2);<br />

}


222<br />

Cap. 6. Metode de sinteză de voce<br />

Urmează categoria de cuvinte (substantive articulate sau verbe la imperfect) ce au<br />

terminaţia ‚EA’.<br />

------------------------------------------------------------<br />

Cuvinte terminate în EA<br />

------------------------------------------------------------<br />

{LIT}+cerea?/{SEP} {/* facere(a), petrecere */<br />

return(SN_2);<br />

}<br />

{LIT}+(e|a)rea/{SEP} {/* mâncarea, studierea, puterea */<br />

return(SN_1);<br />

}<br />

{LIT}+[nr]tea/{SEP} {/* cartea, mintea, puntea */<br />

return(SN_1);<br />

}<br />

{LIT}+ea/{SEP} {/* şosea,andrea; putea, plăcea */<br />

return(SN);<br />

}<br />

Alte excepţii sunt substantivele terminate în ‘RI’ sau ‘RII’. Acestea sunt<br />

substantive la plural, ce pot fi articulate sau nearticulate.<br />

------------------------------------------------------------<br />

Cuvinte terminate în RI sau RII<br />

------------------------------------------------------------<br />

{LIT}+[bdlmnrt]ări/{SEP} {/* mutări */<br />

return(SN);<br />

}<br />

(nastu|marto|mătu)rii/{SEP} {/* nasturii, martorii */<br />

return(SN_2);<br />

}<br />

(o|re|pre)feri?/{SEP} {/* oferi,preferi */<br />

return(SN);<br />

}<br />

(mărtu|dato|căsăto|pălă|bucu|scamato|prefăcăto)rii/{SEP}<br />

{/* mărturii, bucurii*/<br />

return(SN);<br />

}<br />

Urmează o serie de cuvinte terminate cu T, TI, Ţ, ŢI, S, ŞI (substantive, adjective, verbe<br />

la timpul prezent sau participiul trecut).


------------------------------------------------------------<br />

223<br />

Cap. 6. Metode de sinteză de voce<br />

Cuvinte terminate în T, TI, Ţ, ŢI, S, ŞI<br />

------------------------------------------------------------<br />

{LIT}+eşi/{SEP} {/* răzeşi, culeşi */<br />

return(SN);<br />

}<br />

{LIT}+a[cr][tţ]i?/{SEP} {/* compact, compacţi, împarţi */<br />

return(SN);<br />

}<br />

{LIT}+[âî][ştţ]i?/{SEP} {/* coborâţi */<br />

return(SN);<br />

}<br />

{LIT}+u[ln][şţ]i/{SEP} {/* ajunşi, cărunţi, desculţi */<br />

return(SN);<br />

}<br />

Urmează două grupe de cuvinte ce conţin vocalele I, respectiv O sau U în ultima silabă.<br />

------------------------------------------------------------<br />

Cuvinte cu vocala I în ultima silabă<br />

------------------------------------------------------------<br />

{LIT}+i[lnsştţv]i?/{SEP} {/* fitil, furiş, ciulit, pitit */<br />

return(SN);<br />

}<br />

{LIT}+[dlptţv]iri/{SEP} {/* priviri, subţiri, dospiri */<br />

return(SN);<br />

}<br />

{LIT}+([cgz]|ch)i/{SEP} {/* colaci, alegi, genunchi */<br />

return(SN);<br />

}<br />

------------------------------------------------------------<br />

Cuvinte cu vocala O sau U în ultima silabă<br />

------------------------------------------------------------<br />

{LIT}+{VOC}u/{SEP} {/* tablou, maieu, saleu */<br />

return(SN);<br />

}<br />

(pic|can|mar|vec|Nis)tori?/{SEP} {/* pictor,cantor,vector */<br />

return(SN_1);<br />

}<br />

{LIT}+o[fnsşţ]i?/{SEP} {/* frumos, frumoşi */<br />

return(SN);<br />

}


------------------------------------------------------------<br />

224<br />

Cap. 6. Metode de sinteză de voce<br />

Cuvinte terminate în RA, RE, REA, RĂ, RI<br />

------------------------------------------------------------<br />

{LIT}+[jm]ur[ăe]/{SEP} {/* tremură, latură */<br />

/* ramură, scândură */<br />

return(SN_2);<br />

}<br />

(fal|co|mo|car)duri/{SEP} { /* falduri*/<br />

return(SN_1);<br />

}<br />

{LIT}*(duri)/{SEP} { /* călduri */<br />

return(SN);<br />

}<br />

{LIT}+[dirt]eri/{SEP} { /* căderi, păreri, puteri */<br />

return(SN);<br />

}<br />

O categorie aparte o reprezintă cuvintele compuse, ce conţin o terminaţie pronomială<br />

separată de cuvântul principal printr-o liniuţă de despărţire (sau cratimă).<br />

------------------------------------------------------------<br />

Cuvinte cu cratimă<br />

------------------------------------------------------------<br />

{LIT}+[dg]eţi{CRATIMA}/{SEP} { /* întindeţi-i, atingeţi-i */<br />

ExceptieCratima=1;<br />

return(SN_2);<br />

}<br />

{LIT}+[dg]eţi{NETESE}/{SEP} { /* întindeţi-le */<br />

ExceptieCratima=1;<br />

return(SN_3);<br />

}<br />

{LIT}+ţi{CRATIMA}/{SEP} { /* muieţi-s, vindecaţi-i */<br />

ExceptieCratima=1;<br />

return(SN_1);<br />

}<br />

În fine, regula de bază stabileşte accentul pe penultima silabă:<br />

------------------------------------------------------------<br />

Regula de bază<br />

------------------------------------------------------------<br />

{LIT}+/{SEP} { /* orice alt cuvânt */<br />

return(SN_1);<br />

}


225<br />

Cap. 6. Metode de sinteză de voce<br />

6.4.5.3. Rezultate obţinute cu analizorul lexical pentru determinarea accentelor<br />

Analizorul lexical pentru determinarea accentelor cuprinde un set de 250 de reguli pentru<br />

detectarea silabei accentuate din interiorul cuvintelor. S-a obţinut o rată de detectare corectă a<br />

silabei acentuate de 94%, rată calculată pe acelaşi set de 50000 de cuvinte ca şi în cazul<br />

despărţirii în silabe.<br />

Din câte cunoaştem, în ţară nu există la ora actuală rezultate publicate despre construirea<br />

unor analizoare bazate exclusiv pe reguli pentru determinarea accentuării, ci doar lexicoane ce<br />

indică accentul cuvintelor, lexicoane ce au fost construite manual [Giu06] sau semiautomat<br />

[Dia09]. Avantajul metodei bazată pe reguli proiectată de autor rezidă în primul rând în<br />

eficientizarea lucrului şi reducerea semnificativă a costului şi timpului alocat procesului de<br />

proiectare.<br />

Ca şi dezvoltare de viitor, rata de detectare corectă a accentuării va putea fi îmbunătăţită<br />

semnificativ prin folosirea unui dicţionar morfologic al limbii române. Astfel, gradul de<br />

completitudine al unor reguli stabilite pentru cuvinte cu aceeaşi terminaţie poate fi mărit prin<br />

luarea în considerare a tuturor cuvintelor cu terminaţia respectivă din dicţionar. Aceasta va duce<br />

la creşterea ratei de detecţie corectă a analizorului, chiar fără a introduce noi reguli de<br />

accentuare.<br />

Pentru testarea analizorului a fost creată o aplicaţie în limbajul Visual C++, în care s-a<br />

integrat modulul de analiză generat prin LEX pe baza setului de reguli prezentat. În figura 6.22<br />

se poate observa un exemplu de detectare automată a silabei accentuate din interiorul cuvintelor:<br />

Figura 6.22. Detectarea automată a accentelor


6.4.6. Proiectarea bazei de date vocale<br />

226<br />

Cap. 6. Metode de sinteză de voce<br />

Găsirea unor modalităţi de proiectare a bazelor de date vocale optime pentru sinteza de<br />

voce reprezintă un subiect de cercetare important pentru specialiştii din domeniu. O bază de date<br />

vocală bine proiectată are un impact de prim ordin asupra calităţii vocii sintetizate, indiferent de<br />

tipul unităţilor fonetice folosite ([Bod07-2], [Tod09]).<br />

Dacă la metodele bazate pe corpus baza de date este de dimensiuni mari, cuprinzând zeci<br />

de minute de vorbire înregistrată, din care vor fi segmentate unităţile fonetice, în cazul metodelor<br />

bazate pe silabe baza de date cuprinde un număr mai redus de unităţi, în funcţie de gradul de<br />

completitudine ales.<br />

Baza de date utilizată în cadrul metodei de sinteză propusă de autor cuprinde un subset al<br />

silabelor limbii române. După înregistrare, silabele trebuie să urmeze un proces de normalizare<br />

pentru alinierea parametrilor de tonalitate şi intensitate a rostirii. Silabele vor trebui să fie<br />

înregistrate în diferite contexte şi moduri de pronunţie, astfel încât să includă şi prozodia aferentă<br />

textului care va fi sintetizat.<br />

Baza de date vocală conţine silabe compuse din două, trei sau patru litere, notate cu S2,<br />

S3, respectiv S4.<br />

Silabele de tip S2, adică silabele compuse din două foneme sunt în general de forma:<br />

- {CV} (C=consoană, V=vocală), cum sunt de exemplu: ‚ba’, ‚be’, ‚co’, ‚cu’,<br />

- {VC}, cum ar fi ‚ar’, ‚es’ etc., adică cele care apar de obicei la începutul unor cuvinte în<br />

limba română,<br />

- {VV}, structura de tip diftong: ‘oa’, ‘iu’, ‘ie’.<br />

Silabele de tip S3, compuse din trei foneme, pot fi de tipul:<br />

- {CCV} , de exemplu: ‚bra’, ‚cre’, ‚tri’, ‚ghe’;<br />

- {CVC} , cum ar fi: ‚mar’, ‚ver’,<br />

- {CVV} , de exemplu: ‚cea’, ‚cei’, ‚soa’.<br />

Silabele de tip S4, compuse din patru foneme, pot fi de mai multe tipuri, ca de exemplu:<br />

- {CCVC} , de exemplu: ‚braţ’, ‚prin’, ‚ghem’;<br />

- {CCCV} , de exemplu: ‚stră’,<br />

- {CCVV} , de exemplu: ‚prea’,<br />

- {CVCC} , cum ar fi: ‚vers’,<br />

- {VVCV} , de exemplu: ‚iúţi’ (ultima vocală este de obicei un ‘i’ moale),<br />

- {CVCV} , cum ar fi: ‚véri’ (de obicei această configuraţie apare la sfârşitul cuvintelor),<br />

- {CVVC} , de exemplu: ‚coar’ .<br />

În baza de date nu au fost înregistrate toate silabele limbii române. Conform cu [Din04], se<br />

menţionează că numărul total al silabelor limbii române (număr rezultat din despărţirea în silabe<br />

a tuturor cuvintelor existente în dicţionar) este de 6496. Aşa cum se va prezenta în capitolul<br />

destinat implementării sistemului de sinteză vocală, în baza de date au fost înregistrate (în<br />

diferite contexte şi moduri de pronunţie) doar aproximativ 600 de silabe.<br />

Strategia urmărită a fost de a înregistra în fiecare categorie S2, S3 şi S4 un număr cât mai mare<br />

de silabe, în ordinea frecvenţei de apariţie în limba română. Pentru aceasta, dat fiind faptul că a<br />

fost proiectată o metodă automată de despărţire a cuvintelor în silabe, s-a avut în vedere<br />

realizarea unei statistici a silabelor limbii române în scopul utilizării ei în procesul de construire<br />

a setului de silabe de referinţă şi a bazei de date acustice.


6.4.6.1. O statistică a silabelor limbii române<br />

227<br />

450000<br />

400000<br />

350000<br />

300000<br />

250000<br />

200000<br />

150000<br />

100000<br />

50000<br />

0<br />

Cap. 6. Metode de sinteză de voce<br />

Această statistică urmăreşte detectarea frecvenţelor de apariţie ale silabelor din limba<br />

română. Statistica a fost realizată folosind texte extrase din domenii precum: beletristică de<br />

diverse genuri, religie, economie, politică, ştiinţă şi tehnică, ziaristică. Textele au însumat un<br />

număr de aproximativ 342000 de cuvinte, adică peste 600 de pagini în format A4. Au fost<br />

contabilizate doar silabele de tip S2, S3 şi S4, adică având două, trei sau patru foneme<br />

componente. S-au obţinut următoarele valori:<br />

- pentru tipul S2 : 202 silabe distincte,<br />

- pentru tipul S3 : 1432 silabe distincte,<br />

- pentru tipul S4 : 1180 silabe distincte,<br />

în total 2814 silabe.<br />

Această statistică reflectă şi faptul că limba vorbită foloseşte mai puţine cuvinte decât<br />

cele existente în dicţionar, şi implicit mai puţine silabe. Configuraţia silabelor S2, S3 şi S4 este<br />

ilustrată în figura 6.23. Ca şi frecvenţă de apariţie, silabele S2 au apărut în schimb cel mai<br />

frecvent. În figura 6.24 sunt ilustrate frecvenţele de apariţie ale silabelor S2, S3 şi S4.<br />

1600<br />

1400<br />

1200<br />

1000<br />

800<br />

600<br />

400<br />

200<br />

0<br />

S2 S3 S4<br />

Figura 6.23. Configuraţia silabelor S2, S3 şi<br />

S4 din corpusul divers de 342000 de cuvinte<br />

S2 S3 S4<br />

Figura 6.24. Frecvenţele de apariţie ale silabelor<br />

S2, S3 şi S4<br />

Frecvenţele de apariţie ale primelor 10 silabe din fiecare tip sunt redate în graficul<br />

următor:<br />

25000<br />

20000<br />

15000<br />

10000<br />

5000<br />

0<br />

1 2 3 4 5 6 7 8 9 10<br />

Figura 6.25. Frecvenţele de apariţie ale primelor 10 silabe S2, S3 şi S4<br />

S4<br />

S3<br />

S2


228<br />

Cap. 6. Metode de sinteză de voce<br />

În figurile următoare sunt prezentate, pentru fiecare tip S2, S3 şi S4, primele 10 silabe în<br />

ordinea frecvenţei de apariţie (dată în procente) :<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

5<br />

4.5<br />

4<br />

3.5<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

de te în re le ca şi se ce ta<br />

Figura 6.26. Primele 10 cele mai frecvente silabe de tip S2<br />

lor lui rea con mai tre din tru tul pre<br />

Figura 6.27. Primele 10 cele mai frecvente silabe de tip S3<br />

prin sunt când ceas fost nici foar mult timp meni<br />

Figura 6.28. Primele 10 cele mai frecvente silabe de tip S4<br />

Astfel obţinându-se cele trei seturi de silabe S2, S3 şi S4 (în anexele 2, 3 şi 4 sunt<br />

prezentate extrasele cele mai semnificative din fiecare set), s-a putut trece la construirea bazei de<br />

date acustice care să conţină silabele cel mai frecvent întâlnite în limba română vorbită.


6.4.6.2. Caracteristicile silabelor înregistrate în baza de date acustică<br />

229<br />

Cap. 6. Metode de sinteză de voce<br />

În realizarea bazei de date cu silabe s-a ţinut cont de integrarea prozodiei locale sub-<br />

segmentale, din interiorul cuvintelor. Astfel, prozodia a fost inclusă prin înregistrarea silabelor<br />

accentuate şi neaccentuate, pentru fiecare categorie S2, S3 şi S4. De asemeni, ţinând cont că o<br />

silabă se rosteşte distinct în funcţie de locul pe care aceasta îl ocupă în cadrul cuvântului, dacă<br />

este situată la începutul, mijlocul sau sfârşitul unui cuvânt, s-a urmărit înregistrarea silabelor în<br />

aceste diferite contexte în care ele pot să apară. În primă instanţă s-a făcut diferenţierea între<br />

silabe finale, pe de o parte, şi silabe mediane şi iniţiale (integrate tot în categoria de silabe<br />

mediane), pe de altă parte. În exemplul următor se pot vedea câteva situaţii care au fost luate în<br />

considerare:<br />

Categoria S2<br />

Context Accent Ex.<br />

median<br />

final<br />

accentuat ca - pó - ta<br />

neaccentuat po - cál<br />

accentuat şo - cá<br />

neaccentuat ró - ca<br />

Categoria S4<br />

Categoria S3<br />

Context Accent Ex.<br />

median<br />

final<br />

Context Accent Ex.<br />

median<br />

final<br />

accentuat prín - de<br />

neaccentuat prin - ţé - să<br />

accentuat com - pléx<br />

neaccentuat dú - plex<br />

accentuat prí - ma<br />

neaccentuat com - pri - mát<br />

accentuat dor - meá<br />

neaccentuat só- ră - mea<br />

În acest mod, deşi implementarea curentă nu şi-a propus să modifice prozodia la nivelul<br />

propoziţiei prin intonaţie, elementele de prozodie locală prezentate asigură o rostire suficient de<br />

clară şi naturală a textului. Dacă în faza următoare de dezvoltare se va aborda şi prozodia<br />

suprasegmentală, modificarea intonaţiei este posibilă prin utilizarea tehnicii PSOLA, prezentată<br />

în secţiunea 6.3.1.<br />

Deoarece intonaţia vorbirii se poate modifica prin schimbarea parametrilor de durată şi<br />

amplitudine corespunzători perioadelor de semnal [Bod09], metoda proiectată de autor de<br />

detectare automată a perioadelor de semnal ce corespund frecvenţei fundamentale (capitolul 4.6)<br />

se dovedeşte a fi foarte utilă.


6.4.6.3. Organizarea bazei de date acustice<br />

230<br />

Cap. 6. Metode de sinteză de voce<br />

Silabele au fost introduse în baza de date respectând caracteristicile prezentate mai sus.<br />

Organizarea bazei de date este sub formă arborescentă ( figura 6.29). Nodurile arborelui<br />

reprezintă caracteristicile silabelor, iar nodurile frunză corespund silabelor propriu-zise.<br />

S2<br />

Med Fin<br />

A N A N<br />

bá zú ba zu bea zoa<br />

Figura 6.29. Organizarea arborescentă a bazei de date vocale<br />

Structura ierarhică a bazei de date cuprinde aşadar patru nivele, şi anume:<br />

R<br />

S3<br />

Med Fin<br />

A N A N<br />

cei zeu<br />

1. Nivelul Categorie : Silabe de două, trei sau patru foneme (S2, S3, S4);<br />

2. Nivelul Context : Segment median (Med) sau final (Fin), relativ la poziţia din cadrul<br />

cuvântului;<br />

3. Nivelul Accent : Silabe accentuate (A) sau neaccentuate (N) în interiorul cuvântului ;<br />

4. Nivelul Silabă : Unităţile acustice înregistrate în format WAVE.<br />

Această structură ierarhică [Categorie] -> [Context] -> [Accent] -> [Silabǎ] conferă şi<br />

avantajul reducerii substanţiale a timpului de căutare în baza de date, în faza de potrivire a<br />

unităţilor fonetice din text cu unităţile acustice înregistrate.<br />

De asemeni, trebuie spus că pe lângă silabele din categoriile amintite S2, S3 şi S4, s-au<br />

înregistrat şi fonemele singulare, în scopul utilizării acestora în construirea silabelor care nu se<br />

regăsesc în baza de date acustică.<br />

S4<br />

Med Fin<br />

N A N A<br />

chea prea beau zeau


6.4.7. Regăsirea unităţilor acustice şi sinteza de voce<br />

231<br />

Cap. 6. Metode de sinteză de voce<br />

În această etapă se urmăreşte mai întâi regăsirea unităţilor acustice din baza de date<br />

necesare pentru sinteză. Aceasta se realizează pe baza unităţilor lingvistice (silabele) determinate<br />

prin analiza textului de la intrare. Se va ţine seama şi de caracteristicile silabelor, care au fost<br />

prezentate în paragrafele 6.4.6.2 şi 6.4.6.3. În continuare, se notează aceste caracteristici astfel:<br />

- categoria silabică : SN , unde N indică lungimea silabei (numărul de foneme);<br />

- contextul silabei : printr-un indice (M pentru median şi F pentru final) asociat silabei<br />

respective. De exemplu :<br />

maM , reM - silabe în context median ;<br />

maF , reF - silabe în context final;<br />

- accentuarea: printr-un indice superior (A pentru silabă accentuată şi N pentru silabă<br />

neaccentuată) care se ataşează silabei respective. De exemplu :<br />

ma A , re A - silabe accentuate ;<br />

ma N , re N - silabe neaccentuate.<br />

Pot exista următoarele situaţii:<br />

a) Silaba dorită este regăsită identic în baza de date vocală, din punct de vedere fonetic<br />

(al fonemelor componente), din punct de vedere contextual (median sau final) şi din punct de<br />

vedere prozodic (al accentuării). În acest caz silaba se reţine ca atare pentru a fi înglobată în<br />

cuvântul de sintetizat.<br />

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

construirea acesteia din subunităţi ( foneme separate şi silabe mai scurte) care să respecte în<br />

primul rând prozodia cerută (silabă accentuată sau neaccentuată) , şi apoi, dacă este posibil,<br />

contextul specificat.<br />

c) Silaba nu este regăsită fonetic în baza de date. Şi în acest caz silaba va fi compusă pe<br />

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

Tabelul 6.4 ilustrează aceste situaţii prin câteva exemple:<br />

Tabelul 6.4. Exemple de generare a unităţilor acustice pornind de la unităţile textuale<br />

Regăsire<br />

fonetică<br />

Regăsire<br />

context<br />

Regăsire<br />

prozodie<br />

Unitate textuală<br />

Unitate acustică<br />

în baza de date<br />

Generare<br />

Da Da Da cáp A M cáp A M cáp A M<br />

Da Da Nu mír A M mir N M , mí A M mí A M + r<br />

Da Nu Da dín A M dín A F , dí A M dí A M + n<br />

Da Nu Nu şór A F şór N M , şó A F şó A F + r<br />

Nu x x pórt A M pó A M pó A M + r + t


232<br />

Cap. 6. Metode de sinteză de voce<br />

Căutarea în baza de date se face după lungimea silabei, contextul median sau final şi<br />

accentuare. Algoritmul de căutare este următorul:<br />

Search_DB (Syllable Syl, Length N, Context Ctx, Accent Acc)<br />

{<br />

/*P1*/ if ( N==1) then {<br />

OutStream ( WAVE_DB( Syl) ) ;<br />

segment_retrieved = true;<br />

return; }<br />

/*P2*/ if ( Exist_DB(Syl, N, Ctx, Acc) )<br />

then {<br />

OutStream ( WAVE_DB( Syl) ) ;<br />

segment_retrieved = true;<br />

return; }<br />

/*P3*/ SplitSet = MakeSplitSet (Syl, N -1, Ctx, Acc);<br />

/*P4*/ foreach (s in SplitSet)<br />

if (Ctx==FINAL) then<br />

Add (SplitSet, s, len(s), MEDIAN, Acc);<br />

/*P5*/ foreach (s in SplitSet)<br />

If (not segment_retrieved )<br />

Search_DB (s, len(s), ctx(s), Acc);<br />

}<br />

Algoritmul verifică la pasul întâi dacă silaba este alcătuită dintr-o singură fonemă; în caz<br />

afirmativ, silaba există în baza de date şi se extrage în stream-ul acustic de ieşire, unde se va<br />

concatena cu silabele găsite anterior.<br />

În pasul doi, se caută silaba în baza de date, ţinând cont de lungime, context şi<br />

accentuare. Dacă este găsită, atunci se returnează în stream-ul de ieşire pentru concatenare.<br />

În pasul al treilea se ajunge dacă silaba nu e regăsită în contextul sau accentuarea dorite.<br />

Se calculează setul de diviziune al silabei curente astfel: se divide silaba într-o succesiune de<br />

segmente alcătuite din fonemele sale, astfel încât să existe cel puţin un segment de lungime mai<br />

mică cu o unitate decât lungimea silabei. De exemplu, silaba cráp se divide în cM + ráp A F sau<br />

crá A M + pF .<br />

În pasul patru, dacă în setul de diviziune obţinut la pasul anterior există segmente în<br />

context final, se duplică segmentele respective şi în context median. Urmând exemplul din<br />

paragraful precedent, silaba ráp A F se duplică în contextul complementar, în setul iniţial<br />

adăugându-se astfel silaba ráp A M . Acest pas al algoritmului indică folosirea unei silabe mediane<br />

în locul uneia finale, evitând fragmentarea acesteia din urmă în silabe de rang inferior. Situaţia<br />

inversă (înlocuirea unei silabe mediane printr-o silabă finală), de cele mai multe ori, nu produce<br />

rezultate bune în percepţia auditivă a semnalului sintetizat.<br />

În pasul al cincilea se aplică recursiv algoritmul pentru fiecare segment din setul de<br />

diviziune al silabei iniţiale.<br />

Exemplul următor ilustrează construirea seturilor de diviziune pentru cuvântul<br />

monosilabic cráp.


cráp A F<br />

Figura 6.30. Construirea seturilor de diviziune pentru silaba cráp<br />

233<br />

Cap. 6. Metode de sinteză de voce<br />

În exemplul de mai sus s-au construit trei seturi de diviziune, pornindu-se de la o silabă<br />

tetrafonematică. Fiecare element din set este asociat cu încercarea de regăsire în baza de date a<br />

unuia sau mai multor segmente fonetice de lungime egală cu ordinul setului (ordinul a fost scris<br />

în paranteză, de exemplu SplitSet1(3) are ordinul trei). Astfel, corespunzător cu primul set se<br />

caută în baza de date segmentele crá A M , ráp A F , ráp A M , pentru setul doi se caută crM , rá A M , áp A F ,<br />

áp A M , iar pentru cel de-al treilea set se caută doar segmente unifonematice, care, datorită<br />

includerii în baza de date a tuturor fonemelor din limba română, vor fi găsite întotdeauna.<br />

Pentru generarea acustică a silabei iniţiale se parcurg în ordine cele trei seturi, începând<br />

cu primul, care conţine silabele (segmentele) cele mai lungi. Dacă segmentul respectiv este găsit<br />

în baza de date, căutarea se opreşte, iar dacă nu, căutarea continuă cu următorul segment, şamd.<br />

Dacă nu se găseşte nici un segment din setul curent, se merge la următorul set. În cel mai<br />

nefavorabil caz, se ajunge la ultimul set, care are un singur element format din fonemele<br />

singulare ale silabei iniţiale. Cu observaţia din aliniatul precedent, aici căutarea se încheie.<br />

În baza de date acustică silabele au fost înregistrate folosind notaţia explicitată în<br />

următorul tabel :<br />

Tabelul 6.5. Notaţii ale silabelor folosite în baza de date acustică<br />

Descriere Notaţie în<br />

text<br />

silabă conţinând<br />

litera ţ<br />

silabă conţinând<br />

litera ş<br />

silabă conţinând<br />

literele â, î<br />

SplitSet1(3)<br />

crá A M + p<br />

c + ráp A F<br />

c + ráp A M<br />

Notaţie în<br />

baza de<br />

date<br />

SplitSet2(2)<br />

crM + áp A F<br />

crM + áp A M<br />

crM + á A M + p<br />

c + rá A M + p<br />

c + r + áp A F<br />

c + r + áp A M<br />

Silabă în text Silabă în baza<br />

de date<br />

SplitSet3(1)<br />

c + r + á A M + p<br />

Exemplu<br />

ţ t~ ţi t~i ţi - ne<br />

ş s~ şa s~a şa - siu<br />

â, î i~ mân, în mi~n, i~n mân - ca - re<br />

în - ce - pe


silabă conţinând<br />

litera ă<br />

silabă conţinând<br />

litera i moale<br />

234<br />

Cap. 6. Metode de sinteză de voce<br />

ă a~ pă pa~ pă - mânt<br />

i i^ ui ui^ ui - te<br />

silabă accentuată sil sil_ sá sa_ sá - ni- e<br />

silabă finală sil *sil sa, crá *sa, *cra_ ca - sa<br />

De exemplu, fie sintagma :<br />

lu - crá<br />

„Evidenţierea unui cadru general pentru specificarea algoritmilor”<br />

Dacă în baza de date acustică se găsesc silabele / segmentele (cu notaţiile din tabelul 6.5):<br />

S3 *rea pen_ tru<br />

S2 vi de t~i *ui^ ca_ ru ge ne ra_ pe ci fi go ri_ mi lo<br />

S1 e n e_ u_ d l s a t r<br />

Rezultatul identificării silabelor / segmentelor în baza de date, folosind notaţiile din<br />

tabelul 6.5, este următorul :<br />

< e vi de n t~i e_ *rea u_ n *ui^ ca_ d ru ge ne ra_ l pen_ tru s<br />

pe ci fi ca_ *rea a l go ri_ t mi lo r ><br />

Aplicaţia prin care s-a implementat algoritmul căutării în baza de date generează acelaşi<br />

rezultat, cu observaţia că afişările segmentelor pot fi inversate datorită recursivităţii :<br />

Figura 6.31. Rezultatul căutării silabelor în baza de date


235<br />

Cap. 6. Metode de sinteză de voce<br />

Unităţile acustice găsite în baza vocală prin algoritmul expus mai sus se vor concatena<br />

pentru a genera semnalul de ieşire. Unităţile se concatenează ţinând cont de pauza dintre cuvinte,<br />

care se va ajusta în funcţie de ritmul cerut vorbirii.<br />

Exemplu :<br />

desc. unităţi<br />

unui cadru u_ n *ui^ [brk] ca_ d ru<br />

u_ n *ui^ <br />

ca_ d ru<br />

Figura 6.32. Exemplu de concatenare a unităţilor acustice<br />

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

textului de la intrare vor fi redate sonor prin intermediul plăcii audio a calculatorului.<br />

< Evidenţierea unui cadru general ><br />

< pentru specificarea algoritmilor ><br />

Figura 6.33. Rezultatul final al sintezei: generarea formei de undă pentru sintagma:<br />

< Evidenţierea unui cadru general pentru specificarea algoritmilor >


236<br />

Cap. 6. Metode de sinteză de voce<br />

6.4.8. Concluzii cu privire la metoda de sinteză a vorbirii prin concatenare de<br />

silabe, proiectată şi realizată de autor<br />

Ca o aplicaţie specifică metodelor de sinteză prin concatenare, autorul a proiectat şi<br />

implementat o metodă de sinteză pornind de la text, metodă bazată pe concatenarea silabelor.<br />

Pentru dezvoltarea metodei a fost necesară stabilirea unor reguli lingvistice în faza de analiză a<br />

textului şi a unor reguli de îmbinare a formelor de undă pe baza caracteristicilor prozodice, în<br />

faza de sinteză.<br />

Sinteza vorbirii prin această metodă se realizează în două faze:<br />

I. Analiza textului, şi respectiv<br />

II. Sinteza vorbirii.<br />

Fiecare fază cuprinde mai multe etape procesuale, astfel:<br />

I. Analiza textului de sintetizat :<br />

a. Preprocesarea textului.<br />

b. Analiza de sintaxă.<br />

c. Determinarea unităţilor lingvistice: silabele.<br />

d. Determinarea prozodiei intrasegmentale: accentuarea.<br />

II. Sinteza vorbirii :<br />

a. Proiectarea bazei de date vocale (etapă premergătoare).<br />

b. Regăsirea unităţilor acustice din baza de date corespunzătoare unităţilor lingvistice<br />

din textul de la intrare.<br />

c. Concatenarea unităţilor acustice.<br />

d. Sinteza propriu-zisă a vorbirii.<br />

1. Preprocesarea textului se referă la transcrierea în formă textuală a informaţiilor din<br />

textul iniţial care:<br />

a) nu sunt reprezentate literal, ci prin caractere speciale, cifre sau simboluri;<br />

b) nu formează direct unităţi lexicale, ci prescurtări ale acestora (abrevieri).<br />

Dintre toate aceste categorii de informaţii, cele mai importante şi cel mai des folosite<br />

sunt numerele. Pentru explicitarea acestora sub formă textuală, fonematică, au fost concepute<br />

reguli lexicale speciale. Aceste reguli ţin cont de poziţia cifrei în cadrul unui număr pentru a o<br />

denomina printr-o categorie verbală.<br />

2. Analiza corectitudinii textului din punct de vedere al sintaxei reprezintă al doilea pas<br />

preliminar pentru realizarea unei sinteze de vorbire de calitate.<br />

Autorul a propus în această lucrare o metodă de analiză de sintaxă bazată pe reguli<br />

gramaticale, variantă cu un cost de proiectare mult mai redus decât în cazul realizării de<br />

vocabulare sau lexicoane.<br />

Metoda are ca punct de plecare generatorul automat de analizoare LEX, pentru care a fost<br />

proiectată o gramatică specificând modurile de flexionare a cuvintelor din limba română. Pentru<br />

aceasta, s-a folosit un dicţionar al formelor neflexionate ale limbii române, şi s-a construit un set<br />

de reguli care să identifice formele flexionate dintr-un text.


237<br />

Cap. 6. Metode de sinteză de voce<br />

Setul de reguli a fost organizat pe categorii gramaticale, fiind completat cu un set<br />

consistent de excepţii, ce asigură un înalt grad de completitudine în ceea ce priveşte acoperirea<br />

formelor gramaticale din limba română.<br />

3. Următoarea etapă în cadrul analizei textului de sintetizat constă în determinarea<br />

unităţilor lingvistice de bază, şi anume: propoziţiile, cuvintele şi silabele. Dacă extragerea<br />

propoziţiilor şi a cuvintelor nu ridică probleme deosebite, nu acelaşi lucru se poate spune despre<br />

stabilirea silabelor componente ale unui cuvânt. Pentru a realiza acest deziderat a fost necesară<br />

proiectarea unui set de reguli fonetice pentru despărţirea în silabe.<br />

Analizorul folosit la determinarea unităţilor lingvistice are o structură pe trei nivele, ce<br />

corespund cu trei module având roluri distincte în identificarea şi tratarea unităţilor fonetice.<br />

Cele trei module sunt:<br />

a) modulul de analiză sintactică pentru extragerea propoziţiilor şi cuvintelor;<br />

b) modulul de analiză lexicală pentru determinarea silabelor;<br />

c) modulul de procesare.<br />

a) Modulul de analiză sintactică sau analizorul sintactic foloseşte un set de reguli de<br />

producţie care specifică sintaxa textului de la intrare. Textul iniţial este considerat ca o listă de<br />

propoziţii, fiecare propoziţie fiind o listă de cuvinte, fiecare cuvânt fiind compus din mai multe<br />

silabe. Propoziţiile, respectiv cuvintele sunt extrase din text pe baza semnelor de punctuaţie şi<br />

separatorilor, care la rândul lor sunt furnizate de către modulul de analiză lexicală.<br />

b) Modulul de analiză lexicală sau analizorul lexical extrage caracterele din text şi le<br />

grupează în unităţi fonetice primare. Aici intră determinarea caracterelor alfabetice, numerice, a<br />

caracterelor speciale şi semnelor de punctuaţie. Pe baza unor reguli de producţie lexicale,<br />

caracterele alfabetice vor fi grupate în silabe, caracterele numerice în cifre şi numere, iar<br />

caracterele speciale şi semnele de punctuaţie vor fi folosite în determinarea cuvintelor şi<br />

propoziţiilor.<br />

Analizorul lexical este rezultat în urma generării automate prin intermediul generatorului<br />

de parsere de text LEX [Fre05]. Generatorul automat LEX construieşte un analizor lexical<br />

pornind de la o gramatică ce descrie regulile de producţie ale analizorului. Gramatica se scrie în<br />

limbaj standard BNF ( Backus-Naur Form) şi specifică secvenţele de caractere care trebuie<br />

recunoscute din textul de la intrare, precum şi acţiunile de efectuat corespunzătoare acestor<br />

secvenţe.<br />

c) Modulul de procesare grupează algoritmii de prelucrare a unităţilor sintactice ce sunt<br />

furnizate de către modulul de analiză sintactică şi a unităţilor lexicale ce rezultă din modulul de<br />

analiză lexicală.<br />

4. După etapa de separare a unităţilor lingvistice de tipul silabelor din text, urmează etapa<br />

de determinare a aspectelor prozodice. În această fază a proiectării au fost determinate aspectele<br />

prozodice intrasegmentale, şi anume accentele din interiorul cuvintelor.<br />

Analog abordării pentru detectarea silabelor, şi în această fază a fost necesară proiectarea<br />

unui analizor şi, respectiv, a unui set de reguli lexicale pentru determinarea accentelor.<br />

Analizorul lexical pentru determinarea accentelor a fost realizat tot pe baza facilităţilor<br />

oferite de către generatorul automat LEX. Astfel regulile analizorului sunt furnizate<br />

generatorului LEX în format BNF, stream-ul de intrare fiind chiar cuvântul curent extras din text


238<br />

Cap. 6. Metode de sinteză de voce<br />

de către analizorul sintactic. Cuvântul este introdus la intrarea analizorului lexical care, pe baza<br />

unor reguli specifice, va determina silaba accentuată din cuvânt.<br />

Ca o dezvoltare de viitor, ţinând cont că determinarea accentelor este în legătură cu<br />

aspectele prozodice intrasegmentale, se are în vedere şi determinarea aspectelor prozodice<br />

suprasegmentale, de tipul intonaţiei propoziţionale. Pentru aceasta se vor folosi modelele de<br />

intonaţie [Bod09-1] şi tehnica PSOLA, prezentată de asemeni în lucrare.<br />

5. Baza de date vocală utilizată în cadrul metodei de sinteză propusă de autor cuprinde<br />

un subset al silabelor limbii române. S-a propus o anumită strategie în realizarea bazei de date,<br />

astfel încât silabele să fie înregistrate în diferite contexte şi moduri de pronunţie, pentru a include<br />

prozodia aferentă textului de sintetizat.<br />

În baza de date au fost înregistrate silabe compuse din două, trei şi patru litere, notate cu<br />

S2, S3, respectiv S4, în total aproximativ 600 de silabe (a se vedea capitolul 7, care prezintă<br />

detalii de implemetare).<br />

În primul rând s-a urmărit includerea în fiecare categorie S2, S3 şi S4 a unui număr cât<br />

mai mare de silabe în ordinea frecvenţei de apariţie în limba română. Pentru aceasta s-a avut în<br />

vedere realizarea unei statistici a silabelor limbii române din care să rezulte frecvenţele de<br />

apariţie ale acestora.<br />

Statistica a fost realizată folosind texte extrase din domenii precum: beletristică de<br />

diverse genuri, religie, economie, politică, ştiinţă şi tehnică, ziaristică. Textele au însumat un<br />

număr de aproximativ 342000 de cuvinte, adică peste 600 de pagini în format A4. Statistica<br />

prezintă următoarele rezultate :<br />

a) configuraţia procentuală a categoriilor silabice S2, S3 şi S4;<br />

b) frecvenţa de apariţie a categoriilor silabice S2, S3 şi S4;<br />

c) frecvenţele de apariţie ale silabelor din fiecare categorie.<br />

Astfel, baza de date a fost construită respectând rezultatele acestei statistici.<br />

În realizarea bazei de date s-a ţinut cont şi de integrarea prozodiei locale, din interiorul<br />

cuvintelor. Astfel, prozodia a fost inclusă prin înregistrarea silabelor accentuate şi neaccentuate,<br />

pentru fiecare categorie S2, S3 şi S4. De asemeni, ţinând cont că o silabă se rosteşte distinct în<br />

funcţie de locul pe care aceasta îl ocupă în cadrul cuvântului, dacă este situată la începutul,<br />

mijlocul sau sfârşitul unui cuvânt, s-a urmărit înregistrarea silabelor în aceste diferite contexte în<br />

care ele pot să apară.<br />

În faza curentă de proiectare s-a făcut diferenţierea între silabe finale, pe de o parte, şi<br />

silabe mediane şi iniţiale, pe de altă parte.<br />

Structura ierarhică a bazei de date cuprinde patru nivele, şi anume:<br />

1) Nivelul Categorie : Silabe de două, trei sau patru foneme (S2, S3, S4);<br />

2) Nivelul Context : Segment median sau final, relativ la poziţia din cadrul cuvântului;<br />

3) Nivelul Accent : Silabe accentuate sau neaccentuate în interiorul cuvântului;<br />

4) Nivelul Silabă : Unităţile acustice înregistrate în format WAVE.<br />

Această structură ierarhică de tipul Categorie → Context → Accent → Silabǎ conferă şi<br />

avantajul reducerii substanţiale a timpului de căutare în baza de date, în faza de regăsire a<br />

unităţilor acustice.


239<br />

Cap. 6. Metode de sinteză de voce<br />

6. Regăsirea unităţilor acustice din baza de date se face pe baza unităţilor lingvistice<br />

determinate prin analiza textului de la intrare.<br />

În această etapă s-a proiectat un algoritm de regăsire a unităţilor din baza de date în<br />

funcţie de cele trei caracteristici ale silabei: lungime, context şi accentuare. Dacă o anumită<br />

silabă nu este găsită, aceasta se va descompune în unităţi subiacente care vor fi apoi căutate<br />

recursiv în baza de date vocală. Algoritmul proiectat construieşte seturile de diviziune pentru<br />

fiecare silabă şi realizează o potrivire optimă cu unităţile din baza de date vocală, asigurându-se<br />

astfel o redare sonoră cât mai fidelă a unităţii lingvistice din text.<br />

7. Unităţile acustice găsite în baza vocală prin algoritmul expus mai sus se vor concatena<br />

pentru a genera semnalul de ieşire. Unităţile se concatenează ţinând cont de pauza dintre cuvinte,<br />

care se va ajusta în funcţie de ritmul cerut vorbirii.<br />

8. Ultima etapă este cea de sinteză propriu-zisă, în care formele de undă corespunzătoare<br />

textului de la intrare vor fi redate sonor prin intermediul plăcii audio a calculatorului.<br />

Rezultate obţinute cu metoda de sinteză dezvoltată de autor<br />

I. În faza de analiză a textului:<br />

a) Analizorul automat de sintaxă realizat în cadrul metodei se bazează pe un dicţionar ce<br />

conţine peste 30000 de forme neflexionate ale limbii române şi pe un set de 550 de reguli de<br />

flexionare. Analizorul a fost testat pe o serie de texte în limba română de diferite genuri, de la<br />

literatură la documente tehnice, însumând peste 200000 de cuvinte. Testele au dovedit o<br />

corectitudine de peste 98% cuvinte recunoscute corect, cuvintele nerecunoscute constituind<br />

excepţii care nu au fost încă introduse în setul de reguli. Aceste rezultate arată completitudinea<br />

setului de reguli proiectat, precum şi viabilitatea metodei propuse.<br />

b) Analizorul lexical pentru determinarea silabelor cuprinde un set de peste 180 de reguli<br />

pentru descompunerea cuvintelor în silabe. Performanţa obţinută a fost de 98% cuvinte despărţite<br />

corect, rată calculată pe un set de 50000 de cuvinte extrase din texte de diferite genuri (literatură,<br />

economie, politică, ştiinţă şi tehnică, filozofie, religie). Performanţa este mai bună decât cea<br />

găsită la alţi cercetători români care au folosit reguli lexicale ([Tom09] – 90%).<br />

c) Analizorul lexical pentru determinarea accentelor cuprinde un set de 250 de reguli<br />

pentru detectarea silabei accentuate din interiorul cuvintelor. S-a obţinut o rată de detectare<br />

corectă a silabei acentuate de 94%, rată calculată pe acelaşi set de 50000 de cuvinte ca şi în cazul<br />

despărţirii în silabe.<br />

Din câte cunoaştem, în ţară nu există la ora actuală rezultate publicate despre construirea<br />

unor analizoare bazate exclusiv pe reguli pentru determinarea accentuării, ci doar lexicoane ce<br />

indică accentul cuvintelor, lexicoane ce au fost construite manual [Giu06] sau semiautomat<br />

[Dia09].<br />

II. În faza de sinteză a vorbirii, metoda generează rezultate bune, datorită utilizării<br />

unităţilor acustice de lungime medie şi mare, de tipul silabelor. Concatenarea directă a unităţilor,<br />

fără o altă procesare a semnalului, face ca vorbirea sintetizată să păstreze naturaleţea şi aspectele<br />

prozodice caracteristice vocii care a înregistrat iniţial unităţile acustice.


240<br />

Cap. 6. Metode de sinteză de voce<br />

Avantajele metodei de sinteză a vorbirii pe bază de silabe dezvoltată de autor<br />

Metoda de sinteză bazată pe concatenarea silabelor prezentată în acest capitol are<br />

următoarele avantaje:<br />

a) Prezintă o abordare unitară în toate fazele de proiectare, fiind bazată pe reguli în cele<br />

mai importante etape ale sale.<br />

b) Foloseşte reguli organizate într-o gramatică de tip LEX, rezultând astfel separarea<br />

modulului de analiză lingvistică faţă de fluxul de prelucrare a datelor.<br />

c) Asigură o capacitate mărită de extensibilitate şi adaptabilitate datorită faptului că<br />

regulile sunt accesibile şi se pot edita de către utilizator.<br />

d) Asigură reducerea semnificativă a costului şi timpului alocat procesului de proiectare,<br />

datorită utilizării regulilor (cel mult de ordinul sutelor), faţă de metodele ce utilizează dicţionare<br />

sau lexicoane (conţinând definiţii de ordinul zecilor sau sutelor de mii).<br />

e) Prezintă un grad mai mare de versatilitate, datorită utilizării gramaticilor regulate<br />

specifice LEX, faţă de alte metode ce folosesc reprezentări interne ale regulilor sau chiar<br />

formatul XML. Utilizarea seturilor bazate pe expresii regulate permite specificarea de tipare<br />

pentru unităţile lingvistice şi contextele în care ele apar, rezultând astfel şi un grad mai mare de<br />

corectitudine în analiza finală a textului.<br />

f) Necesită un efort mai mic de construire şi întreţinere a bazei de date vocale decât în<br />

cazul metodei bazate pe corpus. Astfel, în cazul metodei bazate pe silabe, numărul unităţilor<br />

acustice este cu cel puţin două ordine de mărime mai mic decât în cazul metodei bazate pe<br />

corpus.<br />

g) Păstrează eficienţa şi calitatea metodelor de sinteză prin concatenare, în raport cu<br />

metodele parametrice de sinteză. Astfel, în cazul concatenării, semnalul sintetizat păstrează<br />

calitatea unităţilor înregistrate în baza de date vocală, pe când în cazul metodele parametrice,<br />

semnalul de ieşire este aproximat.<br />

h) Prezintă o calitate mai înaltă a sintezei faţă de metodele bazate pe foneme sau<br />

difoneme, din cauza unui număr mai redus de puncte de concatenare, la nivelul silabei.<br />

Aplicaţii şi dezvoltări de viitor<br />

Pentru mărirea performanţelor metodei de sinteză prezentate, se au în vedere următoarele<br />

dezvoltări de viitor:<br />

- mărirea gradului de completitudine a seturilor de reguli pentru silabisire şi accentuare,<br />

prin adăugarea de noi reguli;<br />

- îmbunătăţirea ratei de detectare corectă a accentuării prin folosirea unui dicţionar<br />

morfologic al limbii române. Astfel, gradul de completitudine al unor reguli stabilite pentru<br />

cuvinte cu aceeaşi terminaţie poate fi mărit prin preluarea cuvintelor din dicţionar. Aceasta va<br />

duce la creşterea ratei de detecţie corectă a analizorului, chiar fără a introduce noi reguli de<br />

accentuare;<br />

- în faza de analiză a sintaxei, determinarea părţilor de propoziţie (subiect, predicat) pe<br />

baza părţilor de vorbire detectate deja (substantiv, verb, etc.) va duce la determinarea semanticii<br />

frazei, cu aplicaţii importante în dialogul om-calculator;


241<br />

Cap. 6. Metode de sinteză de voce<br />

- analiza contextului în care apar părţile de vorbire detectate prin analizorul de sintaxă<br />

proiectat, precum şi stabilirea modului corect de flexionare, sunt aspecte importante care se vor<br />

putea aplica la construirea unor traducătoare automate de limbaj de înaltă fidelitate.<br />

- mărirea numărului de unităţi stocate în baza de date vocală, de la 600 în prezent la 2-<br />

3000, în conformitate cu statistica prezentată a silabelor din limba română, fapt ce va avea ca<br />

rezultat îmbunătăţirea semnificativă a calităţii semnalului sintetizat;<br />

- luarea în considerare a implementării prozodiei suprasegmentale, de tipul intonaţiei,<br />

prin intermediul tehnicii TD_PSOLA, crescându-se astfel naturaleţea vorbirii sintetizate. Aici,<br />

metoda proiectată de autor de detectare automată a perioadelor fundamentale din semnal (metodă<br />

prezentată în secţiunea 4.6) va fi foarte utilă în momentul aplicării PSOLA.<br />

Contribuţiile autorului<br />

Contribuţiile autorului prezentate în capitolul curent au fost următoarele:<br />

- dezvoltarea unei metode complete de sinteză de vorbire pornind de la text pentru limba<br />

română, metodă bazată pe concatenarea de silabe;<br />

- dezvoltarea unei metode bazată pe reguli pentru preprocesarea textului;<br />

- dezvoltarea unei metode bazată pe reguli pentru analiza sintaxei unui text în limba<br />

română şi a unui set de reguli pentru flexionarea cuvintelor din limba română;<br />

- realizarea unui analizor sintactic pentru extragerea propoziţiilor şi a cuvintelor ;<br />

- realizarea unui analizor lexical şi a unui set de reguli pentru despărţirea în silabe a<br />

cuvintelor din limba română;<br />

- realizarea unui analizor lexical şi a unui set de reguli pentru determinarea silabei<br />

accentuate din cadrul cuvintelor;<br />

- realizarea unei statistici a silabelor limbii române pentru determinarea frecvenţelor de<br />

apariţie ale silabelor din limba română;<br />

- realizarea unei baze de date acustice de silabe, în care unităţile au fost înregistrate în<br />

diferite contexte şi moduri de pronunţie, incluzând aspectele prozodice intrasegmentale;<br />

- proiectarea unui algoritm de regăsire în baza de date a unităţilor acustice în funcţie de<br />

caracteristicile acestora: lungime, context şi accentuare;<br />

- realizarea unei aplicaţii de test pentru validarea rezultatelor.


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

LIGHTVOX<br />

Ca şi contribuţie în domeniul proiectării şi realizării unui sistem interactiv vocal, autorul<br />

a urmărit proiectarea şi implementarea unui sistem de sinteză vocală adaptat special limbii<br />

române, ce foloseşte ca şi unităţi fonetice silabele, numit LIGHTVOX. Sistemul a fost conceput<br />

ca un sistem text-to-speech, în care sinteza vorbirii se realizează pornind de la un text în limba<br />

română, utilizând metoda de sinteză bazată pe silabe prezentată în capitolul precedent.<br />

7.1. Organizarea pe module a sistemului<br />

Sistemul LIGHTVOX este organizat pe cinci module componente, aşa cum se indică în<br />

figura 7.1. Sistemul cuprinde următoarele module:<br />

- modulul de analiză lingvistică;<br />

- modulul de analiză prozodică;<br />

- modulul de gestiune a bazei de date vocale;<br />

- modulul de potrivire a unităţilor fonetice;<br />

- modulul de sinteză propriu-zisă a rostirii.<br />

ANALIZĂ<br />

LINGVISTICĂ<br />

GESTIUNEA BAZEI<br />

DE DATE VOCALE<br />

ANALIZĂ<br />

PROZODICĂ<br />

Figura 7.1. Sistemul de sinteză în limba română LIGHTVOX.<br />

Modulele componente<br />

Modulul de analiză lingvistică realizează analiza textului de la intrare urmărind extragerea<br />

unităţilor lingvistice de bază, şi anume silabele. Ideea folosirii silabelor în sinteză se bazează pe<br />

faptul că limba română are un specific articulator în care o mare pondere o au vocalele deschise,<br />

ceea ce conferă vorbirii un ritm în care sunt uşor de evidenţiat silabele. Rezultă astfel<br />

posibilitatea generării unei sinteze de vorbire de mare naturaleţe.<br />

Folosirea silabelor pentru sinteză mai aduce însă şi alte avantaje, precum:<br />

- întreţinerea facilă a bazei de date vocale datorită numărului relativ restrâns de silabe<br />

din limba română;<br />

- erori mici de concatenare datorită numărului redus de puncte de îmbinare în interiorul<br />

unui cuvânt.<br />

242<br />

POTRIVIRE<br />

UNITĂŢI<br />

SINTEZA<br />

ROSTIRII


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

Modulul de analiză prozodică urmăreşte detectarea elementelor de prozodie segmentală pe<br />

baza textului de la intrare. Într-o primă fază s-au determinat locurile de accentuare a vorbirii în<br />

cadrul cuvintelor, pe baza unui set de reguli de accentuare proiectat specific pentru limba<br />

română.<br />

Modulul de gestiune a bazei de date vocale efectuează toate operaţiunile legate de baza de<br />

unităţi acustice. Baza de date vocală cuprinde un subset al silabelor limbii române obţinut din<br />

înregistrări ale rostirii unui vorbitor uman. Baza de date este organizată în funcţie de tipul<br />

silabelor (accentuate/neaccentuate), poziţia lor în cadrul cuvântului, precum şi după numărul de<br />

foneme componente (două, trei sau patru).<br />

Modulul de potrivire a unităţilor fonetice cu unităţile acustice asigură potrivirea dintre silabele<br />

extrase din textul de sintetizat şi silabele existente în baza de date vocală în format acustic, ca<br />

forme de undă. Potrivirea va trebui realizată într-un mod optim, ţinând cont de faptul că nu toate<br />

silabele se regăsesc în baza de date.<br />

Modulul de sinteză a rostirii realizează mai întâi concatenarea formelor de undă furnizate de<br />

modulul anterior. Vorbirea propriu-zisă se obţine prin apelul unor funcţii API ce asigură<br />

comanda plăcii audio a calculatorului.<br />

7.2. Structura funcţională a sistemului<br />

Sistemul este prezentat în detaliu în figura 7.2, pe blocuri funcţionale. Se observă<br />

structura completă de tip text-to-speech în care se porneşte de la un text şi se realizează sinteza<br />

completă a vorbirii, LIGHTVOX fiind astfel un sistem de sinteză de nivel înalt. Din punct de<br />

vedere al tipului de abordare, este un sistem de sinteză în domeniul timp, folosind concatenarea<br />

directă a unităţilor acustice neparametrizate. Metoda de sinteză (prezentată în secţiunea 6.4) este<br />

mixtă, din punct de vedere al clasificării sistemelor text-to-speech, îmbinând caracteristici ale<br />

abordării bazate pe concatenarea formelor de undă şi ale abordării bazate pe reguli.<br />

Aşa cum se observă din figura 7.2, sistemul efectuează mai întâi o preprocesare şi o<br />

analiză sintactică a textului iniţial pentru a-l aduce la o formă ortografică corectă. Apoi are loc<br />

determinarea unităţilor lingvistice de bază (în cazul de faţă silabele) şi a informaţiilor prozodice<br />

segmentale (accentul cuvintelor). Pe baza acestor elemente sunt regăsite unităţile acustice din<br />

baza de date vocală care corespund cel mai bine unităţilor lingvistice detectate. Segmentele<br />

acustice sunt concatenate şi apoi are loc sinteza propriu-zisă a vorbirii.<br />

Tot în figura 7.2 se prezintă şi etapele fazei de construcţie a bazei de date vocale. Astfel,<br />

semnalul vocal este mai întâi normalizat şi descompus în secvenţe de regiuni cu proprietăţi<br />

distincte. Secvenţele de regiuni sunt puse în corespondenţă cu fonemele limbii române, urmând<br />

apoi extragerea din semnalul vocal a grupurilor de foneme care alcătuiesc unităţile acustice, în<br />

cadrul unui proces semiautomat. Unităţile acustice se memorează în final în structura ierarhică a<br />

bazei de date.<br />

243


Figura 7.2. Sistemul de sinteză a vocii în limba română LIGHTVOX<br />

244


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

7.3. Metodologia de proiectare a sistemului de sinteză LIGHTVOX<br />

Realizarea sistemului LIGHTVOX a urmărit două direcţii de lucru (figura 7.3):<br />

1. Construirea bazei de date acustice (proces off-line), incluzând următoarele etape:<br />

înregistrarea eşantioanelor de voce, normalizarea semnalului, segmentarea semnalului în<br />

regiuni, segmentarea fonematică, separarea unităţilor acustice şi construirea bazei de<br />

date;<br />

2. Conversia text-voce (proces on-line), cuprinzând etapele: preprocesarea textului,<br />

corectarea ortografică, detecţia unităţilor lingvistice, determinarea prozodiei locale,<br />

regăsirea unităţilor acustice, îmbinarea unităţilor şi sinteza de voce.<br />

ÎNREGISTRAREA<br />

SEMNALULUI<br />

VOCAL<br />

PROCESAREA<br />

TEXTULUI<br />

Figura 7.3. Etapele principale ale realizării sistemului LIGHTVOX<br />

7.3.1. Construirea bazei de date acustice<br />

Prima fază abordată în realizarea sistemului de sinteză de voce LIGHTVOX a fost<br />

construirea bazei de date acustice. În funcţie de metoda abordată, baza de date acustică poate<br />

cuprinde fie formele de undă (codificate sau nu), fie secvenţele parametrice cor espunzând<br />

unităţilor fonetice. În cazul sistemului LIGHTVOX, baza de date cuprinde formele de undă<br />

asociate silabelor limbii române.<br />

ANALIZA<br />

SEMNALULUI<br />

A. Construirea bazei de date acustice<br />

DETECŢIA<br />

UNITĂŢILOR<br />

B. Conversia text - voce<br />

Etapele procesului de realizare a bazei de date vocale au fost următoarele :<br />

1) crearea listei de silabe ;<br />

2) crearea listei de cuvinte care să conţină silabele dorite ;<br />

3) înregistrarea digitală a rostirii ;<br />

4) normalizarea înregistrării ;<br />

5) crearea corpusului paralel text-voce;<br />

6) segmentarea semnalului vocal în regiuni fonematice ;<br />

7) detecţia şi separarea silabelor din semnal;<br />

8) salvarea unităţilor acustice în baza de date.<br />

245<br />

SEGMENTAREA<br />

VORBIRII<br />

DETERMINAREA<br />

PROZODIEI<br />

CONSTRUIREA<br />

BAZEI DE DATE<br />

CONCATENAREA<br />

UNITĂŢILOR ŞI<br />

SINTEZA DE VOCE


1) Crearea listei de silabe<br />

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

Structura bazei de date acustice a fost deja prezentată în secţiunea 6.4.6.<br />

Astfel, s-a stabilit ca baza de date să cuprindă silabe alcătuite din două, trei sau patru<br />

litere (notate cu S2, S3, S4), dar şi foneme singulare (S1). S -a urmărit includerea în fiecare<br />

categorie S2, S3 şi S4 a unui număr cât mai mare de silabe în ordinea frecvenţei de apariţie în<br />

limba română, realizându-se în acest scop o statistică a silabelor (vezi paragraful 6.4.6.1).<br />

Pentru a alcătui lista iniţială de silabe, s-a pornit de la mulţimea fonemelor limbii române.<br />

S-au luat în considerare în total 27 de foneme :<br />

F = [aăbcdef gh i îjklmnoprs ştţuvxz ]<br />

Mulţimea F nu cuprinde fonemele /q/, /w/, /y/, acestea fiind înlocuite prin fonemele /c/,<br />

/v/, /i/.<br />

F este alcătuită din reuniunea a două submulţimi C şi V :<br />

C = [ bcdf ghjklmnprs ş t ţ vxz] - submulţimea consoanelor (card C = 20)<br />

V = [aăeiîo u] - submulţimea vocalelor (card V = 7)<br />

Pentru silabele din categoria S2, avem următoarele configuraţii posibile:<br />

a) [CV]<br />

b) [VV]<br />

c) [VC]<br />

unde C reprezintă o consoană, iar V – o vocală.<br />

a) Pentru silabele de tipul [CV] s-au generat toate combinaţiile de două elemente care<br />

rezultă din compunerea mulţimilor C şi V :<br />

L1 = { [ba] [ca] [da] ..... [za] ,<br />

[bă] [că] [dă] ..... [ză] ,<br />

…….<br />

[bu] [cu] [du] ..... [zu] }<br />

Din această listă s-au eliminat combinaţiile care nu există în limba română, precum: [kă],<br />

[kî], etc.<br />

b) Pentru silabele de tipul [VV] şi [VC] s-a parcurs tabelul silabelor S2 (generat pe baza<br />

statisticii de la 6.4.6.1 şi prezentat în anexa 2), preluându-se toate configuraţiile de această<br />

formă. S-au obţinut listele:<br />

L2 = { [ai] [au] ..... [ua] [ui] }<br />

L3 = { [ab] [ac] ..... [uz] }<br />

Lista completă pentru categoria S2 este:<br />

LS2 = L1 U L2 U L3 .<br />

Pentru categoriile silabice S3 şi S4, listele LS3 şi LS4 s-au obţinut pe baza tabelelor din<br />

anexele 3 şi 4.<br />

246


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

Din considerente ce au ţinut de condiţiile existente pentru înregistrarea audio, listele LS3<br />

şi LS4 au fost reduse la câteva zeci de elemente (a se vedea tabelul 7.2, ce prezintă numărul<br />

unităţilor acustice stocate în baza de date).<br />

În lista LS1 (adică fonemele singulare) au fost incluse toate fonemele din mulţimea F .<br />

2) Crearea corpusului de cuvinte<br />

Odată obţinute listele cu silabe ( LS1 … LS4), s-a trecut la construirea corpusului de<br />

cuvinte, în vederea înregistrării şi apoi a separării unităţilor acustice.<br />

Pentru a se genera o vorbire sintetică de calitate, s-a avut în vedere ca silabele înregistrate<br />

să includă şi anumite elemente de prozodie.<br />

În primul rând, silabele trebuiau să respecte accentuaţia din interiorul cuvintelor. Ca<br />

urmare, au fost luate în considerare atât silabele accentuate (ACC), cât şi cele neaccentuate<br />

(NA), pentru fiecare categorie S2, S3 şi S4.<br />

De asemeni, ţinând cont că o silabă se rosteşte distinct în funcţie de locul pe care aceasta<br />

îl ocupă în cadrul cuvântului, dacă este situată la începutul, mijlocul sau sfârşitul unui cuvânt, s-a<br />

urmărit introducerea în listă a silabelor în aceste contexte diferite în care ele pot să apară. Astfel,<br />

s-a făcut diferenţierea între silabe finale (FIN), pe de o parte, şi silabe iniţiale şi mediane (MED),<br />

pe de altă parte.<br />

Corpusul de cuvinte folosit pentru extragerea unităţilor acustice a fost alcătuit atât din<br />

propoziţii şi cuvinte normale care conţineau silabele dorite, precum şi din cuvinte artificiale<br />

folosite pentru a evidenţia mai bine un anumit grup de foneme.<br />

Generarea seturilor de cuvinte a ţinut cont de tipul silabelor: accentuate (ACC), respectiv<br />

neaccentuate (NA), cât şi de contextul acestora: silabe mediane (MED) sau finale (FIN).<br />

Cuvintele artificiale includ silabele în contextele necesare, folosindu-se silabe auxiliare<br />

predefinite (de exemplu silaba /ta/).<br />

De exemplu pentru categoria S2 a fost generat următorul set de cuvinte :<br />

MED<br />

FIN<br />

NA ACC NA ACC ...<br />

ta - ba - tá<br />

ta - ca - tá<br />

…<br />

ta - za - tá<br />

tá - ta - ba<br />

tá - ta - ca<br />

…<br />

tá - ta - za<br />

ta - bá - ta<br />

ta - cá - ta<br />

…<br />

ta - zá - ta<br />

ta - ta - bá<br />

ta - ta - cá<br />

…<br />

ta - ta - zá<br />

247<br />

ta - be - tá<br />

ta - ce - tá<br />

…<br />

ta - ze - tá<br />

tá - ta - be<br />

tá - ta - ce<br />

…<br />

tá - ta - ze<br />

ta - bé - ta<br />

ta - cé - ta<br />

…<br />

ta - zé - ta<br />

ta - ta - bé<br />

ta - ta - cé<br />

…<br />

ta - ta - zé<br />

Din acest set au fost excluse combinaţiile care generează contexte improbabile pentru<br />

limba română (în majoritate silabe accentuate în context final). Alte silabe de acest gen au rămas<br />

în set chiar dacă în dicţionar nu există cuvinte care să le conţină în contextul respectiv.<br />

…<br />


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

Aceste unităţi silabice pot genera silabe care nu au fost cuprinse în baza de date vocală,<br />

dar care apar în componenţa unor cuvinte din dicţionar. Câteva exemple sunt date în tabelul<br />

următor:<br />

Tabelul 7.1. Unităţi silabice din afara dicţionarului care generează silabe din dicţionar<br />

Silabă Context Accent Notaţie<br />

248<br />

Cuvânt în<br />

dicţionar<br />

Silabă<br />

generată<br />

Cuvânt în<br />

dicţionar<br />

ce FIN ACC cé A F - cél A F acél<br />

de FIN ACC dé A F - dél A F modél<br />

ţe FIN ACC ţé A F - ţél A F oţél<br />

…<br />

zo FIN ACC zó A F - zót A F azót<br />

…<br />

3) Înregistrarea digitală a rostirii<br />

După constituirea seturilor de cuvinte, s-a trecut la rostirea efectivă a acestora, în scopul<br />

înregistrării corpusului vocal. A fost ales un vorbitor masculin, urmărindu-se rostirea corpusul<br />

textual într-un ritm constant, cu o aceeaşi tonalitate a vocii.<br />

Construirea bazei de date a început efectiv odată cu procesul de înregistrare a rostirii<br />

vorbitorului uman, rostire care a inclus unităţile fonetice silabice în diferite contexte şi moduri de<br />

pronunţie. După cum am văzut, în baza de date nu au fost înregistrate toate silabele limbii<br />

române, ci doar un subset al acestora, silabele care n-au fost incluse fiind apoi generate pe baza<br />

celor existente.<br />

Procesul de înregistrare a semnalului vocal a presupus folosirea unei aparaturi speciale<br />

constituită dintr-un microfon, o placă digitizoare de semnal acustic, şi un program software<br />

specializat pentru lucrul cu fişiere audio. Autorul a folosit un microfon dinamic semiprofesional,<br />

o placă audio Creative SoundBlaster şi programul de digitizare audio Cool Edit Pro v2.0.<br />

Parametrii de înregistrare au fost următorii: înregistrare de tip uni-canal, frecvenţa de<br />

eşantionare: 16 kHz, dimensiunea eşantioanelor: 16 biţi, codificare: PCM, formatul fişierului<br />

audio: WAVE.<br />

4) Normalizarea înregistrării<br />

În urma înregistrării, eşantioanele audio au urmat o fază de normalizare, adică de aducere<br />

a lor la o formă unitară în tot cuprinsul bazei vocale. Normalizarea presupune prelucrarea<br />

digitală a semnalului vocal înregistrat, proces care poate fi făcut manual sau semiautomat, prin<br />

intermediul unui program software specializat, sau automat, în cazul în care se proiectează<br />

algoritmi speciali de normalizare. Autorul a folosit o procedură semiautomată, disponibilă prin<br />

intermediul aplicaţiei Cool Edit Pro v2.0.


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

În urma normalizării, corpusul vocal conţine toate înregistrările de aceeaşi amplitudine<br />

(rostirile prezentând aceeaşi tărie sonoră), precum şi frecvenţă fundamentală constantă<br />

(corespunzând unor rostiri de aceeaşi tonalitate, acelaşi ritm şi intonaţie constantă). În primul<br />

rând, aceste cerinţe legate de amplitudine şi frecvenţă fundamentală se referă la segmentele<br />

vocale care prezintă aceste caracteristici, cu alte cuvinte la segmentele corespunzătoare vocalelor<br />

fonetice.<br />

5) Crearea corpusului paralel text-voce<br />

În vederea prelucrării semnalului şi descompunerii acestuia în unităţi acustice,<br />

înregistrările au fost salvate în fişiere audio în format WAVE. Fiecare fişier audio conţine una<br />

sau mai multe secvenţe de cuvinte din corpusul vorbit, depinzând de capacitatea vorbitorului de a<br />

păstra un ritm şi o tonalitate constante pe parcursul înregistrării.<br />

Pentru a realiza segmentarea automată a semnalului în regiuni fonematice a fost necesară<br />

utilizarea a două corpusuri în paralel, şi anume: corpusul vorbit, înregistrat în fişiere audio, şi<br />

respectiv corpusul textual corespondent. Astfel, odată cu salvarea fiecărui fişier audio, a fost<br />

stocat şi fişierul text asociat conţinutului său.<br />

VOCE<br />

TEXT<br />

Figura 7.4. Crearea corpusului paralel text-voce<br />

6) Segmentarea semnalului vocal în regiuni fonematice<br />

Această etapă urmăreşte descompunerea semnalului vocal în regiuni corespunzătoare<br />

secvenţelor fonematice (şiruri de foneme). Această operaţie va d uce în final la separarea<br />

unităţilor silabice din semnalul vocal înregistrat.<br />

Paşii care au fost realizaţi sunt ilustraţi în figura 7.5.<br />

ANALIZA<br />

SEMNALULUI<br />

VOCAL<br />

Parametri<br />

de semnal<br />

FIS1.WAV<br />

FIS1.TXT<br />

SEGMENTARE<br />

S/U/V<br />

Regiuni de<br />

semnal<br />

FIS2.WAV<br />

FIS2.TXT<br />

COMPACTARE<br />

REGIUNI<br />

Regiuni<br />

compacte<br />

Figura 7.5. Paşii realizaţi pentru segmentarea semnalului în regiuni fonematice<br />

a) Analiza semnalului vocal presupune determinarea parametrilor semnalului utili în faza<br />

de segmentare. Conform paragrafului 4.2.1 (analiza în domeniul timp a semnalului vocal), au<br />

249<br />

FIS3.WAV<br />

FIS3.TXT<br />

CLASIFICARE<br />

REGIUNI<br />

Clase de<br />

regiuni<br />

…..<br />

SEGMENTARE<br />

FONEMATICǍ<br />

Regiuni<br />

fonematice


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

fost determinaţi următorii parametri: amplitudinea semnalului, energia şi numărul de treceri prin<br />

zero. De asemeni, a fost calculată frecvenţa fundamentală a semnalului (vezi paragraful 4.6.1).<br />

b) Segmentarea SUV, descrisă în paragraful 4.4.2, are ca scop detectarea categoriilor<br />

fundamentale de semnal: linişte (Silence), sonor (Voiced), nesonor (Unvoiced), la care se adaugă<br />

şi categoria tranziţie.<br />

c) Compactarea regiunilor (vezi paragraful 4.4.3) urmăreşte asocierea regiunilor vecine<br />

de dimensiuni mici, având ca rezultat scăderea numărului total de regiuni, cu efect pozitiv asupra<br />

timpului de procesare.<br />

d) Clasificarea regiunilor (proces prezentat în capitolul 4.4) împarte cele patru categorii<br />

de semnal de la punctul b) în 10 clase distincte, clase care pot fi asociate cu reprezentarea sonoră<br />

a fonemelor limbii române.<br />

e) Segmentarea fonematică (capitolul 4.8) asociază simbolurile fonetice cu regiunile din<br />

semnal. Pentru aceasta, se foloseşte corpusul paralel text-voce de la punctul 5). Pe baza unor<br />

reguli speciale de asociere, se face o corespondenţă între grupurile fonetice prezente la intrarea<br />

de text cu secvenţele de regiuni detectate din semnalul vocal.<br />

TEXT<br />

SEMNAL<br />

secvenţă fonetică 1 ; secvenţă fonetică 2 ; secvenţă fonetică 3 . . .<br />

[Regiune 1] [Regiune 2] [Regiune 3] - - - [Regiune n] - - -<br />

Figura 7.6. Asocierea dintre grupurile fonematice şi secvenţele de regiuni<br />

7) Detecţia şi separarea silabelor din semnal<br />

După punerea în corespondenţă a secvenţelor fonematice cu regiunile din semnal,<br />

urmează faza de separare a silabelor utile din corpusul vocal. Pentru aceasta, s-a folosit o<br />

procedură semiautomată care selectează secvenţele dorite prin deplasarea capetelor intervalului<br />

de selecţie pe graniţele regiunilor fonematice. Regiunea selectată poate fi ajustată prin deplasarea<br />

manuală a marginilor ce au fost detectate în mod automat. Apoi regiunea corespunzătoare silabei<br />

dorite se salvează într-un fişier al bazei de date.<br />

T A T I T A T A D E T A<br />

Figura 7.7. Detecţia şi separarea silabelor din semnal<br />

250


8) Salvarea unităţilor acustice în baza de date<br />

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

După detecţia silabelor dorite din semnalul vocal, acestea se salvează ca fişiere distincte<br />

în structura ierarhică a bazei de date. Aşa cum s-a prezentat în secţiunea 6.4.6, baza de date<br />

vocală este organizată în funcţie de parametrii unităţilor acustice, astfel:<br />

a) după lungimea unităţilor: silabe alcătuite din două, trei sau patru litere, precum şi<br />

foneme singulare ;<br />

b) după poziţia silabei în interiorul cuvântului: silabe iniţiale/mediane sau finale ;<br />

c) după accentuare: silabe accentuate sau neaccentuate.<br />

Ca urmare, baza de date vocală prezintă o structură arborescentă, în care unităţile acustice<br />

sunt stocate sub formă de fişiere.<br />

Pentru a implementa criteriul a), au fost create directoarele: S1, S2, S3 şi S4, în fiecare<br />

director fiind memorate doar unităţi de lungime corespunzătoare.<br />

Pentru a implementa criteriul b), în fiecare director a fost creat un subdirector Final, în<br />

care au fost memorate unităţile de tip silabă finală, în timp ce silabele acustice iniţiale/mediane<br />

au fost salvate în directorul părinte.<br />

Criteriul c) a fost rezolvat prin utilizarea unor convenţii de notaţie a numelui fişierelor;<br />

astfel silabele accentuate prezintă sufixul ‘_’ în numele fişierelor ce le conţine. De exemplu,<br />

pentru silaba neaccentuată sa avem fişierul sa.wav, iar pentru silaba accentuată sá a fost<br />

înregistrat fişierul sa_.wav (convenţiile de notaţie au fost prezentate în tabelul 6.5).<br />

Rezultă următoarea structură a colecţiei de fişiere din baza de date vocală :<br />

fF<br />

Rădăcină<br />

S1 S2 S3 S4<br />

Final Final Final Final<br />

f A F<br />

f f A<br />

ffF ff A F<br />

ff ff A<br />

fffF fff A<br />

Figura 7.8. Structura colecţiei de fişiere din baza de date vocală<br />

În figura de mai sus, notând U = unitatea acustică (U = f pentru foneme singulare, U = ff<br />

pentru silabe de două litere, U = fff pentru silabe de trei litere, U = ffff pentru silabe de patru<br />

litere), avem :<br />

- U = unitatea acustică neaccentuată în poziţie mediană ;<br />

- U A = unitatea acustică accentuată în poziţie mediană ;<br />

- UF = unitatea acustică neaccentuată în poziţie finală ;<br />

- U A F = unitatea acustică accentuată în poziţie finală.<br />

251<br />

F<br />

fff fff A<br />

ffffF ffff<br />

A F<br />

ffff ffff<br />

A


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

În figura 7.9, se poate observa un extras din directorul S2 ce conţine unităţi acustice<br />

silabice de două litere, unde pentru numele fişierelor s-au folosit convenţiile din tabelul 6.5.<br />

Figura 7.9. Extras din directorul S2 cu unităţi acustice silabice de două litere<br />

În final, în baza de date au fost înregistrate aproximativ 600 de unităţi acustice, foneme şi<br />

silabe, considerând atât silabele de segment median şi final, cât şi silabele accentuate şi<br />

neaccentuate:<br />

Tabelul 7.2. Unităţile acustice înregistrate în baza de date<br />

Silabe Segment median Segment final Total<br />

S2 (două foneme) 283 103 386<br />

S3 (trei foneme) 84 55 139<br />

S4 (patru foneme) 10 27 37<br />

S1 (foneme<br />

singulare)<br />

31 5 36<br />

252


7.3.2. Conversia text-voce<br />

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

Conversia text-voce reprezintă a doua fază, ce decurge on-line, în funcţionarea sistemului<br />

LIGHTVOX şi cuprinde toate etapele ce trebuie parcurse pentru ca dintr-un text iniţial să se<br />

genereze vorbirea sintetică asociată.<br />

Etapele componente ale acestei faze sunt următoarele :<br />

a) preprocesarea textului,<br />

b) corectarea ortografică,<br />

c) detecţia unităţilor lingvistice,<br />

d) determinarea prozodiei locale,<br />

e) regăsirea unităţilor acustice,<br />

f) îmbinarea unităţilor,<br />

g) sinteza de voce.<br />

Toate aceste etape au fost descrise pe larg în cadrul prezentării metodei de sinteză bazată<br />

pe silabe din secţiunea 6.4.<br />

a) Preprocesarea textului a fost descrisă în paragraful 6.4.2. Pe baza unor reguli de<br />

conversie fonetică, abrevierile şi numerele din textul iniţial au fost transcrise fonetic în vederea<br />

sintezei.<br />

b) Corectarea ortografică este a doua etapă necesară pentru o sinteză corectă a textului.<br />

Pentru implementarea acestei etape, a fost proiectat un analizor gramatical şi un set de reguli de<br />

analiză a sintaxei, obţinându-se o rată de recunoaştere a erorilor de 98% (paragraful 6.4.3).<br />

La intrarea analizorului se prezintă textul iniţial, ce conţine cuvinte în limba română în<br />

diferite forme flexionate. Pe baza setului de reguli proiectat, analizorul generează forma de bază,<br />

neflexionată, a fiecărui cuvânt de la intrare şi o caută într-un dicţionar. O interfaţă grafică va<br />

pune apoi în evidenţă cuvintele care au o sintaxă greşită sau care nu au fost potrivite cu setul de<br />

reguli din analizor.<br />

c) Etapa următoare o reprezintă determinarea unităţilor de bază din textul corectat<br />

ortografic. Aceste unităţi de bază sunt: propoziţiile, cuvintele şi silabele fiecărui cuvânt.<br />

Propoziţiile şi cuvintele se determină pe baza unui analizor sintactic, iar silabele printr-un<br />

analizor lexical (a se vedea paragraful 6.4.4). Analizorul lexical pentru determinarea silabelor<br />

cuprinde un set de peste 180 de reguli pentru descompunerea cuvintelor în silabe, performanţa<br />

obţinută fiind de 98% cuvinte despărţite corect.<br />

d) Determinarea prozodiei locale urmează după etapa extragerii unităţilor lingvistice din<br />

text. Prozodia locală se referă aici la determinarea accentelor din cadrul cuvintelor. Utilizarea în<br />

sinteză atât a unităţilor accentuate cât şi a unităţilor neaccentuate a dus la obţinerea unei rostiri<br />

de calitate mult mai naturală. Determinarea accentelor, prezentată în paragraful 6.4.5, s-a realizat<br />

tot prin intermediul unui analizor lexical şi a unui set de reguli fonetice. Analizorul lexical<br />

cuprinde un set de 250 de reguli pentru detectarea silabei accentuate din interiorul cuvintelor,<br />

obţinându-se o rată de detectare corectă a accentului de 94%.<br />

e) După determinarea unităţilor lingvistice din text împreună cu elementele de prozodie,<br />

urmează etapa de regăsire a unităţilor acustice din baza de date vocală. Regăsirea se face în<br />

253


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


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

Procedura Procesare_Silabă adaugă silaba la cuvântul curent ( Adaugă_Silabă), şi apoi<br />

construieşte structura în memorie a cuvântului prin Construieşte_Cuvânt. Tot aici se face şi<br />

eliminarea cratimei din cuvânt, în vederea rostirii (căutarea în baza de date se face după o silabă<br />

care nu trebuie să conţină cratimă).<br />

Subrutina Procesare_Separator este apelată atunci când analizorul întâlneşte un separator<br />

în stream-ul de intrare. Aceasta înseamnă că s-a terminat de citit un cuvânt şi, dacă separatorul<br />

este terminator de propoziţie, s-a încheiat şi propoziţia curentă. Cuvântul este prelucrat şi<br />

analizat din punct de vedere al prozodiei (accentelor) în procedura Procesare_Cuvânt. Apoi se<br />

adaugă cuvântul împreună cu structura de silabe şi accente în propoziţia curentă din memorie<br />

(procedura Adaugă_Cuvânt). Urmează adăugarea în structură a separatorului, care va indica în<br />

momentul rostirii pauza dintre cuvinte, respectiv de la sfârşitul propoziţiei.<br />

Se testează în continuare dacă separatorul este un terminator de propoziţie. În caz<br />

afirmativ, se apelează procedura Potriveşte_Unităţi, care are rolul de a căuta şi identifica<br />

unităţile acustice din baza de date din care se va construi forma de undă corespunzătoare<br />

cuvintelor din propoziţie. Apoi se rosteşte propoziţia în subrutina Rosteşte_Propoziţie.<br />

Potrivirea silabelor din cuvânt cu unităţile acustice se face în funcţie de accentuarea<br />

silabei (dacă silaba este accentuată sau nu) şi după locul silabei în cadrul cuvântului (dacă silaba<br />

este în mijlocul sau la finalul cuvântului). Căutarea în baza de date ţine cont şi de numărul de<br />

litere componente ale silabei. Dacă silaba nu este regăsită ca atare în baza de date, atunci forma<br />

de undă se construieşte pe baza fonemelor şi silabelor cu un număr mai mic de litere ce intră în<br />

componenţa silabei iniţiale. Aşa cum am amintit anterior, pot exista următoarele situaţii:<br />

1. Silaba dorită este regăsită identic în baza de date vocală, atât din punct de vedere<br />

fonetic, cât şi din punct de vedere prozodic. În acest caz silaba se reţine ca atare pentru a fi<br />

înglobată în cuvântul de sintetizat.<br />

2. Silaba este regăsită fonetic, dar nu şi prozodic. Se preferă în acest caz constituirea<br />

acesteia din silabe şi foneme mai scurte, care să respecte prozodia cerută (silabă accentuată sau<br />

neaccentuată).<br />

3. Silaba nu este regăsită fonetic în baza de date. Şi în acest caz silaba va fi compusă pe<br />

baza fonemelor separate extrase din baza de date.<br />

Formele de undă corespunzătoare silabelor sunt concatenate, iar rostirea propoziţiei se va<br />

realiza prin apelul funcţiei API Windows PlaySound( ).<br />

Procesarea unui cuvânt din punct de vedere al prozodiei (accentelor) se face în procedura<br />

Procesare_Cuvânt, ilustrată în diagrama 4. Aici se verifică mai întâi terminaţia cuvântului pentru<br />

a se determina dacă este vorba despre un substantiv care a fost declinat (‚băiatul’, ‚băieţilor’,<br />

etc.). În acest caz se elimină terminaţia (prin diminuarea numărului de litere componente ale<br />

cuvântului cu lungimea terminaţiei) şi se apelează analizorul lexical pentru determinarea silabei<br />

accentuate yyCuvântLex( ). La ieşirea din analizor, subrutina Pune_Accent restaurează numărul<br />

de litere şi actualizează poziţia accentului (în Actualizează_Accent).<br />

255


Baza de<br />

date<br />

vocală<br />

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

Parser<br />

Silabe<br />

Lex<br />

Separator Silabă<br />

Procesare<br />

Separator<br />

Procesare<br />

Cuvânt<br />

Propoziţie<br />

Cuvânt<br />

Potrivire<br />

unităţi<br />

Wave<br />

Rostire<br />

Diagrama 1. LIGHTVOX - Algoritmul de implementare<br />

256<br />

Procesare<br />

Silabă<br />

Accente<br />

Lex<br />

Accente


DA<br />

NU<br />

Parse Input<br />

Init Stream<br />

LexVal = yyLex ( )<br />

LexVal = EOF<br />

LexVal = SILABA<br />

DA<br />

LexVal =<br />

SEPARATOR<br />

DA<br />

Procesare Separator<br />

Close Stream<br />

End<br />

NU<br />

Diagrama 2. Algoritmul pentru parcurgerea intrării<br />

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

257<br />

NU<br />

Procesare Silabă<br />

1<br />

2


1<br />

Procesare Separator<br />

Procesare Cuvânt<br />

Adaugă Cuvânt<br />

Adaugă Separator<br />

Separator_Propoziţie<br />

DA<br />

Potriveşte Unităţi<br />

Rosteşte Propoziţie<br />

End<br />

NU<br />

3<br />

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

Prop<br />

Cuv<br />

Sil Sil Sil<br />

Diagrama 3. Algoritmul de procesare a unităţilor lexicale<br />

258<br />

2<br />

Procesare Silabă<br />

Adaugă Silabă<br />

Construieşte Cuvânt<br />

End<br />

Cuv<br />

Sil Sil Sil<br />

Sep Cuv Sep<br />

Sil Sil Sil


3<br />

Procesare Cuvânt<br />

Verifică Terminaţie<br />

Accent = yyCuvântLex( )<br />

Pune Accent<br />

(Accent)<br />

End<br />

4<br />

5<br />

5<br />

Pune Accent<br />

Term =<br />

ul/ilor/elor/ile/ului/elui<br />

Număr_Litere =<br />

Număr_Litere + len(Term)<br />

End<br />

DA<br />

Actualizează Accent<br />

(Accent)<br />

Diagrama 4. Procesarea cuvintelor şi determinarea accentelor<br />

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

259<br />

NU<br />

4<br />

Verifică Terminaţie<br />

Term =<br />

ul/ilor/elor/ile/ului/elui<br />

Număr_Litere =<br />

Număr_Litere – len(Term)<br />

End<br />

DA<br />

NU


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

7.5. Rezultate experimentale şi dezvoltări de viitor<br />

În cadrul Facultăţii de Electronică, Telecomunicaţii şi Tehnologia Informaţiei din Cluj-<br />

Napoca, autorul a realizat un prototip al sistemului de sinteză vocală LIGHTVOX.<br />

Implementarea prototipului s-a făcut baza structurii cu cinci componente prezentate în paragraful<br />

7.1: modulul de analiză lingvistică, modulul de analiză prozodică, modulul de gestiune a bazei de<br />

date vocale, modulul de potrivire a unităţilor fonetice şi modulul de sinteză propriu-zisă a<br />

rostirii. Etapele realizării sistemului au fost prezentate în paragrafele 7.3.1 şi 7.3.2.<br />

Mai întâi a fost construită baza de date acustică necesară pentru sinteză. În baza de date<br />

au fost înregistrate aproximativ 600 de unităţi acustice, foneme şi silabe, considerând atât<br />

silabele de segment median şi final, cât şi silabele accentuate şi neaccentuate: 386 de silabe<br />

alcătuite din două foneme, 139 de silabe tri-fonematice, 37 de silabe tetra-fonematice şi 36 de<br />

foneme singulare.<br />

Pentru conversia text-voce a fost realizată o interfaţă grafică prin care utilizatorul poate<br />

încărca un document text în fereastra aplicaţiei, pe care apoi îl poate audia prin intermediul vocii<br />

generate de sintetizator.<br />

Interfaţa aplicaţiei şi interacţiunea cu utilizatorul<br />

Interfaţa aplicaţiei este prezentată în figura 7.10:<br />

1 2 3 4<br />

Figura 7.10. Interfaţa aplicaţiei LIGHTVOX<br />

260


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

Se observă că interfaţa utilizator este simplă, uşor de utilizat chiar şi de către persoane cu<br />

disabilităţi vizuale; ea permite efectuarea următoarelor operaţii:<br />

1. Operaţii efectuate asupra textului sursă :<br />

a) deschiderea unui fişier text în fereastra aplicaţiei (fişierul poate fi în format ASCII sau<br />

RTF): meniul File/Open, respectiv ALT+FO de la tastatură ;<br />

b) editarea textului direct în fereastra aplicaţiei : scriere/ştergere/selectare ;<br />

c) import/export de text dinspre/spre alte aplicaţii, prin intermediul Clipboard-ului:<br />

operaţiile COPY/CUT/PASTE (comenzile CTRL+C, CTRL+X, CTRL+V);<br />

c) salvarea textului pe hard-disk în cele două formate ASCII şi RTF: meniul File/Save,<br />

respectiv ALT+FS de la tastatură ;<br />

2. Analiza lexicală a textului :<br />

a) despărţirea în silabe : toolbar button 1 sau comanda ALT+OS ;<br />

b) determinarea accentuaţiei : apăsarea succesivă a butonului 1<br />

sau comanda ALT+OA;<br />

3. Sinteza vocală a textului :<br />

a) sinteza întregului text din fereastra aplicaţiei: butonul 2 sau tasta F1. Sinteza textului<br />

poate fi oprită prin tasta ESC şi repornită din locul rămas (prin comanda F1) ;<br />

b) sinteza propoziţiei curente (propoziţia indicată de cursor): butonul 3 sau tasta F2;<br />

c) sinteza cuvântului curent (indicat de poziţia cursorului) : butonul 4 sau tasta F3.<br />

Aplicaţiile sistemului de sinteză vocală LIGHTVOX<br />

a. Sistemul se poate utiliza direct de către persoane cu disabilităţi vizuale sau<br />

nevăzători pentru citirea automată a textelor, prin utilizarea de comenzi simple de la tastatură ;<br />

b. Extinderea sistemului se poate face uşor şi pentru alte aplicaţii pentru nevăzători,<br />

precum: scrierea de texte asistată vocal de către calculator, aplicaţii de poştă electronică, citirea<br />

paginilor WEB, aplicaţii de tip bibliotecă electronică pentru nevăzători (în care, printr-un meniu<br />

interactiv vocal, nevăzătorul să-şi poată selecta un autor, o carte în format electronic, şi un<br />

capitol din acea carte, pe care sistemul îl va putea citi prin vocea sintetizată), etc.<br />

Rezultate şi observaţii experimentale<br />

În privinţa rezultatelor şi observaţiilor experimentale, s-a constatat o audiţie<br />

satisfăcătoare a textului sintetizat, care respectă prozodia segmentală (accentuarea cuvintelor) din<br />

limba română. Ceea ce se observă este fluenţa rostirii şi un grad ridicat de naturaleţe. Ca şi<br />

îmbunătăţiri viitoare, este clar că folosirea unor condiţii profesioniste de înregistrare a<br />

semnalului vocal şi utilizarea unei voci cu calităţi acustice superioare pot duce la creşterea<br />

semnificativă a calităţii rostirii sintetizate.<br />

Desigur că, pentru crearea unei noi baze de date vocale, de mare însemnătate va fi<br />

îmbunătăţirea algoritmilor de segmentare a semnalului vocal. Aceşti algoritmi, pe baza unei<br />

adnotări a corpusului textual folosit pentru crearea bazei de date vocale, vor fi capabili să extragă<br />

în mod automat unităţile fonetice silabice din semnalul vorbit.<br />

261


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

De asemenea, generarea unui dicţionar pentru excepţiile de despărţire în silabe şi<br />

accentuare a cuvintelor şi utilizarea acestui dicţionar în paralel cu analizoarele lexicale proiectate<br />

ar duce la scăderea ratei erorilor de procesare de limbaj şi implicit la creşterea calităţii rostirii.<br />

Tot pentru creşterea naturaleţii în rostire, se va putea avea în vedere luarea în considerare<br />

a unor reguli de prozodie suprasegmentală, la nivelul propoziţiilor, care să genereze o intonaţie<br />

corectă a frazei în momentul sintezei.<br />

7.6. Concluzii privind proiectarea şi realizarea sistemului de sinteză<br />

vocală<br />

În acest capitol s-au prezentat contribuţiile autorului în domeniul proiectării şi realizării<br />

sistemelor de sinteză vocală. S-a prezentat aici metodologia de proiectare a unui sistem de<br />

sinteză de voce pentru limba română, precum şi aspectele originale ce se referă la realizarea<br />

sistemului LIGHTVOX.<br />

Sistemul a fost conceput ca un sistem text-to-speech, în care sinteza vorbirii se realizează<br />

pornind de la un text în limba română, utilizând o metodă de sinteză bazată pe concatenarea<br />

silabelor.<br />

Metoda de sinteză proiectată de autor îmbină caracteristici ale abordării bazate pe<br />

concatenarea formelor de undă şi ale abordării bazate pe reguli. Au fost folosite reguli în faza de<br />

construire a bazei de unităţi acustice, apoi în faza de analiză a textului şi în faza de sinteză, la<br />

îmbinarea formelor de undă.<br />

Metodologia de proiectare a sistemului LIGHTVOX a urmărit două direcţii de lucru:<br />

1. Construirea bazei de date acustice (proces off-line), incluzând următoarele etape:<br />

înregistrarea eşantioanelor de voce, normalizarea semnalului, segmentarea semnalului în regiuni,<br />

segmentarea fonematică, separarea unităţilor acustice şi construirea bazei de date.<br />

2. Conversia text-voce (proces on-line), cuprinzând etapele: preprocesarea textului,<br />

corectarea ortografică, detecţia unităţilor lingvistice, determinarea prozodiei locale, regăsirea<br />

unităţilor acustice, îmbinarea unităţilor şi sinteza de voce.<br />

1. Construirea bazei de date acustice<br />

Baza de date acustică conţine un subset al silabelor limbii române. În vederea construirii<br />

bazei de date au fost realizate următoarele acţiuni:<br />

1) Crearea listei de silabe<br />

Lista cu silabele ce alcătuiesc baza de date vocală s-a realizat folosind o statistică a<br />

silabelor limbii române (paragraful 6.4.6.1), prin selectarea unui subset din totalul silabelor, în<br />

ordinea frecvenţei de apariţie în limba română vorbită.<br />

2) Crearea listei de cuvinte care să conţină silabele dorite<br />

Corpusul de cuvinte folosit pentru extragerea unităţilor acustice a fost alcătuit atât din<br />

propoziţii şi cuvinte normale care conţineau silabele dorite, precum şi din cuvinte artificiale<br />

folosite pentru a evidenţia mai bine un anumit grup de foneme.<br />

Generarea seturilor de cuvinte a ţinut cont de tipul silabelor: accentuate, respectiv<br />

neaccentuate, cât şi de contextul acestora: silabe mediane sau finale în cadrul cuvântului.<br />

262


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

3) Înregistrarea digitală a rostirii<br />

Pentru înregistrarea corpusului vocal a fost ales un vorbitor masculin, urmărindu-se<br />

rostirea corpusul textual într-un ritm constant, cu o aceeaşi tonalitate a vocii. Procesul de<br />

înregistrare a semnalului vocal a presupus folosirea unei aparaturi speciale constituită dintr-un<br />

microfon, o placă digitizoare de semnal acustic, şi un program software specializat pentru lucrul<br />

cu fişiere audio.<br />

4) Normalizarea înregistrării<br />

Normalizarea semnalului reprezintă prelucrarea digitală a semnalului vocal pentru a-l<br />

aduce la o formă unitară în tot cuprinsul bazei vocale.<br />

Autorul a folosit o procedură semiautomată, disponibilă prin intermediul aplicaţiei Cool<br />

Edit Pro. În urma normalizării, corpusul vocal conţine toate înregistrările de aceeaşi amplitudine<br />

(rostirile prezentând aceeaşi tărie sonoră), precum şi frecvenţă fundamentală constantă<br />

(corespunzând unor rostiri de aceeaşi tonalitate, acelaşi ritm şi intonaţie constantă).<br />

5) Crearea corpusului paralel text-voce<br />

Pentru a realiza segmentarea automată a semnalului vocal, a fost necesară utilizarea a<br />

două corpusuri în paralel, şi anume: corpusul vorbit, înregistrat în fişiere audio, şi respectiv<br />

corpusul textual corespondent. Astfel, odată cu salvarea fiecărui fişier audio, a fost stocat şi<br />

fişierul text asociat conţinutului său.<br />

6) Segmentarea semnalului vocal în regiuni fonematice<br />

Operaţia de segmentare a semnalului vocal în regiuni fonematice urmăreşte<br />

descompunerea semnalului în regiuni corespunzătoare secvenţelor de foneme.<br />

Paşii implementaţi în această etapă au fost:<br />

a) analiza semnalului vocal, în scopul determinării parametrilor semnalului, utili în faza<br />

de segmentare;<br />

b) segmentarea în regiuni a semnalului vocal, ce are ca scop detectarea categoriilor<br />

fundamentale de semnal: linişte, sonor, nesonor, la care se adaugă şi categoria tranziţie;<br />

c) compactarea regiunilor, urmărind asocierea regiunilor vecine de dimensiuni mici,<br />

având ca rezultat scăderea numărului total de regiuni;<br />

d) clasificarea regiunilor: împarte regiunile din semnal în 10 clase distincte, clase care<br />

pot fi asociate cu reprezentarea sonoră a fonemelor limbii române;<br />

e) segmentarea fonematică, ce asociază simbolurile fonetice cu regiunile din semnal. Pe<br />

baza unor reguli speciale de asociere, se face o corespondenţă între grupurile fonetice prezente la<br />

intrarea de text cu secvenţele de regiuni detectate din semnalul vocal.<br />

7) Separarea silabelor utile din semnal<br />

Separarea silabelor din semnalul vocal s-a realizat printr-o procedură semiautomată care<br />

selectează secvenţele fonetice dorite prin deplasarea capetelor intervalului de selecţie pe<br />

graniţele regiunilor fonematice detectate anterior.<br />

8) Salvarea unităţilor acustice în baza de date<br />

După detecţia silabelor dorite din semnalul vocal, acestea se salvează ca fişiere distincte<br />

în structura ierarhică a bazei de date. Ierarhizarea s-a făcut în funcţie de parametrii unităţilor<br />

acustice:<br />

263


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

a) lungime: silabe alcătuite din două, trei sau patru litere, precum şi foneme singulare;<br />

b) poziţia silabei în interiorul cuvântului: silabe iniţiale/mediane sau finale;<br />

c) accentuare: silabe accentuate sau neaccentuate.<br />

În final, în baza de date au fost înregistrate aproximativ 600 de unităţi acustice, foneme şi<br />

silabe, considerând atât silabele de segment median şi final, cât şi silabele accentuate şi<br />

neaccentuate, astfel: 386 de silabe de două litere, 139 de silabe de trei litere, 37 de silabe<br />

alcătuite din patru litere şi 36 de foneme singulare.<br />

2. Conversia text-voce<br />

Conversia text-voce reprezintă a doua fază, ce decurge on-line, în funcţionarea sistemului<br />

LIGHTVOX şi cuprinde toate etapele ce trebuie parcurse pentru ca dintr-un text iniţial să se<br />

genereze vorbirea sintetică asociată.<br />

Etapele componente ale acestei faze sunt următoarele:<br />

a) preprocesarea textului,<br />

b) corectarea ortografică,<br />

c) detecţia unităţilor lingvistice,<br />

d) determinarea prozodiei locale,<br />

e) regăsirea unităţilor acustice,<br />

f) îmbinarea unităţilor,<br />

g) sinteza de voce.<br />

Aceste etape au fost pe larg prezentate în cadrul metodei de sinteză bazată pe silabe, în<br />

secţiunea 6.4.<br />

Mai întâi a fost implementat un analizor lexical de preprocesare a textului, pentru<br />

exapandarea abrevierilor şi transcrierea fonetică a numerelor din text.<br />

Apoi s-a implementat analizorul şi setul de reguli corespondent pentru corectarea<br />

ortografică a textului.<br />

A fost apoi creat analizorul lexical pentru despărţirea în silabe, apoi cel pentru regăsirea<br />

accentelor (silabele accentuate din compunerea cuvintelor). Ambele au necesitat găsirea unor<br />

reguli de despărţire în silabe şi de accentuare a cuvintelor pentru limba română.<br />

Odată găsite unităţile lexicale de bază (silabele), a fost proiectat un analizor sintactic care<br />

să preia aceste unităţi lexicale şi să construiască structura de cuvinte şi propoziţii a textului de la<br />

intrare.<br />

A urmat implementarea unui algoritm de potrivire a unităţilor fonetice extrase din text cu<br />

unităţile acustice înregistrate în baza de date. Deoarece unităţile din baza vocală constituie un<br />

subset al silabelor existente în limba română, a trebuit proiectat un algoritm de selecţie optimală<br />

a unităţilor, care să asigure o rostire optimă din punct de vedere acustic şi perceptual.<br />

Îmbinarea unităţilor regăsite din baza de date şi sinteza vocală propriu-zisă nu au ridicat<br />

dificultăţi deosebite, aceste module fiind proiectate cu ajutorul funcţiilor API Windows.<br />

264


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

Implementarea prototipului sistemului de sinteză LIGHTVOX s-a făcut pe o structură<br />

modulară având cinci componente:<br />

- modulul de analiză lingvistică, având sarcina de a face analiza textului de la intrare în<br />

scopul extragerii unităţilor fonetice de bază - silabele;<br />

- modulul de analiză prozodică, ce urmăreşte detectarea elementelor de prozodie<br />

segmentală, respectiv a accentelor din cadrul cuvintelor;<br />

- modulul de gestiune a bazei de date vocale, care efectuează toate operaţiunile legate de<br />

baza de date ce conţine unităţile acustice;<br />

- modulul de potrivire a unităţilor fonetice, ce asigură punerea în corespondenţă între<br />

silabele extrase din textul de sintetizat şi silabele existente în baza de date vocală;<br />

- modulul de sinteză propriu-zisă a rostirii, care realizează concatenarea formelor de<br />

undă şi produce sinteza propriu-zisă.<br />

Acest prototip al sistemului LIGHTVOX a fost implementat în limbajul Visual C++ şi<br />

testat pe un calculator Pentium, rezultatele experimentale fiind prezentate în paragraful 7.5.<br />

Ca şi contribuţii ale autorului în domeniul proiectării sistemelor de sinteză vocală,<br />

contribuţii prezentate în acest capitol, se pot menţiona:<br />

- structurarea unei metodologii de proiectare a unui sistem de sinteză de voce,<br />

metodologie orientată pe două direcţii principale: crearea bazei de date şi conversia text-voce;<br />

- crearea unei baze de date vocale pentru sistemul de sinteză, alcătuită din aproximativ<br />

600 de silabe ale limbii române;<br />

LIGHTVOX.<br />

- crearea unui prototip al sistemului de sinteză de voce pentru limba română, numit<br />

265


8. Concluzii finale<br />

Cercetările efectuate în cadrul tezei au avut ca scop final dezvoltarea unei metode de<br />

sinteză a vorbirii adaptată specific limbii române precum şi a unei metodologii de lucru în<br />

vederea construirii unui sistem de sinteză vocală automată.<br />

Pentru aceasta, au fost studiate mai întâi modul de producere şi de percepţie a sunetului,<br />

proprietăţile fizice-acustice ale sunetului precum şi cele rezultate ca urmare a modelării sunetului<br />

ca un semnal. Au fost studiate modalităţile de procesare ale sunetului şi a fost dezvoltată o<br />

aplicaţie specială prin intermediul căreia au fost efectuate mai multe experimente în scopul<br />

îmbunătăţirii calităţii semnalului vorbit. S-au studiat diferite modalităţi de analiză a semnalului<br />

vocal, pentru extragerea şi modelarea parametrilor caracteristici. A fost creată o metodă proprie<br />

de segmentare a semnalului vocal capabilă să detecteze clase de regiuni cu proprietăţi specifice<br />

din semnalul vorbit, şi să le pună în corespondenţă cu tipurile de foneme din limba română.<br />

Această facilitate a fost utilizată pentru extragerea unităţilor acustice din semnalul vocal, unităţi<br />

ce vor fi folosite în procesul de sinteză.<br />

Mai departe, au fost studiate metodele cele mai performante de sinteză a vorbirii<br />

existente în momentul actual, ajungându-se la concluzia că metodele de sinteză bazate pe<br />

concatenarea unităţilor acustice de mărime medie/mică au raportul calitate/costuri cel mai<br />

avantajos. A fost aleasă astfel spre dezvoltare o metodă de sinteză bazată pe concatenarea<br />

silabelor.<br />

S-au definit în continuare paşii principali care trebuie urmaţi pentru ca, pornind de la un<br />

text de sintetizat, să se ajungă la generarea semnalului vocal corespondent. Mai întâi textul<br />

trebuie prelucrat în scopul transcrierii literale a numerelor şi abrevierilor. Apoi, textul va trebui<br />

să treacă printr-o fază de corectare ortografică, pentru a ne asigura că în faza de sinteză nu se vor<br />

produce distorsiuni ale rostirii datorită erorilor de sintaxă. Din textul corectat, se vor detecta apoi<br />

unităţile lingvistice de tipul silabelor împreună cu informaţia de accent, care va asigura prozodia<br />

segmentală a rostirii generate. Pentru fiecare din aceste etape amintite, şi anume: preprocesare,<br />

analiză de sintaxă, despărţirea în silabe, detectarea accentuării, s-au construit analizoare lexicale<br />

şi seturi de reguli speciale cu care s-au obţinut performanţe ridicate în analiza lingvistică a<br />

textului de sintetizat.<br />

A fost necesară proiectarea unei baze de date vocale care să furnizeze unităţile acustice<br />

necesare sintezei. Includerea unităţilor silabice în baza de date a ţinut cont de o statistică a<br />

silabelor din limba română, statistică ce a fost realizată utilizând analizorul propriu pentru<br />

despărţirea cuvintelor în silabe.<br />

În final, metoda de sinteză a fost implementată şi testată într-un sistem de sinteză vocală<br />

numit LIGHTVOX. Au fost definiţi paşii necesari în realizarea sistemului, care a decurs pe două<br />

direcţii principale: construirea bazei de date şi conversia text-voce. Rezultatele practice obţinute<br />

cu acest sistem de sinteză vocală au dovedit viabilitatea metodei propuse, a metodologiei de<br />

lucru, justificând eforturile depuse de autor pe durata a şase ani de studii şi cercetări în domeniul<br />

procesării automate a limbajului şi prelucrării semnalului vocal.<br />

266


8.1. Principalele aspecte expuse în cadrul tezei<br />

267<br />

Cap. 8. Concluzii finale<br />

1. La început a fost prezentată problematica sintezei de voce la modul general,<br />

oportunitatea temei alese, ţinând cont în primul rând de stadiul actual al cercetării în domeniul<br />

prelucrării vorbirii şi sintezei de voce.<br />

2. A fost apoi expusă modalitatea producerii şi percepţiei vorbirii umane, fiind prezentat<br />

modelul producerii vorbirii. S-a făcut o clasificare a sunetelor produse de vocea umană şi s-au<br />

prezentat proprietăţile acustice ale sunetului.<br />

3. S-a făcut o introducere în domeniul analizei şi prelucrării semnalului vocal, arătânduse<br />

mai întâi care sunt parametrii de bază ai semnalului vocal. Au fost prezentate principalele<br />

metode de procesare a semnalului vocal, metode de codare, metode şi standarde de compresie a<br />

semnalului vocal.<br />

4. Au fost prezentate contribuţiile autorului în domeniul procesării semnalului vocal,<br />

aplicaţia de prelucrare digitală a semnalului vocal SPEA (Sound Processing and Enhancement<br />

Application), precum şi experimentele realizate asupra unor eşantioane reale de semnal audio şi<br />

vocal prin intermediul acestei aplicaţii.<br />

5. Au fost prezentate modurile de analiză a semnalului vocal în scopul determinării<br />

parametrilor de bază ai acestuia: modul de analiză în domeniul timp şi modul de analiză în<br />

domeniul frecvenţă. La fiecare mod s-au arătat metodele specifice de determinare a parametrilor<br />

semnalului vocal.<br />

6. Tot în cadrul domeniului analizei de semnal, s-au prezentat principiile segmentării<br />

semnalului vocal, cerinţele pe care trebuie să le îndeplinească algoritmii de segmentare,<br />

modalităţile şi etapele de detectare automată a segmentelor semnalului vocal. A fost extrasă din<br />

literatura de specialitate o metodă generică pentru segmentarea în domeniul timp, capabilă să<br />

detecteze diferite categorii de segmente, având proprietăţi specifice, din semnalul vocal.<br />

7. Au fost prezentate contribuţiile aduse de autor în procesul segmentării automate a<br />

semnalului vocal, respectiv metoda proprie de segmentare în domeniul timp. S-au evidenţiat<br />

etapele algoritmului de segmentare precum şi rezultatele obţinute: detectarea a patru categorii<br />

fundamentale de semnal şi a zece clase de regiuni.<br />

8. Au fost prezentate principiile procesului de segmentare fonematică, de asociere a<br />

segmentelor semnalului vocal cu secvenţele de foneme corespunzând semanticii (reprezentării<br />

textuale) a semnalului vorbit. Au fost expuse trei metode principale de segmentare fonematică,<br />

extrase din literatura de specialitate.<br />

9. Au fost prezentate contribuţiile autorului în problematica segmentării fonematice a<br />

semnalului vocal, respectiv metoda de segmentare fonematică bazată pe reguli de asociere<br />

foneme-regiuni. S-au explicat paşii metodei, setul de reguli folosit, s-au prezentat rezultatele şi<br />

avantajele metodei. Au fost relevate aplicaţiile metodei de segmentare fonematică în procesul de<br />

construire a bazelor de date vocale.<br />

10. Un alt capitol a fost dedicat prezentării domeniului sintezei vorbirii; a fost expus<br />

modelul general al sintezei vorbirii, sistemul de sinteză de tip text-to-speech, precum şi metodele<br />

de bază folosite în sinteza text-to-speech. Au fost descrise etapele procesului sintezei vocale<br />

pornind de la text.


268<br />

Cap. 8. Concluzii finale<br />

11. A urmat expunerea metodelor existente de sinteză a vorbirii, atât în domeniul<br />

frecvenţă cât şi în domeniul timp. Dintre metodele de sinteză în domeniul frecvenţă au fost<br />

expuse metoda formantică şi metoda LPC (Linear Predictive Coding), iar în cadrul metodelor de<br />

sinteză în domeniul timp au fost detaliate metoda TD-PSOLA (Time Domain Pitch Synchronous<br />

Overlapp and Add) şi metoda de sinteză bazată pe corpus.<br />

12. Ca şi contribuţie în domeniul proiectării metodelor de sinteză vocală, s-a prezentat<br />

metoda autorului de sinteză de voce bazată pe silabe pentru limba română. Metoda cuprinde<br />

următoarele etape: preprocesarea textului, analiza de sintaxă, determinarea unităţilor lingvistice<br />

de tipul silabelor, determinarea prozodiei intra-segmentale (accentuaţia), regăsirea unităţilor<br />

acustice din baza de date vocală, concatenarea unităţilor acustice şi sinteza propriu-zisă a rostirii.<br />

Pentru primele patru etape au fost proiectate analizoare lexicale bazate pe reguli. Mai<br />

întâi a fost descris setul de reguli pentru preprocesarea textului sursă. A fost descrisă apoi<br />

metoda de analiză de sintaxă şi s-a prezentat setul de reguli utilizat pentru analiza formelor<br />

flexionate din limba română. În următoarea etapă, a fost prezentat analizorul sintactic pentru<br />

extragerea propoziţiilor şi a cuvintelor din textul sursă, analizorul lexical pentru despărţirea<br />

cuvintelor în silabe, precum şi setul de reguli utilizat în detectarea silabelor. S-a expus apoi<br />

modul de determinare a aspectelor prozodice intrasegmentale: accentuarea cuvintelor. Aici a fost<br />

prezentat analizorul lexical utilizat în determinarea accentelor şi setul de reguli asociat.<br />

13. În continuare s-a descris structura şi modul de organizare a bazei de date vocale. Baza<br />

de date este alcătuită dintr-un subset al silabelor limbii române, subset alcătuit pe baza<br />

frecvenţelor de apariţie ale silabelor în limba română vorbită. Pentru a determina aceste<br />

frecvenţe de apariţie, a fost realizată o statistică utilizând un corpus de texte conţinând peste<br />

300000 de cuvinte.<br />

14. S-a prezentat apoi modalitatea de regăsire a unităţilor acustice din baza de date<br />

vocală. Căutarea în baza de date se face după lungimea silabei, contextul median sau final în<br />

cadrul cuvântului şi accentuare.<br />

15. A fost expus în continuare modul de concatenare a unităţilor acustice pentru a forma<br />

semnalul de ieşire, precum şi modul de realizare a sintezei de voce.<br />

16. În ultimul capitol s-a prezentat sistemul de sinteză de voce în limba română<br />

LIGHTVOX, care implementează metoda de sinteză pe bază de silabe dezvoltată de autor. S-a<br />

descris organizarea pe module a sistemului, etapele de proiectare, precum şi paşii care au fost<br />

realizaţi la fiecare etapă. S-a detaliat modul de construire a bazei de date vocale şi s-a prezentat<br />

algoritmul de implementare al procesului de conversie text-voce. În final, s-au expus rezultatele<br />

obţinute cu sistemul de sinteză vocală, aplicaţiile şi dezvoltările de viitor.


8.2. Contribuţiile şi realizările tezei de <strong>doctorat</strong><br />

269<br />

Cap. 8. Concluzii finale<br />

În primul rând este de menţionat caracterul interdisciplinar al tezei, cercetările<br />

efectuate acoperind următoarele domenii:<br />

1. Fonetică şi lingvistică, în ceea ce priveşte studiul alcătuirii fonetice şi sintactice a<br />

cuvintelor şi propoziţiilor din limba română, precum şi studiul formelor flexionate specifice<br />

limbii.<br />

2. Prelucrarea limbajului natural şi inteligenţă artificială, în ceea ce priveşte crearea unor<br />

metode automate bazate pe reguli pentru analiza textului, respectiv pentru separarea unităţilor<br />

acustice din semnalul vocal.<br />

3. Procesarea vorbirii, cu cele patru ramuri ale sale :<br />

a) prelucrarea semnalului vocal, în ceea ce priveşte realizarea unor metode de<br />

îmbunătăţire a calităţii semnalului vocal;<br />

b) analiza semnalului vocal, în ceea ce priveşte detectarea unor regiuni cu proprietăţi<br />

distincte, semnificative din punct de vedere al rostirii, din semnalul vocal;<br />

c) recunoaşterea vorbirii, în ceea ce priveşte proiectarea unor metode de detectare<br />

automată a secvenţelor fonematice dintr-un semnal vocal cunoscut;<br />

d) sinteza de voce, ca domeniu şi obiectiv în care se încadrează cercetările şi metodele<br />

specifice dezvoltate de autor în cadrul tezei.<br />

Principalele realizări şi contribuţii ale tezei în cadrul domeniilor amintite se referă la :<br />

1. Realizarea unui studiu asupra modului de producere şi percepţie a sunetului; studiul<br />

include prezentarea caracteristicilor fizice şi acustice ale sunetului, precum şi modelarea<br />

producerii vorbirii.<br />

2. Realizarea unui studiu sintetic asupra metodelor de procesare, codare şi compresie a<br />

semnalului vocal. Studiul cuprinde prezentarea unor metode de codare a semnalului vocal,<br />

precum: tehnica modulării impulsurilor în cod, codarea liniară, codarea logaritmică, codarea<br />

entropică, codarea predictivă, modulaţia diferenţială a impulsurilor de cod, codificarea adaptivă<br />

ADPCM, modulaţia delta; metode şi standarde de compresie a semnalului vocal: compresia prin<br />

transformări, tehnica predicţiei liniare LPC, predicţia liniară cu cod excitat CELP.<br />

3. Dezvoltarea unei aplicaţii de prelucrare digitală a semnalului vocal numită SPEA<br />

(Sound Processing and Enhancement Application). Aplicaţia prezintă următoarele facilităţi:<br />

încărcarea semnalului vocal înregistrat în fişiere wave având diferite codificări, vizualizarea<br />

formei de undă şi a eşantioanelor de semnal pe diferite scale de mărime, determinarea<br />

parametrilor semnalului vocal (amplitudine, energie, număr de treceri prin zero, frecvenţa<br />

fundamentală - în domeniul timp; spectrul de amplitudini, spectrul de faze, formanţii - pentru<br />

domeniul frecvenţă), posibilitatea de modificare interactivă a componentelor din spectrele de<br />

amplitudini şi faze în scopul îmbunătăţirii calităţii acustice a semnalului vocal.<br />

4. Efectuarea unor experimente asupra unor eşantioane reale de semnal audio şi vocal, în<br />

scopul determinării parametrilor cu influenţă directă asupra calităţii acustice a semnalului.<br />

Experimentele au inclus: analiza spectrală a vocalelor pentru vorbitorul masculin şi cel feminin,<br />

analiza spectrală a consoanelor, analiza spectrală a sunetelor emise multitonal, analiza


270<br />

Cap. 8. Concluzii finale<br />

perceptuală a sunetelor emise în fază diferită, modul de influenţă al alegerii ferestrei asupra<br />

rezultatului analizei spectrale, modul de influenţă al frecvenţei de eşantionare asupra calităţii<br />

vocii, experimente de modulare a semnalului, influenţa mediului de înregistrare asupra calităţii<br />

sunetului, experimente privind timbrul sunetului şi percepţia auditivă, analiza spectrală a<br />

sunetelor radiofonice, influenţa armonicilor spectrale superioare asupra calităţii acustice a<br />

vorbirii, analiza comportării sunetelor vocalice şi calculul duratelor segmentelor de atac, median<br />

şi final al vocalelor, analiza rostirii silabelor şi calculul comparativ al frecvenţelor şi duratelor<br />

silabelor accentuate faţă de silabele normale.<br />

5. Realizarea unui studiu sintetic asupra metodelor de analiză în domeniul timp şi în<br />

domeniul frecvenţă a semnalului vocal. Studiul include prezentarea unor metode precum: metode<br />

de analiză în domeniul timp: metoda autocorelaţiei, metoda funcţiei diferenţă de amplitudine<br />

medie, metoda cu limitare centrală; metode de analiză în domeniul frecvenţă: analiza prin banc<br />

de filtre digitale, analiza Fourier, analiza prin predicţie liniară, analiza cepstrală, analiza<br />

perceptuală.<br />

6. Realizarea unui studiu asupra modalităţilor de segmentare şi clasificare a semnalului<br />

vocal. Studiul a inclus detalierea unei metode generice pentru segmentarea semnalului vocal în<br />

domeniul timp (metoda Childers) şi a trei metode de segmentare fonematică: segmentarea cu<br />

modele Markov ascunse HMM, metoda bazată pe rafinarea frontierelor de regiuni, segmentarea<br />

bazată pe probabilităţi generalizate GLR.<br />

7. Dezvoltarea unei metode proprii de segmentare a semnalului vocal în regiuni. Metoda<br />

este capabilă să detecteze 4 categorii fundamentale de semnal (linişte, sonor, nesonor şi tranziţie)<br />

şi 10 clase de regiuni (linişte, linişte nesonoră, vocală sonoră, salt, tranzitorie, tranzitorie densă,<br />

neregulată, consoană nesonoră, discontinuitate R, discontinuitate G). Algoritmul metodei<br />

cuprinde următoarele faze : detecţia categoriilor de semnal SUV, detecţia regiunilor, detecţia de<br />

subregiuni şi compactarea regiunilor.<br />

Avantajul algoritmului faţă de alte abordări este rapiditatea derivată din efectuarea<br />

calculelor în domeniul timp şi detectarea categoriilor de bază dintr-o singură parcurgere a<br />

eşantioanelor de semnal.<br />

În cadrul dezvoltării acestei metode s-au realizat:<br />

­ un algoritm de determinare a punctelor de zero, minim şi maxim din semnalul vocal în<br />

domeniul timp;<br />

­ o metodă de detecţie a segmentelor SUV ( Silence/Voiced /Unvoiced) şi clasificare în<br />

tipuri de regiuni a semnalului vocal, metodă ce cuprinde :<br />

­ 4 detectori pentru categoriile de bază (linişte, sonoră, nesonoră, tranziţie) ;<br />

­ 8 clasificatori pentru clasele de regiuni propriu-zise (linişte, consoană ne-sonoră, vocală<br />

sonoră, linişte-nesonoră, de tip salt, neregulată, tranzitorie, tranzitorie densă);<br />

­ 2 detectori pentru determinarea subregiunilor (discontinuitate de tip R şi discontinuitate<br />

de tip G);<br />

­ un algoritm de compactare a regiunilor pentru gruparea regiunilor similare şi reducerea<br />

numărului de regiuni.<br />

­ un tabel de corespondenţe între fonemele limbii române şi clasele de regiuni.


271<br />

Cap. 8. Concluzii finale<br />

8. Dezvoltarea unei metode pentru determinarea perioadelor din forma de undă a<br />

semnalului vocal. Detectarea perioadelor din forma de undă, corespunzând frecvenţei<br />

fundamentale a semnalului, este importantă atât pentru analiza sincronă cu frecvenţa, cât şi<br />

pentru modificarea proprietăţilor acustico-prozodice ale semnalului vocal (de exemplu<br />

modificarea tonalităţii, intonaţiei şi ritmului vorbirii). Algoritmul metodei este deosebit de exact,<br />

lucrând exclusiv în domeniul timp al analizei. Spre deosebire de alte metode de calcul în<br />

domeniul frecvenţă, el nu necesită ferestruire şi nici calcule complexe, fiind foarte rapid.<br />

4 algoritmi :<br />

Metoda comportă patru paşi succesivi:<br />

a) determinarea punctului de plecare (punctul pivot);<br />

b) determinarea unei estimări a perioadei de semnal;<br />

c) detecţia punctelor de maxim şi de hiatus pentru fiecare perioadă;<br />

d) marcarea intervalelor de perioadă prin detectarea punctelor de capăt.<br />

Fiecare etapă a necesitat elaborarea a câte unui algoritm distinct. Au fost proiectaţi astfel<br />

- un algoritm în domeniul timp pentru determinarea punctului pivot, primul maxim de<br />

perioadă în funcţie de care se calculează toate celelalte puncte de maxim ;<br />

- un algoritm în domeniul timp pentru determinarea unei estimări a perioadei de semnal în<br />

jurul punctului pivot ;<br />

- un algoritm în domeniul timp pentru determinarea maximelor de perioadă, pornind de la<br />

punctul pivot către stânga, respectiv către dreapta, în segmentul considerat ; algoritmul<br />

este de asemenea capabil să detecteze punctele de hiatus care apar în segmentul vocal, şi<br />

le clasifică în hiatus de perioadă, respectiv hiatus de amplitudine ;<br />

- un algoritm în domeniul timp pentru determinarea punctelor de capăt ale intervalelor de<br />

perioadă, puncte ce sunt strâns legate de maximele de perioadă.<br />

9. Dezvoltarea unor metode proprii pentru segmentarea fonematică a semnalului vocal.<br />

Metodele de segmentare fonematică sunt foarte utile în procesul de creare a bazei de date<br />

acustice, când avem de-a face cu un corpus de dimensiuni mari care trebuie segmentat şi adnotat.<br />

Au fost proiectate trei metode distincte, ce pot fi utilizate individual sau coroborat. Prima metodă<br />

detectează grupurile de foneme din semnalul vocal pe baza textului cunoscut de la intrare,<br />

folosind segmentarea prealabilă în regiuni. A doua metodă realizează împărţirea regiunilor în<br />

subregiuni fonematice, calculând tranziţiile dintre cadrele fiecărei regiuni. A treia metodă<br />

detectează separat fonemele din regiunile multifonematice şi funcţionează pe bază de model.<br />

Avantajul metodelor dezvoltate de autor derivă din modul de abordare sincron cu frecvenţa, ceea<br />

ce le dă o notă de precizie în plus faţă de alte abordări.<br />

În cadrul dezvoltării acestor metode s-au proiectat şi implementat:<br />

a) pentru metoda de segmentare în grupuri de foneme a semnalului vocal pe baza<br />

textului cunoscut de la intrare:<br />

- un set de reguli care impun constrângeri de formă şi durată pentru grupurile<br />

fonematice (în faza curentă de dezvoltare setul cuprinde 60 de reguli);<br />

- un algoritm de asociere între grupurile fonematice şi secvenţele de regiuni;


272<br />

Cap. 8. Concluzii finale<br />

b) pentru metoda ce realizează împărţirea regiunilor în subregiuni fonematice folosind<br />

tranziţiile dintre cadrele fiecărei regiuni:<br />

- un mod de calcul a distanţei minime pătratice dintre două cadre de semnal, distanţă ce<br />

se aplică vectorilor de caracteristici bazaţi pe coeficienţi Fourier ;<br />

- un algoritm de detectare a frontierelor de subregiuni pe baza tranziţiilor bruşte dintre<br />

cadre;<br />

c) pentru metoda ce separă fonemele din regiunile multifonematice pe bază de model :<br />

- o metodă de modelare semiautomată a fonemelor;<br />

- un algoritm de comparare a vectorilor regiunii ţintă cu modelul;<br />

- un algoritm de regăsire a modelului fonematic şi de etichetare a regiunilor;<br />

- un algoritm de grupare a fonemelor şi segmentare în subregiuni.<br />

10. Realizarea unui studiu asupra modalităţilor de sinteză a vorbirii pornind de la un text.<br />

Studiul cuprinde: prezentarea modelului general al sintezei vorbirii, a sistemului de sinteză textto-speech,<br />

metodele de bază în sinteza text-to-speech: metoda bazată pe concatenarea formelor<br />

de undă, metoda bazată pe analiză-sinteză, metoda bazată pe reguli; descrierea etapelor sintezei<br />

de voce pornind de la text.<br />

11. Realizarea unui studiu asupra metodelor existente de sinteză de voce. A fost realizată<br />

o clasificare a metodelor de sinteză de voce: (a) în funcţie de nivelul abordării: metode care<br />

abordează sinteza de nivel jos, respectiv sinteza de nivel înalt; (b) în funcţie de domeniul de<br />

analiză abordat: metode de sinteză în domeniul timp şi metode de sinteză în domeniul frecvenţă.<br />

Dintre metodele de sinteză în domeniul frecvenţă au fost detaliate metoda formantică şi metoda<br />

LPC, iar în cadrul metodelor de sinteză în domeniul timp au fost detaliate metoda PSOLA şi<br />

metoda de sinteză bazată pe corpus.<br />

12. Dezvoltarea unei metode de sinteză vocală pe bază de silabe pentru limba română.<br />

Pentru dezvoltarea metodei a fost necesară stabilirea unor reguli lingvistice în faza de analiză a<br />

textului şi a unor reguli de îmbinare a formelor de undă în faza de sinteză. Metoda îmbină<br />

caracteristici ale abordării bazate pe concatenarea formelor de undă şi ale abordării bazate pe<br />

reguli.<br />

Sinteza vorbirii prin această metodă se realizează în două faze: analiza textului, şi<br />

respectiv sinteza vorbirii. Fiecare fază cuprinde mai multe etape procesuale, astfel:<br />

I. Analiza textului de sintetizat :<br />

1. Preprocesarea textului.<br />

2. Analiza de sintaxă.<br />

3. Determinarea unităţilor lingvistice: silabele.<br />

4. Determinarea prozodiei intrasegmentale: accentuarea.<br />

II. Sinteza vorbirii :<br />

5. Regăsirea unităţilor acustice din baza de date corespunzătoare unităţilor lingvistice<br />

din textul de la intrare.<br />

6. Concatenarea unităţilor acustice.<br />

7. Sinteza propriu-zisă a vorbirii.


În cadrul dezvoltării acestei metode de sinteză s-au realizat:<br />

273<br />

Cap. 8. Concluzii finale<br />

1) Proiectarea şi implementarea unui analizor lexical şi a unui set de reguli pentru<br />

preprocesarea textului. Analizorul conţine reguli pentru transcrierea fonetică a numerelor şi<br />

abrevierilor comune din limba română.<br />

2) Dezvoltarea unei metode bazată pe reguli pentru analiza sintaxei unui text în limba<br />

română şi a unui set de reguli pentru flexionarea cuvintelor din limba română. Analizorul<br />

automat de sintaxă realizat în cadrul metodei se bazează pe un dicţionar ce conţine peste 30000<br />

de forme neflexionate ale limbii române şi pe un set de 550 de reguli de flexionare, set de reguli<br />

proiectat de autor. Analizorul a fost testat pe o serie de texte de diferite genuri în limba română<br />

însumând peste 200000 de cuvinte. Testele au dovedit o corectitudine de peste 98% în<br />

recunoaşterea sintaxei.<br />

3) Proiectarea şi implementarea unui analizor sintactic pentru extragerea propoziţiilor şi a<br />

cuvintelor. Analizorul sintactic foloseşte un set de reguli care specifică structura sintactică a<br />

textului de la intrare. Textul iniţial este considerat ca o listă de propoziţii, fiecare propoziţie fiind<br />

o listă de cuvinte, fiecare cuvânt fiind compus din mai multe silabe. Propoziţiile, respectiv<br />

cuvintele sunt extrase din text pe baza semnelor de punctuaţie şi separatorilor.<br />

4) Proiectarea şi implementarea unui analizor lexical şi a unui set de reguli pentru<br />

despărţirea în silabe a cuvintelor din limba română. Analizorul lexical cuprinde un set de peste<br />

180 de reguli pentru descompunerea cuvintelor în silabe. Performanţa obţinută a fost de 98%<br />

cuvinte despărţite corect, rată calculată pe un set de 50000 de cuvinte extrase din texte de diferite<br />

genuri (literatură, economie, politică, ştiinţă şi tehnică, filozofie, religie). Performanţa este mai<br />

bună decât cea găsită la alţi cercetători români care au folosit reguli lexicale.<br />

5) Proiectarea şi implementarea unui analizor lexical şi a unui set de reguli pentru<br />

determinarea accentuaţiei din cadrul cuvintelor. Analizorul lexical cuprinde un set de 250 de<br />

reguli pentru detectarea silabei accentuate din interiorul cuvintelor. S-a obţinut o rată de<br />

detectare corectă a accentelor de 94%, rată calculată pe acelaşi set de 50000 de cuvinte ca şi în<br />

cazul despărţirii în silabe.<br />

6) Elaborarea unei statistici a silabelor limbii române pentru determinarea frecvenţelor de<br />

apariţie ale silabelor din limba română. Statistica a fost realizată folosind texte extrase din<br />

domenii precum: beletristică de diverse genuri, religie, economie, politică, ştiinţă şi tehnică,<br />

ziaristică. Textele au însumat un număr de aproximativ 342000 de cuvinte, adică peste 600 de<br />

pagini în format A4. Statistica prezintă următoarele rezultate:<br />

- configuraţia procentuală a categoriilor silabice S2, S3 şi S4 (S2 reprezintă categoria<br />

silabelor alcătuite din două foneme, S3 categoria silabelor tri-fonematice, S4 categoria silabelor<br />

tetra-fonematice) ;<br />

- frecvenţa de apariţie a categoriilor silabice S2, S3 şi S4;<br />

- frecvenţele de apariţie ale silabelor din fiecare categorie.<br />

7) Proiectarea structurii bazei de date acustice de silabe, în care unităţile acustice sunt<br />

integrate în diferite contexte segmentale şi accentuări.<br />

Structura ierarhică a bazei de date cuprinde patru nivele, şi anume:


274<br />

Cap. 8. Concluzii finale<br />

- nivelul Categorie : silabe de două, trei sau patru foneme (S2, S3, S4);<br />

- nivelul Context : segment median sau final, relativ la poziţia din cadrul cuvântului;<br />

- nivelul Accent : silabe accentuate sau neaccentuate în interiorul cuvântului;<br />

- nivelul Silabă : unităţile acustice înregistrate în format WAVE.<br />

8) Proiectarea şi implementarea unui algoritm de regăsire în baza de date a unităţilor<br />

acustice în funcţie de caracteristicile acestora: lungime, context şi accentuare. Algoritmul<br />

construieşte seturile de diviziune pentru fiecare silabă şi realizează o potrivire optimă cu unităţile<br />

din baza de date vocală, asigurându-se astfel o redare sonoră cât mai fidelă a unităţii lingvistice<br />

din text.<br />

13. Proiectarea şi implementarea unui sistem de sinteză vocală adaptat special limbii<br />

române, ce foloseşte ca şi unităţi fonetice silabele, numit LIGHTVOX. Sistemul a fost conceput<br />

ca un sistem text-to-speech, în care sinteza vorbirii se realizează pornind de la un text în limba<br />

română. Sistemul utilizează metoda de sinteză pe bază de silabe dezvoltată de autor.<br />

A fost propusă o metodologie de proiectare a sistemului de sinteză de voce, urmărind<br />

două direcţii principale: construirea bazei de date acustice şi conversia text-voce. Construirea<br />

bazei de date a inclus următoarele etape: înregistrarea eşantioanelor de voce, normalizarea<br />

semnalului, segmentarea semnalului în regiuni, segmentarea fonematică, separarea unităţilor<br />

acustice şi construirea bazei de date. Conversia text-voce include etapele: preprocesarea textului,<br />

corectarea ortografică, detecţia unităţilor lingvistice, determinarea prozodiei locale, regăsirea<br />

unităţilor acustice, îmbinarea unităţilor şi sinteza de voce.<br />

Implementarea prototipului sistemului LIGHTVOX s-a făcut pe o structură modulară<br />

având cinci componente:<br />

- modulul de analiză lingvistică, având sarcina de a face analiza textului de la intrare în<br />

scopul extragerii unităţilor fonetice de bază - silabele;<br />

- modulul de analiză prozodică, ce urmăreşte detectarea elementelor de prozodie<br />

segmentală, respectiv a accentelor din cadrul cuvintelor;<br />

- modulul de gestiune a bazei de date vocale, care efectuează toate operaţiunile legate de<br />

baza de date ce conţine unităţile acustice;<br />

- modulul de potrivire a unităţilor fonetice, ce asigură punerea în cores-pondenţă între<br />

silabele extrase din textul de sintetizat şi silabele existente în baza de date vocală;<br />

- modulul de sinteză propriu-zisă a rostirii, care realizează concatenarea formelor de undă<br />

şi produce sinteza propriu-zisă.<br />

Acest prototip al sistemului LIGHTVOX a fost implementat în limbajul Visual C++ şi<br />

testat pe un calculator Pentium, rezultatele experimentale arătând o calitate bună a sintezei<br />

rostirii, având un grad ridicat de fluenţă şi naturaleţe.<br />

14. Generarea bazei de date vocale pentru sistemul de sinteză, alcătuită dintr-un subset al<br />

silabelor limbii române. Silabele au fost înregistrate în diferite contexte şi moduri de pronunţie,<br />

incluzând aspectele prozodice intrasegmentale (accentuaţia). În baza de date au fost înregistrate<br />

aproximativ 600 de unităţi acustice, foneme şi silabe, considerând atât silabele de segment<br />

median şi final, cât şi silabele accentuate şi neaccentuate: 386 de silabe alcătuite din două<br />

foneme, 139 de silabe tri-fonematice, 37 de silabe tetra-fonematice şi 36 de foneme singulare.


275<br />

Cap. 8. Concluzii finale<br />

În concluzie, se poate spune că cercetările făcute de autor pe parcursul tezei s-au<br />

concretizat în: dezvoltarea unei metode de analiză automată a semnalului vocal, dezvoltarea unei<br />

metode de sinteză a vorbirii adaptată specific limbii române, stabilirea unei metodologii de lucru<br />

în scopul construirii unui sistem de sinteză vocală automată, precum şi în implementarea unui<br />

prototip al unui sistem de sinteză de voce pentru limba română.<br />

Utilizând ca unităţi lingvistice silabele, metoda de sinteză proiectată se integrează în<br />

categoria metodelor de calitate superioară, bazate pe concatenare. Metoda este adaptată specific<br />

limbii române, şi propune ca noutate o abordare bazată pe reguli. Astfel, metodologia de<br />

proiectare dezvoltată oferă posibilitatea construirii unui sistem de sinteză vocală utilizând atât<br />

procedee specifice prelucrării de semnal, cât şi metode specifice inteligenţei artificiale şi<br />

lingvisticii computaţionale, metode bazate pe reguli şi seturi de cunoştinţe.<br />

Au fost concepute reguli specifice de procesare în cele mai importante etape de proiectare<br />

a unui sistem de sinteză vocală: în etapa de analiză şi procesare a textului, pentru detecţia<br />

unităţilor lingvistice din text şi în etapa de construire a bazei de date vocale, pentru extragerea<br />

unităţilor acustice din semnalul vocal.<br />

Prototipul sistemului de sinteză vocală realizat demonstrează viabilitatea metodei<br />

proiectate de autor, oferă posibilitatea dezvoltării unor aplicaţii de mare importanţă în domeniul<br />

comunicării om-maşină, dar şi de mare utilitate pentru persoane cu nevoi speciale.<br />

Rezultatele obţinute au fost prezentate în cadrul unor conferinţe interne şi internaţionale,<br />

au fost publicate în reviste şi cărţi de specialitate. Au fost publicate un număr de 20 de articole şi<br />

o carte în domeniul tezei.<br />

Considerăm astfel că cercetările efectuate în cadrul <strong>doctorat</strong>ului îndeplinesc obiectivele<br />

propuse iniţial, justificând eforturile depuse de autor pe o durată de 6 ani. De asemeni, având în<br />

vedere rezultatele obţinute, punctele de noutate şi perspectivele de aplicabilitate practică,<br />

considerăm că aceste cercetări contribuie la dezvoltarea domeniului analizei şi procesării vorbirii<br />

pe plan intern şi internaţional.


Bibliografie<br />

[And88] André-Obrecht R., A new statistical approach for the automatic segmentation of<br />

continuous speech signals, IEEE Transactions Acoustics, Speech and Signal Processing No. 36,<br />

January 1988, pp. 29–40<br />

[Ata79] Atal B.S., Schroeder M. R., Predictive coding of speech signals and subjective error<br />

criteria, IEEE Transactions on Acoustic Speech Signal Processing, ASSP-27(3), June 1979<br />

[Ave04] Avendaño C., Deng L., Hermansky H., Gold B., The Analysis and Representation of<br />

Speech, Springer Handbook of Auditory Research, Springer Publisher New York, Volume 18,<br />

ISBN 978-0-387-00590-4, ISSN 0947-2657, 2004, pp. 63-100<br />

[Bal02] Bâlcu R., Prelucrarea numerică a semnalelor, Ed. Risoprint, 2002<br />

[Ben76] Benade, A. H., Fundamentals of Musical Acoustics, Oxford University Press, 1976<br />

[Bla07] Black A.W., Zen H., Tokuda K., Statistical Parametric Speech Synthesis, IEEE<br />

International Conference on Acoustics, Speech and Signal Processing, ICASSP‘07, Vol. 4, April<br />

2007, pp. 1229-1232<br />

[Blo00] Bloothooft G., The landscape of future education in speech communication sciences,<br />

Analysis of European education in phonetics, spoken language engineering, speech and language<br />

theory, Vol. 1-2, 2000<br />

[Bod00] Bodo A. Zs., Experimente privind proiectarea şi implementarea unor module de sinteză<br />

text-vorbire, Disertaţie master, UTCN, 2000<br />

[Bod02] Bodo A. Zs., Stadiul actual în domeniul sintezei vorbirii, Referat nr. 1 de <strong>doctorat</strong>,<br />

UTCN, susţinut la data de 30.10.2002<br />

[Bod05-1] Bodo A. Zs., Experiments for prosody modification using the Nonlinear Springing<br />

Method, published in the volume „Trends in Speech Technology”, coordinated by Burileanu C.<br />

and Teodorescu H.-N., edited by the Publishing House of the Romanian Academy, composed of<br />

the Proceedings of the 3 rd IEEE Conference on Speech Technology and Human Computer<br />

Dialogue, SpeD 2005, organized by the Romanian Academy, the University “Politehnica” of<br />

Bucharest and the Technical University of Cluj-Napoca, Cluj-Napoca, Romania, May 13-14<br />

2005, pp. 177-181<br />

[Bod05-2] Bodo A. Zs., Realizări privind sinteza vorbirii pentru limba română, Referat nr. 3 de<br />

<strong>doctorat</strong>, UTCN, susţinut la data de 28.10.2005<br />

[Bod07-1] Bodo A. Zs., Buza O., Toderean G., Acoustic Database for Romanian TTS Synthesis.<br />

Design and Realisation Results (I), Acta Technica Napocensis, UTCN, Vol. 48, 2007, pp. 24-31<br />

[Bod07-2] Bodo A. Zs., Buza O., Toderean G., Realisation Results of a Speech Synthesis<br />

Development Environment, Acta Technica Napocensis, UTCN, Vol 48, 2007, pp. 32-37<br />

[Bod09-1] Bodo A. Zs., Buza O., Toderean G., TTS Experiments: Romanian Prosody, Acta<br />

Technica Napocensis, UTCN, Vol 50, 2009, pp. 31-36<br />

[Bod09-2] Bodo A. Zs., Buza O., Toderean G., Experiments with the prediction and generation<br />

of Romanian intonation, published in the volume „From Speech Processing to Spoken Language<br />

Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by the Publishing<br />

House of the Romanian Academy, composed of the Proceedings of the 5 th IEEE Conference on<br />

276


277<br />

Bibliografie<br />

Speech Technology and Human Computer Dialogue, SpeD 2009, organized by the University<br />

“Politehnica” of Bucharest, the Romanian Academy, the Maritime University of Constanta, the<br />

Research Institute for Artificial Intelligence, in cooperation with EURASIP and IEEE,<br />

Constanta, Romania, June 18-21, 2009, pp.103-114<br />

[Bod09-3] Bodo A. Zs., Buza O., Toderean G., TTS Framework Building Results, the 5 th IEEE<br />

Conference on Speech Technology and Human Computer Dialogue SpeD 2009, organized by the<br />

University “Politehnica” of Bucharest, the Romanian Academy, the Maritime University of<br />

Constanta, the Research Institute for Artificial Intelligence, in cooperation with EURASIP and<br />

IEEE, Constanta, Romania, June 18-21, 2009, accepted to be published<br />

[Bra83] Brandt, A.V., Detecting and estimating parameters jumps using ladder algorithms and<br />

likelihood ratio test, Proceedings of the IEEE International Conference on Acoustics, Speech and<br />

Signal Processing, ICASSP 1983, November 1983, pp. 1017–1020<br />

[Bur02] Burileanu D., Basic Research and Implementation Decisions for a Text-to-Speech<br />

Synthesis System in Romanian, International Journal of Speech Technology 2002, pp. 211-225<br />

[Bur96] Burileanu C., Oancea E., Sinteza pornind de la text pentru vocabularul limbii române -<br />

prezent şi perspective, Limbaj şi Tehnologie, Editura Academiei Române, Bucureşti, 1996<br />

[Bur97] Burileanu C. et al., Text-to-Speech Synthesis for Romanian Language, Recent<br />

Advances in Romanian LanguageTechnology, Editura Academiei Române, Bucureşti, 1997<br />

[Buz06-1] Buza O., Toderean G., Bodo A.Z., Syllable Detection for Romanian Text-to-Speech<br />

Synthesis, Proceedings of the 6 th International Conference on Communications, COMM’06,<br />

organized by the Military Technical Academy, the University “Politehnica” of Bucharest, and<br />

the IEEE Romanian Section in Bucharest, Romania, 8-10 June 2006, pp.135-138<br />

[Buz06-2] Buza O., Toderean G., Nica A., Căruntu A., Voice Signal Processing for Speech<br />

Synthesis, Proceedings of the IEEE-TTTC International Conference on Automation, Quality and<br />

Testing Robotics, AQTR 2006 (Theta 15), Cluj-Napoca, Romania, Vol. II, May 25-28 2006, pp.<br />

360-364<br />

[Buz07-1] Buza O., Toderean G., A Romanian Syllable-Based Text-to-Speech Synthesis,<br />

Proceedings of the 6 th WSEAS International Conference on Artificial Intelligence, Knowledge<br />

Engineering and Data Bases (AIKED ’07), Corfu Island, Greece, 16-19 February 2007, CD<br />

[Buz07-2] Buza O., Toderean G., Nica A., Bodo Zs., Original Method for Romanian Text-to-<br />

Speech Synthesis Based on Syllable Concatenation, published in the volume “Advances in<br />

Spoken Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by<br />

the Publishing House of the Romanian Academy, composed of the Proceedings of the 4 th<br />

Conference on Speech Technology and Human Computer Dialogue SpeD 2007, organized by the<br />

Romanian Academy, the University “Politehnica” of Bucharest, and the Technical University of<br />

Iassy, Iassy, Romania, May 10-12 2007, pp. 109-118<br />

[Buz07-3] Buza O., Toderean G., About Construction of a Syllable-Based TTS System, WSEAS<br />

TRANSACTIONS on COMMUNICATIONS, Issue 5, Volume 6, May 2007, ISSN 1109-2742,<br />

2007<br />

[Buz08-1] Buza O., Toderean G., Domokos J., Bodo A. Zs., Voice Synthesis Application based<br />

on Syllable Concatenation, Proceedings of the IEEE International Conference on Automation,


278<br />

Bibliografie<br />

Quality and Testing, Robotics AQTR 2008 - THETA 16 th edition, Cluj-Napoca, Romania, ISBN<br />

978-1-4244-2576-1,Vol. II, May 22-25, 2008<br />

[Buz08-2] Buza O., Toderean G., Metode de Sinteză din Text a Vorbirii pentru Limba Română,<br />

Lucrările celei de-a II-a Conferinţe Internaţionale de Telecomunicaţii, Electronică şi Informatică<br />

ICTEI 2008, Chişinău, Republica Moldova, Vol.1, 15-18 Mai 2008, pp. 209-214<br />

[Buz09-1] Buza O., Toderean G., Domokos J., Bodo A. Z., Building a Text to Speech System for<br />

Romanian through Concatenation, The 5 th IEEE Conference on Speech Technology and Human<br />

Computer Dialogue SpeD 2009, organized by the University “Politehnica” of Bucharest, the<br />

Romanian Academy, the Research Institute for Artificial Intelligence, in cooperation with<br />

EURASIP and IEEE, Constanta, Romania, June 18-21, 2009, accepted to be published<br />

[Buz09-2] Buza O., Toderean G., Domokos J., Bodo A. Zs., Construction of a Syllable-Based<br />

Text-To-Speech System for Romanian, MEMORIILE SECŢIILOR ŞTIINŢIFICE / MEMOIRS<br />

OF THE SCIENTIFIC SECTIONS, Romanian Academy Iassy Branch, Publishing House of the<br />

Romanian Academy, ISSN 1224-1407, ISBN 978-973-27-1551-2, Series IV, Tome XXXII, 2009<br />

[Car06] Căruntu A., Nica A., Toderean G., Puşchiţă E., Buza O., An Improved Method for<br />

Automatic Classification of Speech, Proceedings of the IEEE-TTTC International Conference on<br />

Automation, Quality and Testing Robotics, AQTR 2006 (Theta 15), Cluj-Napoca, Romania, Vol.<br />

I, May 25-28 2006<br />

[Chi94] Childers D. G., Hu H. T., Speech Synthesis by glottal excited linear prediction, Journal<br />

of the Acoustical Society of America, 1994<br />

[Chi00] Childers D. G., Speech Processing and Synthesis Toolboxes, John Wiley & Sons, Inc.,<br />

New York NY, 2000<br />

[Cio09] Ciobanu A., Negrescu C., Burileanu D., Stanomir D., Time-Frequency Processing of<br />

Partials for High-Quality Speech Synthesis, published in the volume „From Speech Processing<br />

to Spoken Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by<br />

the Publishing House of the Romanian Academy, composed of the Proceedings of the 5 th IEEE<br />

Conference on Speech Technology and Human Computer Dialogue, SpeD 2009, organized by<br />

the University “Politehnica” of Bucharest, the Romanian Academy, the Maritime University of<br />

Constanta, the Research Institute for Artificial Intelligence, in cooperation with EURASIP and<br />

IEEE, Constanta, Romania, June 18-21, 2009, pp. 67-75<br />

[Con94] Constantinescu-Dobridor G., Sintaxa limbii române, Editura Ştiinţifică, Bucureşti, 1994<br />

[Das01] Dascălu-Jinga L., Melodia vorbirii în limba română, Academia Română, Univers<br />

Enciclopedic, Bucureşti, 2001<br />

[Dia09] Diaconescu Ş. et al., General System for Normal and Phonetic Inflection, published in<br />

the volume „From Speech Processing to Spoken Language Technology”, coordinated by<br />

Burileanu C. and Teodorescu H.-N., edited by the Publishing House of the Romanian Academy,<br />

composed of the Proceedings of the 5 th IEEE Conference on Speech Technology and Human<br />

Computer Dialogue, SpeD 2009, organized by the University “Politehnica” of Bucharest, the<br />

Romanian Academy, the Maritime University of Constanta, the Research Institute for Artificial<br />

Intelligence, in cooperation with EURASIP and IEEE, Constanta, Romania, June 18-21, 2009,<br />

pp.149-160


279<br />

Bibliografie<br />

[Din04] Dinu L. P., Despărţirea automată în silabe a cuvintelor din limba română. Aplicaţii în<br />

construcţia bazei de date a silabelor limbii române, Raport de cercetare, cod AT217/2004,<br />

http://thor.info.uaic.ro/~fliacob/An1/2007-2008/Utilitati/U11/Despre entropie/Analiza silabelor<br />

din limba romana.<strong>pdf</strong>, 2004<br />

[Dom08] Domokos J., Toderean G., Buza O., Statistical Language Modeling on Susane Corpus,<br />

The 7 th International Conference - COMMUNICATIONS 2008, organized by the Military<br />

Technical Academy, the University “Politehnica” of Bucharest, the “Electronica 2000”<br />

Foundation, and the IEEE Romanian Section in Bucharest, Romania, June 5-7, 2008, pp.69-72<br />

[Dom09] Domokos J., Toderean G., Buza O., Text Conditioning and Statistical Language<br />

Modeling for Romanian Language, published in the volume „From Speech Processing to Spoken<br />

Language Technology”, coordinated by Burileanu C. and Teodorescu H. N., edited by the<br />

Publishing House of the Romanian Academy, composed of the Proceedings of the 5 th IEEE<br />

Conference on Speech Technology and Human Computer Dialogue, SpeD 2009, organized by<br />

the University “Politehnica” of Bucharest, the Romanian Academy, the Maritime University of<br />

Constanta, the Research Institute for Artificial Intelligence, in cooperation with EURASIP and<br />

IEEE, Constanta, Romania, June 18-21, 2009, pp.161-168<br />

[Dut93-1] Dutoit T., High Quality Text-To-Speech Synthesis of the French Language, Faculté<br />

Polytechnique de Mons, TCTS Lab, Teză de <strong>doctorat</strong>, 1993<br />

[Dut93-2] Dutoit T., Leich H., MBR-PSOLA: Text-to-speech synthesis based on an MBE resynthesis<br />

of the segments database, Speech Communication, Vol. 13 , Issue 3-4, ISSN: 0167-<br />

6393, pp. 435 – 440, December 1993<br />

[Dut04] Dutoit T., High-quality text-to-speech synthesis: an overview, http://tcts.<br />

fpms.ac.be/synthesis/introtts.html, 2004<br />

[Edg96] Edgington M., Lowry A., LP_PSOLA: Residual-Based Speech Modification Algorithms<br />

for Text-to-Speech Synthesis, The 4 th International Conference on Spoken Language Processing<br />

ICSLP’96, 1996<br />

[Esp86] Espy-Wilson C., A Phonetically Based Semivowel Recognition System, Proceedings of<br />

the IEEE ICASSP, Tokyo, Japan, pp. 2775-2778, April 1986<br />

[Fan60] Fant, G., Acoustic theory of speech production, 'sGravenhage, Mouton, 1960<br />

[Feh93] Feher, K., Comunicaţii digitale avansate, Editura <strong>Tehnică</strong> Bucureşti, 1993<br />

[Fer97] Ferencz A., Contribuţii la dezvoltarea sintezei text-vorbire pentru limba română, Teză<br />

de <strong>doctorat</strong>, UTCN Cluj-Napoca, 1997<br />

[Fre05] Free Software Foundation, Flex - a scanner generator, http://www.gnu.org<br />

/software/flex/manual, October 2005<br />

[Fur01] Furui S., Digital Speech Processing, Synthesis, and Recognition, CRC Publisher, Second<br />

edition, 2001<br />

[Gal02] Gâlmeanu T., Bazele procesării şi transmiterii semnalelor, Ed. UTCN, 2002<br />

[Gav00] Gavat I., et al., Elemente de analiză, sinteză şi recunoaşterea vorbirii, Ed. Printech,<br />

Bucureşti, 2000<br />

[Giu03] Giurgiu M., Compresia datelor audio în aplicaţii multimedia, Ed. Risoprint, Cluj-<br />

Napoca, 2003


280<br />

Bibliografie<br />

[Giu06] Giurgiu M., Peev L., Sinteza din text a semnalului vocal, Vol. I. Modelare Acustică şi<br />

Fonologică, Ed. Risoprint, Cluj-Napoca, 2006<br />

[Gla86] Glass, J. R., Zue V., Signal Representation for Acoustic Segmentation, Proceedings of<br />

First Australian Conference on Speech Science and Technology, pp. 124-129, November 1986<br />

[Gor83] Gordos G., Takacs Gy., Digitális beszédfeldolgozás (Prelucrarea digitală a vorbirii) ,<br />

Editura <strong>Tehnică</strong>, Budapesta, 1983<br />

[Gra08] * * * Gramatica limbii române, ediţie revizuită în 2 volume, elaborată sub egida<br />

Institutului de Lingvistică "Iorgu Iordan - Al. Rosetti" din Bucureşti al Academiei Române,<br />

Editura Academiei Române, 2008<br />

[Har90] T’ Hart, Collier, Cohen, A Perceptual Study Of Intonation, Cambridge University Press,<br />

1990<br />

[Har01] Harma A., Linear predictive coding with modified filter structures, IEEE Transactioons<br />

on Speech Audio Processing, 9(8), November 2001, pp.769–777<br />

[Her90] Hermansky, H., Perceptual linear predictive (PLP) analysis for speech, The Journal of<br />

The Acoustical Society of America, Vol. 87, April 1990, pp.1738-1752<br />

[Hir98] Hirst D., di Cristo A., Intonation Systems, a Survey of Twenty Languages, Cambridge<br />

University Press, 1998<br />

[Hol01] Holmes J., Holmes W., Speech Synthesis and Recognition, 2nd Edition, Taylor &<br />

Francis, London, 2001<br />

[Hor00] Horne M., Prosody: Theory And Experiment, Kluwer Academic Publishers, 2000<br />

[Hu93] Hu H.T., An improved source model for a linear prediction speech synthesizer,<br />

Publisher: University of Florida Gainesville, FL, USA, 1993<br />

[Hua01] Huang, Acero, Spoken Language Processing, Prentice Hall Ptr., 2001<br />

[Hun96] Hunt A., Black A., Unit selection in a concatenative speech synthesis system using a<br />

large speech database, Proceedings of ICASSP ’96, Atlanta, GA, May 1996, pp. 373–376<br />

[Int00] * * * International Journal Of Speech Technology IJST, Vol. 3, No. 3/4, Kluver<br />

Academic Publishers, 2000<br />

[Jar05] Jarifi, S., Pastor, D., Rosec, O., Brandt’s GLR method & refined HMM segmentation for<br />

TTS synthesis application, Proceedings of the 13 th European Signal Processing Conference<br />

EUSIPCO 2005, September 2005<br />

[Jar06] Jarifi, S., Pastor, D., Rosec, O., Cooperation between global and local methods for the<br />

automatic segmentation of speech synthesis corpora, Proceedings of the 9 th International<br />

Conference on Spoken Language Processing ICSLP 2006, September 2006<br />

[Jar07] Jarifi, S., Segmentation automatique de corpus de parole continue dédiés à la synthèse<br />

vocale, Ph.D. thesis, École Nationale Supérieure Des Télécommunications de Bretagne and<br />

University of Rennes, 2007<br />

[Jar08] Jarifi S., Pastor D., Rosec O., A fusion approach for automatic speech segmentation of<br />

large corpora with application to speech synthesis, Speech Communication, ISSN 0167-6393,<br />

Vol. 50, Issue 1, January 2008, pp. 67-80<br />

[Jit09] Jitca D., Apopei V., A Prozodic Control Module for a Romanian TtS System, based on<br />

Melodic Contour Dictionaries, published in the volume „From Speech Processing to Spoken


281<br />

Bibliografie<br />

Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by the<br />

Publishing House of the Romanian Academy, composed of the Proceedings of the 5 th IEEE<br />

Conference on Speech Technology and Human Computer Dialogue, SpeD 2009, organized by<br />

the University “Politehnica” of Bucharest, the Romanian Academy, the Maritime University of<br />

Constanta, the Research Institute for Artificial Intelligence, in cooperation with EURASIP and<br />

IEEE, Constanta, Romania, June 18-21, 2009, pp. 77-85<br />

[Jos97] Josifovski L., Mihajlov D., Gorgevik D., Speech Synthesizer Based on Time Domain<br />

Syllable Concatenation, Proceedings SPECOM’97, Cluj-Napoca, 1997, pp. 165-170.<br />

[Jur00] Juravski D., Speech and Language Processing: An Introduction to Natural Language<br />

Processing, Computational Linguistics, and Speech Recognition, Prentice Hall, San Francisco,<br />

2000<br />

[Kel02] Keller E., Bailly G., Monaghan A., Terken J., Huckvale M., Improvements in Speech<br />

Synthesis, Wiley Publisher, 2002<br />

[Kel94] Keller E., Fundamentals of Speech Synthesis and Speech Recognition, Wiley Publisher,<br />

1994<br />

[Kle95] Kleijn W.B., Paliwal K.K., Speech Coding and Synthesis, Elseviever, Netherlands, 1995<br />

[Kop97] Kopecek I., Speech Synthesis of Czech Language in Time Domain and Applications for<br />

Visually Impaired, Proceedings of 2nd SQEL Workshop, Pilsen, 1997, pp. 141- 145.<br />

[Kov97] Kovács C., Generarea bazei de date de difoneme pentru limba română utilizând o<br />

tehnică de delimitare şi decupare semiautomată, Disertaţie, UTCN, 1997<br />

[Kri97] Krivnova O., Zinovieva N, et al, TTS Synthesis for Russian Language, Web Journal of<br />

Formal, Computational and Cognitive Linguistics, Issue 1, 1997.<br />

[Lee01] Lee M. (Bell Labs, Lucent Technologies), Perceptual Cost Functions for Unit Searching<br />

in Large Corpus-Based Concatenative Text-To-Speech, Eurospeech, 2001, pp. 2227-2230<br />

[Lew99] Lewis E., Tatham M., Word And Syllable Concatenation in Text-To-Speech Synthesis,<br />

Proceedings of the 6 th European Conference on Speech Communications and Technology,<br />

ESCA’99, September 1999, pp. 615—618<br />

[Lup04] Lupu E., Pop P., Prelucrarea numerică a semnalului vocal, Vol.1, Ed. Risoprint, Cluj-<br />

Napoca, 2004<br />

[Mat01] Mateescu A., Semnale şi sisteme- Aplicaţii în filtrarea semnalelor, Ed. Teora, Bucureşti,<br />

2001<br />

[Mat03] Matousek, J., Tihelka, D., Psutka, J., Automatic segmentation for czech concatenative<br />

speech synthesis using statistical approach with boundary-specific correction, Proceedings of<br />

the 8 th European Conference on Speech Communication and Technology, Eurospeech ‘03,<br />

September 2003, pp. 301–304<br />

[Men02] Meng, H. et. al., CU VOCAL: Corpus-based Syllable Concatenation for Chinese<br />

Speech Synthesis across Domains and Dialects, Proceedings of ICSLP’02, 2002.<br />

[Mob00] Mobius B., Corpus-based speech synthesis: methods and challenges, Arbeitspapiere<br />

des Instituts fur Maschinelle Sprachverarbeitung, Vol. 6, No. 4, 2000, pp. 87-116<br />

[Moi08] Moise A., Dan A., An Automated System for the Vocal Synthesis of Text Files in<br />

Romanian, Buletinul Universităţii Petrol-Gaze din Ploieşti, Vol LX, No. 3, 2008


282<br />

Bibliografie<br />

[Nag05] Nageshwara M. Rao, Thomas S., Nagarajan T., Murthy H.A., Text-to-speech synthesis<br />

using syllable like units, in National Conference on Communication, IIT Kharagpur, India, Jan<br />

2005, pp. 227-280.<br />

[Nav05] Nave R., The Place Theory of Pitch Perception, http://hyperphysics.phy -<br />

astr.gsu.edu/hbase/sound/souref.html, 2005<br />

[Nay07] Naylor P.A., Kounoudes A., Gudnason J., Brookes M., Estimation of Glottal Closure<br />

Instants in Voiced Speech Using the DYPSA Algorithm, IEEE Transactions on Audio, Speech,<br />

and Language Processing, Volume 15, Issue 1, Jan. 2007, pp. 34 - 43<br />

[Nic06-1] Nica A., Căruntu A., Toderean G., Buza O., Analysis and Synthesis of Vowels Using<br />

Matlab, Proceedings of the IEEE-TTTC International Conference on Automation, Quality and<br />

Testing Robotics, AQTR 2006 (Theta 15), Cluj-Napoca, Romania, Vol. II, ISBN 1-4244-0360-<br />

X, May 25-28, 2006, pp. 371-374<br />

[Nic06-2] Nica A., Căruntu A., Toderean G., Buza O., Features Extraction from Romanian<br />

Vowels Using Matlab, Buletinul Ştiintific al Universităţii “Politehnica” din Timişoara, Seria<br />

Electronică şi Telecomunicaţii (Transactions on Electronics and Communications), Tom 51(65),<br />

Fascicola 2, 2006, pp. 81-84<br />

[Ode95] Odell, J.J., The use of context in large vocabulary speech recognition, Ph.D. thesis, The<br />

University of Cambridge, 1995<br />

[Ola00] Olaszy, Németh, et al., Profivox – A Hungarian Text-To-Speech System for Telecommunications<br />

Applications, International Journal of Speech Technology (Ijst), Vol. 3, No. 3/4,<br />

Kluver Academic Publishers, 2000<br />

[Pic93] Picone, J.W., Signal modeling techniques in speech recognition, Proceedings IEEE, Vol.<br />

81, September 1993, pp. 1215-1246<br />

[Pop00] Pop G.P., Toderean G., Lupu E., Sofware for speech analysis, Proceedings of the<br />

Symposium on Electronics and Telecommunications, ETc’2000, Timisoara, Romania,<br />

November 23-24, 2000, in Buletinul Ştiinţific al Universităţii ”Politehnica” Timişoara,<br />

Timişoara, Romania, vol. II, 2000, pp. 109-112<br />

[Pop01] Popescu V., Semnale, circuite şi sisteme – Teoria semnalelor, Casa Cărţii de Ştiinţă,<br />

Bucureşti, 2001<br />

[Pop07] Popescu V., Caelen J., Burileanu C., Generic Architecture for Natural Language<br />

Generation in Spoken Human-Computer Dialogue, published in the volume “Advances in<br />

Spoken Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by<br />

the Publishing House of the Romanian Academy, composed of the Proceedings of the 4 th<br />

Conference on Speech Technology and Human Computer Dialogue SpeD 2007, organized by the<br />

Romanian Academy, the University “Politehnica” of Bucharest, and the Technical University of<br />

Iasi, Iasi, Romania, May 10-12, 2007, pp. 57-72<br />

[Rad07] Radu M., Toma S., Popescu F., Aspects Regarding Synthetic Speech Quality<br />

Evaluations for Military Systems, published in the volume “Advances in Spoken Language<br />

Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by the Publishing<br />

House of the Romanian Academy, composed of the Proceedings of the 4 th Conference on Speech<br />

Technology and Human Computer Dialogue SpeD 2007, organized by the Romanian Academy,<br />

the University “Politehnica” of Bucharest, and the Technical University of Iasi, Iasi, Romania,<br />

May 10-12, 2007, pp. 99-108


283<br />

Bibliografie<br />

[Rol09] Rolingva, Dicţionarul morfologic al limbii române, http://rolingva.ro/aplicatii_<br />

dictionar.php, 2009<br />

[Sag96] Sagisaka Y., Campbell N., Higuchi N., Computing Prosody. Computational Models For<br />

Processing Spontaneous Speech, Springer, 1996<br />

[Sag99] Sagisaka Y., Rules, measures, and corpora for speech synthesis, Journal of the<br />

Acoustical Society of America, Vol. 105, Issue 2, February 1999, pp. 1029-1038<br />

[Sak03] Sakai S., Glass J., Fundamental Frequency Modeling for Corpus-Based Speech<br />

Synthesis Based on a Statistical Learning Technique, Spoken Language System Publications,<br />

2003<br />

[Sam04] Samsudin, Nur-Hana and Kong, Tang Enya, A Simple Malay Speech Synthesizer Using<br />

Syllable Concatenation Approach, MMU International Symposium on Information and<br />

Communications Technologies (M2USIC 2004), October 2004<br />

[Sch04] Schroeder M. R., Quast H., Strube H.W., Computer Speech: Recognition, Compression,<br />

Synthesis, Springer Series in Information Sciences, Springer Publisher, ISBN-10: 3540212671,<br />

2 nd edition, 2004<br />

[Sha00] O´Shaughnessy D., Speech Communications. Human and Machine, IEEE Press, 2000<br />

[Shr01] Shriver S., Toth A., A unified design for human-machine voice interaction, Conference<br />

on Human Factors in Computing Systems, Seattle, 2001<br />

[Spr98] Sproat R., Multilingual Text-To-Speech Synthesis, Kluwer Academic Publishers, 1998<br />

[Ste97] Steven W. Smith, The Scientist and Engineer's Guide to Digital Signal Processing,<br />

California Technical Publishing, 1997<br />

[Sto84] Stolojanu, G. et al., Prelucrarea numerică a semnalului vocal, Ed. Militară, Bucureşti,<br />

1984<br />

[Sun77] Sundberg, J., The Acoustics of the Singing Voice, Scientific American, March 1977<br />

[Sur07] Surmei M., Burileanu D., Negrescu C., Pîrvu R., Ungurean C., Dervis A., Text-to-<br />

Speech Engines as Telecom Service Enablers, published in the volume “Advances in Spoken<br />

Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by the<br />

Publishing House of the Romanian Academy, composed of the Proceedings of the 4 th<br />

Conference on Speech Technology and Human Computer Dialogue SpeD 2007, organized by the<br />

Romanian Academy, the University “Politehnica” of Bucharest, and the Technical University of<br />

Iasi, Iasi, Romania, May 10-12 2007, pp. 89-98<br />

[Tat05] Tatham M., Morton K., Developments in Speech Synthesis, Wiley Publisher, ISBN 978-<br />

0470855386, 2005<br />

[Tay09] Taylor P., Text-to-Speech Synthesis, Cambridge University Press, ISBN 0521899273, 1 st<br />

edition, 2009<br />

[Teo09] Teodorescu H.N., Feraru M., Zbancioc M., Assessing the Quality of Voice Synthesizers,<br />

published in the volume „From Speech Processing to Spoken Language Technology”,<br />

coordinated by Burileanu C. and Teodorescu H.-N., edited by the Publishing House of the<br />

Romanian Academy, composed of the Proceedings of the 5 th IEEE Conference on Speech<br />

Technology and Human Computer Dialogue, SpeD 2009, organized by the University<br />

“Politehnica” of Bucharest, the Romanian Academy, the Maritime University of Constanta, the


284<br />

Bibliografie<br />

Research Institute for Artificial Intelligence, in cooperation with EURASIP and IEEE,<br />

Constanta, Romania, June 18-21, 2009, pp. 53-64<br />

[Tod05] Toderean G., Căruntu A., Metode de recunoaştere a vorbirii, Editura Risoprint Cluj-<br />

Napoca, 2005<br />

[Tod08] Toderean G., Buza O., Căruntu A., Metode de Recunoaştere a Vorbirii pentru Limba<br />

Română, Lucrările celei de-a II-a Conferinţe Internaţionale de Telecomunicaţii, Electronică şi<br />

Informatică ICTEI 2008, Chişinău, Rep. Moldova, 15-18 Mai 2008, pp. 205-208<br />

[Tod09] Toderean G., Buza O., Bodo A. Zs., Metode de Sinteză a Vorbirii, Editura Risoprint<br />

Cluj-Napoca, ISBN 978-973-53-0114-9, 2009<br />

[Tok06] Tokuda K., Hidden Markov model-based speech synthesis as a tool for constructing<br />

comunicative spoken dialog systems, Journal of the Acoustical Society of America, Vol. 120,<br />

Issue 5, ISBN-13: 978-3540212676, November 2006, pp. 3006-3006<br />

[Tom09] Toma S., Oancea E., Munteanu D., Automatic Rule-Based Syllabication for Romanian,<br />

published in the volume „From Speech Processing to Spoken Language Technology”,<br />

coordinated by Burileanu C. and Teodorescu H.-N., edited by the Publishing House of the<br />

Romanian Academy, composed of the Proceedings of the 5 th IEEE Conference on Speech<br />

Technology and Human Computer Dialogue, SpeD 2009, organized by the University<br />

“Politehnica” of Bucharest, the Romanian Academy, the Maritime University of Constanta, the<br />

Research Institute for Artificial Intelligence, in cooperation with EURASIP and IEEE,<br />

Constanta, Romania, June 18-21, 2009, pp. 87-94<br />

[Ver90] Verhelst W., An Implementation of the PSOLA/KDG Waveform Synthesis Technique,<br />

IPO raport 733, 1990<br />

[Ver93] Verhelst W., Roelands M., An overlap-add technique based on waveform similiarity for<br />

high-quality time-scale modifications of speech, Proceedings of the International Conference on<br />

Acoustics, Speech, and Signal Processing, 1993<br />

[Vla97] Vlaicu A., Dobrotă V., Tehnologii Multimedia - Sisteme, reţele şi aplicaţii, Editura<br />

UTCN, Cluj-Napoca, 1997<br />

[Wan04] Wang L., Zhao Y., Chu M., Zhou J., Cao Z., Refining segmental boundaries for TTS<br />

Database using fine contextual-dependent boundary models, Proceedings of the IEEE<br />

International Conference on Acoustics, Speech and Signal Processing ICASSP‘04, Vol. I, May<br />

2004, pp. 641–644<br />

[Web02] Andrew R. Webb, Statistical Pattern Recognition, Second Edition, ISBN 0-470-84513-<br />

9 (Cloth), 0-470-84514-7 (Paper), John Wiley and Sons Ltd., 2002<br />

[Wie49] Wiener N., Extrapolation, Interpolation and Smoothing of Stationary Time Series with<br />

Engineering Applications, Technology Press and John Wiley & Sons, Inc., New York, 1949.<br />

[You02] Young S., Evermann G., Hain T., Kershaw D., Moore G., Odell J., The HTK Book for<br />

HTK v3.2.1., 2002


Anexa 1. Notaţia Backus-Naur Form şi gramatica LEX<br />

Gramatica folosită în cadrul proiectării analizoarelor generate de LEX utilizează<br />

următoarele simboluri şi secvenţe speciale de caractere (notaţie Backus-Naur Form):<br />

1. Un grup de caractere între paranteze drepte [ ] - specifică orice caracter cuprins în grup<br />

Exemplu: [abc] - specifică regăsirea de la intrare a unui caracter ce poate fi doar ‘a’, ‘b’ sau<br />

‘c’<br />

2. Un grup de caractere între paranteze simple ( ) - specifică grupul ca atare<br />

Exemplu: (abc) - specifică regăsirea de la intrare a grupului ‘abc’ , adică a celor trei<br />

caractere, unul după altul<br />

3. Un grup de caractere între acolade { } - specifică un macro<br />

Exemplu: {CONS} - specifică expandarea macro-ului CONS, adică definiţia pentru o<br />

consoană<br />

4. Caracterul | semnifică alegerea între două opţiuni :<br />

Exemplu: (ab|cd) - specifică regăsirea de la intrare a două caractere ce pot fi ‘ab’ sau ‘cd’<br />

5. Caracterul \ permite specificarea caracterelor speciale<br />

6. Caracterul * înseamnă zero sau mai multe apariţii ale unei litere sau grup de litere<br />

Exemplu: {VOC}* - specifică regăsirea la intrare a zero, una, două sau mai multe vocale<br />

7. Caracterul + înseamnă una sau mai multe apariţii ale unei litere sau grup de litere<br />

Exemplu: {VOC}+ - specifică regăsirea la intrare a una, două sau mai multe vocale<br />

8. Caracterul ? înseamnă zero sau cel mult o apariţie a unei litere sau grup de litere<br />

Exemplu: a? - specifică regăsirea la intrare a literei ‘a’, cel mult o singură apariţie<br />

9. Caracterul / semnifică contextul dreapta al expresiei curente<br />

Exemplu: {CONS}+/{SEP} specifică regăsirea unui grup de consoane urmat de un<br />

separator<br />

10. Macro-ul REJECT revocă intrarea curentă, determinând analizorul să meargă la potrivirea<br />

următoare.<br />

Datorită faptului că gramatica specifică mai multe reguli pentru regăsirea caracterelor de la<br />

intrare, potrivirea se face în felul următor: se parcurge setul de reguli şi se caută potrivirea cea<br />

mai lungă de la intrare (se urmăreşte potrivirea unui număr maxim de caractere). Dacă există<br />

două sau mai multe reguli care se pot aplica pentru acelaşi set de caractere, se alege prima regulă<br />

în ordinea de apariţie.<br />

285


Anexa 2. Silabele din setul S2 după frecvenţa de apariţie<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

1 de 21289 5.308845<br />

2 te 18624 4.644273<br />

3 în 16678 4.158999<br />

4 re 16111 4.017606<br />

5 le 12698 3.166505<br />

6 ca 10845 2.704421<br />

7 şi 10119 2.523378<br />

8 se 9084 2.26528<br />

9 ce 9033 2.252562<br />

10 ta 8476 2.113663<br />

11 cã 8387 2.091469<br />

12 ri 7669 1.912421<br />

13 ne 7588 1.892222<br />

14 tã 7358 1.834867<br />

15 cu 7245 1.806688<br />

16 sã 6477 1.615172<br />

17 nu 6186 1.542605<br />

18 pe 6006 1.497718<br />

19 ţi 5779 1.441111<br />

20 la 5739 1.431136<br />

21 ti 5640 1.406449<br />

22 na 5387 1.343358<br />

23 ni 5336 1.33064<br />

24 ma 4976 1.240867<br />

25 li 4812 1.19997<br />

26 ra 4753 1.185257<br />

27 fi 4498 1.121668<br />

28 me 4482 1.117678<br />

29 ci 4305 1.073539<br />

30 to 4126 1.028902<br />

31 tu 3981 0.992743<br />

32 in 3978 0.991995<br />

33 mi 3957 0.986758<br />

34 di 3805 0.948854<br />

35 pu 3709 0.924915<br />

36 rã 3568 0.889753<br />

37 va 3334 0.831401<br />

38 co 3213 0.801227<br />

39 si 3211 0.800728<br />

40 da 3110 0.775542<br />

41 un 2999 0.747862<br />

286<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

42 du 2974 0.741627<br />

43 pã 2883 0.718935<br />

44 su 2629 0.655595<br />

45 vi 2560 0.638388<br />

46 bi 2496 0.622428<br />

47 nã 2476 0.617441<br />

48 lu 2415 0.602229<br />

49 mã 2362 0.589013<br />

50 ve 2267 0.565323<br />

51 po 2212 0.551607<br />

52 es 2209 0.550859<br />

53 al 2187 0.545373<br />

54 pa 2158 0.538141<br />

55 bu 2122 0.529164<br />

56 sa 1997 0.497993<br />

57 fa 1982 0.494252<br />

58 zi 1957 0.488018<br />

59 lã 1778 0.44338<br />

60 lo 1752 0.436897<br />

61 ie 1696 0.422932<br />

62 zã 1664 0.414952<br />

63 vã 1664 0.414952<br />

64 ge 1537 0.383282<br />

65 oa 1531 0.381786<br />

66 fe 1524 0.38004<br />

67 ţã 1499 0.373806<br />

68 do 1488 0.371063<br />

69 so 1483 0.369816<br />

70 ei 1468 0.366076<br />

71 ţa 1424 0.355103<br />

72 no 1417 0.353358<br />

73 mo 1402 0.349617<br />

74 au 1399 0.348869<br />

75 bã 1375 0.342884<br />

76 ar 1349 0.336401<br />

77 gã 1348 0.336151<br />

78 ia 1337 0.333408<br />

79 fã 1332 0.332161<br />

80 za 1302 0.32468<br />

81 ţe 1295 0.322935<br />

82 gu 1266 0.315703


Anexa 2. Silabele din setul S2 după frecvenţa de apariţie<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

83 mu 1194 0.297748<br />

84 ze 1192 0.297249<br />

85 ga 1179 0.294008<br />

86 gi 1171 0.292013<br />

87 ex 1159 0.28902<br />

88 ba 1153 0.287524<br />

89 ru 1143 0.28503<br />

90 pi 1066 0.265829<br />

91 ea 1041 0.259595<br />

92 dã 1030 0.256851<br />

93 vo 1001 0.24962<br />

94 ur 988 0.246378<br />

95 ro 917 0.228673<br />

96 îm 893 0.222688<br />

97 şa 815 0.203237<br />

98 im 757 0.188773<br />

99 or 715 0.1783<br />

100 el 705 0.175806<br />

101 ac 703 0.175307<br />

102 as 690 0.172066<br />

103 ju 656 0.163587<br />

104 be 636 0.1586<br />

105 am 632 0.157602<br />

106 fu 613 0.152864<br />

107 en 606 0.151118<br />

108 an 582 0.145134<br />

109 fo 570 0.142141<br />

110 pî 511 0.127428<br />

111 îi 494 0.123189<br />

112 mî 483 0.120446<br />

113 ul 473 0.117952<br />

114 bo 421 0.104985<br />

115 îl 400 0.099748<br />

116 at 391 0.097504<br />

117 şe 390 0.097254<br />

118 uã 385 0.096008<br />

119 ai 377 0.094013<br />

120 zu 354 0.088277<br />

121 cî 346 0.086282<br />

122 eu 323 0.080547<br />

123 ţu 319 0.079549<br />

287<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

124 go 313 0.078053<br />

125 ob 308 0.076806<br />

126 ui 294 0.073315<br />

127 şu 282 0.070322<br />

128 it 273 0.068078<br />

129 iu 268 0.066831<br />

130 jo 266 0.066333<br />

131 ho 263 0.065584<br />

132 aş 261 0.065086<br />

133 rî 260 0.064836<br />

134 ua 260 0.064836<br />

135 hi 253 0.063091<br />

136 zo 240 0.059849<br />

137 ja 228 0.056856<br />

138 je 211 0.052617<br />

139 xi 176 0.043889<br />

140 is 172 0.042892<br />

141 tî 156 0.038902<br />

142 io 154 0.038403<br />

143 ad 153 0.038154<br />

144 xe 149 0.037156<br />

145 ha 142 0.035411<br />

146 on 133 0.033166<br />

147 ii 132 0.032917<br />

148 os 129 0.032169<br />

149 ab 126 0.031421<br />

150 om 124 0.030922<br />

151 um 122 0.030423<br />

152 iz 119 0.029675<br />

153 of 112 0.027929<br />

154 ji 110 0.027431<br />

155 şã 108 0.026932<br />

156 vî 99 0.024688<br />

157 şo 97 0.024198<br />

158 vu 93 0.0232<br />

159 xa 86 0.021454<br />

160 ut 74 0.01846<br />

161 er 71 0.017712<br />

162 jã 69 0.017213<br />

163 us 66 0.016465<br />

164 zî 64 0.015966


Anexa 2. Silabele din setul S2 după frecvenţa de apariţie<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

165 gî 55 0.013721<br />

166 hu 41 0.010228<br />

167 op 41 0.010228<br />

168 uş 40 0.009979<br />

169 ãs 32 0.007983<br />

170 et 30 0.007484<br />

171 oc 26 0.006486<br />

172 ţî 24 0.005987<br />

173 he 24 0.005987<br />

174 ki 24 0.005987<br />

175 ud 22 0.005488<br />

176 ot 17 0.004241<br />

177 ou 17 0.004241<br />

178 em 16 0.003991<br />

179 oi 14 0.003492<br />

180 id 14 0.003492<br />

181 il 14 0.003492<br />

182 eş 13 0.003243<br />

183 hã 13 0.003243<br />

288<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

184 ez 11 0.002744<br />

185 bî 10 0.002495<br />

186 od 10 0.002495<br />

187 iv 9 0.002245<br />

188 ir 8 0.001996<br />

189 ţo 8 0.001996<br />

190 fî 7 0.001746<br />

191 ol 7 0.001746<br />

192 uz 5 0.001247<br />

193 ic 5 0.001247<br />

194 lî 5 0.001247<br />

195 ev 4 0.000998<br />

196 ah 4 0.000998<br />

197 oh 4 0.000998<br />

198 dî 3 0.000748<br />

199 if 2 0.000499<br />

200 af 2 0.000499<br />

201 oz 1 0.000249<br />

202 ih 1 0.000249


Anexa 3. Silabe din setul S3 după frecvenţa de apariţie (extras)<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

1 lor 4813 2.665035<br />

2 lui 4567 2.528821<br />

3 rea 4187 2.318409<br />

4 con 3953 2.188839<br />

5 mai 3911 2.165583<br />

6 tre 3517 1.947419<br />

7 din 3427 1.897585<br />

8 tru 2833 1.568677<br />

9 tul 2807 1.554281<br />

10 pre 2675 1.48119<br />

11 pro 2447 1.354943<br />

12 pen 2415 1.337224<br />

13 tea 2256 1.249183<br />

14 rii 1958 1.084176<br />

15 pri 1845 1.021606<br />

16 ţii 1647 0.91197<br />

17 men 1528 0.846078<br />

18 rul 1517 0.839987<br />

19 toa 1515 0.83888<br />

20 sau 1511 0.836665<br />

21 cum 1451 0.803442<br />

22 ces 1360 0.753054<br />

23 ter 1275 0.705988<br />

24 des 1273 0.70488<br />

25 mul 1258 0.696575<br />

26 nea 1232 0.682178<br />

27 tor 1147 0.635112<br />

28 cît 1135 0.628468<br />

29 por 1119 0.619608<br />

30 dar 1092 0.604658<br />

31 par 1085 0.600782<br />

32 nii 976 0.540427<br />

33 cul 956 0.529352<br />

34 bli 912 0.504989<br />

35 vor 911 0.504435<br />

36 poa 910 0.503882<br />

37 tri 879 0.486716<br />

38 for 863 0.477857<br />

39 per 850 0.470659<br />

40 nul 814 0.450725<br />

41 cre 811 0.449064<br />

289<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

42 sta 788 0.436328<br />

43 tra 780 0.431898<br />

44 cea 778 0.430791<br />

45 ori 769 0.425808<br />

46 lul 726 0.401998<br />

47 fel 720 0.398676<br />

48 com 711 0.393692<br />

49 iar 695 0.384833<br />

50 chi 664 0.367667<br />

51 cat 663 0.367114<br />

52 tot 661 0.366006<br />

53 ten 625 0.346072<br />

54 trã 623 0.344965<br />

55 nor 623 0.344965<br />

56 cla 620 0.343304<br />

57 tat 617 0.341643<br />

58 dis 605 0.334998<br />

59 dea 589 0.326139<br />

60 pul 585 0.323924<br />

61 cel 581 0.321709<br />

62 res 576 0.31894<br />

63 pli 569 0.315064<br />

64 mea 560 0.310081<br />

65 nei 555 0.307312<br />

66 cãr 549 0.30399<br />

67 pra 548 0.303436<br />

68 cut 548 0.303436<br />

69 mãr 543 0.300668<br />

70 ver 542 0.300114<br />

71 mar 522 0.28904<br />

72 pla 519 0.287379<br />

73 rat 516 0.285717<br />

74 noi 510 0.282395<br />

75 gra 510 0.282395<br />

76 cer 497 0.275197<br />

77 cei 495 0.274089<br />

78 nui 491 0.271875<br />

79 sul 488 0.270213<br />

80 rãs 480 0.265784<br />

81 ast 480 0.265784<br />

82 îşi 472 0.261354


Anexa 3. Silabe din setul S3 după frecvenţa de apariţie (extras)<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

83 vîn 472 0.261354<br />

84 mîn 454 0.251387<br />

85 pun 443 0.245296<br />

86 gîn 440 0.243635<br />

87 ple 437 0.241974<br />

88 zul 434 0.240313<br />

89 şti 428 0.23699<br />

90 min 427 0.236437<br />

91 spe 420 0.232561<br />

92 bil 413 0.228685<br />

93 sub 408 0.225916<br />

94 sim 407 0.225362<br />

95 ciu 404 0.223701<br />

96 vin 401 0.22204<br />

97 pot 397 0.219825<br />

98 cep 395 0.218718<br />

99 vea 394 0.218164<br />

100 ser 387 0.214288<br />

101 sea 386 0.213734<br />

102 spu 386 0.213734<br />

103 cii 385 0.213181<br />

104 nit 381 0.210966<br />

105 dul 378 0.209305<br />

106 sin 371 0.205429<br />

107 mun 368 0.203767<br />

108 ţin 365 0.202106<br />

109 sis 363 0.200999<br />

110 lea 362 0.200445<br />

111 tei 361 0.199891<br />

112 poi 360 0.199338<br />

113 dat 359 0.198784<br />

114 tît 354 0.196015<br />

115 tin 353 0.195462<br />

116 tro 351 0.194354<br />

117 zen 351 0.194354<br />

118 tem 347 0.192139<br />

119 vei 342 0.189371<br />

120 fun 336 0.186049<br />

121 tiv 333 0.184387<br />

122 cri 332 0.183834<br />

123 soa 332 0.183834<br />

290<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

124 nat 332 0.183834<br />

125 loa 331 0.18328<br />

126 les 329 0.182173<br />

127 sen 329 0.182173<br />

128 ind 323 0.17885<br />

129 tic 323 0.17885<br />

130 tim 322 0.178297<br />

131 dum 321 0.177743<br />

132 zut 320 0.177189<br />

133 den 319 0.176635<br />

134 dus 316 0.174974<br />

135 cru 315 0.174421<br />

136 ţei 314 0.173867<br />

137 fec 311 0.172206<br />

138 tan 309 0.171098<br />

139 rit 308 0.170545<br />

140 pec 304 0.16833<br />

141 put 303 0.167776<br />

142 sti 300 0.166115<br />

143 niş 300 0.166115<br />

144 plã 299 0.165561<br />

145 nos 293 0.162239<br />

146 plu 293 0.162239<br />

147 rin 290 0.160578<br />

148 cio 289 0.160024<br />

149 loc 289 0.160024<br />

150 cli 288 0.15947<br />

151 pãr 288 0.15947<br />

152 sem 288 0.15947<br />

153 trî 286 0.158363<br />

154 vre 284 0.157255<br />

155 rau 284 0.157255<br />

156 che 277 0.153379<br />

157 car 276 0.152826<br />

158 jun 276 0.152826<br />

159 mer 276 0.152826<br />

160 cîn 271 0.150057<br />

161 nal 271 0.150057<br />

162 cam 271 0.150057<br />

163 vom 270 0.149503<br />

164 mic 269 0.14895


Anexa 3. Silabe din setul S3 după frecvenţa de apariţie (extras)<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

165 fap 268 0.148396<br />

166 pia 268 0.148396<br />

167 gre 264 0.146181<br />

168 cen 262 0.145074<br />

169 stã 257 0.142305<br />

170 cur 256 0.141751<br />

171 xem 256 0.141751<br />

172 nic 252 0.139536<br />

173 via 250 0.138429<br />

174 flu 248 0.137322<br />

175 pus 245 0.13566<br />

176 ang 239 0.132338<br />

177 mod 237 0.131231<br />

178 sus 237 0.131231<br />

179 mii 235 0.130123<br />

180 zis 235 0.130123<br />

181 can 227 0.125694<br />

182 ris 227 0.125694<br />

183 pie 227 0.125694<br />

184 alt 227 0.125694<br />

185 ziu 226 0.12514<br />

186 tai 226 0.12514<br />

187 gru 225 0.124586<br />

188 nis 224 0.124032<br />

189 pes 224 0.124032<br />

190 mit 222 0.122925<br />

191 tîm 221 0.122371<br />

192 man 220 0.121818<br />

193 mij 220 0.121818<br />

194 cin 219 0.121264<br />

195 zat 218 0.12071<br />

196 jul 217 0.120156<br />

197 fac 216 0.119603<br />

198 doi 210 0.11628<br />

199 ran 206 0.114065<br />

200 ves 205 0.113512<br />

201 zeu 204 0.112958<br />

202 zin 203 0.112404<br />

203 vul 200 0.110743<br />

204 fir 199 0.110189<br />

205 fru 199 0.110189<br />

291<br />

Nr.<br />

Crt.<br />

Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

206 nou 199 0.110189<br />

207 cor 197 0.109082<br />

208 sãu 197 0.109082<br />

209 gen 197 0.109082<br />

210 dez 197 0.109082<br />

211 ici 196 0.108528<br />

212 fla 195 0.107975<br />

213 ven 194 0.107421<br />

214 spi 193 0.106867<br />

215 fle 193 0.106867<br />

216 flã 193 0.106867<br />

217 tit 189 0.104652<br />

218 şit 188 0.104099<br />

219 tar 187 0.103545<br />

220 clu 187 0.103545<br />

221 ren 186 0.102991<br />

222 mis 185 0.102437<br />

223 toc 185 0.102437<br />

224 gur 184 0.101884<br />

225 dom 183 0.10133<br />

226 ani 182 0.100776<br />

227 sit 181 0.100223<br />

228 mei 181 0.100223<br />

229 rîn 181 0.100223<br />

230 sec 178 0.098561<br />

231 roa 173 0.095793<br />

232 van 173 0.095793<br />

233 lec 171 0.094685<br />

234 run 171 0.094685<br />

235 biş 170 0.094132<br />

236 cos 169 0.093578<br />

237 diu 169 0.093578<br />

238 vîr 167 0.092471<br />

239 lii 167 0.092471<br />

240 ral 167 0.092471


Anexa 4. Silabe din setul S4 după frecvenţa de apariţie (extras)<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

1 prin 1697 4.86944<br />

2 sunt 1123 3.222382<br />

3 cînd 1026 2.944046<br />

4 ceas 809 2.321377<br />

5 fost 788 2.261119<br />

6 nici 712 2.043042<br />

7 foar 508 1.457676<br />

8 mult 493 1.414634<br />

9 timp 454 1.302726<br />

10 meni 452 1.296987<br />

11 trac 451 1.294118<br />

12 cest 433 1.242468<br />

13 tori 423 1.213773<br />

14 ment 410 1.176471<br />

15 spre 402 1.153515<br />

16 noas 350 1.004304<br />

17 turi 347 0.995696<br />

18 creş 344 0.987088<br />

19 fran 313 0.898135<br />

20 spus 298 0.855093<br />

21 doar 289 0.829268<br />

22 tãţi 273 0.783357<br />

23 port 257 0.737446<br />

24 crea 252 0.723099<br />

25 pier 233 0.66858<br />

26 trei 231 0.662841<br />

27 prea 224 0.642755<br />

28 trea 211 0.605452<br />

29 scri 208 0.596844<br />

30 mari 199 0.571019<br />

31 toţi 164 0.470588<br />

32 laşi 163 0.467719<br />

33 strã 161 0.46198<br />

34 stra 161 0.46198<br />

35 curi 155 0.444763<br />

36 tînd 154 0.441894<br />

37 puns 153 0.439024<br />

38 juns 148 0.424677<br />

39 zînd 144 0.413199<br />

40 rînd 142 0.407461<br />

292<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

41 sfîr 141 0.404591<br />

42 zeci 141 0.404591<br />

43 chii 140 0.401722<br />

44 drul 139 0.398852<br />

45 ploa 135 0.387374<br />

46 gînd 132 0.378766<br />

47 stan 130 0.373027<br />

48 puri 129 0.370158<br />

49 cioa 129 0.370158<br />

50 tuşi 129 0.370158<br />

51 diat 122 0.350072<br />

52 greu 120 0.344333<br />

53 eaşi 118 0.338594<br />

54 deşi 118 0.338594<br />

55 prac 117 0.335725<br />

56 stru 115 0.329986<br />

57 stea 109 0.312769<br />

58 stri 108 0.3099<br />

59 poar 107 0.30703<br />

60 trat 106 0.304161<br />

61 mînt 103 0.295552<br />

62 teau 103 0.295552<br />

63 iesc 102 0.292683<br />

64 sesc 102 0.292683<br />

65 mici 101 0.289813<br />

66 frun 100 0.286944<br />

67 taţi 100 0.286944<br />

68 rect 99 0.284075<br />

69 floa 98 0.281205<br />

70 seam 97 0.278336<br />

71 teas 94 0.269727<br />

72 vînd 93 0.266858<br />

73 deci 91 0.261119<br />

74 resc 91 0.261119<br />

75 rent 90 0.25825<br />

76 stat 90 0.25825<br />

77 reas 89 0.25538<br />

78 fapt 88 0.252511<br />

79 plan 87 0.249641<br />

80 neas 87 0.249641


Anexa 4. Silabe din setul S4 după frecvenţa de apariţie (extras)<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

81 nînd 87 0.249641<br />

82 caţi 86 0.246772<br />

83 dent 85 0.243902<br />

84 furi 85 0.243902<br />

85 sãri 84 0.241033<br />

86 eşti 84 0.241033<br />

87 tran 83 0.238164<br />

88 duri 83 0.238164<br />

89 tici 83 0.238164<br />

90 spun 82 0.235294<br />

91 ting 81 0.232425<br />

92 tant 78 0.223816<br />

93 deri 78 0.223816<br />

94 tãri 78 0.223816<br />

95 vrea 77 0.220947<br />

96 vreo 76 0.218077<br />

97 hris 76 0.218077<br />

98 vrei 76 0.218077<br />

99 zuri 75 0.215208<br />

100 vînt 73 0.209469<br />

101 toar 73 0.209469<br />

102 bani 73 0.209469<br />

103 tesc 73 0.209469<br />

104 lori 72 0.2066<br />

105 cãri 71 0.20373<br />

106 suri 71 0.20373<br />

107 luri 70 0.200861<br />

108 grup 70 0.200861<br />

109 cret 69 0.197991<br />

110 veau 68 0.195122<br />

111 teţi 68 0.195122<br />

112 ceau 68 0.195122<br />

113 guri 67 0.192253<br />

114 nesc 67 0.192253<br />

115 tras 66 0.189383<br />

116 neau 66 0.189383<br />

117 vind 66 0.189383<br />

118 reac 66 0.189383<br />

119 sfin 66 0.189383<br />

120 voas 65 0.186514<br />

293<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

121 bãri 65 0.186514<br />

122 sfîn 64 0.183644<br />

123 trîn 64 0.183644<br />

124 poţi 63 0.180775<br />

125 scoa 63 0.180775<br />

126 cear 63 0.180775<br />

127 rãşi 63 0.180775<br />

128 chis 63 0.180775<br />

129 nent 62 0.177905<br />

130 chin 62 0.177905<br />

131 plin 62 0.177905<br />

132 trem 61 0.175036<br />

133 stîn 61 0.175036<br />

134 ochi 60 0.172166<br />

135 tãzi 60 0.172166<br />

136 cres 59 0.169297<br />

137 raţi 59 0.169297<br />

138 plîn 58 0.166428<br />

139 vezi 57 0.163558<br />

140 cãci 56 0.160689<br />

141 pres 56 0.160689<br />

142 zãri 56 0.160689<br />

143 cred 55 0.157819<br />

144 cîţi 55 0.157819<br />

145 ches 55 0.157819<br />

146 stin 54 0.15495<br />

147 preţ 54 0.15495<br />

148 ştii 54 0.15495<br />

149 nuri 53 0.15208<br />

150 deau 53 0.15208<br />

151 cani 53 0.15208<br />

152 legi 52 0.149211<br />

153 gini 51 0.146341<br />

154 veţi 51 0.146341<br />

155 scop 51 0.146341<br />

156 puşi 51 0.146341<br />

157 teri 51 0.146341<br />

158 neri 51 0.146341<br />

159 trul 50 0.143472<br />

160 plet 49 0.140603


Anexa 4. Silabe din setul S4 după frecvenţa de apariţie (extras)<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

161 drum 48 0.137733<br />

162 nind 47 0.134864<br />

163 drãz 47 0.134864<br />

164 blon 47 0.134864<br />

165 scur 47 0.134864<br />

166 naţi 47 0.134864<br />

167 fect 47 0.134864<br />

168 lung 46 0.131994<br />

169 chea 46 0.131994<br />

170 xact 45 0.129125<br />

171 buri 45 0.129125<br />

172 vrut 45 0.129125<br />

173 clar 44 0.126255<br />

174 veas 44 0.126255<br />

175 reau 44 0.126255<br />

176 blic 44 0.126255<br />

177 pros 44 0.126255<br />

178 mani 44 0.126255<br />

179 plat 43 0.123386<br />

180 bili 43 0.123386<br />

181 tent 43 0.123386<br />

182 peri 43 0.123386<br />

183 scor 43 0.123386<br />

184 sînt 43 0.123386<br />

185 tins 42 0.120516<br />

186 luni 42 0.120516<br />

187 feri 42 0.120516<br />

188 treg 42 0.120516<br />

189 scos 42 0.120516<br />

190 lalt 42 0.120516<br />

191 ţãri 42 0.120516<br />

192 sens 42 0.120516<br />

193 beas 41 0.117647<br />

194 cris 41 0.117647<br />

195 saţi 41 0.117647<br />

196 brii 40 0.114778<br />

197 soni 40 0.114778<br />

198 suşi 40 0.114778<br />

199 şcoa 40 0.114778<br />

200 zind 40 0.114778<br />

294<br />

Nr. Crt. Silabă<br />

Număr<br />

apariţii<br />

Procent<br />

201 prit 40 0.114778<br />

202 blîn 39 0.111908<br />

203 besc 39 0.111908<br />

204 ceri 38 0.109039<br />

205 siţi 37 0.106169<br />

206 semn 37 0.106169<br />

207 geau 37 0.106169<br />

208 mãri 37 0.106169<br />

209 rind 36 0.1033<br />

210 stre 35 0.10043<br />

211 ciul 35 0.10043<br />

212 muri 35 0.10043<br />

213 faci 35 0.10043<br />

214 clan 35 0.10043<br />

215 ghea 34 0.097561<br />

216 trun 34 0.097561<br />

217 mers 34 0.097561<br />

218 tini 34 0.097561<br />

219 lari 34 0.097561<br />

220 deţi 34 0.097561<br />

221 desc 34 0.097561<br />

222 cuţi 34 0.097561<br />

223 trec 34 0.097561<br />

224 grea 33 0.094692<br />

225 nalt 33 0.094692<br />

226 miţi 33 0.094692<br />

227 riţi 33 0.094692<br />

228 tors 33 0.094692<br />

229 tind 33 0.094692<br />

230 trol 33 0.094692<br />

231 buni 32 0.091822<br />

232 meas 32 0.091822<br />

233 chip 32 0.091822<br />

234 stau 32 0.091822<br />

235 tris 32 0.091822<br />

236 zaţi 32 0.091822<br />

237 spui 32 0.091822<br />

238 cesc 31 0.088953<br />

239 daţi 31 0.088953<br />

240 teni 31 0.088953


Anexa 5. Activitatea ştiinţifică a autorului<br />

Lucrări ştiinţifice comunicate sau publicate<br />

Lucrări publicate în domeniul tezei<br />

1. A. Nica, A. Căruntu, G. Toderean, O. Buza, Features Extraction from Romanian Vowels<br />

Using Matlab, Buletinul Ştiinţific al Universităţii “Politehnica” din Timişoara, Seria<br />

Electronica şi Telecomunicaţii, Transactions on Electronics and Comunications, Tom<br />

51(65), Fascicola 2, 2006, pp. 81-84<br />

2. O. Buza, G. Toderean, Syllable Detection for Romanian Text-to-Speech Synthesis,<br />

Proceedings of the 6th International Conference on Communications, Bucharest,<br />

Romania, ISBN 978-973-718-479-5, June 2006, pp.135-138<br />

3. O. Buza, G. Toderean, A. Nica, A. Căruntu, Voice Signal Processing For Speech<br />

Synthesis, 2006 IEEE-TTTC International Conference on Automation, Quality and<br />

Testing Robotics, AQTR 2006 (Theta 15), May 25 -28 2006, Cluj-Napoca, Romania,<br />

Proceedings, Tome II, ISBN: 1-4244-0360-X , 2006, pp. 360-364<br />

4. A. Căruntu, A. Nica, G. Toderean, E. Puşchiţă, O. Buza, An Improved Method for<br />

Automatic Classification of Speech, IEEE-TTTC International Conference on<br />

Automation, Quality and Testing Robotics, AQTR ‘06 (Theta 15), May 25-28 2006, Cluj-<br />

Napoca, Romania, Proceedings, Tome I, 2006<br />

5. A. Nica, A. Căruntu, G. Toderean, O. Buza, Analysis and Synthesis of Vowels Using<br />

Matlab, 2006 Proceedings of the IEEE-TTTC International Conference on Automation,<br />

Quality and Testing Robotics, AQTR 2006 (Theta 15), Cluj-Napoca, Romania, Tome II,<br />

ISBN 1-4244-0360-X, May 25-28, 2006, pp. 371-374<br />

6. A. Z. Bodo, O. Buza, G. Toderean, Acoustic Database for Romanian TTS Synthesis.<br />

Design and Realisation Results (I) , “Acta Tehnica Napocensis Electronics and<br />

Telecommunications”, Cluj-Napoca, Volume 48, Number 2/2007, pp.24-31<br />

7. A. Z. Bodo, O. Buza, G. Toderean, Realisation Results of a Speech Synthesis<br />

Development Environment, “Acta Tehnica Napocensis Electronics and<br />

Telecommunications”, Cluj-Napoca, Volume 48, Number 2/2007, pp.32-37<br />

8. O. Buza, G. Toderean, A Romanian Syllable-Based Text-to-Speech Synthesis, Proc. of<br />

the 6th WSEAS Internat. Conf. on Artificial Intelligence, Knowledge Engineering and<br />

Data Bases (AIKED ’07), Corfu Island, Greece, 16-19 February, 2007, CD<br />

9. O. Buza, G. Toderean, About Construction of a Syllable-Based TTS System, WSEAS<br />

TRANSACTIONS on COMMUNICATIONS, Issue 5, Volume 6, May 2007, ISSN<br />

1109-2742, 2007<br />

295


296<br />

Anexa 5. Activitatea ştiinţifică a autorului<br />

10. O. Buza, G. Toderean, A. Nica, Zs. Bodo, Original Method for Romanian Text-to-<br />

Speech Synthesis Based on Syllable Concatenation, published in the volume “Advances<br />

in Spoken Language Technology”, coordinated by Corneliu Burileanu and Horia-Nicolai<br />

Teodorescu, ed. by The Publishing House of the Romanian Academy, composed of the<br />

Proceedings of the 4th Conference on Speech Technology and Human Computer<br />

Dialogue “SpeD 2007”, organized by the Romanian Academy, the University<br />

“Politehnica” of Bucharest, and the Technical University of Iasi, Iasi, Romania, May 10-<br />

12, 2007, pp. 109-118<br />

11. G. Toderean, O. Buza, A. Căruntu, Metode de Recunoaştere a Vorbirii pentru Limba<br />

Română, A II-a Conferinţă Internaţională "Telecomunicaţii, Electronică şi Informatică"<br />

ICTEI 2008, Chişinău, Republica Moldova, 15-18 Mai 2008, pp. 205-208<br />

12. O. Buza, G. Toderean, Metode de Sinteză din Text a Vorbirii pentru Limba Română, A<br />

II-a Conferinţă Internaţională "Telecomunicaţii, Electronică şi Informatică" ICTEI 2008,<br />

Chişinău, Republica Moldova, 15-18 Mai 2008, pp. 209-214<br />

13. O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Voice Synthesis Application based on<br />

Syllable Concatenation, IEEE International Conference on Automation,<br />

Quality and Testing, Robotics AQTR ‘08 - THETA 16 th edition, Cluj-Napoca, Romania,<br />

May 22-25, 2008<br />

14. J. Domokos, G. Toderean, O. Buza, Statistical Language Modeling on Susane Corpus,<br />

The 7 th International Conference COMMUNICATIONS 2008, organized by the Military<br />

Technical Academy, University Politehnica of Bucharest, Electronica 2000 Foundation,<br />

and the IEEE Romanian Section in Bucharest, Romania, June 5-7, 2008, pp.69-72<br />

15. O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-<br />

To-Speech System for Romanian, MEMORIILE SECŢIILOR ŞTIINŢIFICE / MEMOIRS<br />

OF THE SCIENTIFIC SECTIONS, Romanian Academy Iassy Branch, Publishing House<br />

of the Romanian Academy, ISSN 1224-1407, ISBN 978-973-27-1551-2, Series IV, Tome<br />

XXXII, 2009<br />

16. O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Building a Text to Speech System for<br />

Romanian through Concatenation, The 5 th IEEE Conference on Speech Technology and<br />

Human Computer Dialogue SpeD 2009, organized by the University “Politehnica” of<br />

Bucharest, the Romanian Academy, the Research Institute for Artificial Intelligence, in<br />

cooperation with EURASIP and IEEE, Constanta, Romania, June 18-21, 2009, accepted<br />

to be published<br />

17. A. Zs. Bodo, O. Buza, G. Toderean, TTS Experiments: Romanian Prosody, Acta<br />

Technica Napocensis, UTCN, Volume 50, 2009, pp. 31-36<br />

18. A. Zs. Bodo, O. Buza, G. Toderean, Experiments with the prediction and generation of<br />

Romanian intonation, published in the volume „From Speech Processing to Spoken<br />

Language Technology”, coordinated by Burileanu C. and Teodorescu H.-N., edited by<br />

the Publishing House of the Romanian Academy, composed of the Proceedings of the 5 th<br />

IEEE Conference on Speech Technology and Human Computer Dialogue, SpeD 2009,<br />

organized by the University “Politehnica” of Bucharest, the Romanian Academy, the


297<br />

Anexa 5. Activitatea ştiinţifică a autorului<br />

Maritime University of Constanta, the Research Institute for Artificial Intelligence, in<br />

coop. with EURASIP and IEEE, Constanta, Romania, June 18-21, 2009, pp.103-114<br />

19. A. Zs. Bodo, O. Buza, G. Toderean, TTS Framework Building Results, the 5 th IEEE<br />

Conference on Speech Technology and Human Computer Dialogue SpeD 2009,<br />

organized by the University “Politehnica” of Bucharest, the Romanian Academy, the<br />

Maritime University of Constanta, the Research Institute for Artificial Intelligence, in<br />

cooperation with EURASIP and IEEE, Constanta, Romania, June 18-21, 2009, accepted<br />

to be published<br />

20. J. Domokos, G. Toderean, O. Buza, Text Conditioning and Statistical Language<br />

Modeling for Romanian Language, published in the volume „From Speech Processing to<br />

Spoken Language Technology”, coordinated by Burileanu C. and Teodorescu H. N.,<br />

edited by the Publishing House of the Romanian Academy, composed of the Proceedings<br />

of the 5 th IEEE Conference on Speech Technology and Human Computer Dialogue,<br />

SpeD 2009, organized by the University “Politehnica” of Bucharest, the Romanian<br />

Academy, the Maritime University of Constanta, the Research Institute for Artificial<br />

Intelligence, in cooperation with EURASIP and IEEE, Constanta, Romania, June 18-21,<br />

2009, pp.161-168<br />

Carte publicată în domeniul tezei<br />

1. G. Toderean, O. Buza, A. Zs. Bodo, Metode de Sinteză a Vorbirii, Editura Risoprint,<br />

ISBN 978-973-53-0114-9, Cluj-Napoca 2009<br />

Lucrări publicate în afara domeniului tezei<br />

1. O. Buza, O nouă variantă a metodei Hyper în recunoaşterea de forme, Simpozionul<br />

Ştiinţific al Universităţii Tehnice Cluj, Cluj-Napoca, Mai 1993<br />

2. O. Buza, M. Vaida, Multimedia Devices Used in Biomedical Applications, Simpozionul<br />

de Electronică Profesională REP '95, Bucureşti, Noiembrie 1995<br />

3. M. Vaida, O Buza, s.a. (cooperare ), Aplicaţii ale informaticii in imagistica medicală,<br />

Editura Tipocolor, Cluj-Napoca, 1995<br />

4. O. Buza, M. Vaida, Video Inspection in Industrial and Medical Applications International<br />

Conference on Automation and Quality Control, Cluj-Napoca, Mai 1998<br />

5. M. Vaida, A. Suciu, O. Buza, T. Moldovan, Image Pattern Recognition Application in<br />

Microscopic Medical Image Analysis using Multimedia Boards, International Conference<br />

on Information Technology Interfaces ITI '99, Zagreb, Croatia, Mai 1999<br />

6. M. Vaida, O. Buza, P. Pop, L. Miclea, Medical Image Processing for Developing<br />

Multimedia Atlases Q&A-R 2000 Theta 12, International Conference on Quality Control,<br />

Automation and Robotics, Cluj-Napoca, Romania, 19-20 May 2000


298<br />

Anexa 5. Activitatea ştiinţifică a autorului<br />

7. O. Buza, M. Vaida, R. Ciupa, Developing Multimedia Interactive Internet-Intranet<br />

Documents using Medical Image Processing, Second European Symposium on<br />

Biomedical Engineering, University of Patras, Greece, 5-8 October 2000, pp. 5-10<br />

8. M. Vaida, C.D.Olinici, O. Buza, Web Design facilities for Medical Image Processing<br />

dedicated software, Revista “Clujul Medical”, Vol. LXXIII, Nr. 3, 2000, pp. 478-485<br />

2001<br />

9. M. Vaida, C.D.Olinici, O. Buza, Image Processing Software Development for Distributed<br />

Education The forth edition of the International Symposium "The Role of Academic<br />

Education and Research in the Development of Information Society", "Politehnica"<br />

University of Bucharest, 18-19 May 2000<br />

10. M. Vaida, O. Buza, Interactive Internet-Intranet Documents with Image Processing<br />

Facilities, rev. “Acta Tehnica Napocensis Electronics and Telecommunications”, Cluj-<br />

Napoca, Vol. 42, No.2, 2001<br />

11. O. Buza, M. Vaida, K. Pusztai, Streaming Audio-Video Content Over Internet With a<br />

Multimedia Presentation Generator, the 4 th IASTED International Conference on Web-<br />

Based Education, WBE2005, February 21-23, 2005, Grindelwald, Switzerland, ISBN: 0-<br />

88986-482-9, ISSN: 1482-7905, 2005, pp. 1-6<br />

12. O. Buza, K. Pusztai, M. Vaida, Multimedia Presentations Generator for Streaming<br />

Audio-Video Content Over Internet, Acta Tehnica Napocensis Electronics and<br />

Telecommunications, Cluj-Napoca, Vol. 46, No.1, 2005, pp. 8-15<br />

13. P. Mitrea, O. Buza, D. Mitrea, Multimedia Technology Involved in E-Learning Platform<br />

Generators, International Symposium on System Theory, Automation, Robotics,<br />

Computers, Informatics, Electronics and Instrumentation SINTES 20-22 October 2005,<br />

Craiova, Romania, ISBN 978-973-742-839-4, 978-973-742-841-7, 2005, pp. 635-638<br />

14. G. Toderean, A. Căruntu, O. Buza, A. Nica, Sisteme cu Microprocesoare – Îndrumător<br />

de laborator, Ed. Risoprint Cluj-Napoca, ISBN 978-973-751-466-0, 2007<br />

15. P. Mitrea, O. Buza, D. Mitrea, MLG- MultiMedia On-Line Lesson Generator,<br />

International Conference “Assistive Technology From Adapted Equipment To Inclusive<br />

Environment” AAATE 2009, published in the volume: Assistive Technology Research<br />

Series, Vol. 25, IOS Press Amsterdam, ISSN 1383-813X, 2009, pp. 607-612.


Programe de cercetare<br />

299<br />

Anexa 5. Activitatea ştiinţifică a autorului<br />

În perioada 1993-2008, autorul a participat ca proiectant, respectiv conducător de proiect,<br />

la realizarea a 8 proiecte de cercetare, după cum urmează :<br />

1993-1995: “Sistem computerizat pentru analiza microbiologică, fizică, biochimică a<br />

resurselor alimentare şi produselor industrializate”<br />

Sistemul este capabil sa detecteze gradul de infestare a produselor cu microorganisme de tip comun;<br />

este bazat pe viziune artificială şi recunoaşterea formelor.<br />

1995-1996: “Sistem pentru analiză citometrică automată”<br />

Proiectul este folosit în investigarea automată a imaginilor în morfopatologie, bazat pe viziune<br />

artificială şi procesarea imaginilor.<br />

1996: “Studiu privind realizarea unui sistem de supraveghere automată utilizând<br />

metode specifice analizei de imagini”<br />

Pe baza acestui studiu s-a realizat un sistem capabil să detecteze mişcările dintr-o arie fixă;<br />

sistemul captează semnal video din mai multe surse şi realizează analiza automată a acestuia.<br />

1997-1998: “Sistem multimedia destinat analizei medicale inteligente în vederea<br />

realizării de atlase medicale”<br />

Sistemul este proiectat pentru asistarea cadrelor medicale atât în prelucrarea informaţiilor din<br />

imaginile medicale, cât şi în obţinerea de atlase multimedia.<br />

2001-2002: “Sistem pentru detecţia tumorilor ovariene din imagini medicale”<br />

A fost realizat un sistem semi-automat pentru asistarea medicului morfopatolog în depistarea<br />

tumorilor ovariene pe baza testului Papa-Nicolau.<br />

2002-2003: “Generator de prezentări audio-video sincronizate”<br />

În cadrul acestei teme de cercetare a fost proiectată o aplicaţie multimedia care răspunde<br />

cerinţelor pieţii internaţionale în domeniul prezentării informaţiei şi distribuţiei de date audio şi<br />

video prin protocol TCP/IP.<br />

2003-2005: „Sistem integrat pentru învăţământul la distanţă”<br />

A fost realizat un sistem pentru generarea de lecţii interactive multimedia pentru învăţământul la<br />

distanţă.<br />

2006-2008: „Sistem interactiv pe bază de voce destinat persoanelor nevăzătoare<br />

În cadrul acestui proiect s-a construit o bibliotecă electronică specială pentru deficienţi de<br />

vedere, care oferă posibilitatea rostirii automate a textului prin intermediul unui sistem de sinteză<br />

vocală. Sinteza textului s-a realizat prin metoda concatenării de unităţi lexicale, ce favorizează o<br />

rostire apropiată de cea naturală.


Anexa 6. Lucrări ştiinţifice ale autorului prezentate în extenso<br />

1. O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-<br />

To-Speech System for Romanian, MEMORIILE SECŢIILOR ŞTIINŢIFICE / MEMOIRS OF<br />

THE SCIENTIFIC SECTIONS, Romanian Academy Iassy Branch, Publishing House of the<br />

Romanian Academy, ISSN 1224-1407, ISBN 978-973-27-1551-2, Series IV, Tome XXXII, 2009<br />

300


CONSTRUCTION OF A SYLLABLE-BASED TEXT-TO-SPEECH SYSTEM<br />

FOR ROMANIAN<br />

OVIDIU BUZA, GAVRIL TODEREAN, JOSZEF DOMOKOS and ARPAD ZSOLT BODO<br />

We present in this article our experience in building a text-to-speech system for Romanian through<br />

concatenation method. Main stages of this work were following: voice signal analysis; voice signal<br />

segmentation; vocal database construction; text analysis: pre-processing, unit detection, prosody retrieval; unit<br />

matching; unit concatenation and speech synthesis. In our approach we consider word syllables as basic units<br />

and stress indicating intrasegmental prosody. A special characteristic of current approach is rule-based<br />

processing of both speech signal analyse and text analyse stages.<br />

Keywords: text-to-speech, syllable approach, rule-based processing.<br />

1. INTRODUCTION<br />

In the last decades many methods have been developed for generating acoustical<br />

parameters requested for a high quality voice synthesis. Researches proved that among methods<br />

with best results are those methods which store the real acoustic waveform uttered by a human<br />

speaker. These methods achieve voice synthesis through concatenation of acoustic units, so they<br />

are called concatenation methods ([9],[14]).<br />

The authors have worked on this line of attaining a voice synthesis complying with quality<br />

parameters of natural, human speech. Our researches led into projecting a voice synthesis method<br />

specifically adapted to Romanian language, and also into a working approach for constructing an<br />

automated speech synthesis system.<br />

Using syllables as basic units, the projected method is integrated into high quality methods<br />

category, based on concatenation. We propose here an original approach based on rules that apply<br />

in the most important stages of projecting a speech synthesis system: construction of the vocal<br />

database and text processing stage.<br />

In building our text-to-speech system, we have followed two directions (figure 1) :<br />

A. Vocal database construction flow (off -line process), including: voice signal analysis,<br />

speech segmentation and vocal database construction;<br />

B. Text to voice processing flow (on -line process), including: text pre-processing, unit<br />

detection, prosody prediction, unit matching, unit concatenation and voice synthesis.<br />

301


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Figure 1. Main stages in building LIGHTVOX text-to-speech system<br />

In the first flow, in voice signal analysis stage, we have extracted main parameters of pre-<br />

recorded speech, working in time domain of analysis. These parameters, such as: amplitude,<br />

energy, zero-crosses, were used in the second stage for speech segmentation. In this second stage,<br />

we have designed an algorithm for automated speech segmentation in ten different classes of<br />

regions, that we have put into correspondence with main phonetic categories of Romanian<br />

language. After phonetic segmentation of speech signal, we have used a semi-automated algorithm<br />

for detecting and storing waveform syllables from uttered words into vocal database. Processing<br />

has been applied onto a paralel text/voice corpus: voice corpus provides speech signal on which<br />

apply signal analysis and segmentation methods, and text corpus provides phonetical transcription<br />

of voice corpus.<br />

SIGNAL<br />

ANALYSIS<br />

TEXT<br />

PROCESSING<br />

In the second flow, in text processing stage, special phonetic rules have been developed for<br />

text pre-processing, syllables units detection and intrasegmental prosody (i.e. stress) prediction.<br />

Next, unit matching was done by selecting acoustic units from vocal database according to the<br />

linguistic units detected from the input text. And finally, acoustic units are concatenated to form<br />

the output speech signal that is synthesized by the mean of a digital audio card.<br />

2. VOICE SIGNAL ANALYSIS<br />

SPEECH<br />

SEGMENTATION<br />

A. VOCAL DATABASE CONSTRUCTION FLOW<br />

UNIT DETECTION<br />

AND PROSODY<br />

PREDICTION<br />

B. TEXT TO VOICE CONVERTION FLOW<br />

Voice signal analysis is the first stage in vocal database construction flow. Voice signal<br />

analysis means the detection of signal parameters from speech samples recorded by the human<br />

speaker. These parameteres will be further used in signal segmentation stage. Analysis can be done<br />

in time or frequency domain. Time domain analysis, as our approach is, leads to the detection of<br />

signal characteristics directly from waveform samples.<br />

We have extracted following parameters: maximum and median amplitude, signal energy,<br />

number of zero-crosses and fundamental frequency.<br />

302<br />

VOCAL<br />

DATABASE<br />

CONSTRUCTION<br />

UNIT MATCHING,<br />

CONCATENATION<br />

AND SYNTHESIS


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Signal Amplitude gives information about presence or absence of speech, about voiced and<br />

unvoiced features of the signal on analyzed segment. In the case of a voiced segment of speech, as<br />

a vowel utterance, the amplitude is higher, beside the case of an unvoiced speech segment, where<br />

amplitude is lower.<br />

Mean amplitude for N samples has the following form ([7]):<br />

1<br />

M ( n)<br />

x(<br />

m)<br />

| w(<br />

n m<br />

)<br />

(1)<br />

<br />

|<br />

N m<br />

where: x(m) represents the current sample of speech signal, and<br />

w(n-m) is the considered windowing function.<br />

Signal Energy is used for getting the characteristics of transported power of speech signal.<br />

For a null-mean signal, short term mean energy is defined as [8]:<br />

1<br />

2<br />

E(<br />

n)<br />

x(<br />

n)<br />

w<br />

( n m<br />

)]<br />

(2)<br />

<br />

[<br />

N m<br />

Voiced segments (like vowels) have a higher mean energy, while the unvoiced segments<br />

(like fricative consonants) have a lower mean energy. For the majority speech segments, energy is<br />

concentrated in 300-3000 Hz band.<br />

Number of zero-crosses is used for determining frequency characteristics inside a segment.<br />

The number of zero-crossings is calculated as follows ([7]):<br />

1<br />

[ N<br />

n0<br />

NTZ <br />

1sgn(<br />

s(<br />

n 1<br />

) T ) sgn(<br />

s(<br />

nT ))]<br />

2<br />

(3)<br />

where sgn(n) represents the sign function:<br />

<br />

1,<br />

n 0<br />

sgn( n ) <br />

. (4)<br />

<br />

1,<br />

n 0<br />

303


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Number of zero-crosses is a characteristic used in determining voiced/unvoiced feature of<br />

speech segments. Inside voiced segments number of zero-crosses is lower, while inside unvoiced<br />

segments this parameter has much higher values.<br />

Fundamental Frequency is an important parameter used in voice synthesis that<br />

corresponds with the signal periodicity. This parameter must be computed on short segments of<br />

time, because of speech signal variability. Fundamental frequency is calculated only for voiced<br />

segments where the signal is almost periodical, while unvoiced segments are nonperiodical signals<br />

and they have not fundamental frequency.<br />

For computing this parameter we have developed a time-domain method based on local<br />

maximum and minimum values of signal amplitude, as one can find in [9].<br />

3. SPEECH SEGMENTATION<br />

Finding an optimal approach for speech signal segmentation is an imperative in building<br />

acoustic database of a voice synthesis system. This section presents a segmentation method that<br />

have been designed and implemented by the authors, method which is capable to detect S/U/V<br />

(Silence- Unvoiced- Voiced) components of speech signal, to divide these components in regions<br />

with specific characteristics, and to associate regions with a known phonetic input sequence<br />

(figure 2):<br />

Speech signal<br />

S/U/V Segmentation<br />

Compaction<br />

Region<br />

Classification<br />

Phonetic<br />

Segmentation<br />

Figure 2. Speech signal segmentation<br />

304


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

3.1. S/U/V SEGMENTATION<br />

Our segmentation method uses time domain analysis of speech signal. After low-pass<br />

filtering of signal, zero-crossing waveform points ( Zi) are detected. Then minimum ( mi) and<br />

maximum (Mi) values between two adjacent zero points are computed.<br />

Separation between silence and speech segments is realized by using a threshold value Ts<br />

on signal amplitude. In silence segments, all mi and Mi points must be lower than this threshold:<br />

|<br />

M i | T<br />

s<br />

<br />

|<br />

mi<br />

| T<br />

s<br />

, i = s… s+n, (5)<br />

where s is the segment sample index and n is the number of samples in that segment.<br />

For speech segments, distance Di between two adjacent zero points is computed.<br />

Decision of voiced segment is assumed if distance is greater than a threshold distance V:<br />

Di V , i = s,… , s+n (6)<br />

Z1<br />

Figure 3. A voiced segment of speech<br />

For the zero points between A and B from figure 3 to be included in the voiced segment, a<br />

look-ahead technique has been applied. A number of maximum Nk zero points between Zi and Zi+k<br />

can be inserted in voiced region if Di-1>V and Di+k >V :<br />

D<br />

<br />

D<br />

i<br />

<br />

D<br />

i<br />

j<br />

1<br />

k<br />

V<br />

V<br />

V<br />

A<br />

B<br />

305<br />

Zn<br />

, j = i..k; k


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

threshold U:<br />

A segment is assumed unvoiced if distance between two adjacent zeros is smaller than a<br />

Di U , i = s,… , s+n (8)<br />

Transient segments are also defined and they consist of regions for which conditions (6),<br />

(7) and (8) are not accomplished. In these rel ations, V and U thresholds have been chosen<br />

according to statistical median frequency for vowels and fricative consonants.<br />

3.2. COMPACTING REGIONS<br />

After first appliance of above algorithm, a large set of regions will be created. Since voiced<br />

regions are well determined, the unvoiced are broken by intercalated silence regions. This situation<br />

appears because unvoiced consonants have low amplitude so they can break in many<br />

silence/unvoiced subregions.<br />

Transient segments can also appear inside the unvoiced segment because of signal<br />

bouncing above zero line.<br />

Figure 4 shows such an example, in which numbered regions are unvoiced, simple-line and<br />

unnumbered are silence regions, and double-line are transient regions.<br />

All these regions will be packed together in the second pass of the algorithm, so the result<br />

will be a single unvoiced region – as one can see in figure no. 5.<br />

After segmentation, voiced and unvoiced segments are coupled according to the syllable<br />

chain that is used in vocal database construction process. Appropriate acoustic units will be<br />

detected, labeled and stored in vocal database.<br />

Figure 4. Determining regions for an unvoiced segment of speech<br />

Figure 5. Compacting regions of above segment<br />

306


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

3.3 REGIONS CLASSIFICATION<br />

The SUV segmentation process presented above divides the signal in four basic categories:<br />

Silence, Voiced, Unvoiced and Transition. Each category will be further classified in distinct types<br />

of regions, totally 10 classes: silence, unvoiced-silence, voiced, voiced glide, voiced plosive,<br />

voiced jump, transition, irregular (rugged), high density and unvoiced consonant (figure 6). The<br />

aim of this classification is to associate Romanian phonemes with signal regions having some<br />

particular traits.<br />

CLASS<br />

Figure 6. The four categories and ten classes of regions<br />

These ten classes of regions are shortly presented as follows:<br />

1. Silence Region (S)<br />

Represents a region without speech, where signal amplitude is very low.<br />

2. Unvoiced Silence (US)<br />

This region is a combination of silence S and unvoiced consonant C region. Detecting of<br />

this region as separate class was necessary because of fricative consonants that can be<br />

uttered at low amplitude, and so they could be found in these US regions.<br />

3. Voiced Region (V)<br />

The voiced region contains all vowels from Romanian: /A/, /E/, /I/, /O/, /U/, /Ǎ/, /Î/, glide<br />

/L/, nasals /M/, /N/, and some voiced plosive consonants as /P/, /B/, /D/.<br />

4. Voiced Glide (VG)<br />

This is a region corresponding to a voiced discontinuity and is associated with a minimum<br />

of energy. This situation may occur when a glide consonant like /R/ splits a sequence of<br />

vowels.<br />

CATEGORY<br />

5. Voiced Plosive (VP)<br />

Region<br />

S V T U<br />

S US V VG VP VJ T IR HD C<br />

307


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Also a region of voiced discontinuity corresponding to intermediate frequencies associated<br />

with plosive consonants like /C/ or /G/, occurring when these consonants are splitting a<br />

sequence of vowels.<br />

6. Voiced Jump (VJ)<br />

Is a region similar with voiced region V, but it has no periodicity. It is due to the balance of<br />

vocal signal only above or underlying median zero line. This region has no vowel or other<br />

phoneme correspondence in speech signal, but a transition or co-articulation.<br />

7. Irregular Region (IR)<br />

This is a region in which one can find plosive consonants like /C/, /G/ or /P/. Usually it<br />

comes after a silence region, it has a short duration and a frequency band intermediate<br />

between vowels and fricative consonants.<br />

8. High Density transition (HD)<br />

Is a transition region with high frequency values, which could indicate emergency of<br />

fricative consonants. Signal is not integrated in C or US classes because of positive or<br />

negative balance relative to median zero value.<br />

9. Transition (T)<br />

This is an intermediate region between voiced and unvoiced and which has no the<br />

characteristics of IR or HD classes.<br />

10. Unvoiced Consonant (C)<br />

For Romanian language, this class contains fricative consonants /S/, /Ş/, /Ţ/, /F/, /Z/, /J/,<br />

/H/, and non-fricatives /Ce/, /Ci/, /Ge/, /Gi/ .<br />

For detecting these classes, median amplitude MA(n), number of zero-cross points NTZ,<br />

signal energy E(n) have been used as section 2 describes in (1)-(4), and also short-term Fourier<br />

coefficients for detection of VP and HD special cases.<br />

3.4. PHONETIC SEGMENTATION<br />

Phonetic segmentation is the process of associating phonetic symbols with the speech<br />

signal. This process is very usefull when we want to develop an acoustic database from a large<br />

speech corpus. Phonetic segmentation gives the capability of detecting and separating phonetic<br />

units from speech, units that will be used in achieving the output acoustic chain sequence through<br />

concatenation.<br />

308


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

State of the art on this field exposes some different methods for automated or semi-<br />

automated phonetic segmentation of speech signal: iterative methods with training stages (as<br />

HMM segmentation or region frontiers refinement), methods based on association rules, statistical<br />

methods (like segmentation based on generalized likelihoods GLR), a.o.<br />

Phonetic sgmentation method proposed by the authors is a method based on association<br />

rules, which realises a correspondence between phonetic groups taken from an input stream and<br />

distinct types of regions detected from the speech signal. Segmentation algorithm parses the input<br />

text and tries to find the best match for each phonetic group with one or more regions of speech<br />

signal.<br />

Input text is first written into a special phonetic transcription, using a simple look-after<br />

table, which includes phoneme and word transitions. Transcripted text is splitted into a sequence<br />

of phonetic groups. Special association rules will establish a correspondence with specific regions<br />

detected from speech signal.<br />

For associating phonetic groups with sequences of regions, as further in our approach, we<br />

have used LEX parser generator. We have written a set of association rules, each rule specifying a<br />

phonetic pattern for associating a particular group with a sequence of regions, and also specifying<br />

a condition to be verified in order to make that association. Each condition outlines: type of region,<br />

minimal and maximal duration, type of association: unique region or sequence of regions.<br />

Figure 7 presents association between a phonetic group i<br />

i i<br />

G F F ,..., F<br />

309<br />

i<br />

, where Fk i are<br />

1 , 2<br />

phonetic symbols, and a sequence of regions i<br />

i<br />

i<br />

SR REG REG ,..., REG<br />

correspondence rule Ri : Gi COND_REGi .<br />

Text<br />

Rules<br />

Signal<br />

…<br />

…<br />

…<br />

REG1 i<br />

F1 i<br />

N<br />

, by the meaning of a<br />

1 , 2<br />

F2 i … Fk i … …<br />

R1: G1 Cond_Reg1<br />

Ri: Gi Cond_Regi<br />

Rn: Gn Cond_Regn<br />

REG2 i<br />

Figure 7. Association between phonetic groups and signal regions<br />

Gi<br />

…<br />

REGN i<br />

…<br />

N<br />

k


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Here are two samples of rules for associating with regions:<br />

(a) a generic fricative consonant and<br />

(b) a specific group of consonants:<br />

{CONS} { /* FRICATIVE CONSONANT */<br />

CheckRule(i); // check processing rule for current group for<br />

// going only forward<br />

SetLen(L_CONS1,L_CONS2); // set minimum and maximum duration<br />

CheckRegion(R_CONS); // check next region to be an unvoiced<br />

// consonant<br />

TestReject(); //if above conditions are not complied,<br />

}<br />

TR { /* GROUP OF TWO CONSONANTS: /TR/ */<br />

//rejects the rule and go to the next matching<br />

CheckRule(j); // check processing rule<br />

SetLen(L_TR1,L_TR2); // set minimum and maximum duration<br />

CheckSumReg(R_ANY && !R_VOC); // check a sequence of regions<br />

310<br />

// of any type but not voiced<br />

TestReject(); // if above conditions are not complied,<br />

}<br />

//rejects the rule and go to the next matching<br />

In figure 8 one can see the result of applying our method of association phonemes-regions<br />

on a sample male utterance:<br />

Figure 8. Phonetic segmentation for the expression:


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

4. BUILDING THE VOCAL DATABASE<br />

Phonetic segmentation method described in previous section has been designed for<br />

segmentation and labelling of speech corpora, having as main objective the construction of vocal<br />

database of our speech synthesis system. In our approach, realisation of vocal database implies<br />

separation of acoustic segments that correspond with phonetic syllables of Romanian language<br />

and storing these segments into a hierarchical structure. Vocal database includes in this moment<br />

only a subset of Romanian language syllables. We have not considerred in this implementation<br />

diphones.<br />

The speech corpus used for extracting acoustic units was built from common Romanian<br />

sentences, from separate words containing syllables, and also from artificial words constructed for<br />

the emphasis of one specific syllable. After recording, speech signal was normalized in pitch and<br />

amplitude. Then phonetic segmentation was applied and acoustic syllables were stored in database.<br />

The vocal database has a tree data structure; each node in the tree corresponds with a<br />

syllable characteristic, and a leaf represents appropriate syllable.<br />

Units are stored in database following this classification (figure 9):<br />

- after length of syllables : we have two, three or four characters syllables (denoted S2, S3<br />

and S4) and also singular phonemes (S1);<br />

- after position inside the word: initial or median (M) and final syllables (F);<br />

- after accentuation: stressed or accentuated (A) or normal (N) syllables.<br />

S2 syllables, that are two-character syllables, have following general form:<br />

- {CV} (C=consonant, V=vowel), for example: ‚ba’, ‚be’, ‚co’, ‚cu’, etc, but we have also<br />

recorded syllable forms like:<br />

- {VC}, as ‚ar’, ‚es’, etc., forms that usually appear at the beginning of Romanian words.<br />

S3 syllables, composed from three phonemes, can be of following types:<br />

- {CCV} , for example: ‚bra’, ‚cre’, ‚tri’, ‚ghe’;<br />

- {CVC} , like: ‚mar’, ‚ver’;<br />

- {CVV} , for example: ‚cea’, ‚cei’, ‚soa’.<br />

S4 four-character syllables have different forms from {CCVV} , {CVCV} to {CVVV}.<br />

311


Level 3<br />

O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Level 2<br />

Level 1<br />

5. TEXT ANALYSIS<br />

Figure 9. Database hierarchical structure<br />

Text analysis is the first on-line process of text-to-voice conversion flow. This stage begins<br />

with the detection of linguistic units from the input text that has to be synthesized. Linguistic units<br />

are sentences, words and segmental units, that in our approach are the syllables.<br />

Detection of sentences and words is done based on punctuation and literal separators. For<br />

detection of syllables we had to design a set of linguistic rules for splitting words into syllables,<br />

inspired from Romanian syntax rules ([3]).<br />

The principle used in detecting linguistic units is illustrated in figure no. 10. Here we can<br />

see the structure of text analyzer that corresponds to four modules designed for detection of units,<br />

prosody information and unit processing.<br />

These modules are:<br />

- a lexical analysis module for detection of basic units;<br />

- a phonetic analysis module for generating prosody information;<br />

- a high level analysis module for detection of high-level units;<br />

- the processing shell for unit processing.<br />

S2 S3 S4<br />

Med Fin Med Fin Med Fin<br />

312<br />

R<br />

N A<br />

A N A N A N A N A N<br />

bá zú ba zu bea zoa chea sunt beau zeau


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Figure 10. Text analysis for syllable detection<br />

Lexical analyzer extracts text characters and clusters them into basic units. We refer to the<br />

detection of alphabetical characters, numerical characters, special characters and punctuation<br />

marks. Using special lexical rules (that have been presented in [9] - [13]), alphabetical characters<br />

are clustered as syllables, digits are clustered as numbers and special characters and punctuation<br />

marks are used in determining of word and sentence boundaries.<br />

Phonetic analyzer gets the syllables between two breaking characters and detects stress<br />

position, i.e. the accentuated syllable from corresponding word.<br />

Then, high-level analyzer takes the syllables, special characters and numbers provided by<br />

the lexical analyzer, and also prosodic information, and constructs high-level units: words and<br />

sentences. Also basic sentence verification is done here.<br />

Processing shell finally takes linguistic units provided from the previous levels and, based on<br />

some computing subroutines, classifies and stores them in appropriate structures. From these<br />

structures, synthesis module will construct the acoustic waves and will synthesize the text.<br />

5.1. SYLLABLE DETECTION<br />

Lexical analyzer is called by the higher level modules for detection of basic lexical units:<br />

syllables, breaking characters and numbers. The lexical analyzer is made by using LEX scanner<br />

generator [4]. LEX generates a lexical scanner starting from an input grammar that describes the<br />

parsing rules. Grammar is written in BNF standard form and specifies character sequences that can<br />

be recognized from the input. These sequences refer to syllables, special characters, separators and<br />

numbers.<br />

Text<br />

Syntactical<br />

Rules<br />

Lexical<br />

Analysis<br />

Lexical<br />

Rules<br />

High Level<br />

Sentences<br />

Analysis Words<br />

Shell<br />

Syllables<br />

Numbers<br />

Separators<br />

313<br />

Phonetic<br />

Analysis<br />

Phonetic<br />

Rules<br />

Stress<br />

position


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

Hereby, input text is interpreted as a character string. At the beginning, current character is<br />

classified in following categories: digit, alphanumeric character, and special character. Taking into<br />

account left and right context, current character and the characters already parsed are grouped to<br />

form a lexical unit: a syllable, a number or a separator. Specific production rules for each category<br />

indicate the mode each lexical unit is formed and classified, and also realize a subclassification of<br />

units (integer or real numbers, type of separators: word or sentence separator, etc).<br />

A syllable-detection rule may have following general forms:<br />

{PATTERN} { Proceed_Syllable;} (F1)<br />

{ROOT_PATTERN}/{PATTERN} { Proceed_Syllable;} (F2)<br />

{PATTERN}{TERMINATION}/{SEP} { Proceed_Syllable;} (F3)<br />

Rule (F1) is applied for diphthongs like /OA/ or /IU/ that always occur in same syllable<br />

inside the root of a word, regardless of subsequent (right) context. Rule (F2) applies for middle -<br />

word syllables with a right context of specific phonems or other syllables, since rule (F3) applies<br />

for ending-word syllables (having a right context of a word separator).<br />

Regarding rule matching process inside lexical analyzer, two types of rule sets were made:<br />

a basic set consisting of three general rules, and a large set of exception rules which states the<br />

exceptions from the basic set.<br />

The basic set shows the general decomposition rules for Romanian.<br />

First rule is that a syllable consists of a sequence of consonants followed by a vowel:<br />

syllable ={CONS}*{VOC} (R1)<br />

Second rule statues that a syllable can be finished by a consonant if the beginning of the<br />

next syllable is also a consonant:<br />

syllable={CONS}*{VOC}{CONS}/{CONS} (R2)<br />

Third rule says that one or more consonants can be placed at the final part of a syllable if<br />

this is the last syllable of a word :<br />

syllable={CONS}*{VOC}{CONS}*/{SEP} (R3)<br />

314


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

The exception set is made up from the rules that are exceptions from the three rules of<br />

above. These exceptions are situated in the front of basic rules. If no rule from the exception set is<br />

matched, then the syllable is treated by the basic rules. At this time, the exception set is made up<br />

by more then 180 rules. Rules are grouped in subsets that refer to resembling character sequences.<br />

All these rules were completely explained in [9].<br />

5.2. SYLLABLE ACCENTUATION<br />

The principle for determining syllable accentuation resembles with that of lexical analyzer<br />

for detecting syllables already exposed. After the text parser returns from input stream current<br />

word consisting of phonemes F1, F2, …, Fk and delimited by a separator, phonetic analyzer reads<br />

this word and detects syllable accentuation based on phonetic rules. Rules have been also written<br />

in BNF form and set into LEX input.<br />

In Romanian, stressed syllable can be one of last four syllables of the word: Sn, Sn-1, Sn-2 or<br />

Sn-3, ( Sn is the last syllable). Most often, stress is placed at next to last position.<br />

and<br />

The rules set for determining accentuation consists of:<br />

a) One general rule meaning Sn-1 syllable is stressed:<br />

{LIT}+/{SEP} { return(SN-1);} (G1)<br />

b) A consistent set of exceptions, organized in classes of words having the same<br />

termination. Each rule from exceptions set presents following form:<br />

{PATTERN}{TERMINATION}/{SEP} { return(SN-x);} (E1)<br />

where x can be one of 0, 1, 2, 3.<br />

At this time, the exception set is made up by more then 250 rules. All these rules were<br />

presented and completely explained in [9].<br />

6. UNIT MATCHING, CONCATENATION AND SYNTHESIS<br />

Matching process is done according to the three–layer classification of units: number of<br />

characters in the syllable, accentuation and the place of syllable inside the word.<br />

If one syllable is not found in vocal database, this will be constructed from other syllables<br />

and separate phonemes that are also recorded. Following situations may appear:<br />

315


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

(a) Syllable is matched in appropriate accentuated form. In this case acoustic unit will be<br />

directly used for concatenation.<br />

(b) Syllable is matched but not the accentuation. In this case, unit is reconstructed from<br />

other syllables and phonemes which abide by the necessary accentuation.<br />

(c) Syllable is not matched at all, so it will be constructed from separate phonemes.<br />

After matching, units are simply concatenated to result the acoustic chain that will be<br />

synthesized. In this stage of development, our system works with intrasegmental prosody i.e.<br />

accentuation inside words, and doesn’t support sentence-level prosody like intonation. The rhythm<br />

of speech can be adjusted by intercalating different periods of silence between syllables, words and<br />

sentences.<br />

7. IMPLEMENTATION<br />

The purpose of our work was to build a speech synthesis system based on concatenation of<br />

syllables. The system includes a syllable database in which we have recorded near 400 two-<br />

character syllables, 150 most frequent three-character syllables and 50 four-character syllables.<br />

Syllables that are not included in database are synthesized from existing syllables and separate<br />

phonemes that are also recorded.<br />

The speech synthesis system first invokes text analyzer for syllable detection, then phonetic<br />

analyzer for determining the accentuation. Appropriate units (stressed or unstressed) are matched<br />

from vocal database, and speech synthesis is accomplished by syllable concatenation.<br />

8. CONCLUSIONS AND RESULTS<br />

We have presented in this article a complete method for building a syllable-based text-to-<br />

speech system. Our approach is based on rules that apply in the most important stages of<br />

projecting a speech synthesis system: construction of the vocal database, by extracting acoustic<br />

units from speech, and text processing stage, by extracting linguistic units using phonetic and<br />

lexical rules.<br />

First, speech signal was segmented in basic categories and ten different classes of regions.<br />

Then, a rule-based segmentation method was invoked onto a speech corpus in order to associate<br />

input phonemes with regions. We have used this segmentation method to separate phonetic units<br />

from speech corpora and create the vocal database.<br />

Special efforts have been done to accomplish the text processing stage. Here we have<br />

designed two sets of rules: one set of rules for detecting word syllables and a second set for<br />

316


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

determining the accentuation inside each word. Although these sets are not complete, they cover<br />

yet a good majority of cases. The lexical analyzer is based on rules that assure more than 98%<br />

correct syllables detection, since accentuation analyzer provides about 93% correct detection rate<br />

(computed on near 50000 words collection consisting of various Romanian texts from literature,<br />

religion, science and technical fields).<br />

The advantages of detecting syllables through a rules-driven analyzer are: separation<br />

between syllables detection and system code, facile readability and accessibility of rules. Other<br />

authors ([ 1]) have used LEX only for pre-processing stage of text analysis, and not for units<br />

detection process itself. Some methods support only a restricted domain ([6]), since our method<br />

supports all Romanian vocabulary. The rules-driven method also needs fewer resources than<br />

dictionary-based methods (like [5]).<br />

About speech synthesis outcome, the results are encouraging, and after a post-recording<br />

stage of syllable normalization we have obtained a good, near-natural quality of speech synthesis.<br />

Even diphones have not been considered in our method, the speech outcome is not affected. For<br />

the future implementations, we have in mind the completion of syllable and accentuation rules sets<br />

and also the completion of syllables database according to a self-generated statistics of Romanian<br />

syllables, aspects that will improve the system performance.<br />

REFERENCES<br />

1. BURILEANU, D., et al., A Parser-Based Text Preprocessor for Romanian Language TTS<br />

Synthesis, Proceedings of EUROSPEECH'99, Budapest, Hungary, vol. 5, pp. 2063-2066, Sep.<br />

1999.<br />

2. BURILEANU, C., et al., Text-to-Speech Synthesis for Romanian Language: Present and<br />

Future Trends, in the volume “Recent Advances in Romanian Language Technology” (D.<br />

Tufiş, P. Andersen – Eds.), Publishing House of the Romanian Academy, Bucharest, pp. 189-<br />

206, 1997.<br />

3. CIOMPEC, G., et al., Limba română contemporană. Fonetică, fonologie, morfologie, Editura<br />

Didactică şi Pedagogică, Bucharest, 1985.<br />

4. FREE SOFTWARE FOUNDATION, Flex - a scanner generator, http://www.gnu.org/<br />

software/flex/manual, October 2005.<br />

5. HUNT, A., BLACK, A., Unit selection in a concatenative speech synthesis system using a<br />

large speech database, IEEE International Conference on Acoustics, Speech and Signal<br />

Processing ICASSP ’96 Proceedings, Atlanta, GA, pp. 373–376, May 1996.<br />

317


O. Buza, G. Toderean, J. Domokos, A. Zs. Bodo, Construction of a Syllable-Based Text-To-Speech System for Romanian<br />

6. LEWIS, E., TATHAM, M., Word and Syllable Concatenation in Text-To-Speech Synthesis,<br />

Sixth European Conference on Speech Communications and Technology, pp. 615—618,<br />

ESCA, September 1999.<br />

7. PICONE, J.W., Signal modeling techniques in speech recognition, Proceedings IEEE vol. 81,<br />

pp. 1215-1246, September 1993.<br />

8. LUPU E., POP P., Prelucrarea numerică a semnalului vocal, vol.1, Ed. Risoprint, 2004.<br />

9. BUZA, O., Vocal interactive systems, doctoral paper, Electronics and Telecommunications<br />

Faculty, Technical University of Cluj-Napoca, 2005.<br />

10. BUZA, O., TODEREAN, G., Syllable detection for Romanian text-to-speech synthesis, Sixth<br />

International Conference on Communications COMM’06 Bucharest, pp. 135-138, June 2006.<br />

11. BUZA, O., TODEREAN, G., A Romanian Syllable-Based Text-to-Speech Synthesis, Proc. of<br />

the 6th WSEAS Internat. Conf. on Artificial Intelligence, Knowledge Engineering and Data<br />

Bases (AIKED ’07), CD Proceedings, Corfu Island, Greece, 16-19 February, 2007.<br />

12. BUZA, O., TODEREAN, G., About Construction of a Syllable-Based TTS System, WSEAS<br />

Transactions on Communications, Issue 5, Volume 6, May 2007, ISSN 1109-2742, 2007.<br />

13. BUZA, O., TODEREAN, G., NICA, A., BODO, Z., Original Method for Romanian Text-to-<br />

Speech Synthesis Based on Syllable Concatenation, published in the volume “Advances in<br />

Spoken Language Technology”, coordinated by Corneliu Burileanu and Horia-Nicolai<br />

Teodorescu, ed. by The Publishing House of the Romanian Academy, composed of the Proc. of<br />

the 4th Conference on Speech Technology and Human Computer Dialogue “SpeD 2007”,<br />

organized by the Romanian Academy, the University “Politehnica” of Bucharest, and the<br />

Technical University of Iasi, Iasi, Romania, pp. 109-118, 10-12 May, 2007.<br />

14. BUZA, O., TODEREAN, G., Metode de Sinteză din Text a Vorbirii pentru Limba Română,<br />

The Second International Conference "Telecommunications, Electronics and Computer<br />

Science" ICTEI 2008, Chişinău, Republica Moldova, pp. 209-214, 15-18 May, 2008.<br />

318<br />

Technical University of Cluj-Napoca<br />

Baritiu 26-28, Cluj-Napoca, Romania<br />

E-mail address: Ovidiu.Buza@com.utcluj.ro


319<br />

Anexa 6. Lucrări ştiinţifice ale autorului prezentate în extenso<br />

2. O. Buza, G. Toderean, About Construction of a Syllable-Based TTS System, WSEAS<br />

TRANSACTIONS on COMMUNICATIONS, Issue 5, Volume 6, May 2007, ISSN 1109-<br />

2742, 2007<br />

WSEAS TRANSACTIONS<br />

on COMMUNICATIONS<br />

Issue 5, Volume 6, May 2007<br />

ISSN 1109-2742 http://www.wseas.org<br />

Estimation of a Partial Transmitter Contribution to the Total Electromagnetic Field<br />

Exposure in a Multi-Transmitter Environment<br />

D. Stratakis, A. Miaoudakis, N. Farsaris, T. Xenos, V. Zacharopoulos<br />

Reflection and Transmission Characteristics of Layered Bianisotropic Metamaterials 683<br />

Ruyen Ro, Sean Wu<br />

Optimal Statistical Energy Balancing Protocols for Wireless Sensor Networks 689<br />

B. Hegyi, J. Levendovszky<br />

Efficient and Transparent Service Discovery Mechanisms in Wireless Ad Hoc<br />

Networks<br />

Vladimir Atanasovski, Liljana Gavrilovska<br />

Optical Label Switching Method based on Optical CDM Code Processing 701<br />

Wang-Hsai Yang, Chih-Chao Wen<br />

About Construction of a Syllable-Based TTS System 707<br />

Ovidiu Buza, Gavril Toderean<br />

Wavelet-Based Image Compression using a New Partial Search LBG Algorithm 715<br />

Somphob Soongsathitanon<br />

675<br />

695


About Construction of a Syllable-Based TTS System<br />

OVIDIU BUZA, GAVRIL TODEREAN<br />

Department of Telecommunications<br />

Technical University of Cluj-Napoca<br />

26 – 28 G. Baritiu Str., 400027, Cluj-Napoca<br />

ROMANIA<br />

Ovidiu.Buza@cs.utcluj.ro Gavril.Toderean@com.utcluj.ro http://bavaria.utcluj.ro/~toderean<br />

Abstract: - This article presents several steps that we have accomplished in order to construct a syllablebased<br />

TTS system for Romanian. These steps are: projecting a text analysis method capable to separate<br />

syllables from input text and detect accentuation, building a vocal database from speech recordings,<br />

projecting a unit matching algorithm and a synthesizer method. Our approach uses rule-driven text analysis<br />

and automated wave segmentation for database generation.<br />

Key-Words: - syllable-based TTS system, rule-driven text analyzer, automatic wave signal segmentation<br />

1 Introduction<br />

Concatenation of waveforms represents a method<br />

more and more used in our days because of high<br />

level of naturalness in produced speech. Corpusbased<br />

methods are among best approaches, but<br />

they need great efforts for database maintaining.<br />

Syllable-based methods can be an alternative,<br />

as they need a limited units database. Using of<br />

syllables in synthesis also leads to a good level of<br />

speech naturalness and low concatenation error<br />

rate because of small number of concatenation<br />

points inside the synthesized text.<br />

This article presents an original approach for<br />

constructing a syllable-based TTS system for<br />

Romanian. The syllable approach is very<br />

appropriate in our case, because Romanian spoken<br />

language contains a big number of opened vowels<br />

that gives a constant rhythm of speech and similar<br />

manner of accentuating words.<br />

Text<br />

Text<br />

Analysis<br />

Basic<br />

units<br />

Prosody<br />

data<br />

Fig.1. Main functionalities of our Text-to-Speech system<br />

320<br />

Also, Romanian language contains a relative<br />

small number of syllables, so we have obtained a<br />

reduced size of vocal database.<br />

Our text-to-speech system consists of ([7]):<br />

- a text analysis module that brings input text and<br />

produces basic units, that in our approach are<br />

syllables, and prosody data, which mean the<br />

information about how words are accentuated;<br />

- a unit matching module that generates acoustic<br />

units sequence according to the linguistic units<br />

detected from the input and prosody data;<br />

- a speech synthesis module that generates speech<br />

based on the acoustic units sequences.<br />

The particular aspects of our work are:<br />

- using of linguistic and phonetic rules based of<br />

which we have done text analysis and obtained<br />

appropriate units and prosody data;<br />

- automatic generation of database from recorded<br />

sequences.<br />

Unit<br />

Matching<br />

Synthesis


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

First of all we have built a linguistic analyzer<br />

module that is capable to split the input text into<br />

syllables. Next step was to determine accentuation<br />

by mean of a phonetic analyzer. Then we have<br />

automatically produced a database with PCM<br />

coded syllables of Romanian language. Synthesis<br />

was done by concatenating acoustic units from<br />

database and giving appropriate commands to the<br />

computer’ sound blaster for voice generation.<br />

2 Text Analysis<br />

First stage in text analysis is the detection of<br />

linguistic units: sentences, words and segmental<br />

units that in our approach are the word syllables.<br />

Detection of sentences and words is done<br />

based on punctuation and literal separators. For<br />

Text<br />

Sub<br />

Routines<br />

Sintactical<br />

Rules<br />

Lexical<br />

Analysis<br />

Lexical<br />

Rules<br />

Processing shell accomplishes the unit<br />

processing task and controls the subsequent<br />

modules. The shell calls high-level analyser for<br />

returning main syntactic units. High-level<br />

analyser calls the lexical analyser for input text<br />

parsing and detection of basic units. Then<br />

phonetic analysis module is called for generating<br />

stress information.<br />

Lexical analyser extracts text characters and<br />

clusters them into basic units. We refer to the<br />

detection of alphabetical characters, numerical<br />

Processing<br />

Shell<br />

Fig, 2. Text analyser for syllable detection<br />

321<br />

detection of syllables we had to design a set of<br />

linguistic rules for splitting words into syllables,<br />

inspired from Romanian syntax rules ([2], [3]).<br />

The principle used in detecting linguistic units<br />

is illustrated in figure no. 2. Here we can see the<br />

structure of text analyser that corresponds to four<br />

modules designed for detection of units, prosody<br />

information and unit processing.<br />

These modules are:<br />

- lexical analysis module for detection of basic<br />

units;<br />

- phonetic analysis module for generating prosody<br />

information;<br />

- high level analysis module for detection of highlevel<br />

units;<br />

- processing shell for unit processing.<br />

Unit<br />

processing<br />

High Level<br />

Sentences<br />

Analysis Words<br />

Syllables<br />

Numbers<br />

Separators<br />

Phonetic<br />

Analysis<br />

Phonetic<br />

Rules<br />

Stress<br />

position<br />

characters, special characters and punctuation<br />

marks. Using special lexical rules (that have been<br />

presented in [8]), alphabetical characters are<br />

clustered as syllables, digits are clustered as<br />

numbers and special characters and punctuation<br />

marks are used in determining of word and<br />

sentence boundaries.<br />

Phonetic analyser gets the syllables between<br />

two breaking characters and detects stress<br />

position, i.e. the accentuated syllable from<br />

corresponding word.


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

Then, high-level analyser takes the syllables,<br />

special characters and numbers provided by the<br />

lexical analyser, and also prosodic information,<br />

and constructs high-level units: words and<br />

sentences. Also basic sentence verification is done<br />

here.<br />

Processing shell finally takes linguistic units<br />

provided from the previous levels and, based on<br />

some computing subroutines, classifies and stores<br />

them in appropriate structures. From here synthesis<br />

module will construct the acoustic waves and will<br />

synthesize the text.<br />

3 Lexical Analysis for Syllable<br />

Detection<br />

Lexical analyzer is called by the higher level<br />

modules for detection of basic lexical units:<br />

syllables, breaking characters and numbers. The<br />

lexical analyzer is made by using LEX scanner<br />

generator [4]. LEX generates a lexical scanner<br />

starting from an input grammar that describes the<br />

parsing rules. Grammar is written in BNF standard<br />

form and specifies character sequences that can be<br />

recognized from the input. These sequences refer<br />

to syllables, special characters, separators and<br />

numbers. Also BNF grammar specifies the actions<br />

to be taken in the response of input matching,<br />

actions that will be accomplished by the processing<br />

shell subroutines.<br />

The whole process realized by the lexical<br />

analyzer is illustrated in figure no. 3. As we can<br />

see, input text is interpreted as a character string.<br />

At the beginning, current character is classified in<br />

following categories: digit, special character or<br />

separator, and alphanumeric character. Taking into<br />

account left and right context, current character<br />

and the characters already parsed are grouped to<br />

form a lexical unit: a syllable, a number or a<br />

separator. Specific production rules for each<br />

category indicate the mode each lexical unit is<br />

formed and classified, and also realize a<br />

subclasification of units (for numbers if they are<br />

integer or real numbers, and for separators – the<br />

type: word or sentence separator, affirmative,<br />

interrogative, imperative or special separator).<br />

Once the unit type and subtype is identified,<br />

corresponding character sequence is stored and<br />

transmitted to the high-level analyzer by mean of<br />

specific actions, as they will be described in next<br />

paragraph ( Process syllable, Process number,<br />

Process separator).<br />

322<br />

Text<br />

C C C C C C C C C C<br />

Digit Separator Alphabetic<br />

Rules<br />

Rules<br />

Rules<br />

Integer Real Sep 1 … Sep n Syllable<br />

Process number Process separator Process syllable<br />

Fig.3. Lexical analyser for syllable detection<br />

3.1 Specific actions of lexical analyser<br />

Specific actions inform high-level module about<br />

matching of syllables, numbers and breaking<br />

characters. Inside lexical parser three types of input<br />

response actions are defined as follows:<br />

A. Process syllable – this is the action to be<br />

taken when a syllable is matched in specific<br />

location of one word.<br />

Special attention is taken when a syllable is<br />

matched at the beginning of a word. In Romanian,<br />

different word decomposition rules apply when a<br />

character sequence occurs at the beginning or in<br />

the middle or the final part of a word.<br />

B. Process number – is the action to be taken<br />

when a number is matched from the input. The<br />

number is identified as INTEGER or REAL type.<br />

In future stage, numbers will be translated in<br />

orthographic alphabetical form.<br />

C. Process separator - is the action<br />

corresponding to a breaking character matching<br />

from the input. Breaking characters and<br />

punctuation marks are used for detecting word and<br />

sentence boundaries.<br />

3.2 Syllable rules matching<br />

Regarding syllable rules matching process inside<br />

lexical analyser, two types of rule sets were made:<br />

a basic set consisting of three general rules, and a<br />

large set of exception rules which statues the<br />

exceptions from the basic set.


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

(A) The basic set shows the general<br />

decomposition rules for Romanian. First rule is<br />

that a syllable consists of a sequence of consonants<br />

followed by a vowel:<br />

syllable ={CONS}*{VOC} (R1)<br />

Second rule statues that a syllable can be<br />

finished by a consonant if the beginning of the next<br />

syllable is also a consonant:<br />

syllable={CONS}*{VOC}{CONS}/{CONS}(R2)<br />

Third rule says that one or more consonants can<br />

be placed at the final part of a syllable if this is the<br />

last syllable of a word :<br />

syllable={CONS}*{VOC}{CONS}*/{SEP}(R3)<br />

(B) The exception set is made up from the rules<br />

that are exceptions from the three rules of above.<br />

These exceptions are situated in the front of basic<br />

rules. If no rule from the exception set is matched,<br />

then the syllable is treated by the basic rules. At<br />

this time, the exception set is made up by more<br />

then 100 rules. Rules are grouped in subsets that<br />

refer to resembling character sequences. All these<br />

rules are explained in [7], [8].<br />

4 Syllable Accentuation<br />

The principle for determining syllable accentuation<br />

is shown in the following diagram:<br />

WORD<br />

Text<br />

Parser<br />

F1 F2 ... Fk S<br />

Phonetic<br />

Rules<br />

Phonetic<br />

Analyzer<br />

STRESS<br />

Fig.4. The principle of detecting syllable<br />

accentuation<br />

Sn-3<br />

Sn-2<br />

Sn-1<br />

The parser returns current word from input<br />

stream. The word consists of series of phonemes<br />

F1, F2, …, Fk and is delimited by a separator S.<br />

Sn<br />

323<br />

Phonetic analyser reads this word and detects<br />

syllable accentuation based on phonetic rules.<br />

In Romanian, stressed syllable can be one of<br />

last four syllables of the word: Sn, Sn-1, Sn-2 or Sn-3, (<br />

Sn is the last syllable). Most often, stress is placed<br />

at last but one position.<br />

The rules set consists of this general rule (Sn-1<br />

syllable is stressed):<br />

{LIT}+/{SEP} { return(SN_1);}<br />

and a consistent set of exceptions, organized in<br />

classes of words having the same termination. In<br />

[7] one can find the complete set of rules.<br />

5 High Level Analysis<br />

High-level analyser takes low-level information:<br />

syllables, special characters and numbers from the<br />

lexical analysis module and constructs high-level<br />

structures: words and sentences.<br />

High-level analysis module takes a regular<br />

production rules set which specifies the syntax of<br />

input text. Input text is considered to be a set of<br />

sentences, each sentence – a set of words and each<br />

word is composed by one, two or more syllables.<br />

Sentences, and words respectively, are bounded by<br />

separators.<br />

Hierarchical structure of high-level units is<br />

presented in figure no.5. In this diagram, greyed<br />

units (syllables, numbers and separators) are the<br />

outcome of lexical analyser. Thereby, high-level<br />

or syntactical analyser module invokes lexical<br />

analyser for providing next lexical unit from input<br />

text: a syllable, a number or a separator.<br />

Based on the lexical units, at this level are<br />

formed syntactical units as words, sentences and<br />

text. High-level analyser also has the capability to<br />

call, for each syntactical unit separated from text, a<br />

specific subroutine from processing shell module.<br />

In our implementation, words and sentences are<br />

processed by calling two subroutines from<br />

processing shell: Process_Word and<br />

Process_Sentence.<br />

Based on corresponding terminators, at this<br />

level, sentences are classified as regular,<br />

imperative or interrogative. Such a classification is<br />

very important for modifying speech prosody (in<br />

future developments).


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

Text<br />

Sentence Separator Sentence Separator Sentence Separator<br />

Fig.5. Hierarchical structure of high-level analysis<br />

6 Wave Signal Segmentation<br />

For the construction of vocal database, an<br />

appropriate method for wave signal segmentation<br />

is a request. In our approach, segmentation was<br />

done through an automated procedure which can<br />

detect silence/speech and voiced/unvoiced signal.<br />

The automated procedure uses time domain<br />

analysis of signal. After a low-pass filtering of<br />

the signal, zero-cross (Z i) wave samples were<br />

detected. Minimum (m i) and maximum (M i)<br />

points between two zeros were also computed.<br />

Separation between silence and speech is done<br />

using an amplitude threshold Ts . In silence<br />

segments all MIN and MAX points have to be<br />

smaller than Ts:<br />

|<br />

M i | T<br />

s<br />

<br />

|<br />

mi<br />

| T<br />

s<br />

. ! Tab ? ;<br />

Word Separator Word Separator Word Separator<br />

Number<br />

Alphabetic<br />

, i = s… s+n (1)<br />

In (1) s is the segment sample index and n is<br />

the number of samples in that segment.<br />

For speech segments distance between two<br />

adjacent zero-cross points (D i = d(Zi,Zi+1)) is<br />

computed. Decision of voiced segment is assumed<br />

if distance is greater than a threshold distance V:<br />

Space Tab . , ? !<br />

Integer Real<br />

Syllable Syllable Syllable<br />

324<br />

Di V , i = s,… , s+n (2)<br />

Z1<br />

A<br />

B<br />

Fig.6. A voiced segment of speech<br />

For the zero points between A and B from<br />

figure 6 to be included in the voiced segment, a<br />

look-ahead technique has been applied. A number<br />

of maximum Nk zero points between Zi and Zi+k<br />

can be inserted in voiced region if Di-1>V and<br />

Di+k >V :<br />

D<br />

<br />

D<br />

i<br />

<br />

D<br />

i<br />

j<br />

1<br />

k<br />

V<br />

V<br />

V<br />

Zn<br />

, j = i..k; k


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

A segment is assumed unvoiced if distance Di<br />

between two adjacent zeros is smaller than a<br />

threshold U:<br />

Di U , i = s,… , s+n (4)<br />

Transient segments are also defined and they<br />

consist of regions for which conditions (2), (3)<br />

and (4) are not accomplished.<br />

After first appliance of above algorithm, a<br />

large set of regions will be created. Since voiced<br />

regions are well determined, the unvoiced are<br />

broken by intercalated silence regions. This<br />

situation appears because unvoiced consonants<br />

325<br />

have low amplitude so they can break in many<br />

silence/unvoiced subregions.<br />

Transient segments can also appear inside the<br />

unvoiced segment because of signal bouncing<br />

above zero line.<br />

Figure 7 shows such an example, in which<br />

numbered regions are unvoiced, simple-line and<br />

unnumbered are silence regions, and double-line<br />

are transient regions.<br />

All these regions will be packed together in the<br />

second pass of the algorithm, so the result will be<br />

a single unvoiced region – as one can see in figure<br />

no. 8.<br />

Fig.7. Determining regions for an unvoiced segment of speech<br />

After segmentation, voiced and unvoiced<br />

segments are coupled according to the syllable<br />

chain that is used in vocal database construction<br />

process. Acoustic units are labelled and stored in<br />

database. Each region boundary can be viewed<br />

with a special application and, if necessary, can be<br />

adjusted.<br />

7 Vocal Database Construction<br />

Vocal database includes a subset of Romanian<br />

language syllables. Acoustic units were separated<br />

from male speech and normalized in pitch and<br />

amplitude.<br />

Vocal database with recorded syllables has a<br />

tree data structure. Each node in the tree<br />

corresponds with a syllable characteristic, and a<br />

leaf represents appropriate syllable.<br />

Fig.8. Compacting regions of above segment<br />

Units have been inserted in database following<br />

this classification:<br />

- after length of syllables : we have two, three or<br />

four character syllables (denoted S2, S3 and S4)<br />

and also singular phonemes;<br />

- after position inside the word: initial or median<br />

(Med) and final syllables (Fin);<br />

- after accentuation: stressed or accentuated (A) or<br />

normal (N) syllables.<br />

This classification offers the advantage of<br />

reducing time for matching process between<br />

phonetic and acoustic units.<br />

Organization of vocal database is shown in<br />

figure no. 9. Level one nodes indicate length of<br />

syllables, level two nodes indicate median or final<br />

syllables, and level three accentuated or normal<br />

syllables.


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

Level 1<br />

Level 2<br />

Level 3<br />

8 Unit Matching Process<br />

The matching process is done according to the<br />

three–layer classification of units: number of<br />

characters in the syllable, accentuation and the<br />

place of syllable inside the word.<br />

If one syllable is not founded in vocal<br />

database, this will be constructed from other<br />

syllables and separate phonemes that are also<br />

recorded. Following situations may appear:<br />

(a) Syllable is matched in appropriate<br />

accentuated form. In this case acoustic unit will be<br />

directly used for concatenation.<br />

(b) Syllable is matched but not the<br />

accentuation. In this case, unit is reconstructed<br />

from other syllables and phonemes which abide<br />

by the necessary accentuation.<br />

(c) Syllable is not matched, so it will be<br />

constructed from existing syllables and phonemes.<br />

9 Implementation<br />

The purpose of our work was to build a speech<br />

synthesis system based on concatenation of<br />

syllables. The system includes a syllable database<br />

in which we have recorded 386 two-character<br />

syllables: 283 middle-word syllables and 103<br />

ending-word syllables, 139 most frequent threecharacter<br />

syllables and 37 four-character syllables.<br />

S2 S3 S4<br />

Med Fin Med Fin Med Fin<br />

Fig.9. The tree data structure of vocal database<br />

R<br />

N A<br />

A N A N A N A N A N<br />

bá zú ba zu bea zoa chea sunt beau zeau<br />

326<br />

Syllables that are not included in database are<br />

synthesized from existing syllables and separate<br />

phonemes that are also recorded.<br />

The speech synthesis system first invokes text<br />

analyzer for syllable detection, then phonetic<br />

analyser for determining the accentuation.<br />

Appropriate unit (stressed or unstressed) is<br />

matched from vocal database, and speech<br />

synthesis is accomplished by syllable<br />

concatenation.<br />

10 Conclusions and Results<br />

We have presented in this article a complete<br />

method for construction of a syllable-based TTS<br />

system. Special efforts have been done to<br />

accomplish the text processing stage. After<br />

serious researches in linguistic field, we have<br />

designed one set of rules for detecting word<br />

syllables and a second set for determining which<br />

syllable is accentuated in each word. Even these<br />

sets are not complete, they cover yet a good<br />

majority of cases. The lexical analyzer is entirely<br />

based on rules that assure more than 85% correct<br />

syllable detection at this moment, since<br />

accentuation analyser provides about 75% correct<br />

detection rate.


WSEAS TRANSACTIONS ON COMMUNICATIONS Ovidiu Buza, Gavril Toderean<br />

Text<br />

Lexical analysis<br />

Syllable<br />

detection<br />

Basic units:<br />

Syllables<br />

Phonetic<br />

analysis<br />

Accentuation<br />

Prosodic info:<br />

Stress<br />

Unit<br />

Concatenation<br />

and Synthesis<br />

Unit<br />

Matching<br />

Vocal<br />

Database<br />

Fig.10. The principle of our syllable-based<br />

speech synthesis system<br />

The advantages of detecting syllables through<br />

a rules-driven analyser are: separation between<br />

syllables detection and system code (different<br />

from [9], where syllables detection algorithm is<br />

integrated in source code); from here we have<br />

easy readability and accessibility of rules. Other<br />

authors [1] have used LEX only for preprocessing<br />

stage of text analysis, and not for units<br />

detection process itself. Some methods support<br />

only a restricted domain [6], since our method<br />

supports all Romanian vocabulary. The rulesdriven<br />

method also needs less resources than<br />

dictionary-based methods (like [5]).<br />

Our automated segmentation method assures<br />

less errors in concatenation points: waves begin<br />

and stop at zero-points and contain integer<br />

numbers of periods.<br />

About speech synthesis outcome, first results<br />

are encouraging, and after a post-recording stage<br />

of syllable normalization we have obtained a good<br />

quality of speech synthesis. In future<br />

implementations, F0 adaptive correction in<br />

concatenation points will improve this<br />

performance.<br />

327<br />

References:<br />

[1] Burileanu D., et al., A Parser-Based Text<br />

Preprocessor for Romanian Language TTS<br />

Synthesis, Proceedings of EUROSPEECH'99,<br />

Budapest, Hungary, vol. 5, pp. 2063-2066, Sep.<br />

1999.<br />

[2] Constantinescu-Dobridor G., Sintaxa limbii<br />

române, Editura Ştiinţifică, Bucureşti, 1994<br />

[3] Ciompec G. et al., Limba română<br />

contemporană. Fonetică, fonologie, morfologie,<br />

Editura Didactică şi Pedagogică, Bucureşti, 1985.<br />

[4] Free Software Foundation, Flex - a scanner<br />

generator, http://www.gnu.org/software/flex<br />

/manual, October 2005.<br />

[5] Hunt A., Black A., Unit selection in a<br />

concatenative speech synthesis system using a<br />

large speech database, Proc. ICASSP ’96, Atlanta,<br />

GA, May 1996, pp. 373–376.<br />

[6] Lewis E., Tatham M., Word And Syllable<br />

Concatenation In Text-To-Speech Synthesis, Sixth<br />

European Conference on Speech Communications<br />

and Technology, pages 615—618, ESCA,<br />

September 1999.<br />

[7] Buza O., Vocal interractive systems, doctoral<br />

paper, Electronics and Tele-communications<br />

Faculty, Technical University of Cluj-Napoca,<br />

2005<br />

[8] Buza O., Toderean G., Syllable detection for<br />

Romanian text-to-speech synthesis, Sixth<br />

International Conference on Communications<br />

COMM’06 Bucarest, June 2006, pp. 135-138.<br />

[9] Burileanu C. et al., Text-to-Speech Synthesis<br />

for Romanian Language: Present and Future<br />

Trends, http://www.racai.ro/books/awde/<br />

burileanu.htm

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

Saved successfully!

Ooh no, something went wrong!