Documente Academic
Documente Profesional
Documente Cultură
Grant:
Procesarea vorbirii este un domeniu care a evoluat mult in ultimii ani pe plan
internaţional. Dacă in urmă cu câţiva ani se făceau progrese în ceea ce priveşte găsirea unor
noi metode şi tehnici de prelucrare a semnalului vocal, acum accentul se pune pe integrarea
acestor metode performante în sisteme dedicate unor categorii diverse de utilizatori [Vei04].
Odată cu creşterea performanţelor sistemelor de calcul, utilizatorii au acum la
îndemână o gamă largă de aplicaţii pornind de la dictare automată şi introducerea de date cu
ajutorul vocii, până la servicii interactive de tip cerere-răspuns care solicită un dialog vocal
între calculator şi operatorul uman. De asemenea aplicaţiile dedicate persoanelor cu
handicap sau deficienţe de vedere sau vorbire sunt tot mai solicitate, pentru ca şi aceste
persoane să beneficieze de o integrare socială cât mai apropiată de standardele la care se
situează ceilalţi membrii ai societăţii [Ram05], [Wal01].
Procesarea vorbirii cuprinde două domenii distincte de abordare : recunoaşterea
vocii, respectiv sinteza vocală.
Astăzi se folosesc noi metode pentru sinteza de voce, care să asigure o calitate cât
mai bună a sintezei, calitate apropiata de vorbirea naturala. Metodele cele mai utilizate se
bazează pe principiul PSOLA (Pitch Synchronous Overlap and Add), in care procesarea
vorbirii se realizează in domeniul timp [Hos00], [Tat05], [Tro02] sau metode bazate pe corpus,
care folosesc cantităţi mari de date achiziţionate in urma rostirii naturale a unui text [Mob00].
Situaţia internă
Deşi există rezultate bune in domeniu obţinute de fiecare colectiv de cercetare, totuşi
nu s-a realizat o unificare a eforturilor care să ducă la realizarea unor produse bazate pe
tehnologia vorbirii conforme cu standardele internationale, care să poată fi integrate in
aplicaţii software de sine-stătătoare. Este de notat ca in acest moment nu există nici un
motor de sinteză pentru limba română care să respecte standardul text-to-speech stipulat de
Microsoft – SAPI 5.1 [Mon05]. Piaţa românească este incă in aşteptarea unor aplicaţii viabile
de recunoaştere şi sinteză de voce specializate pentru limba română.
Astfel, incepând din anul 2001, Microsoft livrează un SDK (Software Developer Kit)
special conceput pentru dezvoltatorii de software, numit Speech API (SAPI) – actualmente
ajuns la versiunea 5.1. Din anul 2003, Microsoft mai ofera o unealtă de dezvoltare ce poate fi
utilizată alături de SAPI 5.1, numită Microsoft Speech Server. Acesta este o extensie a
platformei ASP.NET pentru accesarea prin voce a unei game largi de dispozitive.
Dezvoltatorii de aplicaţii pot astfel îmbina tehnologia Web, serviciile de procesare a vocii şi
capabilitatile de telefonie mobilă [Mon05].
In domeniul recunoaşterii de voce trebuie amintite marile companii IBM, Lernout &
Hauspie (care a achizitionat Dragon Systems in anul 2000), Apple si Philips. Acestea ofera
pachete cu funcţii vocale de bază sau versiuni mai sofisticate, cu preturi mai mari. Pachetele
de software pentru recunoaşterea vorbirii se adaptează la utilizatorul individual, în funcţie de
voce, timbru si accent [His05] .
ScanSoft, partener IBM, oferă aplicaţii diverse bazate pe voce, cum ar fi: dictare
automata, comanda aplicaţiilor prin voce, motoare Text to Speech, verificarea vorbitorului,
aplicatii de prelucrare a vocii pentru telefonia mobila,etc. Firma Sensory System este axată
pe dezvoltarea de aplicaţii destinate comunicarii in limbaj natural cu dispozitive de diverse
genuri: calculatoare desktop, handheld sau PDA, telefoane celulare, dispozitive automotive
(kituri hands free, localizare prin radio, navigaţie automată).
Dintre aplicaţiile care implementează tehnologia vorbirii la nivel desktop se pot aminti:
Dragon Naturally Speaking al firmei Lernout & Hauspie, care ofera module de dictare
automata si comanda aplicaţiilor prin voce, Microsoft Office XP si Lotus Smartsuite, care au
integrate motoare de recunoastere vocala si dictare pentru limba engleza, Scansoft
OpenSpeech, ce implementeaza un motor de recunoastere automata a vocii (Automatic
Speech Recognition ASR) pentru VoiceXML – cel mai nou standard pentru sisteme bazate pe
voce. De asemenea mai trebuie amintit şi sistemul de operare OS/2 Warp de la IBM, care
permite manipularea calculatorului prin comenzi vocale [His05].
Deşi cercetările din ultimele două decenii si-au adus o contributie majoră în
tehnologia sintezei şi recunoaşterii vorbirii, existând multe firme internationale care
oferă produse variate pe piata utilizatorilor, totuşi mai sunt incă de rezolvat anumite
aspecte ce ţin de performanta aplicatiilor şi implementarea unor metode mai adecvate
pentru analiza şi sinteza vorbirii naturale, cum ar fi: sinteza de voce de calitate naturala,
recunoaşterea vorbirii in condiţii reale nerestricţionate, recunoaşterea fără ambiguităţi a
semanticii vorbirii umane directe [Tod05].
Tehnica cea mai utilizată în codarea semnalului vocal este tehnica modulării
impulsurilor în cod (PCM – « Pulse Code Modulation ») [Vla97]. Folosind codarea PCM,
fiecare eşantion al semnalului este cuantizat (i se atribuie o valoare numerică) independent
de celelalte eşantioane. Astfel, un codor PCM determină nivelul de cuantizare al fiecărui
eşantion fără să ţină cont de nivelul eşantioanelor precedente, iar apoi atribuie acestui nivel
de cuantizare un cod binar (numit cuvânt de cod), ce reprezintă forma codată a semnalului. Ϊn
tehnica PCM există diferite moduri de cuantizare a valorii fiecărui eşantion şi de asociere a
cuvintelor de cod pentru un nivel de cuantizare. Cele mai uzuale tehnici folosite sunt codarea
liniară şi codarea logaritmică [Vla97] :
Dacă în cazul codării PCM cuvântul de cod se reprezintă printr-un număr fix de cifre
binare, există metode care generează coduri de lungime variabilă. Codarea entropică este
o astfel de metodă, care urmăreşte codarea semnalului pe grupuri de eşantioane care au
valori apropiate, situate într-o subclasă a valorilor totale posibile. Astfel, pentru fiecare grup
de astfel de eşantioane, cuvântul de cod se generează pe un număr de biţi mai mic decât
numărul de biţi ce ar fi necesar pentru codarea plajei totale de valori pentru eşantioane. Un
exemplu de codare entropică de lungime variabilă este codarea Huffman, care presupune o
parcurgere a-priori a semnalului pentru gruparea eşantioanelor şi stabilirea claselor de valori.
Codarea Huffman poate de exemplu folosi o grupare a valorilor eşantioanelor pe segmente
corespunzătoare vocalelor şi consoanelor, în cazul consoanelor (care au valori ale
eşantioanelor mult mai mici comparativ cu vocalele) putându-se folosi o codificare mai
condensată. Spre deosebire de codarea Huffman, codarea aritmetică nu codează
eşantioanele pe grupe sau blocuri, ci ea caută secvenţe de valori identice ale semnalului,
cărora le atribuie anumite simboluri dintr-un dicţionar sau cuvinte de cod.
i(n)
x(n) e(n)
Q
-
xp(n| n-1,n-2,...,n-p)
ep(n)
xp(n)
Predictor
Ϊn figura 2.1, e(n) este diferenţa dintre eşantionul de intrare x(n) şi o predicţie a
eşantionului notată cu xp(n| n-1,n-2,...,n-p). Această predicţie se calculează ca o combinaţie
liniară a unui număr de p eşantioane care au fost transmise anterior:
p
x p (n | n − 1, n − 2,..., n − p ) = ∑ a k x p (n − k ) , (2.1)
k =1
e(n) b(n) = ±1
Q
-
xp(n| n-1) G
Informaţia
xp(n) de adaptare
Predictor
Zgomot granular
Zgomot de
suprapantă
Tehnicile de modulaţie delta adaptivă cel mai des folosite sunt modulaţia delta cu
pantă variabilă şi modulaţia delta cu adaptare instantanee.
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.
Gn = Gn −1 M (bn −1 , bn −2 ) , (2.6)
unde M ia una din două valori după cum bn-1, bn-2 sunt sau nu de acelaşi semn : M va fi
supraunitar pentru predicţia de suprapantă, şi subunitar pentru predicţia de granularitate.
Deosebirea dintre cele două metode este că adaptarea silabică este mai lentă, având
ca efect micşorarea zgomotului de granularitate, dar şi creşterea zgomotului de suprapantă.
La adaptarea instantanee creşte zgomotul de granularitate, dar algoritmul se adaptează rapid
la variaţiile de suprapantă.
Codarea predictivă DPCM şi cea adaptivă ADPCM descrise anterior, din cauza
faptului că ele reduc debitul de date prin codare, se folosesc de asemeni şi în procesul de
compresie a semnalului vocal. Bazată pe tehnica ADPCM, mai există o metodă de compresie
pe subbenzi numită SB-ADPCM. Lărgimea de bandă disponibilă este împărţită pe mai multe
subbenzi separate, pe care apoi este aplicat algoritmul adaptiv de modulare diferenţială a
impulsurilor în cod, crescând astfel acurateţea codării precum şi lărgimea de bandă care
poate fi transmisă. Rata de date la aceste metode variază între 64kbps şi 48kbps [Vla97].
O altă metodă de compresie este numită compresia prin transformări, în care se
urmăreşte împărţirea semnalului de la intrare în segmente sau blocuri şi obţinerea unei
transformări digitale pentru fiecare segment sau bloc de date considerat. Pentru fiecare
segment se calculează anumiţi coeficienţi de transformare, care vor condensa energia
semnalului şi vor fi transmişi pe canalul de comunicaţie.
Principiul compresiei prin transformări, ilustrat în figura 2.4, este următorul :
Dacă la intrare avem un vector N-dimensional U(1..N), cu valoare medie nulă, printr-o
transformare liniară A obţinem un vector complex V(1..N) cu componente care sunt
necorelate mutual. Componentele din vectorul V se cuantizează independent şi se transmit
pe canal. La receptor, vectorului Vc obţinut din cuantizarea lui V i se aplică o transformare
inversă B pentru a recompune aproximarea vectorului iniţial U, care este Ur.
U V Vc Ur
Ϊn ultimii ani au fost create de către diverse firme pe plan internaţional câteva
standarde de compresie foarte performante, ce se adresează nu doar semnalului vocal, ci
semnalului audio în general. Dintre acestea amintim: TrueSpeech, MPEG, FLAC,
Lernot&Hauspie SBC, IMC, Microsoft, Ogg Vorbis, Qdesign, Atrac, Voxware,etc.
Standardul MPEG este poate cel mai cunoscut la ora actuală, oferind o calitate net
superioară a sunetului. Creat de către un grup de lucru numit Moving Picture Expert Group
(MPEG), standardul a fost utilizat pentru compresia sunetului pentru televiziunea digitală.
MPEG-audio este alcătuit dintr-o familie de trei scheme de codare şi compresie. Ele se
numesc MPEG-audio nivelul 1, nivelul 2 şi nivelul 3. Complexitatea algoritmilor creşte cu
numărul nivelului, nivelul 3 fiind cel mai complex, având performanţele cele mai bune [Vla97].
Toate cele trei nivele din standardul MPEG folosesc acelaşi principiu: o combinaţie
între codarea prin transformări şi împărţirea pe subbenzi de frecvenţă. Astfel, spectrul
semnalului este împărţit în subbenzi care se codează separat într-un mod optim.
Ţinând cont că semnalul vocal este cvasistaţionar pe segmente scurte de timp, adică
îşi păstrează proprietăţile nealterate pe parcursul fiecărui interval, metodele actuale de
prelucrare a semnalului vocal folosesc aşa-numita analiză pe termen scurt. Pentru a aborda
această modalitate de analiză, semnalul vocal este împărţit în segmente cu lungimea de 10-
30 ms, pe parcursul cărora semnalul se consideră staţionar.
Extragerea informaţiei din cadrul segmentelor de timp se face folosind o funcţie
fereastră, care are rolul de ponderare a parametrilor semnalului cu accentuarea valorilor
corespunzătoare eşantioanelor din centrului ferestrei (segmentului considerat) şi diminuarea
celor corespunzătoare marginilor ferestrei. Aceasta se face în scopul obţinerii unei estimări
netezite a parametrilor, care să permită trecerea fină de la o secvenţă de parametrii la
următoarea, corespunzător segmentelor de semnal considerate. Ϊn acelaşi scop se foloseşte
şi intercalarea segmentelor pe axa timpului, în acest caz începutul unui segment
suprapunându-se peste sfârşitul segmentului anterior. Acest tip de analiză se numeşte
analiză cu fereastră glisantă [Lup04].
Funcţiile fereastră cele mai uzuale sunt : fereastra Hamming, Hanning, fereastra
cosinus. Aceste funcţii au o formă gaussiană (prezentată în figura 2.6) pentru a asigura
ponderarea valorilor centrată pe mijlocul ferestrei.
x
Figura 2.6. Funcţie fereastră utilizată în ponderare
Mai departe, analiza semnalului vocal poate fi făcută în două moduri, ţinând cont de
domeniul de analiză: în domeniul timp şi în domeniul frecvenţă. Analiza în domeniul timp
presupune determinarea proprietăţilor semnalului vocal din studierea formei de undă a
semnalului, privită ca variaţia valorilor eşantioanelor vocale în funcţie de timp. Analiza în
domeniul frecvenţă presupune determinarea spectrului de frecvenţe a semnalului şi
determinarea parametrilor doriţi pe baza formei spectrale.
∞
1
M ( n) =
N
∑| x(m) | w(n − m)
m =−∞
, (2.7)
∞
1
E ( n) =
N
∑[ x(n) ⋅ w(n − m)]
m =−∞
2
. (2.8)
N −1
2
unde sgn(n) este funcţia semn:
+1, n ≥ 0
sgn( n) = . (2.10)
−1, n < 0
Numărul trecerilor prin zero este o caracteristică ce se foloseşte în recunoaşterea
vorbirii, precum şi în determinarea caracterului sonor/nesonor. Ϊn interiorul segmentelor
sonore numărul trecerilor prin zero este mai redus, în timp ce în segmentele nesonore acest
parametru este mai ridicat.
A. Metoda autocorelaţiei
N −k −1
Rn ( k ) = ∑[ x(m + n) w(m)][ x(n + m + k ) w(m + k )]
m =0
. (2.11)
N −1
1
D (n) =
N
∑| s
k =0
k − s k −n | , cu 0 ≤ n ≤ N − 1 . (2.12)
Analiza prin banc de filtre digitale are ca scop descompunerea semnalului în benzi de
frecvenţă şi determinarea ponderii componentelor din aceste benzi în semnalul iniţial, de
unde se va putea trage o concluzie asupra comportării în frecvenţă a semnalului vocal.
Schema bloc a unui astfel de analizor este dată în figura 2.7 [Lup04]:
x1(n)
Transformare
FTB 1
neliniară
x2(n)
Transformare
FTB 2
neliniară
x(n)
. .
. .
. .
xN(n)
Transformare
FTB N
neliniară
Semnalul iniţial x(n) este descompus în N benzi de frecvenţă prin intermediul filtrelor
trece-bandă FTB1...FTBN. Fiecare bandă este supusă apoi unei transformări neliniare pentru
deplasarea spectrului către domeniul frecvenţelor joase. Vectorii rezultaţi xk(n) pentru fiecare
subbandă vor fi analizaţi separat, iar în vederea sintezei sau recunoaşterii li se va aplica în
continuare anumiţi operatori matematici (netezire, normalizare). Deseori se foloseşte calculul
energiei vectorilor rezultaţi pentru a determina ponderea lor în alcătuirea semnalului iniţial.
B. Analiza Fourier
Analiza Fourier este cea mai răspândită metodă de analiză a semnalului vocal pentru
că ea oferă imaginea completă a componentelor semnalului pe scara frecvenţei, rezultând
astfel spectrul de frecvenţe asociat. Analiza Fourier se bazează pe proprietatea unui semnal
periodic de a putea fi descompus în componente sinusoidale, aşa cum va fi expus în capitolul
2 al prezentului referat.
Această metodă de analiză se bazează pe calculul transformatei Fourier discrete, de
forma [Mat01]:
N −1
X ( k ) = ∑x( n)e − j 2πnk / N , k = 1,2,...,N , (2.14)
n =0
Analiza prin predicţie liniară sau analiza LPC („Linear Prediction Coding”) este o
metodă eficientă de determinare a unor parametrii recursivi ai semnalului vocal, care se vor
putea folosi în cadrul procesului de sinteză sau recunoaştere a vorbirii. Analiza prin metoda
LPC se bazează pe modelul producerii vorbirii prezentat în figura 2.8:
F0 Parametrii
G tractului vocal
s(n)
Filtru variabil
Excitaţie H(z)
G G
H ( z) = p
=
A( z ) , (2.15)
1 − ∑ a k z −k
k =1
D. Analiza cepstrală
Analiza cepstrală este o metodă ce derivă din analiza Fourier, şi se utilizează pentru
determinarea unor parametrii ai semnalului vocal utili mai ales în procesul recunoaşterii
vorbirii [Tod05]. Modelul acustic pe care se bazează analiza cepstrală este asemănător cu
modelul LPC şi este prezentat în figura 2.9:
s(n)
Excitaţie Filtru variabil
e(n) h(n)
Semnalul vocal s(n) este produs de către un semnal de excitaţie e(n) corespunzător
corzilor vocale din sistemul fonator, care este filtrat de către un filtru variabil având răspunsul
la impuls h(n), ce corespunde tractului vocal. Avem astfel:
s ( n) = e( n) ⊗h( n) , (2.16)
Din ecuaţia (2.15) rezultă posibilitatea separării excitaţiei sonore de influenţa tractului
vocal, de aici rezultând şi modul de calcul al cepstrumului [Gav00]:
Astfel:
- se calculează mai întâi spectrul S(f) al semnalului prin transformata Fourier;
- se aplică logaritmul;
- se aplică transformata Fourier inversă pentru a determina cepstrumul în domeniul
timp.
c1 = −a1
n −1
k (2.19)
c n = −a n − ∑ (1 − ) ⋅ a k c n −k , 1 < n ≤ p
k =1 n
n −1
k
c n = −∑ (1 − ) ⋅ a k c n −k , n > p ,
k =1 n
E. Analiza perceptuală
Acest mod de analiză este adaptat după modul de funcţionare al sistemului
perceptual auditiv al omului, şi anume după faptul că sesizarea diferitelor tonalităţi ale
sunetelor se face pe o scară logaritmică în interiorul urechii, proporţional cu frecvenţa
fundamentală a sunetului. Astfel, răspunsul urechii umane este neliniar în raport cu
frecvenţa, ea detectând diferenţe mici de frecvenţă mai uşor la frecvenţe joase decât la
frecvenţe înalte [Lup04].
Din acest motiv au fost adoptate diferite scări neliniare de frecvenţă, pentru care se
va calcula spectrul semnalului. Cele mai cunoscute sunt scara de frecvenţă Bark şi scara
Mel. Ambele sunt scări cu comportare logaritmică obţinute prin studii realizate asupra
percepţiei umane.
Există două metode de lucru în cadrul analizei perceptuale: analiza PLP şi analiza
cepstrală Mel.
Analiza PLP („Perceptual Linear Prediction”) foloseşte scara perceptuală Bark, fiind
o combinaţie între metodele de analiză Fourier şi LPC. Etapele de analiză în cadrul metodei
PLP cuprind [Her90]:
- calculul spectrului FFT prin transformata Fourier;
- aliniere spectrală după scara Bark;
- aplicarea unui set de filtre dreptunghiulare Bark pentru emularea rezoluţiei
perceptuale a urechii umane;
- preaccentuare pentru stimularea frecvenţelor înalte;
- conversia intensitate-tărie sonoră;
- aplicarea transformatei Fourier inverse pentru obţinerea funcţiei de autocorelaţie;
- calculul coeficienţilor LPC sau cepstrali, numiţi în acest caz coeficienţi PLP.
Coeficienţii PLP de ordin inferior ne dau informaţii despre conţinutul lingvistic al
segmentului considerat (informaţii semantice), pe când coeficienţii de ordin superior sunt utili
în procesul de recunoaştere a identităţii vorbitorului [Lup04].
Analiza cepstrală Mel se aseamănă cu metoda de analiză PLP, folosindu-se în
acest caz scara de frecvenţe Mel. Spre deosebire de cazul anterior, acum se foloseşte un set
de filtre triunghiulare Mel pentru a descompune semnalul pe benzile de frecvenţă asociate cu
scara Mel. Apoi pe fiecare bandă se calculează energia medie şi se aplică transformata
cosinus pentru a obţine un set de coeficienţi numiţi coeficienţi MFCC („Mel Frequency
Cepstral Coefficients”).
Coeficienţii MFCC au dat bune rezultate în procesul de recunoaştere a vorbirii, mai
ales în combinaţie cu setul de parametrii delta specificaţi de către Furui în [Fur01].
Unităţi Secvenţe de
Text forme de undă Rostire
lexicale
SINTEZA
SINTEZA
Rostire
Figura 3.2. Modelul sintezei în domeniul frecvenţă
In faza de analiză a sintezei din domeniul frecvenţă, unităţile acustice separate din
rostirea preliminară sunt parametrizate în funcţie de caracteristicile spectrale ale semnalului
vocal. Parametrii sunt apoi înregistraţi în baza de date şi indexaţi în scopul unei regăsiri facile.
In faza de sinteză, unităţile lexicale (cuvinte, silabe, foneme) din textul de sintetizat
sunt transformate în secvenţe de parametrii regăsiţi din baza de date parametrizată.
Parametrii acustici sunt ajustaţi în funcţie de prozodia cerută, iar pe baza lor vor fi generate
formele de undă corespondente.
Avantajul metodelor bazate pe sinteza în domeniul frecvenţă constă în primul rând din
posibilitatea realizării facile a aspectelor de prozodie (ritm, accent, intonaţie) prin calculul şi
generarea corespunzătoare a parametrilor acustici şi spectrali. Un alt avantaj rezultă din
faptul că în baza de date se păstrează nu formele de undă, ca în cazul metodelor din
domeniul timp, ci parametrii acustici, ceea ce duce la o mare economie de resurse de
memorie şi computaţionale.
Ca dezavantaj se poate aminti faptul că parametrizarea rostirii de la intrare în faza de
analiză duce la aproximarea semnalului vocal şi ca urmare în faza de reconstrucţie a
semnalului de la ieşire vorbirea rezultată va avea o calitate ‚sintetică’, depărtându-se de
vorbirea naturală.
- metoda de sinteză prin predicţie liniară (LPC – Linear Prediction Coding), ce utilizează
pentru generarea semnalului vocal o serie de parametrii numiţi coeficienţi de predicţie;
- metoda de sinteză formantică, ce utilizează informaţiile despre formanţii spectrali în
procesul generării unităţilor acustice.
În continuare se prezintă trei metode cu rezultate bune în sinteză, două în domeniul timp
-metoda TD-PSOLA şi metoda bazată pe corpus, a treia în domeniul frecvenţă: metoda LPC.
Modelare matematică :
In faza de sinteză va avea loc un proces de mapare a setului de segmente s={x i(n)}
determinate anterior într-un alt set de segmente S={Xi(n)}. Segmentele Xi(n) se numesc
segmente mapate sau repoziţionate, setul S fiind un subset sau supraset al lui s, fiind
constituit din segmentele xi(n) repoziţionate pe axa timpului.
S este un subset al lui s dacă există elemente x i(n) din semnalul original care nu vor fi
utilizate în compunerea semnalului sintetizat. Dacă, dimpotrivă, în faza de sinteză se vor
utiliza dubluri ale segmentelor originale, atunci S se va constitui într-un set extins (supraset)
al lui s.
xi (n) → X i (n)
Fi → Fi
A S
(3.3)
D A → DS
i i
Ultima fază reprezintă sinteza propriu-zisă, în care are loc compunerea segmentelor
mapate Xi(n) printr-un proces de suprapunere (overlapping):
x1 ( n) + x 2 ( n)
x ( n) = (3.5)
x12 (n) + x 22 (n)
SEMNALULO
RIGINAL
x(t)
x1(t) SEGMENTELE
EXTRASE
p1(t)
T0
x2(t)
p2(t)
x1(t) T0
p1(t)
SEGMENTELE
PONDERATE
x2(t)
p2(t)
T1 > T0
X1(t) SEGMENTELE
MAPATE
p1(t)
X2(t)
p2(t)
Pentru a elimina o parte din neajunsurile metodei, au fost încercate diferite abordări
sau îmbunătăţiri. Cele mai cunoscute sunt LP-PSOLA şi MBROLA.
Tehnica LP-PSOLA („Linear Prediction PSOLA”) este o combinaţie între alogoritmul
de sinteză LPC şi algoritmul PSOLA. Metoda separă excitaţia de semnalul corespunzător
tractului vocal într-un mod asemănător metodei prin predicţie liniară LPC, folosind
minimizarea erorii e(t) a semnalului de predicţie (eroare ce se mai numeşte semnal rezidual).
Apoi algoritmul PSOLA se aplică doar pe acest semnal rezidual, care are proprietatea de a fi
decorelat în interiorul fiecărui segment considerat [Edg96].
Avantajul care apare din această abordare constă în controlul mult mai bun asupra
structurii spectrale a semnalului, precum şi în calitatea mult îmbunătăţită a tranziţiilor dintre
segmente.
Metoda MBROLA („Multiband Resynthesis Overlap and Add”), proiectată în cadrul
Facultăţii politehnice din Mons, Belgia, are avantajul de a netezi discontinuităţile spectrale ce
apar în TD-PSOLA. Metoda lucrează şi ea în domeniul timp, folosind o bază de date vocală
normalizată şi interpolări la capetele intervalelor de sinteză. Metoda este implementată în
cadrul unui sintetizor de voce care primeşte la intrare un fişier cu parametrii prozodici şi
produce vorbirea sintetizată pe baza concatenării difonemelor din baza de date vocală
[Dut93].
Metoda bazată pe corpus este o metodă relativ nouă (bazele teoretice ale metodei s-
au dezvoltat în anii 1996-1997), ce elimină unele deficienţe ale sistemelor de concatenare ce
folosesc unităţi lexicale fixe (foneme, difoneme). Metoda îmbunătăţeşte calitatea semnalului
sintetizat prin utilizarea unor segmente fonetice cât mai lungi, ştiut fiind faptul că sistemele
care folosesc îmbinări frecvente ale unităţilor lexicale pierd mult din naturaleţea vorbirii
[Hun96], [Mob00].
Metoda utilizează un corpus vorbit (o bază de date cu înregistrări din vorbirea naturală)
de dimensiuni relativ mari. În timpul sintezei se vor selecta cele mai lungi unităţi (segmente)
fonetice din acel corpus pentru generarea vorbirii. Aceasta va duce pe de o parte la
reducerea numărului de concatenări şi implicit la creşterea calităţii vorbirii, iar pe de altă parte
la reducerea necesităţilor de prelucrare a semnalului vocal prin utilizarea tehnicilor DSP (de
prelucrare digitală a semnalului)
1. Măsurarea distanţelor acustice între unităţi pentru alegerea segmentelor fonetice celor mai
potrivite.
Baza de date va conţine mai multe unităţi fonetice corespunzătoare unui anumit segment
lingvistic (de exemplu o mulţime de foneme „a”, o mulţime de silabe „ma”, etc.), iar dintre
acestea va trebui selectată doar o singură unitate, ce se potriveşte cel mai bine contextului
vorbirii.
2. Construirea optimă a bazei de date vocale în raport cu domeniul lingvistic, din punct de
vedere al vocabularului şi limbajului folosit.
De obicei se folosesc baze de date vocale ce conţin mai multe ore de vorbire înregistrată.
Baza de date este marcată pentru a ţine cont de caracteristicile prozodice.
3. Acordarea trăsăturilor unităţilor ce se concatenează. Aici se folosesc două tipuri de
trăsături: segmentale şi prozodice.
Trăsăturile segmentale se referă la concatenarea a două segmente din context lingvistic
apropiat. Astfel, este de urmărit să se concateneze două segmente cu trăsături spectrale
cât mai apropiate pentru a asigura o tranziţie cât mai fină între unităţi.
Trăsăturile prozodice se referă la concatenarea a două unităţi integrate pe aceeaşi linie
prozodică, pentru a nu apărea salturi în intonaţia şi melodicitatea vorbirii.
TC = D( UC , UT ) , (3.6)
unde:
- TC = Target Cost;
- UC reprezintă unitatea candidat;
- UT este unitatea ţintă.
CC = D( UN , UN+1 ) , (3.7)
unde:
- CC = Concatenation Cost;
- UN şi UN+1 reprezintă două unităţi fonetice succesive din semnalul sintetizat.
Unităţile acustice din baza de date vocală se adnotează prin vectori de trăsături
multidimensionali, ce conţin proprietăţile segmentale şi prozodice ale semnalului vocal.
Proprietăţile segmentale (din interiorul unităţilor fonetice) se referă la parametrii
lingvistici şi de semnal din segmentul considerat.
unde:
- VT reprezintă vectorul de trăsături al unităţii fonetice;
- L[i], C[i] reprezintă parametrii lingvistici ai unităţii;
- F0, A(n), D, X(n) reprezintă parametrii de semnal;
- ΔF(n), ΔA(n), ΔD reprezintă parametrii prozodici ai segmentului considerat, toţi
parametrii având semnificaţia indicată mai sus.
ma
ma
Text ma Baza de date
ma vocală
ma
[VT-ţintă] [VT-candidat]
ma şi na
ma şi
na
ma şi
na
ma şi na
C1222
S T12 T22 F
21 23
C 13 C
11
C1322 C1223
C1323
T13 T23
N
COST = ∑(Tij + Cij( i +1) k ) , j =1, ni ; k =1, ni +1
i =1
(3.9)
unde :
- COST este costul total al parcurgerii grafului;
- i este indicele de nivel al grafului
- N este numărul total de nivele
- j exprimă indicele unităţii curente alese de pe nivelul i ;
- k exprimă indicele unităţii alese de pe nivelul următor (i+1) ;
- ni este numărul de noduri de pe nivelul i ;
- Tij este costul unităţii curente de pe nivelul i ;
- C ij( i +1) k este costul de tranziţie dintre unitatea curentă şî unitatea următoare .
Aşadar algoritmul de găsire a căii din graf care minimizează acest cost va duce la
selecţia optimă a unităţilor (numită în literatură « unit selection »).
Calculul costurilor; măsuri ale distanţelor dintre unităţi [Mob00] :
Există două metode pentru calculul costurilor (Target Cost Tij , respectiv Concatenation
( i +1) k
Cost Cij ) din graful stărilor: metoda “Weight Space Search” şi metoda “Context
Clustering”.
Metoda calculează spaţiul total de ponderi (costuri) din graf prin intermediul unei
abordări de tip analiză-sinteză. Astfel, se iau diferite texte de intrare care se sintetizează prin
toate posibilităţile de combinare a unităţilor din baza de date. Apoi textul se rosteşte propriu-
zis de către un vorbitor uman, şi apoi se calculează distanţele dintre rostirea sintetizată şi
rostirea naturală.
Distanţele calculate în interiorul unităţilor dau costul unităţii (Target Cost), iar distanţele
calculate în vecinătatea punctelor de concatenare dau costurile de tranziţie (Concatenation
Cost).
Pentru calculul distanţelor se poate folosi distanţa euclidiană cepstrală, calculată pe
baza parametrilor de semnal ai unităţilor acustice.
unde:
- D este distanţa euclidiană cepstrală ;
- Ci, respectiv Ci’ sunt coeficienţii cepstrali ai segmentelor acustice comparate.
Metoda “Weight Space Search” este o metodă care dă rezultate bune, dar are
dezavantajul că este necesar un număr mare de rostiri pentru calculul ponderilor. Metoda
următoare nu necesită rostiri suplimentare pentru determinarea acestor ponderi, folosind
distanţe bazate pe similarităţi acustice:
[a] : Clasa 1. « masă » : Ctx=[ms] ; Costuri: [T11, CC11], ..., [T1n , CC1n];
Clasa 2. « casă » : Ctx=[cs] ; Costuri: [T21, CC21], ..., [T2n , CC2n];
Clasa 3. « fată » : Ctx=[ft] ; Costuri: [T31, CC31], ..., [T3n , CC3n];
.....
In acest exemplu, Ctx indică apariţia contextuală a fonemei, Tij este costul unităţii
(Target Cost), CCij este costul de concatenare (Concatenation Cost), aici fiind luate în
considerare ponderile asociate contextului stânga, respectiv dreapta al fonemei. Arborele de
decizie asociat acestui exemplu cu trei clase de echivalenţă este următorul:
A. Faza de analiză :
B. Faza de sinteză :
Metoda bazată pe corpus este o metodă de sinteză a vorbirii de calitate înaltă, folosind
concatenarea unităţilor acustice maximale care se găsesc înregistrate într-un corpus vocal.
Calculul vectorilor de trăsături ale unităţilor în faza de analiză ce se realizează off-line,
definirea unor ponderi care să asigure concatenarea unităţilor optime, includerea trăsăturilor
prozodice în calculul costurilor, reducerea sau chiar anularea nevoii de procesare a
semnalului vocal, toate acestea reprezintă caracteristi-cile şi totodată avantajele cele mai
importante ale metodei.
Ca dezavantaje sunt de menţionat necesitatea înregistrării, normalizării şi întreţinerii
unui corpus vocal de dimensiuni mari, precum şi faza de analiză laborioasă necesară
adnotării bazei de date cu caracteristici prozodice şi segmentale, aceste aspecte putând
reprezenta provocări majore pentru cei care vor să abordeze metoda bazată pe corpus.
Termenul de predicţie liniară a fost introdus prima dată de către N. Wiener (în 1966),
această tehnică fiind folosită într-o gamă largă de aplicaţii. În domeniul cercetării semnalului
vocal, această tehnică a fost folosită prima dată de către Itakura şi Saito (în 1968) şi Atal şi
Schroeder (în 1968), pentru analiza şi sinteza semnalului vocal.
Importanţa predicţiei liniare constă în faptul că, sursa de semnal vocal şi
caracteristicile ei spectrale pot fi reprezentate în mod exact şi eficient de un număr mic de
parametri. În plus, aceşti parametri se obţin prin calcule relativ simple.
La început această tehnică a fost dezvoltată cu scopul de a coda semnalul vocal, iar
mai apoi a devenit foarte importantă în analiza şi sinteza acestuia.
Această metodă de sinteză este cunoscută sub denumirea de sinteză LPC (Linear
Predictive Coding synthesis) şi face parte din categoria sistemelor de analiză-sinteză a
semnalului vocal (analysis by synthesis systems).
Într-un sistem de analiză-sinteză, unda vocală este sintetizată folosind o sursă de
excitaţie şi parametri de articulaţie, care au fost în prealabil extraşi cu ajutorul unui circuit care
modelează mecanismul de producere al vorbirii. Modelul sistemului fonator pe care se
bazează metoda analizei şi sintezei prin predicţie liniară este modelul ‘sursă-filtru’, model
prezentat în figura următoare:
F0 Parametrii
G tractului vocal
s(n)
Filtru variabil
Sursă H(z)
G G
H ( z) = p
=
A( z ) , (3.11)
1 − ∑ a k z −k
k =1
Astfel, metoda de sinteză LPC are ca obiectiv estimarea parametrilor unui sistem
susceptibil de a genera un semnal artificial cât mai apropiat de semnalul original. În cazul
acestei metode de sinteză, semnalul sintetizat poate fi văzut ca şi o combinaţie liniară a p
eşantioane precedente la care se adaugă şi efectul semnalului de excitaţie.
Un aspect important în analiza prin predicţie liniară este alegerea numărului de
coeficienţi de predicţie p. Acesta depinde de frecvenţa de eşantionare a semnalului: de
exemplu la o frecvenţă de eşantionare de 8 kHz se vor lua în calcul 10 –12 poli. De
asemenea numărul coeficienţilor utilizaţi este în strânsă corelare cu eroarea de predicţie.
Astfel s-a observat că eroarea de predicţie scade o dată cu creşterea numărului de coeficienţi
de predicţie luaţi în calcul.
Cu ajutorul sintezei prin predicţie liniară se poate obţine o voce sintetizată de calitate
destul se bună. Totuşi, datorită modelului - numai poli - folosit în această metodă de sinteză,
în cazul sunetelor nazalizate de exemplu, modelarea spectrală a formanţilor este de o calitate
mai slabă. În astfel de situaţii, sintetizorul LPC produce frecvent vârfuri spectrale (spectral
peaks ) a căror lăţime de bandă este prea mare, acest lucru concretizându-se în vocea
sintetizată prin apariţia unui bâzâit (‘buzzines’ ).
Pentru îmbunătăţirea determinării funcţiei de transfer a tractului vocal se pot calcula
şi zerourile pe lângă polii spectrali. Astfel, este posibilă transformarea unui pol în zerou, printr-
o dezvoltare în serie şi de asemenea, în mod asemănător se poate elimina un zerou spectral.
Această soluţie este însă incompatibilă cu cerinţa de compresie a datelor , respectiv cu
cerinţa de reducere a debitului de informaţie.
Spectrul unui fonem într-un cuvânt sau într-o propoziţie este influenţat de fonemele
vecine ca o consecinţă a coarticulării. Un astfel de spectru este foarte diferit de acelea ale
fonemelor izolate sau ale silabelor deoarece organele articulatorii nu se mişcă la fel în
vorbirea continuă ca şi în cazul rostirilor izolate. Cu toate că această problemă poate fi
evitată în cazul recunoaşterii de cuvinte izolate folosind cuvinte ca şi unităţi lingvistice de
bază, performanţele recunoaşterii continue depind de gradul de rezolvare al acestui
obstacol. În acest din urmă caz, dificultăţile sunt date de omisiunile din vorbire, cauzate
de o rostire rapidă, în care vorbitorul leagă cuvintele împreună „înghiţind” unele silabe.
2. Dificultăţi în segmentare.
Cele mai complexe sisteme de recunoaştere sunt cele care realizează recunoaşterea
continuă a vorbirii. În acest caz utilizatorul rosteşte un mesaj, iar sistemul trebuie să fie
capabil să-l înţeleagă. Printre problemele dificile de rezolvat se numără: determinarea
capetelor rostirii (vorbitorul vorbind într-o manieră liberă, fără constrângeri), efectele datorate
coarticulării sau funcţionarea în condiţii de zgomot.
Procesul de recunoaştere a vorbirii are la bază o căutare al cărei scop este găsirea
unei secvenţe de cuvinte care are probabilitatea cea mai mare de a fi generat semnalul vocal
de la intrarea sistemului. Căutarea se face pe baza aşa – numitelor ”surse de cunoştinţe”.
Acestea pot fi: un dicţionar care conţine cuvintele care pot fi recunoscute, fiecare cuvânt fiind
reprezentat ca şi o secvenţă de foneme, un model lingvistic, care ataşează o anumită
probabilitate fiecărei secvenţe de cuvinte şi un model acustic, care modelează relaţia dintre
vectorii de parametri şi foneme.
Figura 3.2.1. Structura unui sistem de recunoaştere a vorbirii.
P (Y | W ) P (W )
Wˆ = arg max .
w P (Y )
(2)
Wˆ = arg max P (Y | W ) P (W ) .
w
(3)
Primul termen din dreapta ecuaţiei de mai sus corespunde modelului acustic şi
estimează probabilitatea unei secvenţe de observaţii acustice pe baza unui şir de cuvinte. Cel
de-al doilea termen corespunde modelului lingvistic şi descrie probabilitatea unei secvenţe de
cuvinte. Astfel de modele pot conţine constrângeri sintactice şi semantice în funcţie de
cerinţele sistemului de recunoaştere. Când sunt folosite numai constrângeri semantice
modelul lingvistic se numeşte gramatică.
N
A = {aij } , unde a ij = P (qt +1 = s j | qt = s i ) , i, j =1... N şi ∑a
j =1
ij =1 (4)
În cele ce urmează vom prezenta câteva detalii legate de implementarea unui sistem
de recunoaştere a cuvintelor izolate realizat de colectivul nostru:
1. Analiza spectrală.
2. Cuantizarea vectorială.
D = ∑d ( x, Q( x ))
x
(8)
3. Antrenarea modelelor
Sistemul text-to-speech este sistemul care asigură realizarea unui proces complet de
conversie a unui text în vorbire continuă. In cadrul acestui proces sunt prezente două faze
distincte: faza de analiză lingvistică şi faza de generare a parametrilor acustici, aşa cum se
Text
prezintă în figură:
Tex
Generare
t- parametrii
Analiză Rostire
to- lingvistică acustici
Spe
Figura 3.3.1. Sistemul text-to-speech
ech
Text
Analiza lingvistică are ca scop determinarea unităţilor lingvistice din cadrul textului,
cum ar fi: propoziţii, cuvinte, silabe, foneme. Generarea parametrilor acustici urmăreşte
identificarea şi extragerea dintr-o bază de date vocală a parametrilor corespunzători unităţilor
lingvistice. Pe baza acestor parametrii, un sintetizor vocal va genera rostirea propriu-zisă.
Există trei metode de bază în sinteza text-to-speech: metoda bazată pe concatenarea
formelor de undă, metoda bazată pe analiză-sinteză, şi metoda bazată pe reguli [Bur97].
Metoda directă, bazată pe concatenarea formelor de undă, este cea mai simplă şi
presupune înregistrarea în baza de date vocală a sunetelor înregistrate ca atare (codificate
sau nu). Rostirea este generată prin alăturarea înregistrărilor ce corespund unităţilor
lingvistice al textului de sintetizat. Metoda este schematizată în figura următoare:
Metodele clasice care ilustrează această categorie sunt metoda formantică şi metoda
predicţiei liniare LPC.
Secvenţă de Compunerea
Codificare
parametrii secvenţelor Rostire
Memorare
de parametrii
Rata debitului de date în cazul metodei bazată pe analiză-sinteză este mult mai
redusă datorită avantajului parametrizării, şi anume de 2,5-9 kbit/s.
Metoda bazată pe reguli are la intrare o secvenţă de litere sau simboluri fonematice,
un set de parametrii care modelează trăsăturile prozodice ale secvenţei (cum ar fi frecvenţa
fundamentală, amplitudinea, durata), şi un set de reguli de sinteză fonetice şi lingvistice care
specifică modalităţile de recompunere a unităţilor acustice pentru a genera rostirea [Bur97].
Secvenţă de Codificare
simboluri Memorare
Trăsături Codificare Generare
prozodice Memorare parametrii Rostire
Set de Codificare
reguli Memorare
Analiza sintactică este necesară pentru a aduce textul la o formă corectă din punct
de vedere gramatical, ştiut fiind faptul că orice greşeală de scriere a unui cuvânt îl poate face
greu inteligibil în urma sintezei vocale. Astfel, cuvintele sunt confruntate cu modul corect de
scriere aşa cum apare de exemplu într-un dicţionar, şi de asemenea, în cazul limbii române,
se verifică şi corectitudinea inserării diacriticelor (`ă` `î` `ş` `ţ`).
Regulile aplicate dau pentru fiecare unitate de sintetizat o anumită corecţie la nivelul
parametrilor: frecvenţă fundamentală, amplitudine şi durată, în funcţie de tipul popoziţiei
determinat în etapa de procesare lingvistică, de locul cuvântului în propoziţie, precum şi de
locul silabei sau fonemei în cadrul cuvântului.
Simboluri fonetice
( a b c ...)
Baza de
Text date
Prozodie Cunoştinţe
vocală
Secvenţă de parametrii
( a1 a2 a3 ...)
Rostire
Preprocesare
Analiza sintaxei
Determinarea
unităţilor lingvistice
Determinarea
prozodiei locale
Regăsirea unităţilor
acustice
Concatenarea
unităţilor
Sinteza
1. Preprocesarea textului
Unităţi de măsură:
‘m’ <-> ‘metru’
‘g’ <-> ‘gram’
‘l’ <-> ‘litru’ ,
‘Hz’ <-> ‘herţi’
‘dB’ <-> ‘decibeli’
Grade universitare:
‘asist.’ <-> ‘asistent’
‘sl.’ <-> ‘şef lucrări’
‘conf.’ <-> ‘conferenţiar’
‘prof.’ <-> ‘profesor’
Grade de armată:
Dintre toate aceste categorii de informaţii, cele mai importante şi cel mai des folosite sunt
numerele. Pentru explicitarea acestora sub formă textuală, fonematică, au fost concepute
reguli lexicale speciale. Aceste reguli ţin cont de poziţia unei anumite cifre în cadrul numărului
pentru a o denomina printr-o anumită categorie verbală :
Tabelul 1.
Indice Categorie
n=0 -
n=1 zeci
n=2 sute
n=3 mii
n=4 zeci de mii
n=5 sute de mii
n=6 milioane
n=7 zeci de milioane
...
2. Analiza sintaxei
Analiza corectitudinii textului din punct de vedere al sintaxei reprezintă al doilea pas
preliminar efectuat în vederea realizării unei sinteze de vorbire de calitate. Orice greşeală de
sintaxă care apare în textul iniţial (generată de obicei prin omiterea unei litere din cuvânt sau
de omiterea diacriticelor) va duce la sinteza unui cuvânt eronat, ceea ce va avea ca efect atât
o senzaţie de notă discordantă în rostirea globală, cât şi solicitarea unui efort din partea
auditorului de recreare mentală a cuvântului corect. Acest efort induce diminuarea atenţiei
faţă de cuvintele care urmează, şi chiar la pierderea sensului întregii propoziţii care conţine
aceste cuvinte.
Pentru a înlătura aceste dezavantaje şi a realiza o sinteză de voce de calitate
ridicată, este prin urmare nevoie de un analizor de verificare a corectitudinii sintactice a
textului. Un astfel de analizor se poate proiecta prin două metode de bază : prin construirea
unui vocabular complet pentru limba respectivă, sau prin folosirea unor reguli gramaticale
sintactice, însoţite de specificarea unor condiţii de excepţie.
Prima metodă este mai completă, dar are dezavantajul unui efort mare de construire
a unui vocabular pentru acea limbă (care poate avea mai multe zeci de mii de cuvinte),
vocabular ce trebuie să conţină şi informaţii despre construirea formei flexionate a cuvintelor
(de exemplu rădăcină sau morfemă, terminaţii pentru declinare sau conjugare).
A doua metodă necesită generarea unui set de reguli pentru regăsirea formei de
bază neflexionate a cuvintelor şi verificarea corectitudinii acestora printr-un dicţionar. Metoda
are dezavantajul unui anumit grad de necompletitudine, depinzând de numărul de excepţii
introduse în analizor.
Pentru limba română s-au construit câteva variante de vocabulare ([],[]), şi un
analizor de sintaxă integrat în produsul Microsoft Office Word. Toate aceste variante au
necesitat un volum mare de muncă din partea unor echipe întregi de lingvişti şi programatori.
Autorul a propus în această lucrare o metodă bazată pe reguli gramaticale, variantă
cu un cost de proiectare mult mai redus decât în cazul realizării de vocabulare. Metoda are ca
punct de plecare generatorul automat de analizoare LEX, alimentat de o gramatică ce
specifică regulile sintactice de flexionare a cuvintelor din limba română. Pe lângă aceste
reguli au fost introduse şi un număr de excepţii care asigură un grad înalt de completitudine în
ceea ce priveşte acoperirea formelor gramaticale din limba română.
Metoda este prezentată în figura 1. La intrare se prezintă un text cursiv ce conţine
cuvinte în limba română în diferite forme flexionate. Folosind un set de reguli sintactice de
flexionare şi un set de excepţii, analizorul LEX generează forma de bază, neflexionată, a
fiecărui cuvânt de la intrare şi o caută într-un dicţionar. O interfaţă grafică va pune apoi în
evidenţă cuvintele care au o sintaxă greşită sau care nu au fost potrivite cu setul de reguli din
LEX.
LEX
REGULI
de
TEXT flexionare
Forma de
Forma bază DICŢIONAR
flexionată neflexionată
EXCEPŢII
CONJUNCTIV VIITOR
Pentru fiecare cuvânt din textul sursă se parcurge tot setul de reguli, încercându-se
potrivirea cu fiecare clasă corespunzătoare unei părţi de vorbire. Dacă se întâlneşte
terminaţia specificată de o regulă, atunci acea regulă se activează, se înlocuieşte terminaţia
curentă cu forma neflexionată precizată tot de regula respectivă, apoi se declanşează
acţiunea de verificare a existenţei formei neflexionate în dicţionar. Dacă există, cuvântul se
memorează împreună cu modul de flexionare specificat de acea regulă. Modul de flexionare
cuprinde : cazul, genul, articularea, numărul persoanei – pentru substantive , iar pentru verbe
– tipul de conjugare. Apoi cuvântul se confruntă cu următoarele reguli, generându-se în final o
listă cu toate formele găsite posibile de analizor (figura 2) :
Cuvânt neflexionat C.nf C.nf
Cuvânt flexionat C.f. C.f.
Tip dicţionar T.d. T.d.
Parte de vorbire P.v. P.v.
Număr persoane N.p. N.p.
Gen G. G.
Caz C. C.
Timp T. T.
Articulare A. A.
Regula se referă la cuvinte care au terminaţia ‘A’. În acest caz se asumă cuvântul ca
fiind substantiv, de număr singular, gen feminin, caz nominativ, articulat hotărât, având
terminaţia formei neflexionate ‘Ǎ’. Dacă avem două cuvinte :
Pentru a verifica dacă formele găsite sunt valide, se face o confruntare pe bază de
compatibilitate a categoriilor specificate de analizor prin reguli şi cele găsite din dicţionar.
Dacă cele două categorii nu sunt compatibile, atunci acea formă se elimină din listă. Dacă
sunt compatibile, atunci forma flexionată se declară validă.
Compatibilităţile dintre categoriile sintactice analizor / dicţionar sunt prezentate în
tabelul următor:
Tabelul 1.
Categorie sintactică analizor Categorie sintactică dicţionar
REGULI
SINTAXǍ
EXCEPŢII
Aşa cum am văzut anterior, prima etapă în analiza textului de sintetizat constă în
determinarea unităţilor fonetice de bază, şi anume: propoziţiile, cuvintele şi silabele. Dacă
extragerea propoziţiilor şi a cuvintelor nu ridică probleme deosebite, aceasta efectuându-se
pe baza semnelor de punctuaţie şi a caracterelor de separaţie, nu acelaşi lucru se poate
spune despre stabilirea silabelor componente ale unui cuvânt. Pentru a realiza acest
deziderat a fost necesară proiectarea unui set de reguli fonetice pentru despărţirea în silabe.
Principiul folosit la determinarea unităţilor fonetice este ilustrat în figura 5.4. Astfel,
analizorul are o structură pe trei nivele, corespunzător cu trei module având roluri distincte în
identificarea şi tratarea unităţilor fonetice. Cele trei module sunt:
Propoziţii
Reguli Analizor
sintactice Sintactic
Cuvinte
Silabe
Text
Analizor
Lexical Cifre
Reguli
Separatori
lexicale
Shell-ul program are rolul de master, apelând modulele de nivel inferior. Astfel, acesta
apelează analizorul sintactic pentru a-i returna unităţile sintactice. Analizorul sintactic va apela
la rândul lui analizorul lexical pentru parcurgerea efectivă a textului şi regăsirea unităţilor
lexicale de bază.Separatori
Propoziţie Propoziţie Separatori Propoziţie Separatori
Analizorul lexical extrage caracterele din text şi le grupează în unităţi fonetice primare.
Aici intră determinarea caracterelor alfabetice, numerice, a caracterelor speciale şi semnelor
de punctuaţie. Pe baza unor reguli de producţie lexicale, caracterele alfabetice vor fi grupate
în silabe, caracterele numerice în cifre şi numere, iar caracterele speciale şi semnele de
punctuaţie vor fi folositeSpaţiu
în determinarea cuvintelor şiPunct
Tab propoziţiilor. Virgulă
Tab ? ! ...
Analizorul sintactic preia silabele, respectiv caracterele speciale şi cifrele furnizate de
analizorul lexical şi le grupează în cuvinte şi propoziţii. Şi aici a fost necesară stabilirea unui
set de reguli sintactice pentru departajarea unităţilor fonetice corespunzătoare.
Modulul de procesare preia în final unităţile fonetice găsite anterior şi, pe baza unor
proceduri de calcul, le clasifică şi le memorează în structuri speciale. De aici vor fi preluate şi
transformate în forme de undă de către modulul de sinteză.
Cuvânt Cuvânt
Cuvânt Separatori Separatori Separatori
Întreg Real
În figura 6, unităţile care apar pe un fond de culoare mai închisă (silabele, respectiv
numerele întregi sau reale, precum şi separatorii) sunt de fapt ieşirile analizorului lexical,
adică sunt unităţi care au fost determinate prin analiza lexicală a textului. Astfel, analizorul
sintactic invocă analizorul lexical pentru a-i fi furnizat la fiecare apel unitatea lexicală
următoare din text: o silabă, un număr sau un separator.
Pe baza acestor unităţi lexicale, la acest nivel se formează unităţile sintactice de tip
cuvânt, propoziţie sau text. Analizorul sintactic are posibilitatea ca după regăsirea fiecărui tip
de unitate să apeleze o procedură de calcul pentru procesarea specifică a unităţii.
În implementarea sistemului, a fost aleasă varianta de apel de procedură doar pentru
unităţi de tipul silabei şi a separatorilor. Aceste unităţi se vor memora în interiorul analizorului
lexical care le depistează. Memorarea cuvintelor şi a propoziţiilor se va face în interiorul
modulului de procesare, şi nu la nivelul analizorului sintactic.
Text CCCCCCCCCCCCC
Reguli de
producţie
Silabă
Intreg Real Sep. 1 … Sep. n
Aşa cum se vede din figură, textul de la intrare este interpretat ca un şir de caractere.
La început, caracterul curent este clasificat în una din categoriile : cifră, caracter special sau
separator, respectiv caracter alfanumeric. Luând în considerare şi contextul anterior precum
şi contextul următor în care poate să apară, caracterul curent împreună cu caracterele
anterior parcurse se grupează pentru a alcătui o unitate lexicală : un număr, un separator sau
o silabă. Reguli de producţie specifice pentru fiecare categorie indică modul în care se
formează aceste unităţi, realizând totodată şi o subclasificare a lor (de exemplu pentru
numere dacă este întreg sau real, iar pentru separator – tipul acestuia).
Odată identificat tipul unităţii, caracterele componente sunt memorate şi transmise
analizorului sintactic prin intermediul unor proceduri numerice (Tratare_număr,
Tratare_separator, Tratare_silabă).
SN_2
Analizor
F1 F2 ... Fn Sep lexical
CUVÂNT SN_1
SN
Parserul de text sau analizorul sintactic returnează cuvântul curent din stream-ul de
intrare, cuvânt alcătuit dintr-o serie de foneme şi terminat cu un separator. Cuvântul este
introdus la intrarea analizorului lexical care, pe baza unor reguli lexicale, va determina silaba
accentuată din cuvânt. În limba română, silaba accentuată este una din ultimele trei silabe ale
cuvântului (SN = ultima silabă, SN_1 = penultima silabă, respectiv SN_2, SN_3 = silabele
anterioare). Regulile sunt constituite dintr-o regulă de bază, şi anume aceea că penultima
silabă este cea accentuată (regula generală pentru limba română), respectiv un set consistent
de excepţii organizat pe grupuri de cuvinte ce au terminaţii comune.
Analizorul lexical pentru determinarea accentelor a fost proiectat tot pe baza
facilităţilor oferite de către generatorul automat LEX. Astfel regulile analizorului sunt furnizate
generatorului LEX în format BNF, stream-ul de intrare fiind chiar cuvântul curent extras din
text de către analizorul sintactic.
În această etapă se urmăreşte mai intâi regăsirea unităţilor acustice din baza de date
necesare pentru sinteză. Aceasta înseamnă potrivirea unităţilor lingvistice determinate pe
baza analizei textului de la intrare, cu unităţile acustice înregistrate în baza de date. Pot exista
următoarele situaţii:
a). Silaba dorită să fie regăsită identic în baza de date vocală, atât din punct de
vedere fonetic, cât şi din punct de vedere prozodic. În acest caz silaba se reţine ca atare
pentru a fi înglobată în cuvântul de sintetizat.
b). Silaba este regăsită fonetic, dar nu şi prozodic. Se preferă în acest caz
constituirea acesteia din silabe şi foneme mai scurte, care să respecte prozodia cerută (silabă
accentuată sau neaccentuată).
c). Silaba nu este regăsită fonetic în baza de date. Şi in acest caz silaba va fi
compusă pe baza fonemelor separate extrase din baza de date.
Urmează apoi îmbinarea unităţilor acustice regăsite din baza vocală. Unităţile se
concatenează cu pauze corespunzătoare pauzei dintre cuvinte, care se va ajusta în funcţie
de ritmul cerut vorbirii.
Şi în fine, ultima fază este cea de sinteză propriu-zisă, în care formele de undă
corespunzătoare textului de la intrare sunt redate sonor prin intermediul plăcii audio a
calculatorului.
Implementare
Baza de
date
vocală
Prima etapă în proiectarea sistemului a fost construirea unei baze de date vocale.
În cazul sistemului LIGHTVOX, baza de date vocală cuprinde formele de undă asociate
silabelor limbii române.
O primă etapă de analiză este extragerea unităţilor fonetice din textul prezentat la
intrare. La început se analizează semnele de punctuaţie existente în text, în funcţie de care
separă propoziţiile. Semnele de punctuaţie dau un indiciu şi despre tipul propoziţiei
(afirmativă, interogativă, imperativă), de mare importanţă pentru determinarea intonaţiei şi
accentuării elementelor propoziţionale.
Fiecare propoziţie este apoi împărţită în cuvinte, pe baza caracterelor textuale
despărţitoare. În această fază s-a inserat o etapă de preprocesare a textului, în care cifrele
existente să fie transcrise sub formă literală, iar abrevierile din text să fie expandate în cuvinte
întregi.
Etapa cea mai importantă care urmează este stabilirea silabelor componente din
cadrul unui cuvânt. Pentru această etapă a fost necesară o analiză lexicală bazată pe
determinarea unui set de reguli de despărţire în silabe a cuvintelor, reguli care sunt specifice
pentru limba română. Regulile cuprind un nucleu de elemente de ordin global, şi un set de
excepţii ataşat acestui nucleu. Rolul acestui set de reguli este de a determina fonemele
componente ale fiecărei silabe din cadrul unui cuvânt.
Analizorul lingvistic pentru despărţirea în silabe are o structură alcătuită din trei
module: analizorul lexical, analizorul sintactic şi modulul de procesare
Analizorul lexical extrage caracterele din text şi le grupează în unităţi fonetice
primare. Aici intră determinarea caracterelor alfabetice, numerice, a caracterelor speciale şi
semnelor de punctuaţie. Pe baza unor reguli de producţie lexicale, caracterele alfabetice vor fi
grupate în silabe, caracterele numerice în cifre şi numere, iar caracterele speciale şi semnele
de punctuaţie vor fi folosite în determinarea cuvintelor şi propoziţiilor.
Analizorul sintactic preia silabele, respectiv caracterele speciale şi cifrele furnizate de
analizorul lexical şi le grupează în cuvinte şi propoziţii. Şi aici a fost necesară stabilirea unui
set de reguli sintactice pentru departajarea unităţilor fonetice corespunzătoare.
Modulul de procesare preia în final unităţile fonetice găsite anterior şi, pe baza unor
proceduri de calcul, le clasifică şi le memorează în structuri speciale. De aici vor fi preluate şi
transformate în forme de undă de către modulul de sinteză.
Analizorul lexical pentru determinarea silabelor a fost proiectat pe baza facilităţilor
oferite de către generatorul automat LEX, care generează un parser de text pe baza regulilor
de producţie furnizate.
După etapa de despărţire în silabe, urmează etapa de determinare a accentelor din
interiorul cuvintelor. Folosind un al doilea analizor lexical, de data aceasta proiectat pentru
determinarea accentelor, au fost stabilite silabele accentuate, respectiv silabele neaccentuate
din cadrul cuvintelor care au fost extrase în etapa anterioară.
Parserul de text sau analizorul sintactic returnează cuvântul curent din stream-ul de
intrare, cuvânt alcătuit dintr-o serie de foneme şi terminat cu un separator. Cuvântul este
introdus la intrarea analizorului lexical care, pe baza unor reguli lexicale, va determina silaba
accentuată din cuvânt. În limba română, silaba accentuată este una din ultimele trei silabe ale
cuvântului (SN = ultima silabă, SN_1 = penultima silabă, respectiv SN_2, SN_3 = silabele
anterioare).
Regulile de accentuare sunt constituite dintr-o regulă de bază, şi anume aceea că
penultima silabă este cea accentuată (regula generală pentru limba română), respectiv un set
consistent de excepţii organizat pe grupuri de cuvinte ce au terminaţii comune.
Urmează apoi faza de potrivire a unităţilor fonetice, determinate pe baza analizei
textului de la intrare, cu unităţile acustice înregistrate în baza de date. Aici pot exista
următoarele situaţii:
a) silaba dorită este regăsită identic în baza de date vocală, atât din punct de vedere
fonetic, cât şi din punct de vedere prozodic. În acest caz silaba se reţine ca atare pentru a fi
înglobată în cuvântul de sintetizat.
b) silaba este regăsită fonetic, dar nu şi prozodic. Se preferă în acest caz constituirea
acesteia din silabe şi foneme mai scurte, care să respecte prozodia cerută (silabă accentuată
sau neaccentuată).
c) silaba nu este regăsită fonetic în baza de date. Şi in acest caz silaba va fi compusă
pe baza fonemelor separate extrase din baza de date.
Urmează apoi îmbinarea unităţilor acustice regăsite din baza vocală. Unităţile se
concatenează cu pauze corespunzătoare pauzei dintre cuvinte, care se ajustează în funcţie
de ritmul cerut vorbirii.
Şi în fine, ultima fază este cea de sinteză propriu-zisă, în care formele de undă
corespunzătoare textului de la intrare sunt redate sonor prin intermediul plăcii audio a
calculatorului.
Tot în această fază a proiectării au fost proiectate baza de date în format electronic
(biblioteca de cărţi electronice), precum şi interfaţa de acces vocal la această bază de
date. De asemeni a fost realizat şi testat prototipul final al aplicaţiei.
Biblioteca de cărţi în format electronic a fost realizată prin conversia în format text
electronic a unor cărţi din diferite domenii de activitate, rezultând o minibibiotecă electronică
ordonată după autori. Conversia a fost făcută respectând standardul ASCII format Windows
Central European, prin preluarea unor documente în regim free de pe Internet, respectiv prin
scanarea unor cărţi şi utilizarea unui program OCR pentru recunoaşterea caracterelor.
Interfaţa de acces vocal permite utilizatorului alegerea unui autor prin intermediul
tastaturii (în cazul unui nevăzător, acesta va folosi o tastatură specială ce are aplicate
caractere de tip Braille), apoi citirea automată prin intermediul programului a titlurilor
disponibile, şi în final selectarea titlului dorit. Prin intermediul unor comenzi de la tastatură de
tip shortcut, nevăzătorul poate audia cartea electronică solicitată, poate întrerupe audierea
sau poate reasculta ultima frază rostită.
Concluzie:
În această ultimă fază a proiectării a fost realizat prototipul unui sistem vocal
interactiv pe bază de sinteză de voce, destinat a fi utilizat de către persoanele nevăzătoare. A
fost implementată o metodă proprie de sinteză vocală bazată pe concatenarea silabelor. A
fost construită o bibliotecă de cărţi electronice şi o interfaţă de acces vocal la această
bibliotecă ce poate fi accesată de către nevăzători.
Sistemul a fost testat pe o configuraţie locală, urmând implementarea pe o reţea de
calculatoare, precum şi perfecţionarea în funcţie de cerinţele directe ale persoanelor
nevăzătoare.
Bibliografie :
[Bur05] Burileanu C., Oancea E., Radu M., Text-to-Speech Synthesis for Romanian
Language: Present and Future Trends, http://www.racai.ro/books/awde/ burileanu. htm
2005
[Bur97] Burileanu C. & al., Text-to-Speech Synthesis for Romanian Language, în Recent
Advances in Romanian LanguageTechnology, Editura Academiei Române, Bucureşti, 1997
[Buz 06] Buza O., Toderean G., Syllable detection for Romanian text-to-speech synthesis,
Sixth International Conference on Communications COMM’06 Bucharest, June 2006, pp.
135-138.
[Buz 07] Buza O., Toderean G., A Romanian Syllable-Based Text-To-Speech System, 6th
WSEAS International Conference on Signal Processing, Robotics and Automation (ISPRA
'07), CD-Rom Proceedings, Corfu Island, Greece, February 16-19, 2007
[Feh93] Feher, K., Comunicaţii digitale avansate, Editura Tehnică Bucureşti, 1993.
[Fur01] Furui, S., Digital Speech Processing. Syntesis and Recognition, Marcel Dekker
Publications, 2001.
[Her90] Hermansky, H., Perceptual linear predictive (pip) analysis for speech, The Journal of
The Acoustical Society of America, vol. 87, pp.1738-1752, apr. 1990.
[Her92] Hermansky, H., Morgan, N., RASTA-PLP Speech Analysis Technique, IEEE Trans.
Speech and Audio, vol. 1, pp. 121-124, 1992.
[Jur00] Juravski D., Speech and language processing : an introduction to natural language
processing, computational linguistics, and speech recognition, 2000
[Kai00] Kaiser, E.C., Book Review: Extended Finite State Models of Langauge, in
Computational Linguistics, vol. 26, num. 2, pp. 282-285, Jun, 2000
[Kai01] Alexander B. Kain, High Resolution Voice Transformation, OGI School of Science &
Engineering at Oregon Health & Science University, 2001
[Kes04] Judith M. Kessens and Helmer Strik, On automatic phonetic transcription quality:
lower word error rates do not guarantee better transcriptions, Computer Speech & Language,
Volume 18, Issue 2, Pages 123-141, 2004
[Kla02] E. Klabbers, J. van Santen and J. Wouters, Prosodic Factors for Predicting Local
Pitch Shape, in IEEE Workshop on Speech Synthesis, Santa Monica, CA, USA, 2002
[Lup04] Lupu E., Pop P., Prelucrarea numerică a semnalului vocal, vol.1, Ed. Risoprint, 2004.
[Mah00] Mahomed, M. and Gader, P., Generalized Hidden Markov Models. IEEE
Transactions on Fuzzy Systems, 2:67–93, 2000
[Mob00] Mobius B., Corpus-based speech synthesis: methods and challenges. In:
Arbeitspapiere des Instituts für Maschinelle Sprachverarbeitung (Univ. Stuttgart), AIMS 6 (4),
pp. 87–116, 2000
[Mon05] Elizabeth Montalbano, Microsoft Gets Exchange to Speak Up, PC World, August 02,
2005
[Ram05] Ramon Lopez Cozar Delgado, Masahiro Araki, Spoken, Multilingual and Multimodal
Dialogue Systems: Development and Assessment, ISBN: 0-470-02155-1, Wiley Publisher
House, September 2005
[Ros04] A-V. I. Rosti and M. J. F. Gales, Factor analysed hidden Markov models for speech
recognition, Computer Speech & Language, Volume 18, Issue 2, Pages 181-200, April 2004
[Tat05] Mark Tatham , Katherine Morton, Developments in Speech Synthesis, ISBN: 0-470-
85538-X, Wiley Publisher House, 2005
[Tod05] G. Toderean, Al. Caruntu, Metode de recunoaştere a vorbirii, Editura Risoprint, Cluj-
Napoca, 2005.
[Tuf01] Tufis, D. and Barbu, A.M., Automatic construction of translation lexicons, Advances in
Automation, Multimedia, Video System and Modern Computer Science, Electrical and
Computer Engineering Series, WSES Press, http://www.worldses.org, pp. 156–161, 2001
[Vei04] Veikko Surakka, Marko Illi, Gazing and frowning as a new human--computer
interaction technique, ACM Transactions on Applied Perception (TAP), Volume 1 , Issue 1,
July 2004,Pages: 40 – 56, ISSN:1544-3558, 2004
[Vla97] Vlaicu A., Dobrotă V., Tehnologii Multimedia – Sisteme, reţele şi aplicaţii, Editura
UTCN, Cluj-Napoca, 1997
[Wal01] Patricia Walsh, Randy Lundquist, and John A. Gardner, The Audio-Accessible
Graphing Calculator, Proceedings of the 2001 CSUN International Conference on Technology
and Persons with Disabilities, Los Angeles, CA, March 21-24, 2001
[Wou00] Johan Wouters and Michael W. Macon, Unit Fusion for Concatenative Speech
Synthesis, in Proceedings of the International Conference on Spoken Language Processing
(ICSLP), Oct, 2000
Director de proiect,
Prof. Dr. Ing. Gavril Toderean