MARKKU NIEMI PUHEEN AIKASKAALAUS Kandidaatintyö Tarkastaja: Hanna Silén 16.12.2012
ii TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan koulutusohjelma NIEMI, MARKKU: Puheen aikaskaalaus Kandidaatintyö, 16 sivua Joulukuu 2012 Pääaine: Signaalinkäsittely Tarkastaja: Hanna Silén Avainsanat: Puhe, aikaskaalaus, SOLA, PSOLA Puheen aikaskaalaukselle on lukuisa joukko hyödyllisiä aktiivisesti käytettyjä käytännön sovelluksia kuten esimerkiksi erilaiset vieraiden kielten opetussovellukset tai mainostekstin täsmääminen käytettävissä olevaan mainosaikaan. Puheen aikaskaalauksen käyttökelpoisuuden edellytyksenä on, että puheen tulee kuulostaa aikaskaalauksen jälkeen mahdollisimman luonnolliselta ja alkuperäisen puheen kaltaiselta. Tähän tavoitteeseen pääseminen edellyttää puhesignaalin ja ihmisen kuulon ominaisuuksia hyödyntävien digitaalisten signaalinkäsittelymenetelmien käyttämistä. Tässä kandidaatintyössä tehtiin kirjallisuusselvitys puheen aikaskaalauksen eri menetelmistä. Työssä keskityttiin ainoastaan aikatason aikaskaalausmenetelmiin ja perehdyttiin erityisesti SOLA- ja PSOLA-algoritmien perusteisiin ja teoreettiseen taustaan. Työssä toteutettiin sekä SOLA-, että PSOLA-algoritmit MATLAB-ohjelmistolla. Toteutuksien avulla arvioitiin algoritmien toimivuutta eri aikaskaalaussuhteilla ja arvioitiin puheen laatua subjektiivisesti. Vertailukohtana käytettiin ainoastaan näytteenottotaajuuden muutoksella aikaansaatua aikaskaalattua puhesignaalia. Tuloksien perusteella voidaan todeta, että yksinkertainen SOLA-algoritmi tuottaa ymmärrettävää aikaskaalattua puhetta aikaskaalauskertoimilla 0.25 2 mutta puheessa on selvästi havaittavia artefaktoja jo hyvin pienilläkin aikaskaalaussuhteilla. PSOLAalgoritmissa on kehitetty SOLA-algoritmia siten, että algoritmi käyttää hyväksi äänteiden eri perustaajuuksia kehysrakenteen muodostamisessa. Tulosten perusteella PSOLAmenetelmällä saadaan aikaan huomattava parannus aikaskaalatun puheen laatuun ja PSOLA-algoritmilla aikaskaalattu puhe on varsin hyvälaatuista kun aikaskaalauskertoimet vaihtelevat välillä 0.25 2.
iii ALKUSANAT Tämä työ on tekniikan kandidaatin opinnäyte Tampereen teknillisen yliopiston signaalinkäsittelyn laitokselle. Työssä tehtiin kirjallisuustutkimus puheen aikaskaalauksen eri menetelmistä ja toteutettiin SOLA ja PSOLA-algoritmeihin perustuvat aikatason aikaskaalausmenetelmät MATLAB-ohjelmistolla. Haluan kiittää tutkimusjohtaja Alpo Värriä ja lehtori Heikki Huttusta mielenkiintoisen aiheen ehdottamisesta ja rakentavista kehitysehdotuksista työn kuluessa. Erityisesti haluan kiittää työn ohjaajaa ja tarkastajaa Hanna Sileniä erinomaisesta ohjauksesta, rakentavista kommenteista, kannustuksesta ja lukuisista käytännön neuvoista ja avusta työn eri vaiheissa. Kangasala, 16.12.2012. Markku Niemi Nokikuruntie 24 36200 Kangasala Puhelin: 050-5117341
iv SISÄLLYS Alkusanat... iii Sisällys... iv Termit ja niiden määritelmät... v 1 Johdanto... 1 2 Puhesignaalin ominaisuuksista... 4 3 Puheen aikaskaalausmenetelmät... 7 3.1 Puheen mallinnus ja käsittely... 9 3.2 Aikaskaalausmenetelmät... 10 3.3 PSOLA... 11 3.4 Toteutuksesta... 13 4 Toteutuksen arviointi... 14 Lähteet... 16
v TERMIT JA NIIDEN MÄÄRITELMÄT Aikaskaalauskerroin Artefakta FIR FFT IFFT LPC Perustaajuus PSOLA Puheen aikaskaalaus Soinniton äänne Soinnillinen äänne SOLA Aikaskaalatun puhenäytteen ajallisen pituuden suhde alkuperäisen puhenäytteen pituuteen. Aikaskaalauskerrointa on merkitty tekstissä symbolilla α (tai alpha). Keinotekoiselta tai luonnottomalta kuulostava häiriö. Finite Impulse Response. Fast Fourier Transform. Nopea Fourier muunnos. Inverse Fast Fourier Transform. Käänteinen nopea Fourier muunnos. Linear Predictive Coding Puheen perustaajuus (engl. pitch). Pitch-Syncronous Overlap-Add. Puhesignaalin toistaminen eri nopeudella verrattuna alkuperäisen puhesignaalin tallennuksessa käytettyyn nopeuteen. Soinniton äänne syntyy ilman äänihuulten värähtelelyä kurkussa. Yleensä soinnittomia äänteitä ovat vain konsonantit. Soinnillinen äänne syntyy äänihuulten värähdellessä kurkunpäässä. Vokaalit ovat luonnostaan soinnillisia äänteitä. Osalla konsonanteista on sekä soinnillinen, että soinniton variantti. Syncronous Overlap-Add.
1 1 JOHDANTO Puheen aikaskaalauksella tarkoitetaan tallennetun puhenäytteen toistamista eri nopeudella verrattuna alkuperäisen puhesignaalin tallennuksessa käytettyyn nopeuteen. Puheen aikaskaalauksella on monia hyödyllisiä ja varsin laajasti käytössä olevia käytännön sovelluksia. Yleisesti tunnettuja sovelluskohteita ovat esimerkiksi vieraiden kielten alkeisopinnot, radio- ja TV-uutiset, saneluäänitteet ja TV- ja radiomainokset. Puheen aikaskaalausta hyödyntävien sovellusten tavoitteena on välittää mahdollisimman suuri määrä informaatiota mahdollisimman lyhyessä ajassa mahdollisimman mieleenpainuvasti suhteutettuna kuulijan yksilöllisiin kykyihin. Joissakin sovelluksissa ja tilanteissa tämä voi tarkoittaa puhesignaalin toistamista nopeammin ja toisissa sovelluksissa ja tilanteissa puhesignaalia toistetaan hitaammin tavoitteen saavuttamiseksi. Puheen aikaskaalauksen hyödyllisyys pohjautuu osittain käyttäytymistieteelliseen tutkimukseen jossa on osoitettu, että ihminen pystyy omaksumaan tietoa nopeammin kuin mitä pystymme tuottamaan puhetta. Kuunneltaessa puhetta aivot toimivat tyypillisesti vain noin 30-50%:n kapasiteetilla verrattuna maksimikapasiteettiin. Ihminen pystyy omaksumaan tietoa tehokkaimmin lukunopeudella. Normaali lukunopeus englannin kielessä on noin 200-300 sanaa minuutissa kun taas normaali puhenopeus on vain noin 100-150 sanaa minuutissa. Yllä mainitut luvut pitävät paikkansa äidinkielenään englantia puhuville. Suhdeluku on suomen kielessä samantapainen mutta absoluuttiset lukuarvot ovat hieman eroavat johtuen englannin ja suomen kielen rakenteiden eroista. Aivojen toimiessa puolella teholla ajatukset alkavat harhailla. [3] Tätä ihmisen aivojen ominaisuutta voidaan hyödyntää esimerkiksi TV- ja radiomainoksissa. Mainoksen nopeuttaminen parantaa mainoksen tehoa koska nopeammin esitettynä ihmiset keskittyvät mainokseen tehokkaammin ja siten viesti jää tehokkaammin kuulijoiden mieleen. Koska mainokset ovat pääsääntöisesti aikapohjaisesti hinnoiteltuja, mainoksen nopeuttamisesta on myös taloudellista hyötyä. Mainokselle on yleensä varattu lähetyksestä etukäteen tietty täsmällinen pituus johon mainoksen pitää mahtua. Puheen aikaskaalauksella voidaan helposti sovittaa mainos täsmällisesti varattuun aikaikkunaan. Uutisten esittämisessä sekä puheen nopeuttamiselle, että hidastamiselle löytyy hyödyllisiä sovelluksia. Hidastetut uutiset helpottavat esimerkiksi vieraskielisten tai omaksumisongelmista kärsivien uutisten seuraamista. Radiossa tällä hetkellä esitettävä Yleisradion selkokieliset uutiset on esimerkki tällaisesta palvelusta. Uutisten nopeuttaminen puolestaan saattaa olla hyödyllistä esimerkiksi jos halutaan nopeasti tarkistaa onko päivän uutisissa ollut mielenkiintoisia aiheita tai jos halutaan etsiä jotain tiettyä
2 uutista pitkästä lähetyksestä nopeasti. Yleisemmin tiedon etsintä isosta aineistosta on varsin hyödyllinen puheen aikaskaalauksen sovelluskohde. Koulutussovelluksissa, kuten vieraiden kielten materiaaleissa puheen hidastamisesta on paljon hyötyä. Puheen hidastaminen mahdollistaa esimerkiksi vieraan kielen ääntämisen harjoittelun huomattavasti tehokkaammin. Hidastettuna vieraskielinen puhe on helpompi omaksua. Sanelukoneita käytetään varsin paljon esimerkiksi lääketieteessä ja oikeustieteessä. Sanelukoneen purkamisessa sekä puheen nopeuttamisesta, että hidastamisesta samanaikaisesti puheenlaatu säilyttäen on varsin ilmeistä hyötyä sanelun purkajalle. Johtuen monista käytännön kaupallisista sovelluskohteista puheen aikaskaalausta on tutkittu melko pitkään ja aiheesta löytyy paljon tieteellisiä julkaisuja. Puhesignaalin toistaminen pelkästään toistonopeutta muuttamalla vääristää signaalia. Vääristymä on yleensä sitä suurempi mitä suurempi on alkuperäisen tallennusnopeuden ja toistonopeuden suhteellinen ero. Alkuperäistä näytteenottotaajuutta nopeammin toistettu puhe tuottaa Aku Ankka tai pikkuorava ääntä. Alkuperäistä näytteenottotaajuutta hitaammin toistettu puhe taas voi kuulostaa esimerkiksi humalaiselta matalaääniseltä mieheltä. Nämä ilmiöt saattavat kuulostaa hauskoilta ja voivat olla hyödyllisiä joissakin hupisovelluksissa mutta luonnollisestikaan vääristymät eivät ole toivottavia käytännön sovellusten kannalta. Käytännön sovelluksissa puheen aikaskaalauksen käyttökelpoisuuden yhtenä tärkeimpänä kriteerinä on, että puhesignaali kuulostaa aikaskaalauksen jälkeen mahdollisimman luonnolliselta ja alkuperäisen puheen kaltaiselta. Tähän tavoitteeseen pääseminen edellyttää puheen aikaskaalaukseen kehitettyjen signaalinkäsittelymenetelmien käyttämistä. Nämä menetelmät hyödyntävät puhesignaalin ja ihmisen kuulon ominaisuuksia. Nykyään lähes kaikki puhetallenteet ovat valmiiksi digitaalisessa muodossa. Tämä mahdollistaa tallenteiden helpon ja nopean käsittelyn eri signaalinkäsittelyalgoritmeilla tietokoneella. Työssä esitellään aluksi puhesignaalin perusominaisuudet ja selostetaan näihin ominaisuuksiin pohjautuva yksinkertainen puheen matemaattinen malli. Tämän jälkeen tutustutaan kirjallisuudessa esitettyihin erilaisiin puheen aikaskaalauksen menetelmiin ja kuvaillaan miten menetelmät pohjautuvat puheen ominaisuuksiin ja puheen teoreettiseen malliin. Eri menetelmiä, niiden suorituskykyä ja muita ominaisuuksia vertaillaan kirjallisuuden pohjalta. Työssä keskitytään tarkemmin vain aikatason menetelmiin koska niiden on todettu soveltuvan puheelle verrattain pienillä aikaskaalaussuhteilla varsin hyvin. Taajuustason menetelmät soveltuvat aikatason menetelmiä paremmin puhetta monimutkaisemmille signaaleille, kuten esimerkiksi musiikille ja jos halutaan käyttää hyvin suuria aikaskaalaussuhteita. Taajuustason menetelmien haittapuolena on myös pienillä aikaskaalaussuhteilla muun muassa vaihevirheistä esiintyvät artefaktat, joita kehittyneissä aikatason menetelmissä ei esiinny [5].
3 Syncronous Overlap-Add (SOLA) algoritmi on varsin yksinkertainen lyhyiden, osittain päällekkäisten kehyksien poistamiseen ja lisäykseen, sekä kehysten päällekkäiselle alueelle suoritettavaan suodatukseen perustuva menetelmä. SOLA:sta jatkokehitetty Pitch-Syncronous Overlap-Add (PSOLA) algoritmi on yksi tunnetuimista ja parhaiten puheelle toimivista algoritmeista [7]. PSOLA eroaa SOLA:sta siten, että lyhyiden kehyksien paikka ja pituus synkronoidaan äänteiden perustaajuuden kanssa, jolloin voidaan minimoida kehyksien rajalla tapahtuvia epäjatkuvuuskohtia ja niistä aiheutuvia artefaktoja. PSOLA-algoritmin vaativin osuus on puheen perustaajuuden tunnistaminen luotettavasti. Työssä toteutettiin sekä SOLA, että PSOLA aikaskaalausmenetelmät MATLAB - ohjelmiksi, joilla voitiin testata ja vertailla eri puhenäytteiden nopeuden muuttamista käytännössä eri algoritmien parametreilla ja erilaisilla puheen nopeutus- ja hidastussuhteilla. Subjektiivisilla kuuntelutestien tulokset on esitetty kappaleessa 4. Kappaleessa 4 ehdotetaan myös muutamia jatkotutkimuskohteita.
4 2 PUHESIGNAALIN OMINAISUUKSISTA Puhesignaali koostuu peräkkäisistä äänteistä, äänteiden välissä olevista lyhyistä siirtymäjaksoista ja pidemmistä hiljaisista jaksoista sanojen välillä. Pääosa äänteistä voidaan jakaa joko soinnittomiin (engl. unvoiced) tai soinnillisiin äänteisin (engl. voiced). Soinnittomien äänteiden aikana äänihuulet eivät värähtele. Konsonantit ovat tyypillisesti soinnittomia äänteitä. Vokaalit ovat soinnillisia äänteitä joiden aikana äänihuulet värähtelevät kurkunpäässä. Tätä värähtelytaajuutta kutsutaan perustaajuudeksi (engl. pitch). Puhe voidaan mallintaa matemaattisesti kuvassa 1 esitetyllä yksinkertaistetulla systeemillä. Kuva 1. Puheen matemaattinen malli [1]. Mallissa valitaan aluksi herätteeksi joko säännöllinen impulssijono tai satunnainen kohinasignaali riippuen siitä onko kyseessä soinnillinen vai soinniton äänne. Herätteiden voimakkuutta eli amplitudia säädellään vastaavasti parametreilla Av ja AN. Ihmisen äänihuulien äännettä muokkaavaa vaikutusta mallinnetaan funktiolla G(z), kurkunpäästä, nenäontelosta ja kielestä muodostuvaa äänikanavaa mallinnetaan funktiolla V(z) ja lopuksi huulien äännettä muokkaavaa vaikutusta mallinnetaan funktiolla R(z). Malli on varsin yksinkertainen mutta se toimii hyvin erityisesti jatkuville äänille kuten vokaaleille jolloin mallin parametrit muuttuvat hitaasti. Malli ei toimi aivan niin hyvin äänteille joissa tapahtuu nopeita muutoksia. Äänteiden jako pelkästään soinnittomiin ja soinnillisiin ei vastaa täysin todellisuutta koska on olemassa äänteitä jotka ovat näiden välimuotoja. Esimerkkinä tällaisista äänteistä ovat nenässä muodostuvat äänteet (engl. nasals). Kirjallisuudessa on esitetty useita parannettuja monimutkaisempia malleja, joita ei tässä työssä esitellä. [1]
5 Johtuen sekä ihmisen tavasta tuottaa puhetta, että kielen rakenteesta puhesignaali sisältää paljon redundanssia. Redundanssi on selkeästi nähtävissä myös puheen matemaattisesta mallista, jossa esimerkiksi soinnillisten äänteiden heräte on vain säännöllinen impulssijono. Tarkasteltaessa puhetta pidemmällä ajanjaksolla (noin 1 s), puhe on hyvin epäsäännöllistä (Kuvan 2 yläosa). Puheessa on isoja amplitudivaihteluja ja verrattain pitkiä jaksoja jolloin amplitudi on lähes nolla. Kun puhesignaalia tarkastellaan huomattavasti lyhyemmällä aikavälillä (noin 150 ms) havaitaan, että signaali onkin melko säännöllistä (Kuvan 2 alaosa). Tätä lyhyehköllä aikavälillä havaittavissa olevaa säännöllistä taajuutta kutsutaan kyseisen äänteen perustaajuudeksi. Kuva 2. Esimerkki samasta puhesignaalista tarkasteltuna kahdella eri ajanjaksolla [6]. Puheenkoodaus- ja puheen aikaskaalausmenetelmissä pyritään käyttämään hyväksi puhesignaalin redundanssia, äänteiden rajoja ja soinnillisten äänteiden perustaajuutta eri tavoin. Digitaalisilla audiosignaaleilla yleisesti käytetty näytteenottotaajuus on 44.1 khz joka mahdollistaa taajuuskomponenttien 0 Hz - 22.05 khz esittämisen. Tämä näytteenottotaajuus on käytössä esimerkiksi CD-levyissä. Ihmiskuulo pystyy kuulemaan noin 20 Hz - 20 khz taajuudet, joten 44.1 khz näytteenottotaajuus on riittävä ihmisen kuultavissa oleville audiosignaaleille ilman ihmisen havaitsemaa informaation menettämistä. Pelkän puhesignaalin ominaisuuksista sekä ihmisen korvan rakenteesta johtuen puhesignaalin taajuuskaistaa voidaan rajoittaa edellä esitetystä merkittävästi menettämättä
oleellista informaatiota [8]. Esimerkiksi matkapuhelimissa taajuuskaista on rajoitettu välille 0-4 khz tai 0-8 khz eli käytetyt näytteenottotaajuudet ovat vastaavasti 8 khz tai 16 khz. Pienemmän näytteenottotaajuuden käyttäminen vähentää datan määrää näytteenottotaajuuden suhteessa. Jos näytteenottotaajuus puolitetaan, puolittuu käsiteltävän tiedon määrä aikayksikköä kohden olettaen, että näytteiden amplitudin esittämiseen käytetään kummassakin tapauksessa samaa tarkkuutta. Käsiteltävän ja välitettävän tiedon määrällä on luonnollisesti huomattava merkitys tarvittavaan laskentatehon tarpeeseen ja tarvittavaan tiedonsiirtokapasiteettiin. Puheelle käyttökelpoiset pienemmät näytteenottotaajuudet mahdollistavat puheen aikaskaalauksen reaaliajassa vaikka käytössä olisi paljon laskuoperaatioita vaativia algoritmeja. Musiikin aikaskaalaus reaaliajassa on vaativampaa koska musiikille on laajan taajuuskaistan vuoksi käytettävä suuria näytteenottotaajuuksia. 6
7 3 PUHEEN AIKASKAALAUSMENETELMÄT Puhesignaalin muunnos analogisesta digitaaliseksi voidaan esittää muodossa: jossa [ ]: digitaalinen signaali : analoginen signaali : kokonaisluku (0, 1, 2, 3, ) : näytteiden väli (s) [ ] ( ) (3.1) Yksinkertaisimmillaan puheen aikaskaalaus tarkoittaa näytteiden aikavälin T kasvattamista tai lyhentämistä toistovaiheessa eli kun signaali [ ] palautetaan takaisin analogiseen muotoon. Sama asia voidaan myös toteuttaa digitaalitasossa näytteenottotaajuutta muuttamalla. Kun alennetaan näytteenottotaajuutta kokonaisluvulla M saadaan uusi signaali: [ ] [ ] [ ] (3.2) Signaalista poimitaan joka M:s näyte uuteen signaaliin [ ]. Kun signaali [ ] toistetaan alkuperäisellä näytteenottotaajuudella T, puhesignaali nopeutuu koska näytteiden välinen aika pysyy samana mutta toistettavia näytteitä on vähemmän. Kummastakin edellä kuvatusta yksinkertaisesta tavasta skaalata signaalia aiheutuu merkittäviä muutoksia uuden signaalin taajuusvasteeseen. Nämä muutokset ovat ihmisen kuultavissa erilaisina artefaktoina aikaskaalatussa puheessa ja ovat puheen aikaskaalaussovelluksien kannalta hyvin häiritseviä. Kuvassa 3 on esitetty sama puhesignaali kolmella eri tavalla. Alkuperäisen aikaskaalattoman signaalin lisäksi näyte on aikaskaalattu käyttäen kahta eri aikaskaalauskerrointa. Kaikki kolme puhesignaalia on esitetty sekä aika-, että taajuustasossa. Aikaskaalaus on toteutettu käyttämällä pelkästään ylläkuvattua näytteenottotaajuuden muutosmenetelmää. Kuvassa 3 ylimpänä vasemmalla olevassa kaaviossa on alkuperäinen signaali aikatasossa ja ylimpänä oikealla on vastaavasti esitetty sama signaali taajuustasossa. Alkuperäisille signaaleille ei ole suoritettu aikaskaalausta eli aikaskaalauskerroin α = 1 (kuvan otsikossa merkitty alpha = 1). Keskimmäiset kuvat esittävät tilannetta, jossa puhet-
8 ta on nopeutettu kaksinkertaiseksi verrattuna alkuperäiseen nopeuteen, eli on käytetty aikaskaalauskerrointa α = 0.5. Aikaskaalaus on toteutettu poistamalla alkuperäisestä signaalista joka toinen näyte. Kuvassa 3 vasemmalla keskimmäisenä olevasta aikatason signaalista havaitaan, että puheen kesto nyt noin 0.125 s, eli puolet alkuperäisen näytteen kestosta joka on noin 0.25 sekuntia. Oikealla keskellä olevasta kuvasta havaitaan, että taajuusvasteessa energia on selvästi siirtynyt korkeampien taajuuksien suuntaan. Alimmassa kuvaparissa on käytetty aikaskaalauskerrointa α = 2, eli puhetta on aikatasossa hidastettu puoleen verrattuna alkuperäiseen nopeuteen. Tämä on toteutettu lisäämällä alkuperäiseen signaaliin jokaisen näytteen väliin nolla. Puhenäytteen kesto on nyt kaksinkertainen alkuperäiseen näytteeseen verrattuna eli noin 0.5 sekuntia. Alimpana oikealla olevasta taajuusvasteesta havaitaan, että energiaa on siirtynyt matalammille taajuuksille verrattuna ylimpänä oikealla olevaan alkuperäisen signaalin taajuusvasteeseen. Kuva 3. Puhesignaali aika- ja taajuustasossa eri nopeuksilla [7]. Näytteenottotaajuuden muutoksien aiheuttamien taajuusvasteeseen tulevien muutosten teoreettista taustaa selvitetään perusteellisesti useissa signaalinkäsittelyn perusteoksissa. Esimerkiksi Oppenheim & Schafer: Discrete-Time Signal Processing [2] käsittelee asiaa.
9 3.1 Puheen mallinnus ja käsittely Puheen mallinnus ja käsittely voidaan jakaa kolmeen vaiheeseen: 1. Puhesignaalin analysointi ja mallinnus (analyysi) 2. Signaaliin tehtävät muutokset (muutokset) 3. Signaalin palautus muutetusta signaalista (synteesi) Analyysivaiheessa puhesignaalista luodaan parametrisoitu kuvan 1 mukainen matemaattinen malli. Kuvan 1 puheen mallin tapauksessa analyysivaiheen jälkeen on siis selvillä äänteiden perustaajuudet, kertoimet AN ja AV, joilla säädellään herätteiden amplitudia, sekä suodattimien G(z), V(z) ja R(z) parametrit. Muutosvaiheessa muutetaan analyysivaiheessa muodostetun mallin parametreja halutun lopputuloksen aikaansaamiseksi. Synteesivaiheessa rekonstruoidaan signaali puheen mallia ja muutettuja parametreja hyväksikäyttäen. Puheenkoodausta hyödyntävissä sovelluksissa muodostetun puheen mallin parametrit siirretään vastaanottajalle siirtotien yli. Vastaanottaja rekonstruoi (syntetisoi) siirrettyjen parametrien perusteella puheen uudelleen vastaanottavassa päässä. Puheenkoodauksessa ei ole välttämättä muutosvaihetta ollenkaan tai se on yhdistetty synteesivaiheeseen. Puheenkoodauksen yhteydessä puhutaankin yleensä analyysi-synteesi menetelmistä. Puheenkoodauksella saavutetaan huomattavia säästöjä tarvittavan tiedonsiirtokapasiteetin tarpeessa ja parannuksia systeemin kykyyn sietää siirtotiellä parametreihin aiheutuvia virheitä, jolla puolestaan on huomattava puheen laatua parantava vaikutus. Puheenkoodaussovelluksissa käytetyt mallit ja parametrit voivat olla hyvin monimutkaisia ja monivaiheisia. Aikaskaalaustekniikoissa voidaan käyttää hieman yksinkertaisempia malleja. Perusperiaatteet ovat kuitenkin kummassakin sovelluksessa samat. Kuva 4. Yksinkertaistettu puheen käsittelyn malli. Kuvan 4 mukaisia analyysi-synteesi -menetelmiä on tutkittu erittäin paljon erityisesti puheenkoodausta hyödyntävissä sovelluksissa. Digitaalisissa matkapuhelinverkoissa käytetyt puheenkoodausmenetelmät ovat ehkä yksi merkittävimmistä ja laajimmin käytetty analyysi-synteesi menetelmiä hyödyntävä käytännön sovellus. Matkapuhelimissa on merkittäviä taloudellisia, laadullisia ja luotettavuuteen liittyviä syitä välittää mahdollisimman hyvälaatuista puhetta mahdollisimman pienellä datamäärällä. Tämän johdosta alan tutkimukseen on panostettu erittäin paljon viimeisen 15-20 vuoden ajan.
10 3.2 Aikaskaalausmenetelmät Aikaskaalausmenetelmät voidaan jakaa aika- ja taajuustason menetelmiin. Nimensä mukaisesti aikatason tekniikoissa puhesignaalin käsittely tapahtuu pelkästään aikatasossa. Taajuustason menetelmissä signaali muunnetaan ensin taajuustasoon yleensä käyttäen Fast Fourier Transform (FFT) menetelmää. Aikaskaalauksen vaatimat operaatiot suoritetaan taajuustasossa, jonka jälkeen signaali muutetaan takaisin aikatasoon käyttäen käänteistä FFT:tä (IFFT). Tässä työssä keskitytään tarkemmin vain aikatason menetelmiin koska niiden on todettu soveltuvan puheelle hyvin varsinkin verrattain pienillä (0.25 2) aikaskaalaussuhteilla. Taajuustason menetelmät soveltuvat aikatason menetelmiä paremmin puhetta monivivahteisimmille ja taajuusspektriltään runsaammille signaaleille, kuten esimerkiksi musiikille [5]. Taajuustason menetelmät toimivat myös puheelle aikatason menetelmiä paremmin jos käytetään hyvin suuria tai hyvin pieniä aikaskaalaussuhteita. Taajuustason menetelmien haittapuolena ovat lähes kaikissa tilanteissa esiintyvät vaihevirheistä johtuvat artefaktat, joita kehittyneissä aikatason menetelmissä ei esiinny [5]. Näitä taajuustason menetelmien artefaktoja esiintyy myös pienillä aikaskaalaussuhteilla. Taajuustason menetelmien haittapuolena on myös suuri laskentatehon tarve. Huolimatta tietokoneiden kasvaneesta laskentakapasiteetista tämä voi olla ongelma esimerkiksi jos halutaan suorittaa aikaskaalausta reaaliaikaisesti kannettavissa laitteissa kuten matkapuhelimissa. Aikatason menetelmiä ja menetelmien variaatiota on esitetty kirjallisuudessa suuri määrä. Useat aikaskaalausmenetelmät pohjautuvat signaalin lyhyiden osien (kehysten) analysointiin ja käsittelyyn ja synteesiin. Kehykset voivat olla joka vakio- tai vaihtuvanmittaisia. Synteesivaiheessa kehyksiä joko venytetään, lyhennetään, poistetaan tai kopioidaan riippuen siitä halutaanko puhetta nopeuttaa vai hidastaa. Kuva 5 esittää kehyksille tehtäviä yksinkertaisia aikatason aikaskaalausoperaatioita. Kuva 5. Periaatekuva kehyksille tehtävistä aikatason aikaskaalausoperaatioista [5].
11 Muutettujen kehyksien reuna-alueilla syntyy epäjatkuvuuskohtia jotka aiheuttavat useissa tapauksissa selvästi kuultavissa olevia häiriöitä puhesignaaliin. Leikkaa ja yhdistä menetelmissä (engl. overlap-add) näitä kehysten reuna-alueille muodostuvia epäjatkuvuuskohtia pyritään lieventämään asettamalla peräkkäiset kehykset limittäin toistensa kanssa ja käyttämällä kehysten päällekkäin menevillä reuna-alueilla erilaisia suodatusja painotusmenetelmiä. Synteesivaiheessa kehykset pyritään yhdistämään niin, että äänen perustaajuuteen tulee mahdollisimman vähän epäjatkuvuuskohtia. Parhaassa tapauksessa ei ole kuultavissa muuta muutosta kuin signaalin keston muutos. Kuvassa 6 on esitetty periaatteellinen esimerkki alkuperäisestä signaalista x(n) muodostetusta kehysrakenteesta x 1 (n), x 2 (n), ja x 3 (n). Kuvassa 6 on myös esimerkki kehyksien päällekkäisyydestä, sekä kehyksien päällekkäiselle osalle suoritettavasta suodatuksesta. Kuva 6. Periaatekuva SOLA-algoritmin kehysrakenteesta [7]. Kuvan 6 mukaista kehysrakennetta hyödyntävää aikaskaalausalgoritmia kutsutaan nimellä Syncronous Overlap-Add (SOLA). SOLA-algoritmissa parametreina ovat kehyksien päällekkäisyyden suuruus, kehyksen pituuden skaalauskerroin ja kehyksien välinen aikaviive. SOLA on yksinkertainen ja laskennallisesti tehokas tapa tehdä puheen aikaskaalaus. SOLA:lla saavutettava aikaskaalauksen laatu ei kuitenkaan ole kovin hyvä. [7] 3.3 PSOLA SOLA:sta jatkokehitetyssä Pitch-Syncronous Overlap Add (PSOLA) algoritmissa perusajatuksena on synkronoida kehyksien paikat ja pituudet puheen perustaajuuden kanssa siten, että pyritään minimoimaan puheen nopeuden muuttamisesta perustaajuuteen aiheutuvat epäjatkuvuuskohdat. Käyttäen edellä esiteltyä kolmivaiheista luokittelua PSOLA-algoritmi voidaan esittää seuraavasti: Analyysivaiheessa puhesignaali jaetaan lyhyisiin kehyksiin, jotka voivat mennä päällekkäin toistensa kanssa. Kehyksiä kutsutaan englanninkielisessä kirjallisuudessa nimellä short-term analysis signals (ST). Kehykset ( ) muodostetaan kertomalla signaali perustaajuuden suhteen synkronoiduilla ikkunoilla ( ):
12 ( ) ( ) ( ) (3.3) jossa alaindeksi m viittaan kehyksen indeksiin. PSOLA algoritmissa vaihdellaan kehyksien päällekkäisyyttä välillä 50% - 75% puheen perustaajuuden funktiona. Analyysivaiheen oleellisin ja samalla myös selvästi haastavin osa on selvittää luotettavasti kehyksen perustaajuusjakso (engl. pitch period), joka tarkoittaa siis soinnillisen äänteen perustaajuutta. Tämän lisäksi pitää tunnistaa eri perustaajuusjaksojen rajakohdat (engl. pitch mark). PSOLA-algoritmilla aikaskaalatun puheen laatu riippuu oleellisesti kuinka hyvin perustaajuus ja perustaajuusjaksojen rajat onnistutaan tunnistamaan. Perustaajuusjaksojen rajojen perusteella määritellään kehyksien keskikohdat. Luonnollisesti perustaajuuksien paikat voidaan määritellä vain soinnillisille äänteille. Soinnittomat äänteet käsitellään siten, että perustaajuus pidetään vakiona kunnes tunnistetaan seuraava soinnillinen äänne. Eräs tapa tunnistaa perustaajuus on etsiä maksimaalista korrelaatiota alkuperäisen ja saman mutta eri arvoilla viivästetyn puhekehyksen välillä. Viiveen arvo jolla korrelaatio on suurin vastaa perustaajuutta. Menetelmää, jossa haetaan korrelaatiota signaalista ja saman signaalin viivästetystä versiosta kutsutaan autokorrelaatioksi. Autokorrelaatiomenetelmä on varsin yksinkertainen mutta se ei kaikissa tilanteissa onnistu ennustamaan perustaajuutta oikein. Ongelmia aiheuttaa esimerkiksi puheen amplitudin vaihtelut ja se, että perustaajuus ei kaikilla puhujilla ja kaikissa olosuhteissa välttämättä aina ole täysin säännöllinen. Edistyneempi tekniikka perustaajuuden tunnistamiseen on autokorrelaatioon perustuva Linear Predictive Coding (LPC), jossa perustaajuutta mallinnetaan Finite Impulse Response (FIR) -suodattimen avulla. LPC menetelmässä tarkasteltavaa näytettä ennustetaan edellisten näytteiden lineaarisen yhdistelmän avulla. Menetelmällä ennustetun FIRsuodattimen taajuusvasteen perusteella saadaan perustaajuus selville. Tässä työssä käytettiin LPC menetelmää PSOLA-algoritmin lähtöparametrina tarvittavan perustaajuuden ennustamiseen. Perustaajuuden tunnistamiseen on kehitetty lukuisa joukko erilaisia parannettuja algoritmeja joihin ei tässä työssä paneuduta tämän enempää. Hyvä kuvaus lukuisista eri perustaajuuden tunnistamiseen käytetyistä menetelmistä on esitetty esimerkiksi lähteessä [9]. Perustaajuuden lisäksi PSOLA-algoritmi tarvitsee myös perustaajuusjaksot. Soinnillisten äänteiden perustaajuusjaksot voidaan määritellä etsimällä kehyksen signaalin amplitudin maksimiarvoja. Perustaajuusjakson etsiminen tarkoittaa siis löydetyn perustaajuuden vaiheen synkronointia. Soinnittomille äänteille perustaajuusjaksoa ei muuteta vaan käytetään edellisen soinnillisen ääneen perustaajuusjaksoa. Tässä työssä käytettiin tällaista yksinkertaista menetelmää. Myös perustaajuusjakson tunnistamiseen on esitetty kirjallisuudessa monia monimutkaisempia, esimerkiksi kehyksen energian paikallisen maksimin etsimiseen perustuvia menetelmiä Analyysivaiheen jälkeen suoritetaan muutosvaihe. Muutokset sisältävät kehyksien määrän muuttamista toistamalla kehyksiä useampaan kertaan tai poistamalla kehyksiä. Kehyksien välisiä viiveitä ja kehyksen sisältöä voidaan myös muuttaa. Synteesivaiheessa
13 muutetuista kehyksistä muodostetaan uusi signaali overlap-add -menetelmällä. Yksinkertaisimmillaan synteesivaiheessa muutetut kehykset vain yhdistetään peräkkäin. 3.4 Toteutuksesta Tässä työssä toteutettiin SOLA- ja PSOLA-algoritmit lähteessä [7] esitettyjä esimerkkejä ja algoritmeja hyödyntäen. Kehitystyöhön käytettiin MATLAB-ohjelmistoa. Toteutetut algoritmit käsittelevät puhesyötteen kokonaisuudessaan yhdellä kertaa ja antavat ulostulona käyttäjän asettamalla aikaskaalauskertoimella skaalatun puhenäytteen. Näytteen käsittely tapahtuu siis eräajona, ei reaaliaikaisesti. Algoritmit toteutettiin erillisinä MATLAB-funktiona eli m-tiedostoina. Pääfunktioissa kysytään käyttäjältä aikaskaalattavan tiedoston nimi ja haluttu aikaskaalauskerroin. Kehyksen pituuksia muita algoritmin parametreja voi vaihtaa editoimalla funktion m-tiedostoa. Algoritmit soittavat ulostulon ja kirjoittavat ulostulon myös vakionimiseen tiedostoon. Varsinaista käyttöliittymää ei tämän projektin puitteissa ohjelmoitu vaan tarvittavat komennot annetaan MAT- LAB:n komentoriviltä. Pelkästään näytteenottotaajuuden muutoksella tehdyt vertailusignaalit toteutettiin MATLAB:n downsample ja upsample funktioita hyväksi käyttäen. Algoritmin toteuttaminen reaaliaikaisena esimerkiksi C++ -kielellä mahdollistaisi erilaisten aikaskaalauskertoimien ja mahdollisesti myös algoritmin muiden parametrien vaihtamisen reaaliajassa kesken näytteen toiston. Näin eri aikaskaalauskertoimien väliset erot olisivat paremmin havaittavissa ja vertailtavissa kuuntelemalla. Luonnollisesti reaaliaikainen toteutus olisi myös huomattavasti lähempänä käytännön sovellusta esimerkiksi matkapuhelimeen. Käytännön sovellus vaatisi myös helppokäyttöisemmän käyttöliittymän toteuttamisen.
14 4 TOTEUTUKSEN ARVIOINTI Tässä työssä toteutettuja SOLA- ja PSOLA-algoritmeja arvioitiin erilaisilla aikaskaalauskertoimien arvoilla käyttäen muutamaa erilaista puhenäytettä. Algoritmien parametreja kuten erilaisia kehyspituuksia ei vaihdeltu kuuntelutestien aikana vaan algoritmien parametreille käytettiin kehitystyön aikana hyväksi todettuja vakioarvoja. Näin saatiin vertailtavien muuttujien ja näytteiden määrä pysymään kohtuullisen pienenä ja helposti hallittavana. Vertailunäytteenä käytettiin pelkästään näytteenottotaajuutta muuttamalla aikaansaatua aikaskaalattua puhetta. Arviointikriteerinä käytettiin aikaskaalatun puheen äänen laatua. Äänen laadun arviointi suoritettiin subjektiivisesti eli kuulonvaraisesti kirjoittajan toimesta. Tulosten perusteella voidaan todeta, että SOLA-algoritmi tuottaa hyvin ymmärrettävää puhetta ja tuottaa siten selvästi havaittavissa olevan puheen laadun parannuksen pelkästään näytteenottotaajuuden muutoksella aikaansaatuun vertailusignaaliin verrattuna. SOLA aiheuttaa kuitenkin puheeseen jo varsin pienilläkin aikaskaalauskertoimilla selvästi havaittavia artefaktoja joiden johdosta puhe ei kuulosta enää luonnolliselta vaikkakin puheen sisältö on vielä täysin ymmärrettävissä. PSOLA algoritmilla saavutetaan huomattava parannus SOLA-algoritmiin verrattuna. Pienillä aikaskaalaussuhteilla (0.5 1.5) PSOLA-algoritmilla aikaskaalatussa puheessa ei ole havaittavissa kovin merkittävää epäluonnollisuutta. Kirjallisuudessa esitetään, että aikatason aikaskaalausmenetelmät tuottavat tyydyttävää puheenlaatua aikaskaalauskertoimilla 0.25 2 [7]. Tässä työssä tehtyjen havaintojen perusteella tämä vaihteluväli vaikuttaa varsin oikeaan osuvalta. Suuremmilla ja pienemmillä aikaskaalauskertoimen arvoilla aikaskaalattuun puheeseen tulee selvästi havaittavia epäluonnolliselta kuulostavia häiriöitä. Jatkossa olisi mielenkiintoista vertailla useampaa eri aikaskaalausalgoritmia tarkemmin. Kuten aikaisemmin on todettu, PSOLA-algoritmin haastavin osuus on perustaajuuden tunnistaminen. Perustaajuuden analysointiin on olemassa isoa määrä erilaisia algoritmeja. Jatkossa olisi mielenkiintoista kokeilla näiden eri perustaajuuden tunnistamiseen suunniteltujen algoritmien toimivuutta osana PSOLA-menetelmää. Puheen laadun arviointiin olisi mielenkiintoista käyttää myös objektiivisia laskennallisia puheenlaadun mittareita subjektiivisen arvioinnin lisäksi. Myös laajempien subjektiivisten kuuntelukokeiden järjestäminen isommalla määrällä puhenäytteitä mahdollistaisi aikaskaalatun puheen laadun huomattavasti perusteellisemman ja luotettavamman arvioinnin. Katta-
vamman puheen laadun analysointiin olisi syytä myös käyttää huomattavasti isompaa määrää erilaisia puhenäytteitä. Yksi mielenkiintoinen jatkotutkimuskohde olisi aikaskaalausmenetelmien toimivuuden erojen vertailu eri kieltä olevilla näytteillä. Algoritmien laskentatehon tarpeen arviointia olisi myös mielenkiintoista tutkia tarkemmin. Tästä tiedosta olisi hyötyä esimerkiksi mahdollisille puheen aikaskaalausmenetelmien toteutuksille kannettavissa päätelaitteissa. 15
16 LÄHTEET [1] Rabiner J. R., Schafer R. W., Digital Processing of Speech Signals, Prentice-Hall International, 1974, 509 sivua. [2] Oppenheim Alan V., Schafer Ronald W., Discrete-Time Signal Processing, Prentice-Hall International, 1989, 896 sivua. [3] Stiefelman Lisa J. A study of rate discrimination of time-compressed speech. Journal of the American voice I/O society. Volume 16, November 1994, sivut 69-81. [4] Moulines, Eric, Carpentier Francis. Pitch-Syncronous Waveform Processing Techniques for Text-to-Speech Synthesis using Diphones, Speech Communication 9 (1990), sivut 453-467. [5] Roininen, Mikko. Musiikin aikaskaalaus. Kandidaatintyö. Tampereen teknillinen yliopisto, 2008, 25 sivua. [6] Heikkinen, Ari. High quality speech coding at 8 kbit/s. Diplomityö. Tampereen teknillinen korkeakoulu. 1994, 95 sivua. [7] Verfaille, V., Arfib, D., Keiler, F., von dem Knesebeck, A. and Zölzer, U., Adaptive Digital Audio Effects, DAFX: Digital Audio Effects, Second Edition (ed U. Zölzer), John Wiley & Sons, Ltd. 2011, Chichester, UK. [8] Järvinen, Kari, Frequency and Time Domain Coding of Speech for Digital Mobile Radiocommunication,Lisensiaattityö, Tampereen Teknillinen Korkeakoulu, 1987, 80 sivua. [9] Parsons, Thomas W., Voice and Speech Processing, McGraw-Hill Book Company, 1986, 383 sivua.