Puheenkoodaus Puheenkoodauksella tarkoitetaan puhesignaalin esittämiseen tarvittavan bittimäärän pienentämistä sillä tavalla, että puhesignaalin laatu ja ymmärrettävyys kärsivät mahdollisimman vähän. Puheenkoodauksella on suuri merkitys mm. digitaalisissa matkapuhelinjärjestelmissä ja tämän vuoksi puheenkoodauksen menetelmät ovat kehittyneet voimakkaasti viimeisen 0 vuoden aikana. Kaupallisesti ajateltuna puheenkoodaus on puheenkäsittelyn ylivoimaisesti tärkein sovellus. Hyvällä puhekoodekilta (codec = coder-decoder) voidaan vaatia mm. seuraavia ominaisuuksia: puheen laatu kärsii koodauksesta mahdollisimman vähän puhe kompressoituu pieneen määrään bittejä koodaaminen-dekoodaaminen aiheuttaa vain pienen viiveen koodekki ei ole herkkä lähetyksessä tapahtuville virheille koodaaminen/dekoodaaminen on laskennallisesti nopeaa koodekki toimii hyvin myös kohinaiselle puheelle (ja mielellään vielä musiikille ja muille yleisille signaaleille) useampi peräkkäinen koodaaminen ei heikennä laatua suhteettoman paljon Em. kaltaista täydellistä koodekkia ei ole olemassa, koska osa vaatimuksista on toisensa poissulkevia. Kuitenkin erilaisia kompromisseja vaatimusten välillä on kehitetty ja standardoitu suuri määrä erilaisia sovelluksia varten. Esimerkiksi matkapuhelimen puhekoodekissa kaikki edellä olleet vaatimukset ovat oleellisia, kun taas vaikkapa puheen tallennussovelluksessa laskennalliset vaatimukset, viive ja virhesietoisuus ovat epäoleellisia, kun taas puheen laatu ja bittimäärä ovat tärkeitä. Koodausmenetelmiä on useita erilaisia, mutta ne voidaan jakaa karkeasti kahteen luokkaan: aaltomuotokoodaus lähdekoodaus Aaltomuotokoodauksessa pyritään säilyttämään (puhe)signaalin alkuperäinen aaltomuoto ja koodaus perustuu kvantisointiin ja aaltomuodossa olevan redundanssin poistamiseen. Lähdekoodauksessa keskitytään aaltomuodon sijasta puheen parametrien koodaamiseen (herätteen tyyppi, ääniväylämalli, formanttitaajuudet,...), joiden avulla puhe voidaan rekonstruoida dekooderissa. Raja näiden koodausmenetelmien välillä ei ole täysin terävä, etenkin uudemmissa synteesi-analyysi koodekeissa, joissa puheen aaltomuoto pyritään syntetisoimaan sopivien parametrien avulla. Seuraavassa oletetaan yleisesti että puhesignaalin kaista on sama kuin lankapuhelinverkossa eli 300-3400 Hz ja että näytteenottotaajuus on khz. Tämä on ns. kapeakaistaista puhetta. Sovelluksissa joissa puheen ei täydy kulkea kiinteän lankapuhelinverkon kautta voidaan käyttää korkeampaa puheenlaatua, esim. videokonferenssit. Näissä sovelluksissa käytetään usein 50-7000 Hz kaistanleveyttä ja 6 khz näytteenottotaajuutta, jota kutsutaan laajakaistaiseksi puheeksi.
% B # ( Aaltomuotokoodaus Kvantisointi on välttämätön osa kaikkia digitaalisia järjestelmiä, joissa käsitellään analogista tietoa, mutta myös jo digitoituja signaaleja voidaan kvantisoida.. Pulssikoodimodulaatio PM PM (pulse-code modulation) koodaa jatkuva-aikaisen puhesignaalin ajan suhteen tasavälisiksi näytteiksi, missä kvantisointi on myös tasavälinen, kuten kuva osoittaa. Jos käytössä on bittiä näytettä kohden, voidaan koodata eri amplituditasoa. Näiden amplituditasojen voidaan ajatella olevan koodikirjassa, ja jokainen kvantisoitu näyte esitetään binäärilukuindeksinä tähän koodikirjaan, jota vastaavaa arvoa alkuperäinen näyte vastaa parhaiten. PM:n tapauksessa 2-bittinen koodikirja voisi olla vaikkapa indeksi arvo 00-0.2 0-0. 0 0 0. Alkuperäinen kvantisoimaton signaali voidaan aina esittää muodossa missä on kvantisoitu signaali ja on kvantisointivirhe. Oletetaan, että signaalin dynamiikka on rajoitettu välille. Tällöin PM:n kvantisointivirheen jakaumaa voidaan menestyksekkäästi mallintaa tasajakaumalla "! #$ % missä % *-,. on kvantisointiaskel. Tasavälisen kvantisoijan kvantisointivirheen keskimääräinen teho on %'& )( /)0 243 56 ;: %9, 576 %=&?> < % A@, Entä mikä on hyötysignaalin teho? Riippuu signaalista, mutta parhaassakin tapauksessa signaalin kaikki näytteet ovat amplitudiltaan D, jolloin keskimääräinen teho on. Kvantisoidun signaalin laadusta kertoo nyt signaali/kohina suhde (signal/noise ratio, SNR), joka määritellään EF "GHKJAL *NM 2 E / %'& 2:POQ %=&?>
B Z @ _ Kvantisointitasot, 4 bittinen PM 0. 0.6 0.4 Kvantisoitu arvo 0.2 0 0.2 0.4 0.6 0..5 0.5 0 0.5.5 Kvantisoimaton arvo Kuvio : Tasavälinen PM-kvantisointi saturoinnilla, eli dynamiisen alueen ulkopuoliset arvot asetetaan mahdollisimman lähelle kvantisoimatonta arvoa. Tasoja on 6 eli kvantisointi on 4-bittinen. missä E on hyötysignaalin teho, / Eli tässä tapauksessa EF on kohinan teho ja yksikkö on desibeli (db). GHRJ.L *SM UTWVYX G HRJ.L \[ *SM [.] GA Toisin sanoen, yhden bitin lisääminen kvantisointitarkkuuteen nostaa signaali/kohina-suhdetta 6 db. Puhesignaalien kvantisoinnissa kannattaa käyttää epätasavälistä kvantisointia, osittain siksi, että puheessa on pääosin matalia amplitudeja, osittain siksi, että ihmisen kuulo on pikemminkin herkkä amplitudien osamäärälle kuin niiden erotukselle (lisää infoa kuulon ominaisuuksista kurssilla 0545 Digitaalinen Audio). Kuvassa 2 on esimerkki puheen amplitudijakaumasta. Yleisesti jos tunnetaan signaalin amplitudien jakauma (joka voidaan aina estimoida testiaineistosta), voidaan määrittää tälle jakaumalle ja valitulle virhefunktiolle optimaalinen kvantisoija, ns. Lloyd-Max kvantisoija (josta lisätietoa on kurssilla 0533 Hahmon- ja Puheentunnistus). Epätasavälinen kvantisointi toteutetaan käytännössä epälineaarisella muunnoksella ennen tasavälistä kvantisointia ja käänteismuunnoksella kvantisoinnin jälkeen. Tätä sanotaan kompandoinniksi (compression, expanding). Puheen tapauksessa Euroopassa käytetään lankapuhelinverkoissa Alaw -kompressointia, joka muuntaa näytearvon seuraavasti: (ei kannata opetella ulkoa) ^ k L.l _$` *-aabdc-egfrh *-aab cme _ fkhmn _7o`4o p *-aabdc-efkh n _7p 3 GHKJAL *SM G)(ji ia( * * (ji ia(q _ B
B u 0 5 Puheen amplitudijakauma 0 4 Esiintymien lukumäärä 0 3 0 2 0 s]a[ 0 0 0. 0.6 0.4 0.2 0 0.2 0.4 0.6 0. Näytearvo Kuvio 2: Amplitudien jakauma 20 s näytteelle naisen puhetta. missä r t. Pohjois-Amerikan puhelinliikenteessä käytetään u -law -kompressointia, joka perustuu samantyyliseen logaritmiseen kompressointiin: ^ k LAl HRJ.L uvi i HKJAL tat. Vastaavat ekspandoinnit saadaan ratkaisemalla ^ :n avulla edellisistä yhtälöistä. missä u Epätasavälisellä kvantisoinnilla saavutetaan suuri etu puhesignaalien kvantisoinnissa; 2 bpn (bittiä/näyte) tasavälisellä kvantisoinnilla vastaa subjektiivisesti suunnilleen bpn em. kvantisoinneilla. Karvalakki-PM-kvantisointiin löytyy iso nippu ehostuksia, joita katsotaan seuraavaksi. Periaatteessa voidaan lisäksi käyttää mitä tahansa yleisiä kompressiomenetelmiä (joita löytyy mm. kurssilta 005535 Signal ompression), mutta jatkossa keskitytään menetelmiin, jotka sopivat nimenomaan puheelle..2 Adaptiivinen PM Kvantisointiaskelta voidaan säätää signaalin mukaan; tätä menetelmää sanotaan adaptiiviseksi kvantisoinniksi. Perusajatuksena on pienentää kvantisointiaskelta silloin kun signaalin taso on pieni, jolloin kvantisointivirhe pienenee myös. Vastaavasti suurien arvojen myötä kvantisointiaskelta suurennetaan. Adaptiivisesta kvantisoinnista on erityisesti hyötyä epästationaaristen signaalien matalan bittimäärän (w ) kvantisoinnissa. Yleisesti käytetty menetelmä kvantisointiaskelen % säätämiseksi on % x % yq 4
Š Š ] ƒ ƒ G missä yqz yq on kiinteä funktio ja on hetkellä olevan puhenäytteen kvantisoitu arvo. Funktio voidaan määrittää kokeellisesti testiaineiston avulla. Tällä menetelemällä on se hyvä puoli, että kvantisointitasot saadaan vastaanotettaessa rekonstruoitua ilman eksplisiittistä tietoa kvantisointiaskelen muutoksista. Miksi? Oletetaan, että hetkellä kooderissa käytetään kvantisointiaskelta % ja saadaan kvantisoitu näyte, joka lähetetään vastaanottimeen. Mutta koska seuraava kvantisointiaskel % { riippuu ainoastaan edellisestä kvantisointiaskelesta % (joka tiedetään dekooderissa), yq näytteestä (joka lähetettiin dekooderiin joten sekin on tiedossa) ja kiinteästä funktiosta (joka on koodattu kooderiin ja dekooderiin), voidaan se laskea myös vastaanottimessa. Tämä on tärkeä synkronointipiirre kooderin ja dekooderin välillä paljon monimutkaisemmissakin koodekeissa: kooderin ja dekooderin tulisi olla samassa tilassa. Mielellään vielä niin, että jos ne joutuvat eri tilaan esim. lähetyksessä tapahtuvan virheen vuoksi, ne pystyisivät synkronoitumaan uudestaan suhteellisen nopeasti..3 Differentiaalinen PM alias DPM Perusidea: lähetetään kvantisoitujen näytteiden sijasta niiden väliset erotukset. Tämän pitäisi toimia jos erotukset ovat keskimäärin pienempiä kuin näytteet, jolloin niiden vaatima dynaaminen alue on pienempi, eli samalla bittimäärällä voidaan käyttää pienempää kvantisointiaskelta, joka luonnollisesti pienentää kvantisointivirhettä. tse asiassa erosignaalin } teho on /Q0 3 ƒ R $ missä ƒ on puheen teho ja on puheen autokorrelaatio viiveellä. Siis jos ˆ n * p G t. Puheelle on yleisesti ˆ n * p G t. ˆ n M p ˆ n M p on pienempi kuin Tarkastellaan kuvion 3 mukaista DPM-kvantisointia, jossa lasketaan sisäänmenon erotus joka kvantisoidaan ja lähetetään. Kvantisointi on mallinnettu kvantisointikohinan lisäämisellä. Vastaanottimessa erotukset vastaavasti summataan. q(n) ƒ - d(n) u(n) y(n) - -. Kvantisointikohina on mal- Kuvio 3: Avoin DPM-kvantisoija, jossa ennustus on linnettu lisättynä kohinalähteenä. z v z Œ Tällä menetelmällä on kuitenkin vakava puute: kvantisointikohina summautuu vastaanottimessa. Katsotaanpa miten. Kuviosta saadaan 2A\. 5
Edelleen sijoittamalla 2... 2.. 2.... 2..g 2A, *. 2A T *-,. f impulssivaste on yksikköaskel eli kvantisointikohina summautuu, joten periaat- Suodattimen * teessa kohinan vaikutus voi kasvaa vastaanottimessa mielivaltaisen suureksi (saturointi luonnollisesti estää tämän käytännössä). Edellisen tapaista järjestelmää, jossa kvantisointi tehdään alkuperäisen signaalin pohjalta, sanotaan avoimeksi (open-loop). Vaihtoehto on suljettu järjestelmä (closed-loop), jossa kvantisoiti tehdään dekoodatun signaalin perusteella. Suljetuilla järjestelmillä on se tärkeä ominaisuus, että kvantisointikohina ei summaudu vastaanottimessa, koska kooderissa valitaan kvantisoitu näyte siten että dekoodattu signaali on mahdollisimman hyvä. Tämä on oleellinen piirre myöhemmin esitettävissä synteesi-analyysi koodekeissa. Esimerkki sovellettuna DPM-kvantisointiin on kuvassa 4. q(n) ^ - e(n) y(n) z - z - Kuvio 4: Suljettu DPM-kvantisoija, jossa ennustaja on. Kvantisointikohina ei summaudu vastaanottimessa. eli Lasketaan seuraavaksi suljetun DPM-kvantisoijan siirtofunktio. Kuviosta / 2. š2a.s š2.. 2A š2. / 2A /. 6
.s. Signaalien tulkinnat ovat seuraavat: /. š2. : kvantisoitu residuaalivirhe : rekonstruoitu signaali. / 2. š2. : ennustus rekonstruktion perusteella Edellisistä kaavoista (tai suoraan š2a kuviosta) havaitaan, että 2Aœ dekooderi. Lasketaan vielä josta seuraa :.. / 2A š2... š2.. '2., *.. T Tf *m,. f.. š2a 2A š2a, eli siis kooderiin sisältyy kuten pitääkin. Seuraava parannus DPM-koodekkiin on käyttää yksinkertaisen erotuksen sijasta monimutkaisempaa ennustusta. Suodatin voidaan ajatella ennustajaksi jossa siis ennustetaan seuraavaa näytettä edellisellä. Suljetun järjestelmän tapauksessa Käyttämällä parempaa ennustavaa suodatinta saadaan ennustusvirheen tehoa pienennettyä, jolloin kvantisointi voidaan tehdä vähemmillä biteillä. Tarkoitukseen sopivan ennustajankin osaamme jo määrittää lineaarisen ennustuksen avulla. Normaaliyhtälöiden perusteella ongelmana on siis määrittää puheen autokorrelaatio, joka voidaan estimoida puhedatasta. Jo toisen asteen ennustaja pienentää kohinaa n. 6 db, jolloin sama signaali/kohina-suhde saavutetaan lähettämällä bpn (eli 000 bps) vähemmän kuin ilman ennustajaa. 7
.4 Adaptiivinen DPM = ADPM Seuraava parannus DPM-koodekkiin saadaan käyttämällä adaptiivista ennustajaa, koska puhe on epästationaarista ja optimaalinen ennustaja vaihtelee ajan myötä hyvinkin paljon, kuten totesimme lineaarisen ennustuksen yhteydessä. Vastaanottimen täytyy myös tietää koodauksessa käytetty ennustaja, joten ennustajan kertoimet pitää joko lähettää sivuinformaationa jos ne lasketaan alkuperäisestä puheesta (eteenpäin-adaptointi, kuvio 5) tai laskea jo syntetisoidusta puheesta (taaksepäin-adaptointi, kuvio 6). ADPM-koodekin ennustavia suodattimia voidaan adaptoida kehyksittäin tai näytteittäin. Virallisessa nternational Telecommunications Union Telecommunications Sector (TU-T) standardissa G.72 jota käytetään puhelinkeskusten välisten puhelujen koodaamiseen on käytössä taaksepäin-adaptointi ja 4 bitin kvantisointi residuaalille. Eteenpäin-adaptoinnin tapauksessa ennustajan kertoimet pitää vielä kvantisoida ennen lähettämistä. Tämän takia myös lähettimessä pitää käyttää kvantisoituja kertoimia, koska muutoin ennustajien erosta johtuva virhe kumuloituisi vastaanottimessa. q(n) ^ - e(n) y(n) P(z) P(z) Kuvio 5: ADPM eteenpäin-adaptoinnilla. Ennustajan kertoimet kvantisoidaan ennen käyttöä. q(n) ^ - e(n) y(n) P(z) P(z) Kuvio 6: ADPM taaksepäin-adaptoinnilla. Ennustajan kertoimia ei täydy lähettää erikseen. Taaksepäin-adaptointi toimii hyvin mikäli rekonstruoitu puhe muistuttaa riittävästi alkuperäistä, jolloin ennustajan kertoimet saadaan estimoitua melko tarkasti. Käytännössä tämä vaatii n. 4 bittiä näytettä kohden. Matalammilla bittinopeuksilla rekonstruktion ja vastaavasti myös ennustajan taso
i * ž * M, Ÿ heikkenee. Tämän takia matalammilla nopeuksilla (alle 2 bittiä/näyte) käytetään yleensä eteenpäinadaptointia..5 LP-kertoimien skalaarikvantisointi Miten voidaan mahdollisimman vähillä biteillä lähettää ADPM-koodekissakin tarvittavat LP-suodattimen kertoimet? Tämä on yksi tärkeä perusongelma puheenkoodauksessa. Tällä hetkellä paras ratkaisu on ns. LSF-kertoimien (line spectral frequencies) prediktiivinen vektorikvantisointi, josta enemmän myöhemmin. Katsotaan ensin yksinkertaisempaa skalaarikvantisointia. LP-suodattimen suoramuotototeutuksen kertoimia ž ž UU žwÿ (ž, joten sitä ei täydy lähettää) ei kannata kvantisoida suoraan, koska kvantisoitu suodatin ei välttämättä ole stabiili. Lisäksi kertoimien dynaaminen alue on laaja. Tämän takia LP-suodattimen kertoimet U muunnetaan ensin sopivampaan esitysmuotoon ennen Ÿ ovat hyvä esitysmuoto koska stabiilisuus on helppo kvantisointia. 4 Heijastuskertoimet * U tarkistaa ( i i w ) sekä dynaaminen alue on rajattu välille. Tasavälinen kvantisointi tuottaa kuitenkin huonon tuloksen sillä heijastuskertoimien jakauma ei ole tasainen, jonka takia yleensä käytetään epätasavälistä kvantisoijaa. Tämä voidaan taas toteuttaa sopivalla epälineaarisella muunnoksella ennen tasavälistä kvantisointia. Seuraavassa kaksi sopivaa heijastuskertoimien muunnosta: Log-ala suhteet (log-area ratios, LAR). Nämä määritellään HRJ.L Käänteiset sini-parametrit (inverse sine). Nämä ovat k l Nämä ovat käyttökelpoisia lähinnä sen takia, että ne laajentavat heijastuskertoimien dynamiikkaa kun i. q, jotka ovat kriittisimmät arvot. Näiden avulla kvantisointi tapahtuu siis seuraavasti:. Lasketaan ikkunoidun lohkon LP-polynomi r UU autokorrelaation ja Levinson-Durbin rekursion avulla. LP-analyysi kehys voi olla ja yleensä onkin eri kehys kuin se jota koodataan. Esimerkki kuvassa. Muunnetaan r 2A heijastuskertoimiksi * U U Muunnetaan heijastuskertoimet toisella em. muunnoksista. Esim. LAR-muunnoksen tapauksessa lasketaan * UU Ÿ, missä Kvantisoidaan tulokset tasavälisesti. HRJ.L 2 $ Ÿ. g žwÿ 9
.5 LAR ja käänteinen sini 0.5 0 0.5 LAR käänteinen sini.5 0. 0.6 0.4 0.2 0 0.2 0.4 0.6 0. k Kuvio 7: Heijastuskertoimien muunnoksia. Lähetetään saatujen kvantisointitasojen indeksit vastaanottimeen. Muunnetaan sekä lähettimessä että vastaanottimessa nämä indeksit takaisin heijatuskertoimien muunnoksiksi. Tehdään käänteismuunnos takaisin kvantisoiduiksi heijastuskertoimiksi. Muunnetaan kvantisoidut heijastuskertoimet kvantisoiduksi r sekä lähettimessä että vastaanottimessa.. polynomiksi, jota käytetään.6 Residuaalikompressio ADPM:ssä suurin osa lähetetystä bittivirrasta muodostuu residuaalivirheestä. Tämän residuaalivirheen bittimäärää voidaan vielä yrittää pienentää erilaisilla nikseillä. On havaittu että oleellisinta residuaalissa ovat korkeat amplitudit, joten nämä täytyy kvantisoida tarkasti huippujen leikkaaminen aiheuttaa säröä matalien amplitudien leikkaaminen ei aiheuta oleellista säröä Tämän perusteella voidaan residuaalista kvantisoida pienet arvot nolliksi ja tulos koodata tehokkaammin. 0
LP analyysi ja synteesi ikkunat synteesi ikkuna LP analyysi ikkuna 0. 0.6 0.4 0.2 0 0.2 50 00 50 200 250 300 Näyte Kuvio : Esimerkki synteesi-ikkunasta jota koodataan sekä LP-analyysi ikkunasta, josta lasketaan LP-kertoimet.