Audiosignaalin mallintaminen sineillä ja kohinalla

Samankaltaiset tiedostot
3 Ikkunointi. Kuvio 1: Signaalin ikkunointi.

1 Vastaa seuraaviin. b) Taajuusvasteen

Tietoliikennesignaalit & spektri

TL5503 DSK, laboraatiot (1.5 op) Suodatus 2 (ver 1.0) Jyrki Laitinen

TL5503 DSK, laboraatiot (1.5 op) Suodatus 1 (ver 1.0) Jyrki Laitinen

Laskuharjoitus 2 ( ): Tehtävien vastauksia

THE audio feature: MFCC. Mel Frequency Cepstral Coefficients

DSP:n kertausta. 1 Spektri, DFT, DTFT ja aika-taajuusresoluutio

SGN-4200 Digitaalinen Audio Harjoitustyö-info

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

805324A (805679S) Aikasarja-analyysi Harjoitus 6 (2016)

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

Luento 2. Jaksolliset signaalit

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

Diskreetti Fourier-muunnos ja sen hyödyntäminen signaalien spektrien muodostamisessa. Pentti Romppainen

SGN-4010, Puheenkäsittelyn menetelmät Harjoitus 6, 18. ja

Numeeriset menetelmät

Jaksollisen signaalin spektri

SGN-1200 Signaalinkäsittelyn menetelmät Välikoe

Spektri- ja signaalianalysaattorit

Signaalien tilastollinen mallinnus T (5 op) Syksy 2006 Harjoitustyö

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

Signaalit ja järjestelmät aika- ja taajuusalueissa

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

805324A (805679S) Aikasarja-analyysi Harjoitus 3 (2016)

805324A (805679S) Aikasarja-analyysi Harjoitus 5 (2016)

SIGNAALITEORIAN KERTAUSTA 1

Organization of (Simultaneous) Spectral Components

805324A (805679S) Aikasarja-analyysi Harjoitus 4 (2016)

SGN-1200 Signaalinkäsittelyn menetelmät Välikoe

Taajuusmittauskilpailu Hertsien herruus Mittausraportti

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

Oletetaan ensin, että tangenttitaso on olemassa. Nyt pinnalla S on koordinaattiesitys ψ, jolle pätee että kaikilla x V U

IIR-suodattimissa ongelmat korostuvat, koska takaisinkytkennästä seuraa virheiden kertautuminen ja joissakin tapauksissa myös vahvistuminen.

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

Synteesi-analyysi koodaus

TL5503 DSK, laboraatiot (1.5 op) Audiosignaalit (ver 1.0) Jyrki Laitinen

Ohjelmistoradio tehtävät 4. P1: Ekvalisointi ja demodulaatio. OFDM-symbolien generoiminen

Ratkaisuehdotukset LH 7 / vko 47

Tiistai klo Jari Eerola

Digitaalinen signaalinkäsittely Desibeliasteikko, suotimen suunnittelu

Kapeakaistainen signaali

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

Säätötekniikan ja signaalinkäsittelyn työkurssi

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

Matlab-tietokoneharjoitus

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

Laskuharjoitus 4 ( ): Tehtävien vastauksia

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Tiedonkeruu ja analysointi

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

SMG-2100: SÄHKÖTEKNIIKKA. Kompleksilukujen hyödyntäminen vaihtosähköpiirien

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Ohjelmoinnin perusteet Y Python

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Tuntematon järjestelmä. Adaptiivinen suodatin

Väliraportti: Vesipistekohtainen veden kulutuksen seuranta, syksy Mikko Kyllönen Matti Marttinen Vili Tuomisaari

MATP153 Approbatur 1B Harjoitus 3, ratkaisut Maanantai

Laskuharjoitus 9, tehtävä 6

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

= 2 L L. f (x)dx. coshx dx = 1 L. sinhx nπ. sin. sin L + 2 L. a n. L 2 + n 2 cos. tehdään approksimoinnissa virhe, jota voidaan arvioida integraalin

1 WKB-approksimaatio. Yleisiä ohjeita. S Harjoitus

Signaalien generointi

Pienimmän neliösumman menetelmä

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

