Îmbunătățirea Dicționarului Determinist
Îmbunătățirea dicționarului determinist [5]
Pentru dicționarul determinist prezentat se poate interpreta că menirea celor 12 elemente nenule din fiecare vector este de-a diviza vectorul în 12 segmente („clusters”) . Primul cluster conține eșantioanele r0, …,r4, al doilea cluster r5, …,r9 etc. Semnul elementului nenul din fiecare cluster determină dacă clusterul respectiv este „pozitiv” sau „negativ”. Pentru că s-au alocat 9 biți pentru indexul dicționarului fix, dar avem12 elemente nenule într-un vector, a fost necesară condiția de-a permite numai un număr par de –1 în fiecare subvector, pentru reducerea dimensiunii dicționarului fix de la 212 vectori la 29 vectori. Evident această restricție limitează capacitatea fiecărui din cele 12 elemente nenule de-a determina semnul clusterului corespunzător. Această limitare duce la creșterea erorii de codare. Ideea de îmbunătățire a dicționarului determinist ar fi folosirea a 9 elemente nenule în fiecare vector din dicționar. Asfel fiecare element nenul poate fi –1 sau 1 rezultând o dimensiune a dicționarului de 29 vectori. Fiecare vector este împărțit în 9 clustere și nu mai există nici o restricție asupra semnelor clusterelor.
Libertatea de-a stabili semnul fiecărui cluster duce la reducerea complexității de calcul și la creșterea robusteții la erori.
Deoarece 9 nu este un divizor a lui 60 nu se pot obține dimensiuni egale ale clusterelor ca în cazul cu 12 elemente nenule. Astfel se vor fixa pozițiile celor 9 elemente nenule cât mai uniform posibil în cadrul vectorilor de dimensiune 60. Dacă se aleg dimensiunile celor 9 clustere 7, 7, 6, 7, 7, 6, 7, 7, 6 se obține dimensiunea vectorilor egală cu 60.
Vectorii de excitație în urma filtrării prin filtrul de ponderare perceptuală vor fi de forma:
h0h1h2h3h4h5h6 h0h1h2h3h4h5 h0h1h2h3h4h5 ……….. (60 de eșantioane) (6.30)
În cazul folosirii a 12 elemente nenule a fost necesară trunchierea răspunsului la impuls la la 5, păstrându-se doar h0, …, h4. Aici se utilizează h0, …, h6 sau h0, …, h5 dependent de dimensiunea fiecărui cluster.
Toți vectorii au aceeași valoare a energiei:
(6.31)
deci nu este necesar calculul ei
În ceea ce privește produsele scalare trebuie să determinăm următorii 9 termeni:
(6.32)
Acești 9 termeni se adună sau se scad (în funcție de semnul elementelor nenule) și se obțin cele 29 produse scalare. Dar, în cazul acestei structuri de dicționar determinist calculul produselor scalare nu este necesar. Dacă selectăm semnele elementelor nenule astfel încât acestea să fie egale cu semnele eșantioanelor de semnal rezidual ponderate perceptual determinate în relațiile 6.32 atunci valoarea produsului scalar va fi maximă. Astfel cei 9 biți ai indexului vectorului optim sunt dați de semnele celor 9 eșantioane de semnal rezidual ponderat perceptual.
În concluzie pentru găsirea indexului vectorului optim este suficientă calcularea celor 9 termeni din relațiile 3.18: 60 înmulțiri și 51 de adunări, rezultând un total de 111 operații/7,5ms = 0,015 MIPS.
Însă beneficiul real al acestui dicționar este robustețea la erori. Deoarece fiecare bit al indexului codează 1/9 din vectorul optim , dacă un bit este eronat numai 1/9 din vector va fi decodat incorect. În cazul dicționarului stohastic dacă un bit este eronat la decodor se va obține un vector total diferit.
Implementarea software a vocoderului LPC
Schema bloc a vocoderului LPC-FS 1016
Am ales pentru implementarea practică a acestui sistem vocoder algoritmul LPC-10, standardul federal FS 1016. După cum am mai menționat, Codarea Liniar Predictivă este una dintre posibilele metode de analiză și sinteză a semnalului vocal. Metoda LPC a fost folosită într-o gamă largă de aplicații de-a lungul timpului.. Rata de transmisie a vocoderului LPC-10 este de aproximativ 4,8kbiți/s. Chiar dacă vorbirea sintetizată astfel sună artificial, mecanic, aceasta este inteligibilă.
Pentru analiza și sinteza semnalelor vocale voi folosi, după cum am spus, metoda de codare liniar predictivă. Această metodă este folosită cu succes la estimarea parametrilor de bază ai vorbirii cum sunt frecvența tonului fundamental, formanții și spectrul. O schemă bloc a vocoderului LPC se poate observa și în Figura 6.1.Principiul metodei este minimizarea erorii medii pătratice dintre semnalul original și cel estimat pentru o perioadă finită.
Fig.7.1. Diagrama bloc a unui vocoder LPC [17].
Acesta schema bloc a vocoderului LPC va fi modelata conform standardului de transmisie federal FS 1016 de 4,8Kb/s.
Standardul FS 1016 conține pe lângă principiile de bază ale codării CELP trăsături și modificări pentru a îmbunătăți atât calitatea vocii cât și eficiența de calcul. Structura acestui codor a avut o influență asupra altor algoritmi de codare bazați pe CELP.
Standardul FS 1016 îmbunătățește predictorul pe termen lung prin introducerea conceptului de dicționar adaptiv, folosind o metodă de analiză prin sinteză în buclă închisă.
Codorul FS 1016 este prezentat în figura 7.2. Acesta utilizează o frecvență de eșantionare a semnalului vocal de 8KHz, iar dimensiunea cadrelor (a ferestrei de analiză) este de 30 ms. Un cadru este împărțit în 4 subcadre de 7,5 ms.
Semnalul sintetizat este obținut prin trecerea semnalului de excitație prin filtrul de sinteză pe termen scurt. Semnalul de excitație este rezultatul adunării a două excitații fundamentale: prima este un vector de cod extras dintr-un dicționar adaptiv având indicele ia și ponderat de un câștig ga , iar cea de-a doua este un vector de cod extras dintr-un dicționar stohastic cu indicele is și ponderat de un câștig gs.
Etapa de analiză a codorului CELP constă în găsirea parametrilor excitației (indicii și câștigurile) astfel încât eroarea perceptuală (eroarea între semnalul de voce original și semnalul sintetizat filtrată prin filtrul de ponderare perceptuală) să fie minimă. Pentru ponderarea perceptuală se folosește un filtru W(z), cu y=0,8. Analiza se realizează în buclă închisă.
Analiza de predicție liniară pe termen scurt este realizată o dată pe cadru în buclă deschisă. Semnalul de intrare pentru analiza de predicție liniară este semnalul vocal original. Fiecare cadru de 30 ms conține 240 eșantioane. Analiza de predicție pe termen scurt constă în estimarea a 10 coeficienți de predicție pin metoda autocorelației aplicată cadrelor de 30 ms ponderate de ferestre Hamming.
Coeficienții LPC rezultați sunt supuși unei operații de expandare a lărgimii de bandă cu o y=0.994. Această operație este necesară deoarece filtrul de sinteză rezultant poate deveni stabil la limită în cazul în care polii filtrului se află prea aproape de cercul unitate, iar în urma cuantizării LPC și a pierderii de precizie în timpul procesării folosind un procesor cu virgulă fixă un filtru stabil la limită poate deveni instabil (cu polii în afara cercului unitate). Problema instabilității filtrului de sinteză poate crea ocazional distorsiuni sau oscilații în semnalul sintetizat. Stabilitatea poate fi îmbunătățită modificând coeficienții LPC conform relației a’i =yiai (y<1) , i = 1, 2 ,… , p, p fiind ordinul de predicție (în cazul FS1016 p =10). Această operație duce la deplasarea polilor filtrului de sinteză radial înspre origine. Procedând astfel spectrul original este expandat în bandă în sensul că spectrul devine mai neted, în special în jurul vârfurilor unde lărgimea de bandă este expandată. Coeficienții a’i =yiai definesc filtrul de sinteză pe termen scurt 1/(1+A(z)).
Coeficienții a’i sunt convertiți în LSP (Line Spectral Pairs), deoarece coeficienții LSP sunt mai bine adaptați pentru transmisie.
Datorită relației dintre coeficienții LSP și fecvențele rezonante ale tractului vocal valorile coeficienților LSP nu se vor schimba radical. Deci, se pot interpola fără a cauza prea multe distorsiuni, și putem utiliza un set de LSP pentru 240 eșantioane (un cadru), în loc de 60 eșantioane (un subcadru). În procesarea de subcadru avem nevoie de LSP pentru a calcula semnalul rezidual. Acești LSP rezultă prin interpolare.
În cadrul FS 1016 analiza de predicție liniară se realizează o dată pe cadru utilizând o fereastră Hamming centrată pe sfârșitul cadrului. Coeficienții LPC sunt transformați în LSP cuantizați și interpolați liniar spre a forma un set intermediar pentru fiecare din cele 4 subcadre. Procedura de interpolare folosește două seturi de LSP. Pentru „cadrul curent” din figura 7.3 primul set de LSP este obținut din fereastra de analiză centrată pe sfârșitul cadrului anterior (începutul cadrului curent). Cel de-al doilea set de LSP este obținut din fereastra de analiză centrată pe sfârșitul cadrului curent (începutul cadrului următor). Fie f1, f2, … , f10 primul set de LSP, iar g1, g2, … , g10 al doilea set de LSP.
Coeficienții LSP pentru subcadrele cadrului curent sunt interpolați în felul următor:
(7/8)f + (1/8)g – pentru subcadrul 1;
(5/8)f + (3/8)g – pentru subcadrul 2;
(3/8)f + (5/8)g – pentru subcadrul 3;
(1/8)f + (7/8)g – pentru subcadrul 4.
Se observă din figura 7.3 că operația de interpolare va cauza o întârziere de codare de 2 subcadre (15ms).
Dicționarul adaptiv modelează periodicitatea pe termen lung (Pitch). Este un dicționar întrețesut cu deplasament unitar (fiecare vector din dicționar este o versiune deplasată a vectorului anterior și conține doar un element nou). Dicționarul adaptiv conține 256 de vectori de cod corespunzând excitațiilor trecute. Dimensiunea unui vector din dicționarul adaptiv este egală cu dimensiunea subcadrului (60 de elemente). Cele 256 de vectori din dicționarul adaptiv corespund la 256 de întârzieri (128 întregi și 128 fracționare). Întârzierile sunt cuprinse între 20 și 147 de eșantioane. În acest interval se folosesc diferite rezoluții conform tabelului 7.1.
Cea mai fină rezoluție este în intervalul [26, 33 3/4], deoarece pentru vorbitori de sex feminin tipici este cel mai probabil ca perioada fundamentală să se situeze în acest interval. Eficiența acestei distribuții a întârzierilor este faptul că resursele sunt alocate acolo unde sunt necesare. Dicționarul adaptiv este actualizat la trecerea de la subcadru la altul.
Pentru codarea indexului dicționarului adaptiv, deoarece conține 256 de vectori de cod, sunt necesari 8 biți la fiecare subcadru. Pentru a reduce numărul de biți și complexitatea de calcul, în standardul FS1016 se folosește un număr diferit de biți pentru codarea perioadei fundamentale, numărul de biți fiind dependent de poziția subcadrului în cadru. Pentru subcadrele impare se caută vectorul optim din dicționarul adaptiv pentru întregul interval de întârziere (20 – 147 eșantioane) și se alocă 8 biți pentru codarea indicelui dicționarului adaptiv. Pentru subcadrele pare se alocă 6 biți pentru indicele dicționarului adaptiv. Acești 6 biți indică un deplasament relativ față de întârzierea optimă găsită pentru subcadrul anterior. Căutarea se realizează în acest caz doar pentru 64 de întârzieri din vecinătatea întârzierii corespunzătoare subcadrului impar precedent. Metoda prezentată poartă denumirea de codare Delta a indexului dicționarului adaptiv și introduce pierderi neglijabile de calitate, deoarece perioadele fundamentale ale subcadrelor adiacente nu diferă semnificativ.
Câștigul dicționarului adaptiv este codat pe 5 biți, iar valorile cuantizate se situează în intervalul [–1 ; 2].
Dicționarul stohastic este compus din 512 vectori de cod. Acesta modelează semnalul rezidual rezultat în urma extragerii informației de anvelopă spectrală și a informației de periodicitate. Acest semnal prezintă o distribuție gaussiană. Dicționarul stohastic este un dicționar întrețesut, deplasamentul fiind de 2 eșantioane. Elementele dicționarului sunt cuantizate pe 3 niveluri (-1, 0, 1) și distribuite după o distribuție gaussiană de medie nulă și dispersie 1.
În urma codării FS 1016 rezultă parametri CELP ce se vor transmite pe canal:
10 LSP;
Câștigul și indexul dicționarului adaptiv;
Câștigul și indexul dicționarului stohastic.
Alocarea numărului de biți pentru fiecare parametru în parte se face conform tabelului 7.2.
Bitul de sincronizare alternează între 0 și 1, iar la primul cadru transmis acesta va fi zero.
Patru biți pe cadru sunt folosiți pentru protecție la erori punându-se accent pe protecția indexului dicționarului adaptiv, deoarece acesta are cel mai important rol în calitatea vocii sintetizate.
După cum reiese din tabel se transmit 144 biți pe durata unui cadru, rezultând o rată de bit de 4800 bps.
Decodorul FS 1016 are schema de principiu prezentată în figura 7.4.
La decodare vectorul din dicționarul stohastic, adresat de indexul recepționat este scalat cu valoarea cuantizată a câștigului. Indexul dicționarului adaptiv este utilizat la găsirea părții întregi și a părții fracționare a întârzierii. Dacă partea fracționară este diferită de zero se aplică interpolarea asupra vectorului de cod adaptiv. Vectorul de cod adaptiv recuperat este scalat de către câștigul cuantizat și adunat la vectorul scalat din dicționarul stohastic, iar vectorul rezultat servește la împrospătarea dicționarului adaptiv și reprezintă de asemenea și semnalul de intrare a filtrului de sinteză pe termen lung.
Semnalul vocal sintetizat este filtrat cu un postfiltru care îmbunătățește caracteristica spectrală în domeniul formanților, ceea ce duce la creșterea calității subiective a vocii sintetice.
Aplicația în matlab și rezultate experimentale
În acest capitol voi prezenta câteva rezultate experimentale referitoare la elementele care intervin în cadrul buclei de analiză prin sinteză:
filtrul de sinteză pe termen scurt;
filtrul de sinteză pe termen lung care în majoritatea standardelor CELP este înlocuit de către dicționarul adaptiv;
filtrul de ponderare perceptuală.
Primele trei figuri prezentate în acest capitol reprezintă funcțiile de transfer ale filtrelor de analiză pe termen scurt, sinteză pe termen scurt precum și a filtrului de ponderare perceptuală corespunzătoare următorilor coeficienți de predicție:
Filtrul de sinteză pe termen scurt are menirea de-a reface anvelopa spectrală a semnalului vocal.
În regiunile frecvențiale ce corespund vârfurilor caracteristicii filtrului de sinteză pe termen scurt semnalul vocal are energie mai mare, și datorită fenomenului de mascare caracteristic sistemului auditiv uman zgomotul poate fi mai mare în aceste regiuni față de văile spectrale fără ca acest lucru să influențeze calitatea percepută a semnalului vocal.
Comparând caracteristica filtrului de ponderare perceptuală cu cea a filtrului de sinteză pe termen scurt se observă că filtrul de ponderare perceptuală atenuează spectrul erorii în regiunile corespunzătoare vârfurilor caracteristicii filtrului de sinteză pe termen scurt .
Gradul de ponderare perceptuală este controlat de către factorul y cuprins între 0 și 1. Cu cât y este mai apropiat de valoarea 1 cu atât caracteristica filtrului de ponderare perceptuală se apropie de caracteristica filtrului de analiză pe termen scurt. Factorul optim este ales prin metode subiective. Pentru o frecvență de eșantionare de 8 KHz este cuprins uzual între 0,8 și 0,9.
Răspunsul la impuls al filtrului de ponderare perceptuală este prezentat în următoarele două figuri:
Se observă că energia răspunsului la impuls este concentrată în jurul primelor eșantioane ceea ce justifică faptul că acesta poate fi trunchiat .
Semnalul vocal cuprinde două tipuri de informații:
vibrația corzilor vocale generează diferite frecvențe care pot fi tratate ca o informație FM;
tractul vocal modelează anvelopa semnalului vocal, ceea ce se poate trata ca o informație AM;
De fapt forma de undă a semnalului vocal seamănă cu un semnal AM+FM;
Informația de anvelopă este reconstituită de filtrul de sinteză pe termen scurt, iar pentru refacerea periodicității se folosește un filtru de sinteză pe termen lung.
Pentru și rezultă caracteristica filtrului de sinteză pe termen lung din figură:
Conexiunea cascadă a celor două filtre de sinteză are rolul de-a reface spectrul semnalului original (anvelopă spectrală și periodicitate).
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Îmbunătățirea Dicționarului Determinist (ID: 120690)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
