3 Ikkunointi. Kuvio 1: Signaalin ikkunointi.



Samankaltaiset tiedostot
Digitaalinen signaalinkäsittely Desibeliasteikko, suotimen suunnittelu

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

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

4.2 Akustista fonetiikkaa

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

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

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

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

SIGNAALITEORIAN KERTAUSTA OSA 2

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

1 Vastaa seuraaviin. b) Taajuusvasteen

SGN-4010 Puheenkäsittelyn menetelmät

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

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

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

z muunnos ja sen soveltaminen LTI järjestelmien analysointiin

Audiosignaalin mallintaminen sineillä ja kohinalla

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

MS-C1420 Fourier-analyysi osa II

Tietoliikennesignaalit & spektri

Spektri- ja signaalianalysaattorit

1 Olkoon suodattimen vaatimusmäärittely seuraava:

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

S Laskennallinen Neurotiede

Algoritmit 1. Demot Timo Männikkö

Tieteellinen laskenta 2 Törmäykset

Signaalit ja järjestelmät aika- ja taajuusalueissa

1 Tarkastellaan digitaalista suodatinta, jolle suurin sallittu päästökaistavärähtely on 0.05 db ja estokaistalla vaimennus on 44 db.

S MRI sovellukset Harjoitustehtävät. Ryhmä 1 Juha-Pekka Niskanen Eini Niskanen

Helsingin seitsemäsluokkalaisten matematiikkakilpailu Ratkaisuita

Tuntematon järjestelmä. Adaptiivinen suodatin

puheen laatu kärsii koodauksesta mahdollisimman vähän. puhe pakkautuu mahdollisimman pieneen määrään bittejä.

Turun seitsemäsluokkalaisten matematiikkakilpailu Tehtävät ja ratkaisut

T SKJ - TERMEJÄ

Ohjelmoinnin perusteet Y Python

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Synteesi-analyysi koodaus

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

Syötteen ainoalla rivillä on yksi positiivinen kokonaisluku, joka on alle = Luvussa ei esiinny missään kohtaa numeroa 0.

a(t) = v (t) = 3 2 t a(t) = 3 2 t < t 1 2 < 69 t 1 2 < 46 t < 46 2 = 2116 a(t) = v (t) = 50

Zeon PDF Driver Trial

Algoritmit 1. Demot Timo Männikkö

Luku 8. Aluekyselyt. 8.1 Summataulukko

5 Lineaarinen ennustus

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Datatähti 2019 loppu

Kenguru 2015 Mini-Ecolier (2. ja 3. luokka) RATKAISUT

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

SIGNAALITEORIAN KERTAUSTA 1

c) 22a 21b x + a 2 3a x 1 = a,

ELEC-C7230 Tietoliikenteen siirtomenetelmät

Kohina. Havaittujen fotonien statistinen virhe on kääntäen verrannollinen havaittujen fotonien lukumäärän N neliö juureen ( T 1/ N)

MATP153 Approbatur 1B Harjoitus 6 Maanantai

Alla olevassa kuvassa on millisekunnin verran äänitaajuisen signaalin aaltomuotoa. Pystyakselilla on jännite voltteina.

Successive approximation AD-muunnin

L/M = 16.9/9.1 = 169/91 = 13/7.

JOHDATUS TEKOÄLYYN TEEMU ROOS

4 Matemaattinen induktio

33. pohjoismainen matematiikkakilpailu 2019 Ratkaisut

5 Funktion jatkuvuus ANALYYSI A, HARJOITUSTEHTÄVIÄ, KEVÄT Määritelmä ja perustuloksia. 1. Tarkastellaan väitettä

järjestelmät Luento 8

Matematiikan tukikurssi

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Ohjelmoinnin peruskurssi Y1

Digitaalinen Signaalinkäsittely T0125 Luento

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Jonot. Lukujonolla tarkoitetaan ääretöntä jonoa reaalilukuja a n R, kun indeksi n N. Merkitään. (a n ) n N = (a n ) n=1 = (a 1, a 2, a 3,... ).

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

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Matematiikan tukikurssi

Ohjelmoinnin perusteet Y Python

Trigonometriaa ja solve-komento GeoGebralla

Derivaatan sovellukset (ääriarvotehtävät ym.)

a b c d

T Luonnollisten kielten tilastollinen käsittely

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

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2

JOHDATUS TEKOÄLYYN TEEMU ROOS

Matematiikan tukikurssi

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