Ohjelmoinnin perusteet Y Python

SGN-4200 Digitaalinen audio

SIGNAALITEORIAN KERTAUSTA OSA 2

MS-A0102 Differentiaali- ja integraalilaskenta 1

ILKKA HULKKO TAAJUUDEN MITTAUS PAINESIGNAALISTA. Kandidaatintyö

EMC Säteilevä häiriö

Signaalimallit: sisältö

Dynamiikan hallinta Lähde: Zölzer. Digital audio signal processing. Wiley & Sons, Zölzer (ed.) DAFX Digital Audio Effects. Wiley & Sons, 2002.

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

Numeerinen analyysi Harjoitus 3 / Kevät 2017

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

läheisyydessä. Piirrä funktio f ja nämä approksimaatiot samaan kuvaan. Näyttääkö järkeenkäyvältä?

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

Mat Lineaarinen ohjelmointi

FUNKTION KUVAAJAN PIIRTÄMINEN

TRIGONOMETRISTEN FUNKTIOIDEN KUVAAJAT

Puhesynteesin perusteet Luento 4: difonikonkatenaatio

2 Osittaisderivaattojen sovelluksia

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Puheenkoodaus. Olivatpa kerran iloiset serkukset. PCM, DPCM ja ADPCM

Mediaanisuodattimet. Tähän asti käsitellyt suodattimet ovat olleet lineaarisia. Niille on tyypillistä, että. niiden ominaisuudet tunnetaan hyvin

Tiedonkeruu ja analysointi

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

f(x 1, x 2 ) = x x 1 k 1 k 2 k 1, k 2 x 2 1, 0 1 f(1, 1)h 1 = h = h 2 1, 1 12 f(1, 1)h 1 h 2

Signaalien datamuunnokset. Digitaalitekniikan edut

Signaalien datamuunnokset

VEKTORIANALYYSIN HARJOITUKSET: VIIKKO 4

Differentiaali- ja integraalilaskenta 2 Laskuharjoitus 4 / vko 40

Virheen kasautumislaki

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Valitse ruudun yläosassa oleva painike Download Scilab.

Transkriptio:

8323 Digitaalinen audio, harjoitustyö kevät 25: vaiheet I ja II Audiosignaalin mallintaminen sineillä ja kohinalla 1. Yleistä Sinikohinamalli on parametrinen tapa esittää audiosignaali kompaktisti. Siinä äänen jaksolliset komponentit esitetään sineillä, joiden amplitudit, taajuudet ja vaiheet muuttuvat ajan funktiona. Ei-jaksolliset komponentit esitetään ajan lyhytaikaisilla kriittisten kaistojen energioilla. Mallia käytetään mm. äänten sisällön analyysissä ja äänten manipuloinnissa. Harjoitustyössä on tehtävänä toteuttaa yksinkertainen versio sinikohinamallista Matlabilla. Vaiheessa 1 toteutetaan sinien analyysi ja synteesi ja vaiheessa 2 kohinan analyysi ja synteesi. Kuvassa 1 on esitetty koko analyysi/synteesi-järjestelmän lohkokaavio. Ensin sisäänmenevästä signaalista etsitään sinikomponentit ja niiden parametrit. Sinit syntetisoidaan ja vähennetään alkuperäisestä signaalista, jolloin saadaan residuaali. Residuaalista analysoidaaan lyhytaikaiset kriittisten kaistojen energiat, joiden perusteella syntetisoidaan kohinasignaali. Summaamalla syntetisoidut sinit ja kohina saadaan koko syntetisoitu signaali. Järjestelmän kaikki neljä lohkoa toimivat kehyspohjaisesti. Analyysissä parametrit estimoidaan erikseen kussakin kehyksessä, synteesissä taas kukin kehykset syntetisoidaan erikseen ja yhdistetään overlap-addia käyttäen. Selkeyden vuoksi koko järjestelmän ei kuitenkaan tarvitse olla kehyspojainen. Koko signaali voidaan siis käsitellä sinien analyysi -lohkossa ennen kuin syntetisoidaan yhtään kehystä. Myöskään tiedostojen lukemista ja kirjoittamista ei tarvitse toteuttaa kehyspohjaisesti. signaali sinien analyysi sinien taajuudet, amplitudit ja vaiheet residuaali sinien synteesi - syntetisoidut sinit + kohinan analyysi lyhytaikaiset enegiat kullakin kriittisellä kaistalla kohinan synteesi syntetisoitu kohina + sinit ja kohina Kuva 1: Sinikohina-järjestelmän lohkokaavio. Paksumpi viiva kuvaa aikatason signaalia, ohuempi parametrista dataa. 1

Yleisiä vaatimuksia molemmille vaiheille Järjestelmän täytyy toimia ainakin monosignaaleille joiden näytteenottotaajuus on 441 Hz. Järjestelmä saa parametrinaan kehyksen pituuden, ja sen tulee toimia järkevästi ainakin kehyksenpituudella 1-1 ms. Järjestelmän tulee toimia järkevästi muillakin parametreilla. Esim. jos järjestelmälle annetaan syötteenä stereosignaali niin ohjelma voi pysähtyä virheilmoitukseen tai tehdä analyysi-synteesin kullekin kanavalle erikseen. Synteesin overlap-addista johtuen ikkunoiden tulee olla täsmälleen 5% päällekkäin (tällöin limittäiset hanning-ikkunat summautuvat ykköseksi). Toimivuuden tarkistamisessa käytetään 24 ms kehystä, mikä vastaa 158 näytettä 441 Hz näytteenottotaajuudella. Analyysiparametreja ei saa kovakoodata toteutukseen, vaan ne tulee lukea funktiorajapinnasta. 2. Vaihe I: sinien analyyysi ja synteesi Fourierin teoreeman mukaan jaksolliset signaalit pystytään esittämään joukon sinejä summana. Koska äänet muuttuvat ajan myötä, sinien parametrit estimoidaan kussakin aikakehyksessä erikseen. Yleensä audiosignaalit sisältävät jaksollisten äänien lisäksi monenelaisia ei-jaksollisia komponentteja. Nopeasti muuttuvat äänet sekä häiritsevät ei-jaksolliset komponentit tekevät sinien havainnin ja niiden parametrien estimoinnin hankalaksi. Tässä harjoitustyössä käytetään yksinkertaisimpia mahdollisia menetelmiä sinien löytämiseen ja parametrien estimointiin: sinit poimitaan amplitudispektrin lokaaleista maksimeista ja parametrit poimitaan suoraan lyhytaikaisesta spektristä. Sinit syntetisoidaan aikatasossa käyttämällä estimoitua taajuutta, amplitudia ja vaihetta kosinifunktiolle. Vaiheessa I toteutetaan kuvasta 1 lohkot sinien analyysi ja sinien synteesi, sekä residuaalin laskeminen alkuperäisen signaalin ja syntetisoitujen sinien erotuksena. Järjestelmä lukee sisäänmenosignaalin wav-tiedostosta, jonka nimen se saa parametrinaan. Parametrina annetaan myös haluttu sinien määrä N kussakin kehyksessä sekä kehyksen pituus millisekunteina. Järjestelmä kirjoittaa tulossignaalit wav-tiedostoihin ja palauttaa sinien parametrit. Lisäksi järjestelmän tulee visualisoida analyysin tuloksia muutamalla kuvalla (ks. kohta Vaatimukset). 2.1 Sinien analyysi Alkuperäisestä signaalista analysoidaan ensin jaksolliset komponentit, jotka esitetään sineillä. Sinit havainnoidaan ja niiden parametrit estimoidaan kussakin kehyksessä. Lohkokaavio on esitetty kuvassa 2. Jos viimeiseen kehykseen ei riitä tarpeeksi näytteitä (eli signaali ei ole ikkunan pituuden puolikkaan monikerta), tulee signaalin loppuun generoida nollia niin paljon että viimeinen kehys tulee täyteen. 1. Sinien löytäminen Ikkunoi signaali hanning-ikkunalla ja laske sen kompleksinen spektri FFT:tä käyttäen. FFT:n pituus voi olla suurempi kuin alkuperäinen signaali (zero-paddäyksellä lisätään taajuusresoluutiota). Spektristä tarvitaan vain positiiviset taajuudet joten spektrivektorin jälkimmäinen puolisko voidaan poistaa. 2

Poimi amplitudispektristä N suurinta lokaalia maksimia, jotka ovat vähintään 5 Hz päässä toisistaan. Oletetaan että nämä maksimit aiheutuvat stabiileista sineistä, joiden parametrit siis ovat vakiot kehyksen sisällä. Apuna maksimien poimimisessa voi käyttää esim. Matlabin pickpeak-funktiota (löytyy HOSAtoolboxista). Pickpeakin käytössä tulee muistaa antaa parametrina nimenomaan amplitudispekteri eikä kompleksista spektriä, jonka FFT antaa, sekä muuttaa 5 Hz etäisyys diskreetin spektrin indeksien väliseksi etäisyydeksi. Jos spektrissä ei ole tarpeeksi paikallisia maksimeja, ohjelman täytyy generoida tyhjiä sinejä joiden taajuus, amplitudi ja vaihe ovat. 2. Parametrien estimointi Estimoi jokaiselle löydetylle sinille taajuus, amplitudi ja vaihe. Taajuus vastaa sinin paikkaa spektrissä, eli taajuuden estimoitiin käytetään löydettyjen sinien indeksejä diskreetissä spektrissä. Muista että FFT:n antaman spektrin ensimmäinen alkio vastaa taajuutta Hz. signaali ikkunointi FFT sinien havainnointi parametrien estimointi Amplitudit saadaan poimimalla sinin taajuutta vastaava indeksi amplitudispektristä, ja skaalaamalla se sopivasti. Ikkunafunktion vaikutuksen kumoamiseksi tarvitaan skaalaustermi c 2 = --------------, missä w t on ikkunafunktion arvo indeksillä t ja T T w t t = 1 on kehyksen pituus. Vaiheet poimitaan suoraan vaihespektristä sinien taajuuksia vastaavista indekseistä. Saatu vaihe vastaa sinin taajuutta täsmälleen kehyksen alussa. Tuloksena on siis jokaisesta kehyksestä N sinin amplitudit, taajuudet ja vaiheet. 2.2 Sinien synteesi Synteesissä syntetisoidaan kehyksittäin analyysistä saatujen parametrien perusteella signaalin jaksolliset komponentit. Kussakin kehyksessä sinit generoidaan aikatasossa ja summataan. Lohkokaavio on esitetty kuvassa 3. Kehyksen k syntetisoitu signaali hetkellä t saadaan siis kaavalla k k 2π f skt (, ) a nt k = n cos -------------- + ϕ, f n t = T 1 s a n k N n = 1 f n k ϕ n k f 1 =387 Hz, a 1 =.22... Kuva 2: Sinien analyysin lohkokaavio missä, ja ovat sinin n amplitudi, taajuus ja vaihe kehyksessä k. Syntetisoidut kehykset ikkunoidaan hanning-ikkunalla ja kehykset yhdistetään overlap-addilla. 3

Residuaali saadaan yksinkertaisesti vähentämällä alkuperäisestä signaalista syntetisoidut sinit (overlap-addin jälkeen). Jos alkuperäinen signaali on lyhyempi kuin residuaali, siihen tulee lisätä nollia perään kuten analyysissakin siten että signaalien pituudet täsmäävät. Toimivuuden tarkistaminen Järjestelmää testatessa kannattaa ensin kokeilla että yhden sinin analysointi menee oikein (testisignaali 1). Amplitudiksi tulisi tulla noin yksi ja taajuudeksi noin 35 Hz. Testisignaalissa 2 on 2 siniä joiden taajuudet ovat 4 ja 5 Hz ja amplitudit.5 ja.25. Testisignaali 3 on viulu. Toimivuuden voi testata helposti testisignaaleilla 1, 2 ja 3: kun alkuperäisestä signaalista vähennetään syntetisoidut sinit aikatasossa, saadaan residuaali, joka ideaalissa tilanteessa ei sisällä enää jaksollisia komponentteja. Testisignaalien lisäksi hakemistossa /share/www/sgn/arg/8323/htyo/ on skripti tarkistus.m, joka testaa ohjelman toimivuuden näillä kolmella testisignaalilla. Harjoitustöiden tarkastuksessa käytetään luonnollisesti muitakin kuin annettuja testisignaaleja. Ennen harjoitustyön palauttamista testaa ohjelmasi tarkistusskriptillä! Älä palauta ohjelmaa joka ei toimi, vaan 1) mieti mikä menee vikaan 2) yritä keksiä korjaus 3) jos et keksi, kysy neuvoa. sinien taajuudet, amplitudit ja vaiheet sinien aikatason generointi sinien summaminen ikkunointi ja yhdistäminen overlap-addilla syntetisoitu signaali Kuva 3: Sinien synteesin lohkokaavio Tarkistusskripti on tietysti helposti huijattavissa generoimalla sinit ja residuaali käyttämällä jotain muita kuin esitettyjä menetelmiä, mutta koska koodit tarkastetaan myös niin tätä ei kannata kokeilla. Vaatimukset Vaiheesta 1 tulee palauttaa koodit jotka sisältävät ainakin tiedoston vaihe1.m, joka sisältää funktion vaihe1. Annettaessa komento [F, A, P]=vaihe1( tiedostonnimi.wav, N, ikkunan_pituus_ms) ohjelman tulee tehdä sinianalyysi ja synteesi tiedoston tiedostonnimi.wav signaalille käyttäen N kappaletta sinejä kehystä kohti ikkunanpituudella ikkunan_pituus_ms, joka annetaan millisekunteina. Ohjelman tulee toimia ainakin N:n ollessa yhdestä kolmeenkymmeneen. Ohjelman tulee tallettaa syntetisoidut sinit wav-tiedostoon jonka nimi muodostetaan lisäämällä alkuperäisen nimen perään _sinit ennen tiedostopäätettä (esim. tiedostonnimi_sinit.wav ). Ohjelman tulee vastaavasti tallettaa residuaalisignaali wav-tiedostoon jonka nimi generoidaan lisäämällä _residuaali. Analysoitava tiedosto saa olla jossain muussakin kuin työhakemistossa, eli esim. komennon vaihe1( /share/www/sgn/arg/8323/htyo/ testisignaali_2.wav,2,24) tulee analysoida ko. tiedosto ja tallentaa tulossignaalit työhakemistoon (hakemisto, jossa koodi ajetaan). Ulostuloparametrit F, A ja P tulee olla kolme NxK matriisia jotka sisältävät sinien (N kpl) analysoidut taajuudet, amplitudit ja vaiheet kussakin kehyksessä (K kpl). Ohjelman tulee lisäksi generoida Matlabissa seuraavat kuvat: 4

.5.5 2 4 6 8 1 12 14 16 18 2 1 taajuus/hz 5 amplitudi 1 2 3 4 5 6 7 8 9 1 kehys.8.6.4.2 1 2 3 4 5 6 7 8 9 1 kehys Kuva 4: Esimerkki tulostettavista kuvista testisignaalille 3 (viulu). -Kuvaan 1 keskimmäiset 2 näytettä alkuperäisestä signaalista sinisellä viivalla, syntetisoiduista sineistä vihreällä viivalla ja residuaalista punaisella viivalla. Signaalien tulee olla tavallisella solid-viivalla ja näkyä siis päällekkäin samassa kuvassa (plot(orig);hold on;plot...). -Kuvaan 2 pisteillä löydettyjen sinien taajuudet jokaisessa kehyksessä. Jos kehyksiä on yli 1 tulostetaan vain 1 ensimmäistä kehystä. Taajuusakselin voi rajoittaa halutessaan esim. 1 khz:iin. (plot(f(:,1:1),. )) -Kuvaan 3 pisteillä löydettyjen sinien amplitudit jokaisessa kehyksessä. Jos kehyksiä on yli 1 tulostetaan vain 1 ensimmäistä kehystä. Esimerkki tulostettavista kuvista on kuvassa 4. Kuvien ei tarvitse olla täysin esimerkkien kaltaisia, kunhan yllä listatut vaatimukset täyttyvät. Palautuksen tulee sisältää kaikki tarvittavat tiedostot, ei kuitenkaan Matlabin toolboxien funktioita. Katso palautukseen liittyvät tarkemmat ohjeet ja vaatimukset harjoitustyön verkkosivulta. 3. Vaihe II: kohinan analyysi ja synteesi Signaalin ei-jaksolliset komponentit esitetään kohinalla. Tässä käytetään hyväksi ihmiskuulon heikkoutta: kohinantapaisille signaaleille ihminen ei pysty erottamaan energian muutosta kriit- 5

tisten kaistojen (Barkin kaistojen) sisällä. Koska kuulo ei myöskään ole tarkka signaalin vaiheelle, ainut tarvittava tieto kohinasignaalista on spektrin karkea muoto. Spektrin muoto esitetään laskemalla kultakin kriittiseltä kaistalta lyhytaikainen energia. Kohinaosuus on nimenomaan kuulon ominaisuuksien mukaan suunniteltu. Sen takia signaalin monet laskennalliset ominaisuudet eivät säily prosessissa. Järjestelmän toimivuutta kokeillessa kannattaa ensisijaisesti arvioida miten järkevältä lopputulos kuulostaa. 3.1 Kohina-analyysi Residuaali-signaali ikkunoidaan ja kussakin ikkunassa lasketaan lyhytaikanen energia kullakin kriittisellä kaistalla. Taajuutta f vastaava kriittinen kaista b(f) (numero välillä..24) saadaan kaavalla: b( f) = 13atan(.76 f ) + 3.5atan f ----------- 2 75 Missä f on taajuus hertseinä ja x on ns. lattiafunktio. Harjoitustyössä pitää siis mm. ratkaista, mitkä diskreetin spektrin indeksit vastaavat tiettyä kriittistä kaistaa (FFT:n indeksit=>taajuudet Hz=>kaistan numero). Analyysproseduuri on seuraavanlainen: 1. Ikkunoidaan signaali hanning-ikkunalla ja lasketaan kompleksinen spektri FFT:llä. Älä käytä zero-paddingiä (FFT:n pituus on sama kuin ikkunanpituus). 2. Lasketaan lyhytaikainen energia kullakin 25 kriittisellä kaistalla. Kaistan b energia kehyksessä k saadaan kaavalla ebk (, ) = cs() i 2, i I b missä cs on ikkunoidun signaalin kompleksinen spektri, ja joukko I b sisältää kaistaa b vastaavien taajuuksien positiiviset indeksit. Negatiivisia taajuuksia ei käytetä mitenkään. 3. Talletetaan energiat ja siirrytään seuraavaan ikkunaan. Koko signaalin analysoinnin tuloksena 25xK matriisi. Matlabissa indeksointi alkaa 1:stä joten energiat talletetaan indekseihin 1..25. Kohina-analyysin toimivuuden voit testata testisignaalilla 4, joka sisältää kapeakaistaista kohinaa kriittisellä kaistalla 9 (Matlab-indeksillä 1). 3.2. Kohina-synteesi 1. Generoi kaistoittaisia energioita käyttäen amplitudispekti, jossa energia on jakautunut tasaisesti kullakin kriittisellä kaistalla. Generoi ainoastaan positiiviset taajuudet, eli spektrin pituus pitää olla puolet ikkunan pituudesta (ei käytetä zero-päddäystä). Koska energiat saatiin amplitudien neliöiden summana, spektrin generoinnissa pitää laskea amplitudit takaperin energioista, eli energia pitää jakaa tasaisesti koko kriittiselle kaistalle ja käyttää myös neliöjuurta. Esimerkki amplitudispektristä jossa energiat ovat tasaisesti jaettu on kuvassa 5. 6

