Sisältö:

Veppipuhelimen tekniikkaa
Näytteistys
Koodekit
Viive
Yhteyskäytännöt

Veppipuhelimen tekniikkaa

Ennen puheen siirtoa Internetissä ääni näytteistetään (digitoidaan), mikä tapahtuu yleensä tietokoneen äänikortin avulla. Näin saadaan puhe digitaaliseen muotoon ja voidaan käyttää erilaisia koodekkeja ja pakkaustapoja äänen jatkokäsittelyyn. Yleensä tärkein vaatimus on saada siirrettevä puhe viemään mahdollisimman vähän tilaa, mutta kuitenkin samalla säilyttää puheen ymmärrettävyys. Nämä ominaisuudet pyritään saavuttamaan sopivalla koodekilla. Internet puolestaan aiheuttaa siirtoon satunnaisia ja vaihtelevia viiveitä sekä tiedon katoamista. Näin ollen tarvitaan erilaisia yhteyskäytäntöjä (protokollia) näiden hallintaan. On olemassa paljon erilaisia standardeja, jotka määrittelevät tarvittavat yhteyskäytännöt ja koodekit.

Näytteistys

Puheen matka alkaa näytteistyksellä, jolloin tietokoneessa oleva äänikortti ottaa mikrofoniin puhutusta signaalista näytteitä. Laadusta voidaan yleensä tinkiä huomattavastikin, sillä esimerkiksi lankapuhelimen siirtämä taajuusalue on vain 300 - 3 400 Hz. Tähän tasoon pyrittäessä noin 8 000 Hz näytteenottotaajuus riittää hyvin, sillä näytteenotton pitää tapahtua vähintään kaksinkertaisella taajuudella näytteistettävän signaalin korkeimpaan taajuuteen verrattuna (toisin sanoen jos halutaan toistaa signaalit esimerkiksi alueelta 0 - 4 000 Hz, niin näytteistys pitää tehdä 8 000 kertaa sekunnissa, eli 8 000 Hz taajuudella). Yleensä laitetaan vielä pieni varmuusmarginaali näytteistystaajuuden päälle, eli 0 - 3 400 hertsin signaalia ei näytteistetä taajuudella 6 800 Hz vaan hieman suuremmalla kuten 8 000 Hz:llä.

Myöskin dynamiikasta voidaan tinkiä, esimerkiksi CD-soittimen dynamiikka on 16 bittiä yhtä näytettä kohden, kun taas tavallisen puheen siirtämiseen riittää hyvin 8 bittiä, jolloin voidaan esittää 256 (2*2*2*2*2*2*2*2) eri äänenvoimakkuustasoa. Kun tietokone ottaa näytteitä 8 000 Hz:n taajuudella, eli 8 000 kappaletta sekunnissa, ja jokaisen näytteen äänenvoimakkuustaso määritellään 8 bitillä, niin tiedonsiirtotarve ilman pakkausta olisi 8 000 * 8 = 64 000 bittiä sekunnissa (reilut kuusi kilotavua sekunnissa).

Kuva näytteistyksestä
Viereisessä kuvassa näkyy, miten äänen näytteistys periaatteessa tapahtuu. Pystyakselilla ovat näytteistystasot ja vaaka-akselilla aika. Punainen viiva on pala mikrofonista tullutta äänisignaalia. Vihreä alue on malli tietokoneen tekemästä näytteistyksestä. Esimerkiksi toisena oleva näyte on yhdeksän yksikköä korkea, joten sen binäärinen esitysmuoto olisi kahdeksan bitin dynamiikalla (tarkkuudella) 0000 1001 . Näytteitä otetaan 64 000 kappaletta sekunnissa, eli yhden näyteviipaleen paksuus on 1/64 000 sekuntia (noin 16 mikrosekuntia).

Koska puhedataa tulee 64 000 bit/s, ja koska tällaista tiedonsiirtokapasiteettia on varsin harvalla käytettävissään puhuttaessa Internetin yli, täytyy tämä näytteistämällä saatu data pakata.

Lisäksi jotkin vanhemmat äänikortit pystyvät ainoastaan digitoimaan tai toistamaan ääntä kerrallaan. Tällaisella half duplex -äänikortilla täytyy siis puhua kuten radiopuhelimella, toinen odottaa hiljaa, että toinen saa asiansa sanottua, ja puhuu vasta sen jälkeen. Tosin esimerksiksi iäkkääseen Soundblaster 16 -äänikorttiin saa full duplex -ominaisuuden noutamalla valmistajan kotisivuilta uusimman ajurin.

Koodekit

Koodekit pakkaavat ja käsittelevät puhedataa, niin että se vie vähemmän tilaa. Kansainvälinen telealan standardointikattojärjestö ITU (International Telecommunications Union) onkin standardoinut useita eri puheen koodaustapoja. Peruskoodekki G.711 (käyttää tekniikkaa nimeltään PCM , eli Pulse Code Modulation) vuodelta 1984 vaatii 64 000 bit/s tiedonsiirtonopeuden, eikä se pakkaa puhedataa kovin tehokkaasti, ainoastaan jakaa dynamiikka -alueen niin, että pienillä äänenvoimakkuuksilla saadaan suurempi dynamiikka ja suurilla vastaavasti huonompi. G.711 käyttää juuri 8 000 Hz näytteenottotaajuutta ja 8 bitin dynamiikkaa, kuten edellisessä esimerkissä. Myöskin tavalliset ISDN-liittymät siirtävät äänipuhelut G.711:llä koodattuna.

Puolta pienempään tiedonsiirtotarpeeseen päästään käyttämällä vuodelta 1990 olevan standardin G.726 (käyttää tekniikkaa nimeltään ADPCM , eli Adaptive Differential Pulse Code Modulation) mukaista koodekkia. Tämä koodekki käyttää dynamiikkaan vain puolet PCM:n määrästä (eli neljä bittiä yhtä näytettä kohden), mutta säilyttää silti lähes saman äänenlaadun. ADPCM:n vaatima noin kolmen kilotavun sekuntivauhti alkaa olla jo useilla käytössä, joten tämä kohtalaisen hyvälaatuinen peruskoodekki on varsin käyttökelpoinen. Esimerkiksi 33 600 bit/s -modeemilla tämä yhteys jo toimii.

Nämä kaksi edellä olevaa koodekkia perustuvat itse äänen välittämiseen mahdollisimman tarkasti vastaanottajalle, eli ne pyrkivät välittämään minkä tahansa aaltomuodon. Näiden lisäksi on olemassa uuden tyyppisiä koodekkeja, ns. puhekoodekkeja (voice coders), jotka pyrkivät muodostamaan lähetettävästä puheesta vain kuvauksen, josta vastaanottaja pystyy kokoamaan lähetetyn puheen. Toisin sanoen ne yrittävät määritellä lähetettävälle puheelle parametrit ja lähettämään vain ne (vrt. musiikin siirtäminen nuotteina). Tällä tavalla voidaan päästä hyvinkin pieniin siirtokapasiteettivaatimuksiin, mutta toisaalta ääni kuulostaa synteettiseltä. Tämä tekniikka on käytössä myös GSM:ssä, jonka tiedonsiirtotarve on 13 000 bit/s.

Esimerkki uudesta puhekoodekista on G.729 vuodelta 1996. Se vaatii vain 8 000 bit/s yhteyden ja lupaa silti paremman äänenlaadun kuin esim. GSM:ssä. Näin ollen se toimisi jopa vanhalla 9 600 bit/s -modeemilla. Tosin G.729:n heikko puoli on, että se vaatii varsin paljon prosessoritehoa (esim. tehokas Pentium-PC).

Lisäksi on olemassa ns. hybridikoodekkeja, jotka käyttävät perinteisiä aaltomuodon koodaustekniikkoita yhdessä uusien puhekoodekkien kanssa. Näillä saadaan periaattessa siirrettyä luonnollisen kuuloinen puhe lähes puhekoodekin vaatimalla tiedonsiirtokapasiteetilla.

Viive

Puheenlaadun lisäksi koodekeilla on toinenkin tärkeä ominaisuus, viive . Viive tarkoittaa sitä aikaa, joka tulee summana koodekkin kuluttamasta ajasta (kerätää dataa yhtä pakettia varten), yhteysprotokollan (esim. RTP, Real Time Protocol) vaatimasta käsittelyajasta ja Internetin siirtoviiveestä. Jos koodekki käyttää pientä tiedonsiirtonopeutta ja suuria paketteja, kuten pieneen tiedonsiirtokapasiteettiin tyytydyttäessä helposti joudutaan tekemään, niin viive kasvaa helposti häiritseväksi. Esimerkiksi useiden satojen millisekuntien viive haittaa puhumista jo selvästi tavalliseen lankapuhelimeen verrattuna. PCM- ja ADPCM- koodekkien aiheuttama viive vain mikrosekunnin murto-osia, kun taas G.729 aiheuttaa 10 millisekunnin viiveen. Tärkein viiveen aiheuttaja on kuitenkin Internet, sillä yhteydestä riippuen viive naapurille puhuttaessa voi olla n.200 ms (modeemi) tai n.20 ms (lähiverkko). Ruuhkaiset ulkomaanyhteydet aiheutta myöskin paljon viivettä, joka johtuu suureksi osaksi siitä, että siirrettävä puhe joudutaan puskuroimaan jopa satojen millisekuntien ajalta suuren pakettien hukkumisprosentin vuoksi. GSM:n käyttämässä koodekissa viive on 20 ms.

Yhteyskäytännöt

Jotta yhteys vastaajan puhelinohjelmaan syntyisi, täytyy molempien ohjelmien käyttää samaa yhteyskäytäntöä, protokollaa . Tärkein standardi Internet-puhelimissa on ITU:n H.323 . Se määrittelee miten yhdeyden ylläpito tapahtuu. Lisäksi käytetään RTP-protokollaa, jonka tehtävä on laittaa jokaiseen koodekilta tulleeseen lähtevään pakettiin aikaleima, järjestysnumero ja lähettäjän tunnus. Näin vastaanottaja tietää, jos välillä on kadonnut pakettaja. Esimerkiksi puheen ja videokuvan tahdistuksessa on tärkeä tietää, mistä kohdasta jatketaan kadonneen paketin jälkeen. Myöskään väärässä järjestyksessä saapuvat paketit eivät pääse sotkemaan toistettavaa ääntä. Standardoitut yhteyskäytännöt mahdollistavat sen, että puheluja voi soittaa myös erilaisten tietokoneiden välillä ja eri ohjelmilla.