Seuraa 
Viestejä916
Liittynyt19.3.2005

Minun pitäiisi tehdä kapeakaistainen spektrianalyysi tuulivoimalan äänistä. Minulla on mitattu tuulivoimalan ääntä, ja pystyn työkaluilla leikkaamaan ääntä mp3- ja wav-tiedostoihin. Näille pitäisi tehdä kapeakaistainen spektrianalyysi. Standardissa IEC 61400-11 on sanottu

The two one-minute measurements shall be divided into 12 ten-second periods, from which 12 energy averaged narrowband spectra using the Hanning window are obtained.

Varmaankin tuollaisen saa aikaan vaikka R:llä, Pythonilla tai Octavella. En ole ennen tehnyt signaalinkäsittelyä, joten miten tuollainen kapeakaistainen spektrianalyysi tehdään wav- tai mp3-tiedostosta? Ja mitä tarkoittaa energy averaged narrowband spectra? Kuinka saan selville äänitiedoston datan resoluution?

Sivut

Kommentit (22)

MooM
Seuraa 
Viestejä6300
Liittynyt29.6.2012

pöhl kirjoitti:
Minun pitäiisi tehdä kapeakaistainen spektrianalyysi tuulivoimalan äänistä. Minulla on mitattu tuulivoimalan ääntä, ja pystyn työkaluilla leikkaamaan ääntä mp3- ja wav-tiedostoihin. Näille pitäisi tehdä kapeakaistainen spektrianalyysi. Standardissa IEC 61400-11 on sanottu

The two one-minute measurements shall be divided into 12 ten-second periods, from which 12 energy averaged narrowband spectra using the Hanning window are obtained.

Varmaankin tuollaisen saa aikaan vaikka R:llä, Pythonilla tai Octavella. En ole ennen tehnyt signaalinkäsittelyä, joten miten tuollainen kapeakaistainen spektrianalyysi tehdään wav- tai mp3-tiedostosta? Ja mitä tarkoittaa energy averaged narrowband spectra? Kuinka saan selville äänitiedoston datan resoluution?

En tiedä tuosta alasta mitään, mutta kulostaa, että sinun pitää

1. tuoda tuo data ohjelmaan, jolla lasket (oletetaan vaikka R, sille löytyy ainakin helposti tarvittavat funktiot)

https://cran.r-project.org/web/packages/seewave/vignettes/seewave_IO.pdf 

2. Nyt sinulla on kaksi aikasarjaa. Teet koodin, jolla paloittelet sen 10 sekunnin pätkiksi (tai jos funtio osaa, teet analyysin kerralla ja määräät intervallit 10 s pituisiksi). Narrow-band varmaan viittaa siihen, että analyysissa lasketaan teho aika hyvällä taajuusresoluutiolla. Sitä en osaa sanoa, mikä taajuuskaista kannattaa analysoida.

https://www.rdocumentation.org/packages/signal/versions/0.7-6/topics/spe... 

3. keskiarvoistat nuo spektrit, jos funktio ei sitä tee

keskiarvoisuksista:

https://community.plm.automation.siemens.com/t5/Testing-Knowledge-Base/A... 

The energy average calculates the averages of the squared values of all values. For this reason, sometimes the term RMS (root mean square) average is used in lieu of energy average

pöhl
Seuraa 
Viestejä916
Liittynyt19.3.2005

Hmm. Kuulostaa ihan järkevältä. Täytyy vaan opetella R. 

> library(signal)

Attaching package: ‘signal’

The following objects are masked from ‘package:stats’:

filter, poly