2. Generoi satunnainen, välille [ 2π, ] tasaisesti jakautunut vaihespektri. (poikkeus: taajuuden nolla vaiheen tulee olla nolla). Yhdistä generoitu amplitudispekti ja vaihespektri siten että tuloksena on kompleksinen spektri, jolla on ykköskohdan amplitudi ja kakkoskohdan satunnainen vaihe (kompleksinen_spektri= amplitudispektri.*exp(i*vaihespektri)). magnitude in db 2 1 1 2 3 4 5.2.4.6.8 1 frequency/hz 1.2 1.4 1.6 1.8 2 x 1 4 3. Generoi negatiivisten Kuva 5: Erään kohinasignaalin generoitu amplitudispektri. taajuuksien spektri ja yhdistä se positiivisten taajuuksien kanssa samaan vektoriin. Tuloksena on spektri joka on täsmälleen yhtä pitkä kuin kehys. Negatiivisten taajuuksien tulee olla positiivisten taajuuksien kompleksikonjugaatteja jotta spektri olisi reaalisen signaalin spektri. Tutki FFT:llä saatuja lyhyitä spektrejä jotta Matlabin tapa positiivisten ja negatiivisten taajuuksien käsittelyyn selviää. 3. Laske IFFT:llä spektristä aikatason signaali. Vaikka spektri olisi generoitu oikein, laskentatarkkuudesta johtuen signaali ei välttämättä ole täysin reaalinen. Käytä siis vain saatua reaaliosaa: real(ifft(cs)). 4. Yhdistä vierekkäiset ikkunat ikkunoimalla ne hanning-ikkunalla ja overlap-addilla. Kohina-analyysin ja synteesin toimivuuden voit testata esim. testisignaalilla 5 syöttämällä sen suoraan kohina-analyysi/synteesin läpi. Puheen pitäisi muuttua käheämmäksi mutta säilyä ymmärrettävänä. Johtuen muutamista yksinkertaistuksista syntetisoidun signaalin taso on hieman matalampi kuin alkuperäisen. Huomaa että syntetisoitu kohina ei enää vastaa tarkalta vaiheeltaa ja amplitudiltaan alkuperäistä signaalia kuten syntetisoidut sinit tekevät. Muutenkin kohina-synteesin toimivuuden testaamisessa tärkein kriteeri on se, miltä ulostulo kuulostaa. Vaatimukset Vaiheesta 2 tulee palauttaa koodit jotka sisältävät ainakin tiedoston vaihe2.m, joka sisältää funktion vaihe2. Annettaessa komento [F,A,P,E]=vaihe2( tiedostonnimi.wav,n,ikkunan_pituus_ms) ohjelman tulee tehdä ensin sinianalyysi ja synteesi tiedoston tiedostonnimi.wav signaalille kuten vaiheessa 1. Seuraavaksi ohjelman tulee syöttää residuaalisignaali kohina-analyysiin ja synteesiin kuvan 1 mukaisesti. Annettaessa sinien määräksi, ohjelman tulee ohittaa sinianalyysi ja synteesi. Tällöin syntetisoiduiksi sineiksi tulee signaali joka on pelkkää nolla ja residuaali on sama kuin alkuperäinen signaali. 7

Kuten vaiheessa 1, ohjelman tulee tallentaa tulossignaalit tiedostoihin joiden nimeen lisätään _sinit, _residuaali, _kohina, _sinitjakohina. Ulostuloparametrit F, A ja P ovat samat kuin vaiheessa 1, ja E on 25xK-matriisi joka sisältää kriittisten kaistojen energiat jokaisesta kehyksestä. Ohjelman tulee generoida Matlabissa kuva, joka sisältää kriittisten kaistojen energiat meshfunktiolla esitettynä. Jos kehyksiä on yli 1 tulostetaan vain 1 ensimmäistä kehystä. Esimerkki kuvassa 6. Palautuksen tulee sisältää kaikki tarvittavat tiedostot, eli tarvittaessa vaiheen 1 koodit palautetaan myös uudestaan. 6 5 4 3 2 1 2 15 8 1 6 4 5 2 kriittinen kaista kehys Kuva 6: kehyksittäiset kriittisten kaistojen energiat testisignaalista 5. 1 LIITE Testisignaalit hakemistossa /share/www/sgn/arg/8323/htyo/ testisignaali_1.wav: 1 sini, amplitudi 1, taajuus 35 Hz testisignaali_2.wav: 2 siniä, amplitudit.5 ja.25 taajuudet 4 ja 5 Hz testisignaali_3.wav: viulu testisignaali_4.wav: kohinaa kriittisellä kaistalla 9 testisignaali_5.wav: puhetta testisignaali_6.wav: musiikkia 8