MS-A010{3,4,5} (ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

JOHDATUS TEKOÄLYYN TEEMU ROOS

Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio

Matlab-tietokoneharjoitus

1 Määrittele lyhyesti seuraavat käsitteet. a) Kvantisointivirhe. b) Näytetaajuuden interpolointi. c) Adaptiivinen suodatus.

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

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Lukujoukot. Luonnollisten lukujen joukko N = {1, 2, 3,... }.

x + 1 πx + 2y = 6 2y = 6 x 1 2 πx y = x 1 4 πx Ikkunan pinta-ala on suorakulmion ja puoliympyrän pinta-alojen summa, eli

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1

T Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti , 8:30-10:00 Kollokaatiot, Versio 1.1

Signaalien generointi

Kenguru 2010 Cadet (8. ja 9. luokka) sivu 1 / 5

Tehtäväsarja I Tehtävät 1-5 perustuvat monisteen kappaleisiin ja tehtävä 6 kappaleeseen 2.8.

Transkriptio:

3 Ikkunointi Puhe ei ole stationaarinen signaali, vaan puheen ominaisuudet muuttuvat varsin nopeasti ajan myötä. Tämä on täysin luonnollinen ja hyvä asia, mutta tämä tekee sellaisten signaalinkäsittelyn menetelmien kuten DFT tai autokorrelaatio käyttämisen sellaisenaan mahdottomaksi. Useilla äänteillä puhesignaalin omainaisuudet pysyvät lyhyen jakson ajan (n. 5- ms) enemmän tai vähemmän vakiona. Tämä tarkoittaa sitä että puhesignaalista otettuun lyhyeen ikkunaan voidaan soveltaa suhteellisen menestyksekkäästi perinteisiä signaalinkäsittelyn menetelmiä. Suuri osa puheenkäsittelystä tapahtuukin näin: ottamalla signaalista lyhyitä ikkunoita (mahdollisesti osittain päällekkäisiä) ja käsittelemällä niitä. Tälläistä lyhyttä puheesta (tai muusta signaalista) otettua ikkunaa kutsutaan kehykseksi (engl. frame). Tämä ikkunointi vastaa toteutuksellisesti sitä mitä sillä ymmärretään esimerkiksi suodattimen suunnittelussa ikkunointimenetelmällä: otetaan pitkä signaali (esimerkiksi puhesignaali tai ideaalinen impulssivaste) ja kerrotaan se näytteittäin äärellisen pituisella ikkunafunktiolla, jolloin tuloksena saadaan äärellisen mittainen ja yleensä painotettu versio alkuperäisestä signaalista. Havainnollistus löytyy kuviosta. Alkuperäinen signaali ja Hanning ikkuna....5.5 38 39 4 4 42 43 44 45 46 47 48.3...tadaa! Ikkunoitu kehys signaalista.2...2.3 2 3 4 5 6 7 8 9 Kuvio : Signaalin ikkunointi. Puheenkäsittelyssä ikkunafunktion täsmällinen muoto ei ole kovin kriittinen, mutta yleensä kannattaa käyttää jotain pehmeää ikkunaa (esimerkiksi Hanning, Hamming, kolmio, puolisuunnikas), ei siis suorakulmaista. Tämä johtuu pitkälti samasta syystä kuin suodattimen suunnittelussakin, ts. pehmeämmän ikkunan spektrin sivukeilat ovat huomattavasti pienemmät kuin suorakulmaisen ikkunan (kuvio 2). Lisäksi esimerkiksi myöhemmin tarkasteltavassa LPC-analyysissä signaali oletetaan :ksi ikkunan ulkopuolella, joten suorakulmaisen ikkunan tapauksessa tapahtuu ikkunan rajalla äkillinen muutos signaalissa, mikä tietenkin usein vääristää tuloksia. 9

Muutama ikkunatyyppi....8.6.4.2 5 5 2 25 3 35 4 45 5...ja niiden vasteet (normalisoituna) Vaste, db 2 3 4 5 6.5..5.2.25.3.35 Normalisoitu taajuus (=Nyquist) Kuvio 2: Signaalin ikkunointi. Kuitenkin täytyy pitää mielessä, että puheenkäsittelyssä (päinvastoin kuin esimerkiksi suodattimen suunnittelussa) menetelmät ovat harvoin täydellisesti matemaattisesti perusteltuja, vaan yleensä tavoitteena on toteuttaa järjestelmä, joka toimii mahdollisimman hyvin annetussa sovelluksessa. Nämä sovelluksen kriteerit taas saattavat olla hyvin vaikeasti analyyttisesti määriteltävissä, kuten esimerkiksi koodatun puheen laatu, syntetisoidun puheen ymmärrettävyys tai ehostetun puheen miellyttävyys. Tältä pohjalta kannattaa ikkunointiinkin suhtautua sen verran vapaasti, että on valmis käyttämään erilaista ikkunointia eri tilanteissa. Esimerkiksi: puheen koodauksessa pyritään usein esittämään näytteet täsmälleen sellaisina kuin ne ovat, jolloin tässä käytetään suorakulmaista ikkunointia. Sen sijaan kun puhekoodekissa lasketaan ns. LPC-kertoimet, näiden laskennassa käytetään pehmeää ikkunaa, joka on vieläpä epäsymmetrinen jotta koodekin viive saadaan minimoitua. Puheentunnistuksessa käytetään yleensä päällekkäsiä nin ms ikkunoita, joista tehdään hypoteeseja mikä äänne voisi olla kyseessä, ja näitä hypoteeseja yhdistellään useamman ikkunan yli. Jos puhetta halutaan myös muokata (ei siis ainoastaan analysoida), kannattaa käyttää päällekkäisiä ikkunoita jotka summautuvat suurin piirtein :een. Esimerkki: maailman karkein koodaussysteemi, jossa otetaan kustakin kehyksestä DFT, nollataan siitä kaikki paitsi isointa tappia ja otetaan tästä käänteismuunnos. Toteutetaan tämä koska siinä tulee hyvin esille erilaisia ikkunointiin, analysointiin ja syntetisointiin liittyviä juttuja. Matlab-koodi löytyy osoitteesta http://www.cs.tut.fi/sgn/arg/835/fft_koodaus_fi.m sekä alta. function syn = FFT_koodaus_fi(ind,N);

% syn = FFT_koodaus_fi(ind,N); % Ikkunointi-demo: otetaan puhetta, käydään se läpi % pyöreäreunaisesti ikkunoiduissa 6 ms kehyksissä (jos ind == ), tai % suorakulmaisesti ikkunoiduissa 3 ms kehyksissä (jos ind == ), % lasketaan kustakin FFT, nollataan kaikki paitsi N+ korkeinta tappia, ja % syntetisoidaan tämän perusteella puhe takaisin (ulostulosignaaliin % syn ). % Puhetiedostona käytetään yhdeksän6.mat. load yhdeksän6.mat x = x(:); % tehdään pystyvektoriksi fs = 6; % näytteenottotaajuus if ( ind == ), awinlen = round( fs*.6); % analyysi-ikkunan pituus, 6 ms % tehdään hihasta analyysi-ikkuna, pyöreät reunat, tasainen keskeltä temp = hanning( fs*.); % tässä siis ne pyöreät reunat awinfun = [temp(:length(temp)/2); ones(awinlen-length(temp),);... temp(length(temp)/2+:)]; swinlen = round(awinlen/2); % synteesi-ikkunan pituus, puolet % analyysi-ikkunasta swinfun = hanning( swinlen); % synteesi-ikkunafunktio nforward = swinlen/2; % kuinka monta tappia on kehysten välillä if ( ind == ), awinlen = round( fs*.3); % analyysi-ikkunan pituus, 3 ms awinfun = boxcar( awinlen); swinlen = round(awinlen); % nyt synteesi-ikkunan pituus = % analyysi-ikkunan pituus swinfun = boxcar( swinlen); % synteesi-ikkunafunktio nforward = swinlen; figure plot(awinfun, -- ); hold on plot(+awinlen/2-swinlen/2+(:swinlen-), swinfun, r-. ); title( analyysi-ikkuna (sin) ja synteesi-ikkuna (pun) ) axis([.4]) print -depsc a_ja_s_ikkuna.eps fftind = :floor(awinlen/2)+; % FFT:n puolikkaan indeksit n = +ceil(awinlen/2); % kehyksen keskimmäinen näyte syn = zeros( size( x));