> s <- readWave("path/file.wav")
> specgram(s, n = min(256, length(s)), Fs = 2, window = hanning(n), overlap = ceiling(length(window)/2))
Error in specgram(s, n = min(256, length(s)), Fs = 2, window = hanning(n), :
'x' has to be a numeric.

Siis mikä x, enhän määritellyt x:ää missään?

Neutroni
Seuraa 
Viestejä28727
Liittynyt16.3.2005

pöhl kirjoitti:
Varmaankin tuollaisen saa aikaan vaikka R:llä, Pythonilla tai Octavella. En ole ennen tehnyt signaalinkäsittelyä, joten miten tuollainen kapeakaistainen spektrianalyysi tehdään wav- tai mp3-tiedostosta?

Tiedosto täytyy purkaa niin, että sinulla on äänisignaali ajan funktiona taulukkona. Wav on yleensä jotain headereita ja sitten haluttu data sellaisenaan. Mp3 on pakattu jollain ihmeellisellä menetelmällä ja wavistakin on kai pakattuja versioita olemassa (se käy selville siitä headerista).

Lainaus:
Ja mitä tarkoittaa energy averaged narrowband spectra?

Kai se tarkoittaa useita eri aikaan mitattuja energiaspektrejä, jotka on keskiarvoistettu. Energiasuureet (esim. teho) saadaan kenttäsuureen (esim. äänenpaine) neliönä.

Lainaus:
Kuinka saan selville äänitiedoston datan resoluution?

Tarkoitat ilmeisesti näytteenottotaajuutta. Äänitiedoston headerista löytyy tieto siitä. Helpointa on tallentaa tiedosto pakkaamattomana wavina ja katsoa googlesta miten se luetaan.

mdmx
Seuraa 
Viestejä4735
Liittynyt23.11.2009

pöhl kirjoitti:
Hmm. Kuulostaa ihan järkevältä. Täytyy vaan opetella R. 

> library(signal)

Attaching package: ‘signal’

The following objects are masked from ‘package:stats’:

filter, poly

> s <- readWave("path/file.wav")
> specgram(s, n = min(256, length(s)), Fs = 2, window = hanning(n), overlap = ceiling(length(window)/2))
Error in specgram(s, n = min(256, length(s)), Fs = 2, window = hanning(n), :
'x' has to be a numeric.

Siis mikä x, enhän määritellyt x:ää missään?

x on argumentin nimi, joka selviää dokumentaatiosta.

https://www.rdocumentation.org/packages/signal/versions/0.7-6/topics/spe...

x the vector of samples.

readWave palauttaa Wave olion, et voi antaa sitä suoraan parametrina.

wave@left palauttaa vasemman kanavan samplet, wave@right oikean jos stereo.

Eli tämä vois toimia:

specgram(s@left, n = min(256, length(s)), Fs = 2, window = hanning(n), overlap = ceiling(length(window)/2))

miilu
Seuraa 
Viestejä709
Liittynyt25.1.2011

Ohjelmointi on kovin työlästä puuhaa. Talven kaamoksessa tuli jokunen rivi pythonilla opiskeltua.
Hiukan samojen ongelmien kanssa olin äänitiedostoja purkaessa. Tosin ongelmana oli saada hyvin kapea  spektrin osa näkyviin. Infraäänien kanssa on ehkä tosin päin. Ehkä olisi hyödyksi äänittää pidempi pätkä, ja nopeuttaa äänitiedosto esim. kymmenkertaisesti. Näin infraäänen spektrin taajuus olisi jo kuuloalueella n. 120Hz.
Omissa kokeiluissa taasen muutin signaalin äänitteen toistonopeutta 0,1 %:n verran, joka oli muokkausohjelman pienin toistonopeuden muutosvalinta. Suuremi muutos menee jo tulostusikkunan ulkopuolelle.
Kuvassa koodi joka tuo analysointikohdasta pienen pätkän, joka osuu spektrin analysoitavan piikin kohdalle.

pöhl
Seuraa 
Viestejä916
Liittynyt19.3.2005

mdmx kirjoitti:

Eli tämä vois toimia:

specgram(s@left, n = min(256, length(s)), Fs = 2, window = hanning(n), overlap = ceiling(length(window)/2))

Tulosti R-studiossa tyhjän kuvan, jossa on näkyvissä vaan asteikko ja akseleiden otsikot. Lisäksi varoitus 

Warning message:
In specgram(s@left, n = min(256, length(s)), Fs = 2, window = hanning(n), :
specgram fft size adjusted to6630000

pöhl
Seuraa 
Viestejä916
Liittynyt19.3.2005

Ei tämä sittenkään ole niin suoraviivaista. Pitäisi tietää kunnolla miten tuo algoritmi menee. En aikanaan oikein tiedä miten tuo "eri aikaan mitattuja energiaspektrejä, jotka on keskiarvoistettu" pistetään koodiin. Siis siinä pitää kai tietää väli, jolta energiat tutkitaan? Jotenkin ainakin tuohon keskiarvon ymmärtämiseen tarvitsisin aluksi selvennystä.

MooM
Seuraa 
Viestejä6300
Liittynyt29.6.2012

pöhl kirjoitti:
Ei tämä sittenkään ole niin suoraviivaista. Pitäisi tietää kunnolla miten tuo algoritmi menee. En aikanaan oikein tiedä miten tuo "eri aikaan mitattuja energiaspektrejä, jotka on keskiarvoistettu" pistetään koodiin. Siis siinä pitää kai tietää väli, jolta energiat tutkitaan? Jotenkin ainakin tuohon keskiarvon ymmärtämiseen tarvitsisin aluksi selvennystä.

"eri aikaan mitattu": kai halutaan vain sämplätä ajallisia vaihteluita äänilähteen toiminnassa. Jos mitattaisiin vain yhtä hetkeä, voisi tulos olla vääristynyt. Laskennan kannalta on ihan sama, onko mitattu palat peräkkäin vai vuoden välein, jos muuten mittaus pysyy samana. 

En osaa ottaa kantaa koodeihin, kun teen itse Matlabilla kaiken. Mutta tyypillisesti fft-algoritmeille (jotka tuottavat taajuusspektrin) annetaan aikasarja ja sen näytteitystaajuus, ja sitten määritellään taajuusalue ja taajuusresoluutio, jolla tulos halutaan. Monessa algoritmissa/funktiossa on mukana tuo paloissa laskeminen (siis aikasarjasta otetaan lyhyempiä pätkiä, jotka lasketaan ja tulokset (spektrit) keskiarvoistetaan jo algoritmissa.

Keskiarvoistusmenetelmänä on kai yleensä oletuksena tuo energiakeskiarvo (?). Palat saa usein myös limittäin, mikä yleensä parantaa lopputulosta (tosin tuon ohjeen mukaan tässä ei käytetä liukuvaa ikkunaa). Jos noita optioita ei ole funktiossa, paloittelu pitää toteuttaa silmukalla tms omalla rakenteella. Samoin keskiarvon laskeminen paloille pitää tehdä käsin.

http://www.ni.com/white-paper/4278/en/

kuvaa perusidean spektrin laskemisessa. Samassa myös selvennystä teho vs. energia-asiaan.

pöhl
Seuraa 
Viestejä916
Liittynyt19.3.2005

Mitenkähän seuraava vaihe menee? Sanottiin, että pitäisi laskea kriittinen kaistanleveys. Tähän tarvitaan keskeinen frekvenssi f_c Herzeinä.  Miten tuon saa? Sitten kriittinen kaistanleveys on 25+75(1+1,4[f_c/1000]^2)^0,69. Mutta eihän tuossa edes yksiköt täsmää, kun 25 on skalaari ja f_c on Herzeinä.

Käyttäjä1324
Seuraa 
Viestejä21
Liittynyt9.1.2016

Kannattaa olla varovainen mp3 - tiedostojen suhteen. Niissä kompressio poistaa taajuuskomponentit, joita ihmiskorvan ei käytetyn mallin mukaisesti arvella kuulevan muun äänen joukosta. Et siis analysoi todellista ääntä vaan sen "korvaekvivalenttia". Aliäänet eivät juurikaan kuulu joten mp3 - algoritmilla on lupa jättää niitä koodaamatta. Jos siis on pakko käyttää mp3 muotoa niin kokeile miten se pilaa simuloidun datan eli sellaisen tiedoston, jossa on kuuluvaa kohinaa kuten esimerkissäsi ja sen lisäksi sopiva matalaääninen jyminä.

Jos haluat nauhoittaa tuulivoimalan ääntä niin se pitäisi tehdä suoraan kompressoimattomaan muotoon eli ei onnistu tavallisella sanelukoneella tai kännykällä. Läppäri ja sopiva ohjelma avuksi niin sitten voi olla mahdollisuuksia.

Sivut

Suosituimmat

Uusimmat

Uusimmat

Suosituimmat