Puheen pakkaaminen

Puheen pakkaaminen eli puheen koodaus on menetelmä, jolla puhetta pyritään siirtämään tai tallentamaan käyttäen mahdollisimman vähän siirto- tai tallennuskapasiteettia.
Menetelmä tai laite, jolla puhe pakataan tai koodataan ja pakkaus puretaan, on nimeltään puhekoodekki. Kehittyneissä puheen pakkaamismenetelmissä mallinnetaan ihmisen äänijänteitä sekä muita puheenmuodostuksen mekanismeja.
Puheenkoodausmenetelmiltä vaaditaan muutamia keskeisiä ominaisuuksia.
Pakatun puheen tulisi olla:
Puhekoodekin toteutuksen tulisi tekniikaltaan olla myös:
Puhekoodekit perustuvat joko äänen aaltomuodon käsittelyyn tai puheen mallintamiseen (engl. "source codec") tai näiden molempien yhdistelmään.
Aaltomuotokoodekit.
Aaltomuotokoodekkeihin kuuluu muun muassa PCM ("Pulse Code Modulation")-koodaus, jota käytetään puheen välittämisessä digitaalisessa puhelinverkossa. ITU:n G.711-standardi määrittelee kaksi erilaista logaritmista koodausta digitaalisille signaaleille, pulsseille, A-lain ja µ-lain. G.711 käyttää joko bittinopeutta 64 kb/s tai 56 kb/s. Aaltomuotokoodekit pyrkivät mallintamaan alkuperäistä äänisignaalia mahdollisimman tarkasti ottamatta kantaa sen sisältöön. Ne ovat myös hyvin yksinkertaisia. Toisaalta, koska aaltomuotokoodekit vaativat paljon tietoliikennekaistaa, niille syötettävä äänisignaali täytyy ensin suodattaa sopivaksi: G.711-koodekit sopivat puhelinlaatuisen äänen eli taajuusalueen 300–3 400 Hz välittämiseen vaatimattomalla dynamiikalla (niiden teoreettinen maksimi on 36 dB). ADPCM eli G.726 sovittaa dynaamisesti koodauksen käyttämän arvoalueen sopivaksi. G.726 tarvitsee puhelinlaatuisen äänen välittämiseen vain 32 kb/s.
Aaltomuotokoodekkeja:
Mallinnuskoodekit.
Edellistä tehokkaampi tapa pakata puhetta on mallintaa äänilähde ja yrittää tuottaa alkuperäistä muistuttava ääni mallin käyttämien parametrien avulla. Koska äänen alkuperäistä aaltomuotoa ei tallenneta vaan ainoastaan sen tuottamiseen käytettävät parametrit, vaadittava tiedonsiirtokapasiteetti on erittäin pieni. Ymmärrettävää puhetta pystytään välittämään jo 2,4 kb/s kaistalla. Pakattu ääni kuulostaa kuitenkin metalliselta ja epäluonnolliselta.
Ensimmäinen tähän menetelmään perustunut puheenpakkausmenetelmä oli nimeltään Vocoder (engl. "VOice CODER"), jonka kehitti Homer Dudley AT&amp;T:n Bell Labsissa 1930-luvulla. Vocoder oli analoginen, sen äänimallissa oli kymmenen eri taajuuksille viritettyä kaistanpäästösuodinta, herätteenä käytettiin pulssioskillaattoria tai kohinaa. Kaikista pelkästään mallinnukseen perustuvista koodekeista voidaan joskus käyttää yleisnimitystä vocoder.
Puheenkoodauksessa 1970-luvulta alkaen käytetyt digitaalisen mallinnuksen menetelmät perustuvat kaistanpäästösuodattimien sijaan lineaariennusteeseen, ja niistä käytetään lyhennettä LPC ("Linear Prediction Coding").
Tunnetuin nykyisin käytetyistä mallinnuskoodekeista on LPC-10.
Hybridikoodekit.
Hybridikoodekit yhdistävät toisiinsa mallinnuksen ja aaltomuotokoodauksen ominaisuudet. Hybridikoodekit pyrkivät säilyttämään alkuperäisen signaalin ymmärtämiselle tärkeät osat (esimerkiksi formantit) muuttumattomina mutta syntetisoimaan loput. Tunnetuin hybridikoodekeissa käytettävistä algoritmeista on nimeltään CELP ("Codebook Excited Linear Prediction"). Sillä pystytään tuottamaan ymmärrettävää puhetta alle 5 kb/s kaistalla.
CELP perustuu AbS-malliin ("Analysis by Synthesis"): eri parametrien tuottamaa ääntä verrataan pakattavaan ääneen ja pyritään löytämään niille arvot, jotka tuottavat pienimmän keskineliövirheen. Kaikkien mahdollisten parametrien kokeilu vaatii kuitenkin liikaa resursseja, joten CELP:tä on kehitetty lukuisia eri variantteja. Tärkein näistä on nimeltään "Algebraic CELP" eli ACELP.
Hybridikoodekkeja:
Käyttökohteet.
Puheen pakkaamista sovelletaan etenkin matkapuhelinverkoissa (GSM), VoIP-puheluissa sekä podcasteissa. Käyttökohteen mukaan käytetään erilaisia koodekkeja. Esimerkiksi Opus on käytössä VoIP-verkossa ja se on syrjäyttänyt aiemman Speex-koodekin. Uusia koodekkeja ovat Googlen Lyra.