15.06.2013 Views

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

Teza doctorat (pdf) - Universitatea Tehnică

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!