flag = ; % lippu piirtelyä varten while ( n+ceil(awinlen/2) <= length(x)) awinind = n-ceil(awinlen/2)+(:awinlen-); % nykyisen kehyksen % analyysi-ikkunan indeksit frame = x( awinind).*awinfun; % kehys Frame = fft(frame); % kehyksen FFT %etsitään (N+):nneksi suurin itseisarvo [val,sind] = sort( abs( Frame( fftind))); valn = val( -N); Frame( abs(frame) < valn)=; % nollataan kaikki paitsi N+ % korkeinta tappia iframe = real(ifft(frame)); % käänteinen FFT, reaaliosa pyöristys- % virheiden takia swinind = n - swinlen/2 + (:swinlen-); % synteesi-ikkunointi swin = iframe( + awinlen/2 - swinlen/2 + (:swinlen-)).*swinfun; syn( swinind) = syn(swinind) + swin; % overlap-add if ((n > 3) & ~flag) % piirrellään kuvio kehyksestä figure plot( x(awinind), k ); % tätä tuskin kuvasta näkyy jos % suorakulmainen ikkuna oli valittuna hold on plot( frame, b-- ); plot( awinlen/2-swinlen/2+(:swinlen-), swin, r-. ); title( alkup. puhe (must), analyysi-ikkuna (sin) ja synteesi-ikkuna (pun print -depsc kehys.eps flag = ; n = n + nforward; figure plot(x, k ); hold on plot(syn, r-. ); title( puhe (must) ja muokattu puhe (pun) ); print -depsc tulos.eps Idea hommassa on seuraava: puheesta ikkunoidaan ensin kehys FFT-analyysia varten kohtuullisen pitkällä (6ms) ja melko suorakaiteisella ikkunalla. Tarkoituksena on saada käsitys puheen taajuussisällöstä ikkunan aikana, mutta silti niin että ikkunointi ei kohtuuttomasti vaikuta kehyksen muotoon. 2

Funktioon on esimerkin vuoksi sisällytetty myös mahdollisuus käyttää 3 ms pituista suorakaiteen muotoista ikkunaa, mutta sitä ei käytännössä kannata valita, jotta puheen laatu ei kohtuuttomasti kärsisi. Analyysikehyksestä lasketaan FFT ja nollataan siitä kaikki paitsi itseisarvoltaan suurimmat tapit. Tälle osittain nollatulle spektrille lasketaan tämän jälkeen käänteinen FFT, jolloin saadaan vastaava aikatason signaali. Seuraavaksi tehdään uusi ikkunointi (mikäli 6 ms ikkuna oli valittuna): edellisestä signaalista ikkunoidaan vain keskimmäinen osa, ja reunat pehmennetään. Tässä käytetään Hanningikkunaa, jolla on se mukava ominaisuus, että puoliksi päällekkäiset ikkunat summautuvat lähes :een, kuten kuva 3 osoittaa (täsmälleen :een jos ikkunan pituus on pariton). Tätä menetelmää, jossa generoidaan osittain päällekkäisiä signaaleja ja muodostetaan varsinainen lopputulos näiden summasta, sanotaan overlap-add-menetelmäksi. Jos kokeilumielessä valitaankin 3 ms suorakaideikkuna, peräkkäiset kehykset eivät osu ollenkaan päällekäin, vaan synteesi tapahtuu liimaamalla käänteisen FFT:n tuottamia aikatason signaaleja sellaisenaan peräkkäin. Kehysten rajoilla esiintyy täten epäjatkuvuuskohtia, jotka saavat ulostulopuheen kuulostamaan hyvin epäluonnolliselta..4 Puoliksi päällekkäisten Hanning ikkunoiden summa.2.8.6.4.2 2 4 6 8 2 Kuvio 3: Puoliksi päällekkäisten Hanning-ikkunoiden summa on lähes, eli niitä voidaan näppärästi käyttää synteesi-ikkunointiin. Käytettäessä 6 ms ikkunaa (eli ind = ) ja valittaessa N = 9, jolloin itseisarvoltaan suurinta tappia FFT:stä jätetään jäljelle, funktio tulostaa kuvioiden 4-6 mukaiset kuvat. 3

analyysi ikkuna (sin) ja synteesi ikkuna (pun).2.8.6.4.2 2 3 4 5 6 7 8 9 Kuvio 4: M-funktiossa käytetyt analyysi- ja synteesi-ikkunat..5 x 4 alkup. puhe (must), analyysi ikkuna (sin) ja synteesi ikkuna (pun).5.5.5 2 3 4 5 6 7 8 9 Kuvio 5: Yhden kehyksen signaalit. 4

.5 x 4 puhe (must) ja muokattu puhe (pun).5.5.5 2 4 6 8 2 Kuvio 6: Alkuperäinen ja koodattu puhe. 5