Äänen käsittely Javalla

Minun pitäisi käsitellä lähes 'reaaliaikaisesti' äänisignaalia, joka tulee tietokoneeseen suoraan mikrofonin kautta. Tarkoituksena on pätkiä ääni pieniin osiin, joita jokaista analysoidaan erikseen. Voinko tehdä tämän Javalla suoraan vai täytyykö käyttää esim. Windowsin omaa nauhuria ja ottaa nauhoitetusta äänestä pätkiä? Mutta toisaalta ei kai samaa tiedostoa voi lukea samalla kun siihen kirjoitetaan...

Eli vVoiko digitaalisesta äänisignaalista itse ottaa näytteitä Javalla vai käykö liian hitaaksi?
4520
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

javax.sound.sampled.TargetDataLine tarjoaa metodit, joilla voi lukea ääntä haluamansa tavumäärän kerrallaan. Luulisi olevan huomattavasti selkeämpi ratkaisu kuin yrittää jollain ulkoisella ohjelmalla tiedostoon, ja sieltä sitten lukea.

Jos on suorituskykyongelma, voinee tietysti kirjoittaa jotain JNI-natiiviyhdistelmiä, ja tehdä jollain käännettävämmällä kielellä sen nauhoituksen. (Ei kyllä pitäisi olla. Jopa eräänkin S60-puhelimen J2ME-alustalla vaikutti miltei-reaaliaikainen äänenkäpistely onnistuvan - kaikennäköistä JITtiä ja muuta tekevällä gigahertsi-multimedialaitteella ei pitäisi olla mitään ongelmia.)

Äänestä
  • Itselläni olisi samantapainen projekti, jossa tulisi käsitellä ääntä matkapuhelimella. Tarkoitus olisi siis nauhoittaa ääntä ja saada desibeliarvoja äänestä. Kerro vähän mitä käytit äänen käsittelyyn matkapuhelimella? MMAPI:a?

    Äänestä

  • kale kirjoitti:

    Itselläni olisi samantapainen projekti, jossa tulisi käsitellä ääntä matkapuhelimella. Tarkoitus olisi siis nauhoittaa ääntä ja saada desibeliarvoja äänestä. Kerro vähän mitä käytit äänen käsittelyyn matkapuhelimella? MMAPI:a?

    Heh, ei käy kateeksi - ainakin, jos sovelluksesi tulisi reaaliajassa toimia. MMAPI olisi noin periaatteessa ihan toimiva ja selkeä ratkaisu, sille kun voi antaa minkä tahansa itse-viritetyn OutputStreamin äänidatan kohteeksi.

    Testatuissa (ainakin Nokia 6600, saattoi olla joku toinenkin) malleissa nauhoitus vaan oli toteutettu siten, että tavuakaan äänidataa ei tullut, ennen kuin nauhoituksen pysäytti. Oletettavasti puskuroi siellä natiivi-symbian-puolella jonnekin. (Symbian-koodilla kyllä onnistui äänenkäsittely, mutta eihän matkapuhelimissa mitään JNI:n kaltaista ole.) Lisäksi nauhoituksilla oli joku naurettava (lue: noin 13 sekuntia) enimmäispituus. Suorituskyky kyllä olisi riittänyt melkein joka samplen analysointiin, ja tehty laskentakin oli suhteellisen työlästä. (Fixed-point-aritmetiikalla rusikoitu FFT.)

    Johonkin kvasi-reaaliaikaisuuteen päässee sillä, että aloittaa ja pysäyttää nauhoitusta jatkuvasti. Ei testattu, paljonko siitä seuraa latenssia - täysin arvauksena ehkä sekunnin luokkaa.

    (Siitä en osaa sanoa, miten laajalti MMAPI-toteutukset ovat yhtäläisen puolivillaisia, mutta ainakin matkapuhelimia käpistelevä tuttavani valittaa Nokian Java-VM:stä useinkin.)

    Äänestä

Kommentoi aloitusta


Scorp kirjoitti:

Minun pitäisi käsitellä lähes 'reaaliaikaisesti' äänisignaalia, joka tulee tietokoneeseen suoraan mikrofonin kautta. Tarkoituksena on pätkiä ääni pieniin osiin, joita jokaista analysoidaan erikseen. Voinko tehdä tämän Javalla suoraan vai täytyykö käyttää esim. Windowsin omaa nauhuria ja ottaa nauhoitetusta äänestä pätkiä? Mutta toisaalta ei kai samaa tiedostoa voi lukea samalla kun siihen kirjoitetaan...

Eli vVoiko digitaalisesta äänisignaalista itse ottaa näytteitä Javalla vai käykö liian hitaaksi?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu