» »

Prepoznavanje zvoka in predvajanje MP3 v C++ ali Delphiju

Prepoznavanje zvoka in predvajanje MP3 v C++ ali Delphiju

divac ::

Pozdravljeni!

Pri programčku, ki ga izvajam bi rad naredil, da bi porgram prepoznal moj glas. Zanima me, če že ima kdo kaj izkušenj s tem in če lahko pomaga.:)



Prav tako me zanima, če obstaja (in kje) header oz. knjižniva za C++ oz. Delphi, ki bi predvajala MP3-je v aplikaciji.
  • spremenil: divac ()

NoUse4AName ::

directx ma en modul za delanje s zvokom, pomojem bi najdalje prisel ce si dldas directx 8 sdk pa si pogledas malo kak deluje direct sound.

iBojan ::

Za prepoznavanje glasu ne vem, mam pa en prg, ki ti v delphi lepo dela z mp3 glasbo. Če želiš ti ga lahko pošljem po mailu ali pa greš na tole stran pa imaš tam en primer za predvanjanje mp3 glasbe v delphiju :))

lp, _GeS_

divac ::

Thnx za pomoč pri predvajanju MP3:).
Ampak še vseen me pa zanima prepoznavanje zvoka v C++ ali Delphi-ju.

wintermute ::

Za prepoznavanje glasu (voice ID?) sicer ne vem, ce pa te zanima prepoznavanje govora (speech recognition) lahko probas microsoftov SpeechAPI. Na tej strani dobis SAPI 5 SDK. Zraven sta Microsoftova SR in TTS (text to speech) engina (za angleski jezik). Stvar temelji na COM tehnologiji, zato morda ni najbolj enostavna (se posebej ce prihajas iz okolja kot je Delphi 8-)).

Sam se ravno ukvarjam s tem, ker za en projekt delam POP3 clienta z razpoznavanjem govora (govornih ukazov) in branjem poste.

Thomas ::

WAV2TEXT

To je pa zelo težko narest. Zelo. Zakaj?

Ko posnameš wav file z zvokom besede "SNEGULJČICA", je ta posnetek lahko sila različen po jakosti, barvi glasu, zategnjenosti posameznih zlogov ... tako, da si 1.WAV in 2.WAV sploh nista podobna, čeprav je ista beseda notri. Ena sekunda wav zvoka pa zavzema vsaj kakih 40 KB. Zato transformacije in primerjave nisto trivialne s stališča CPU in pomnilnika.

Narediti se pa da - nedvomno!
Man muss immer generalisieren - Carl Jacobi

dr. Zgemba ::

Hmmm, kaj bi ti rad (v narascajoci zahtevnosti):
  • Da program razpozna tebe (loci tvoj govor od drugih govorcev)

  • Da program razpozna tvoj govor

  • Da program razpoznava govor katerega koli govorca?

  • Nobena od teh zadev ni trivialna.
    Povej kaj več, pa ti bom lahko pomagal, oziroma ti vsaj povem katere knjige začni brati.

    divac ::

    OK! Najprej thnx vsem, ki ste do sedaj pomagali.

    Dr. Zgemba!
    Najbolje bi bilo, če bi porgram spoznal vse možne glasove, ampak za začetek bo dovolj, da le mojega. Se bom že pol pomatru za kej več.

    Wintermute!
    A je tiste 300K cel SDK, al se tko k IE5 downloada pol. To prašam zato, k piše da pokur 800 MB.

    Lp

    wintermute ::

    divac

    Dl-jat moras file SpeechSDK5.exe - 149,373 Kb:\. V tistem drugem filetu so moduli (MSM) za redistribucijo SAPI-ja, zato tega ne rabis. Sicer pa si najprej dobro preberi sistemske zahteve (128 MB ram, priporocljivo je ce imas Visual C++ 6).

    Zraven imas kar precej napredne demote (tudi source jasno). Sicer pa bo (je) microsoft SR in TTS motorja ki sta prilozena SDK-ju integriral v Office XP. Skoda samo, da se pri nas noben ne spomne (verjetno zaradi anti-MS razpolozenja v akademskih krogih), da bi slovenski razpoznavalnik in sintetizator govora naredil SAPI kompatibilen (seveda oba ze obstajata in sem ju videl v akciji).

    Ko (ce) bos dl-jal in ti kaj ne bo jasno, kar vprasaj.

    dr. Zgemba ::

    Wintermute
    A Office XP uporablja Lernout & Hauspie engine? Malo sem zdaj iz teh vod in ne sledim več točno razvoju. Nekaj so se menda dogovarjali že pred leti.

    Divac
    Verjetno bo res enostavneje, da naštudiraš ta API, ker če boš šel peš pisat od nule gor, potem je to lahko življenski projekt.
    Če pa želiš samo tako za hec razpoznavat par besed (manj kot 10), potem prideš najenostavneje skozi z enostavnim predporocesorjem (bandpass filter, enhancer, filter banka) in pa recimo kohonenovo nevronsko mrežo. Source za to vse najdeš v izobilju po netu, samo skupaj zaštukaš in čakaš da se mreža nauči.

    divac ::

    OK! Hvala še enkrat obema. Za sedaj pa me zanima še to. Če bi šel od nule pisat, ali je dovolj, da pač posnamem nek fajl, ki ga potem računalnik s pomočjo Fourierove oz. Laplacove analize pač obdela v razpoznavno obliko, ali je potrebno še kaj drugega.

    Wintermute

    A obstaja kakšna dokumentacija o celi zadevi?
    Glede na to, da je zadevšna kar precej obsežna, ali bi se jo dalo dobiti na CD-ju?



    Hvala

    wintermute ::

    dr. Zgemba

    Nimam pojma, ampak mislim da ne. A je to tisti engine, ki ga uporablja Dragon Systems? Po moje bo MS integriral engine, ki je v SAPI5 SDK-ju, ampak malo "izboljsano" verzijo:\.

    divac

    Tule dobis vso in edino dokumentacijo (compiled HTML). Tutorial je zelo podrobno dokumentiran, ostali demoti pa bojl slabo.

    Ce bi hotel zaceti iz nic, bi pa moral prej prebrati kaksno knjigo na to temo... Ob predpostavki da poznas osnove obdelave signalov in razpoznavanja vzorcev:D. Ja, diskretna fourierova transformacija je ze pravi zacetek...

    Glede dl-janja ... ne mi rect, da ne poznas nikogar v tvoji blizini z hitro povezavo, ce je ze sam nimas.

    Thomas ::

    Seveda da bi slo. Zataknilo se ti bo tam, kjer bos spoznal, da je OGROMNO razlicnih vzorcev za isto besedo in da razlicni besedi vcasih zelo podobno izgledata. To za wav obliko.

    Ce bos pa delal kaksne transformacije - potem pa ze mogoce.

    Ampak vedno se bos moral odlocati na podlagi podobnosti in ne na podlagi enakosti. Ker enakost glasovnih vzorcev - je bolj redka kot zelen konj. Precej bolj.

    Kriterij za podobnost je pa tricky zato, ker moras izlociti podobne in zaobjeti enake glasovne vzorce. Temu ni vedno kos niti cloveski speach recognizer. Kot naprimer:

    - Oca - vi ste gluh!

    - Ne, res je, nic ni muh!


    Po moje je problem speach recognition samo ene 10 do 100 krat tezji od Optic Character Recognition.

    But it can be done.
    Man muss immer generalisieren - Carl Jacobi

    dr. Zgemba ::

    Divac
    Nocem te strašit ali kaj takega, ampak lotil si se zelo zahtevnega podrocja.
    Najprej DEFINITVNO preštudiraj kako knjigo o DSP, predvsem poglavja o DFT in FFT.
    Ko ti bo približno jasno za kaj gre (ni popolnoma nujno da obvladaš vso matematiko, ki stoji za tem) si oglej digitalne filtre, ker to boš zelo rabil.
    Recimo da zdaj veš, kaj storiti z zvokom, ga pretvorit v obliko lažjo za obdelavo in izvajat osnovne filtre.
    Zdaj boš že precej poln znanja in tudi nekaj ti bo že delalo (ce ne drugega lahko zdaj s tem mirno napišeš vsaj kak cool plugin za Winamp).
    Potem si oglej še kaj o prepoznavanju vzorcev.
    Sam sem najvec delal z nevronskimi mrežami in jih najboljše poznam, so pa še druge poti (Markovski avtomati, genetski algoritmi, hibridne rešitve).
    Od tu dalje pa pridejo najvecje težave razpoznavanja. Zdaj se poglobi v probleme segmentacije, cueinga, voiced/unvoiced detekcije...
    Ce boš vse to obvladal boš lahko naredil fonemski razpoznavalnik, ki ti bo delal z vsaj 50% pravilnostjo.
    Od tu dalje pa imaš spet malo morje novih izzivov, od tega kako štukat prepoznane foneme v zloge, zloge v besede in besede v stavke. To so že lingvisticni problemi...

    Še vedno pa velja moj quick & dirty recept:
    300-3k bandpass filter -> filterbanka (vsaj 10 bandov) -> kohonenova NM.
    To bi po mojih izkušnjah moralo zadostovati za nezvezno prepoznavanje malega slovarja in enega govorca.
    Za kaj vec od tega (zvezni govor, vecji slovar, neodvisno od govorca) pa se spet zelo zakomplicira.

    Ce se prav spomnim je Ljubljanski FRI izdal pred kratkim eno knjigo v slovenšcini o tem. Drugace slovenske literature ni kaj dosti, razen za DSP.
    Od tuje je še vedno referenca Bourlard & Morgan: Connectionist speech recognition, pa z googlom poišci še npr: Tony Robinson. Bourlard, Morgan, J.P. Martens (na pamet, bi moral malo pogrepat po disku po kakih starih clankih, ce jih še imam kje).

    divac ::

    Thnx, vsem!

    Za začetek rabim nekaj preprostega, kasneje pa morda kaj MS uničujočega.



    Hvala za nasvete, kar se tiče te teme.

    Če boste izvedeli kaj novega o določeni temi, mi prosim sporočite v forum Slo-Techa.

    P.s.: Meni se zdi da narod ful preveč komplicira s temi zadevami;((. Kaj ima pa tvoj govor veze s tem, kateri jezik govoriš? Mogoče edino zaradi naglasa.
    Osebno sem prišel na idejo, da bi bilo potrebno narediti program, ki bi prepoznal katerikoli jezik.
    Problem bi sicer nastal, če bi hotel Word prepričat u to, da bi ukaze delov po prepoznavanju govora. Drugače pa ne vidim problema, ki ga vsi tako zastavljate. Če prebereš enkrat recimo "š" kot wav, nato vedno čitaš isti "š" +/- nekaj odstopanja zaradi višine glasu. Za začetek bi pa itak rabu tako zadevo kot jo je imel Awe 32 zravn priloženo.

    Lp, Divac

    Thomas ::

    Kaj mislim:

    Da se loti kar po svoje - in imaš 1% šans, da ti uspe!

    Če boš pa preveč prebiral literaturo - kot svetuje naš dobri doktor - potem boš pa v najboljšem primeru naredil nekaj, kar itak že je.



    :)
    Man muss immer generalisieren - Carl Jacobi

    dr. Zgemba ::

    Thomas, Thomas, ti imaš pa obrnjen pogled na svet ;-)

    Če NE bereš literature narediš največkrat nekaj kar je itak že narejeno. Torej izgubljaš čas z odkrivanjem tople vode.

    Sicer pa, vsakdo po svoje...

    Thomas ::

    Niti ne. Prav je sicer, da bereš knjige - vendar nekoliko širše tematike.

    Knjige ravno o programiranju prepoznavanja govora - pa ti namečejo preveč sugestij.

    Če imaš idejo sam - je bolje, da uresničiš tisto, neobremenjeno - pa četudi je samo 1% verjetno, da uspeš narediti bolje, kot je bilo narejeno doslej.

    Išče se svežih zamisli, ker tiste iz tovrstni knjig - niso dale enega pametnega programa v ta namen. Vsaj jest zanj ne vem. A so ga?

    8-)

    Sej veš kako je s knjižnicami dr. Zgemba? Kot apoteke so - mnogo strupa in malo zdravil. :D
    Man muss immer generalisieren - Carl Jacobi

    dr. Zgemba ::

    Thomas:
    Išče se svežih zamisli, ker tiste iz tovrstni knjig - niso dale enega pametnega programa v ta namen. Vsaj jest zanj ne vem. A so ga?


    Ah, dajnomir. Uspešnih programov in sistemov je kar nekaj. In praktično vsi (IBM, L&H, Vocaltech, Phillips,...) razen Dragon Systems so objavljali članke in knjige svojem razvoju in idejah.

    Po tvoji logiki bi bilo potem pametno izmisliti tudi kak nov prog. jezik ali pa vsaj na novo napisat vsaj compiler za c++ , ker ti lahko med tem sine kakšna silna nova ideja?
    :)

    Sicer pa saj je vseeno, če ima kdo kaka konkretna vprašanja o razpoznavanju sem vam na voljo.

    Thomas ::

    Heh Dr. Z ...



    C++ kompajlerjev in related zadev kolikor češ!



    Zdej mi pa povej za en dober Wav2txt ...



    NI GA!
    Man muss immer generalisieren - Carl Jacobi

    dr. Zgemba ::

    Huh, če nečesa ni pri lokalnem piratu / piratskem FTP-ju, potem to gotovo ne obstaja, a ne?

    Sicer si pa itak zgrešil poanto mojega prejšnjega posta.

    divac ::

    Ok, fantje ne se kregat. Thomas ima prav, pa tudi dr. Zgemba ima prav.
    Strinjam se s Thomasom, da knjige le usmerjajo človeka v nekaj kar je že bilo narejeno. Zato pa so vsi SR programi odvisni od jezika, ki ga govoriš. Z dr. Zgembo pa se strinjam v tem, da znanje je v knjigah.Vendar le v določeni količini.

    OK, uživite.

    Thomas ::

    divac .. sej se noben ne krega ... samo mnenja se krešejo! :)

    Zgemba ... noo ... kje pa so? Povej mi whereaboutse o takih programih! Ni jih. Še ...

    Kar se pa tiče zgreševanja poant - moja je ta, da bi bilo fino, da bi kdo naredu kakšen široko dostopen speach recognition.

    Ker teh tobožnjih "profesionalnih sistemov", ki jih noben navaden smrtnik ne more uporabljat mam jest že približno toliko dost, kot VAX OS-a ... ki je tudi "vse imel".

    Zeleno ali amber na črnem! :D
    Man muss immer generalisieren - Carl Jacobi

    dr. Zgemba ::

    Thomas
    Sistemi obstajajo in delujejo (Naturaly Speaking, MediTalk, ...) ogromno pa jih je zapakiranih v telefonske sisteme (Phillips, Nortel, Belgacom) ali podobne zaprte aplikacije (rezervacija letalskih kart).

    Če pa pričakuješ nekaj, kar bo gladko prepisovalo poljubno besedilo, ki ga boš v kar nekem jeziku in s čudnim naglasom narekoval v mikrofon za 100 SIT in vse skupaj poganjal na domačem PC-ju, ja, tega pa res ni.

    In tudi povem ti zakaj ne. Ker je to BLAZNO zahtevna naloga. Dosti bolj zahtevna kot si lahko zamisliš in šele potem ko razumeš vsaj osnove (za kar je potrebno vsaj malo predelat literaturo), šele potem ti res rata jasno kako zahtevna zadeva je to.

    In vsa moja poanta glede knjig je v tem, da preden lahko začneš na tem področju razvijati karkoli svojega moraš imeti dovolj predznanja. Jaz sem prepoznavanju namenil približno 3 leta in govorim ti iz lastnih izkušenj. Prvih 6 mesecev sem samo debelo gledal in bral knjigo za knjigo in članek za člankom preden sem sploh lahko začel razmišljati o kakem svojem pristopu.

    Divac
    Ne se ustrašit! Če imaš res dobro idejo, potem je naše govorenje tako brezveze in boš idejo itak uresničil brez naše pomoči.
    Aja, ko smo že pri tem. Razpoznavalnik bo VEDNO odvisen od jezika govorca. To so pač zakonitosti naravnega jezika. Do fonemskega nivoja (do sem je neodvisno od jezika) ni dovolj informacij za enolično razpoznavanje.

    Thomas ::

    "Ce pa pricakujes nekaj, kar bo gladko prepisovalo poljubno besedilo, ki ga bos v kar nekem jeziku in s cudnim naglasom narekoval v mikrofon za 100 SIT in vse skupaj poganjal na domacem PC-ju, ja, tega pa res ni."

    Seveda da pricakujem prav to. Edino cena za mikrofon je lahko nekoliko visja od 100 SIT. Prav tu je vsa poanta. Imeti to na domacem PC-u.

    "In tudi povem ti zakaj ne. Ker je to BLAZNO zahtevna naloga. "

    Tudi OCR je bil vcasih "BLAZNO zahtevna naloga".

    "Dosti bolj zahtevna kot si lahko zamislis"

    A bejz no? Kako pa ti ves, kaj si jest lahko zamislim?

    "in sele potem ko razumes vsaj osnove (za kar je potrebno vsaj malo predelat literaturo), sele potem ti res rata jasno kako zahtevna zadeva je to."

    Vedno tako govorijo, preden pride nekdo z radikalno dobro (novo) resitvijo. Zelim si, da bi bil divac to.

    S cemer se pa v nadaljevanju divcu strinjas, dr. Zgemba.

    Man muss immer generalisieren - Carl Jacobi

    wintermute ::

    Heh, nihilist/cinik Thomas at his best:P.

    > Tudi OCR je bil vcasih "BLAZNO zahtevna naloga".

    1. Primerjava OCR kot ga razumes ti razpoznavanja govora kot ga razumes ti je bezpredmetna. Namrec ... noben OCR danes nima takih lastnosti, kot jih ti zahtevas od sistema za razpoznavaje govora. Tak OCR sistem bi po tvoji (primerjalni)logiki moral razpoznavati rokopis vsakega cloveka ne glede na jezik. Taksen OCR je se vedno blazno zahtevna naloga.


    > Zdej mi pa povej za en dober Wav2txt ...

    2. Kaj je zate dober sistem za razpoznavanje govora? Zame je dober sistem za razpoznavanje govora tisti, ki usteza svojemu namenu (da resi nek v resnicnem svetu zastavljen problem). Za mnogo takih problemov ze obstajajo ustrezne (ergo "dobre") resitve.


    > ... kje pa so? Povej mi whereaboutse o takih programih! Ni jih. Še

    3. Ni ti treba dokazovati tega, da univerzalnega razpoznavalnika (tekoce razpoznavanje govora ne glede na jezik in govorca) ni in da verjetno nobena dosedaj uveljavljena metoda razpoznavanja govora ne bo privedla do njega. To veva jaz in dr Z. dovolj dobro. Kudos komurkoli, ki ga bo razvil. Ampak pri tem pac ne mores mimo narave (matematika, fiziologija cloveskega govornega trakta), tako da tudi ce zacnes iz nic, kaksna literatura ne more skoditi.

    4. Ce po tvoje "dober" razpoznavalnik govora ne obstaja to se ne pomeni da so danasnje tehnologije SR neuporabne. Ce bi sledil tvojim argumentom, bi lahko rekel da je Internet neuporaben, ker vse informacije na njem niso dostopne vsem ljudem ne glede na jezik in kulturo (in socialni status na primer). Ali pa telefon, ali pa... na koncu verjetno ostane samo se ugotovitev, da je edini uporaben clovekov izum kolo. Pa kljub temu uporabljas telefon in internet, ne glede na to da nista popolna. Ravno tako se dandanes uporablja SR. Res pa je da se ni zelo razsirjen, ampak bo (IMO) kmalu (in to celo z danasnjo tehnologijo).

    Eeeeh...jaz grem naprej razvijat mojo prvo (morda celo uporabno, ce bo bog (in Thomas:D) dal) "speech-enabled" aplikacijo, vi pa se kar razpravljajte.

    Thomas ::

    No, cinik ni tisti, ki hoce "vec in bolje" - ampak tisti, ki pravi, da se bolje (skoraj) ne da.

    Moj point je pa ravno ta, da ti prevec fiziologije lahko zamegli jasen pogled. Lahko - morda.

    Da morda obstajajo matematicne transformacije, ki podobnim glasovnim vzorcem dajo podobno kodo - identifikator besede (ali niza glasov)!

    Kaj je izumitelj mikrofona ali zvocnika vedel o fiziologiji govora in petja? Nich.



    Man muss immer generalisieren - Carl Jacobi

    divac ::

    Jaz osebno mislim takole. SR ni uporaben dokler ni splošen, ker drugače je za vsak jezik treba pisat svojo aplikacijo.Splošen pa ni, ker zabiti amerikančki še niso dojel, da niso edini narod na svetu.

    Kar se tiče literature je tako, da ti večina hoče ucepat v glavo idejo avtorja. Vendar pa je treba premisliti nekoliko drugače. Lep primer so diski. Dolgo časa so se uporabljale iste glave za branje in pisanje, dokler se niso v (sedaj že) propadli firmi odločili, da bodo diplomantu MIT-a dali za nalogo narediti hitrejšo bralno glavo. Ta študent je razvil MR glavo iz katere se je kasneje razvila GMR in CMR glava, ki ju uporabljajo najhitrejši diski. Nauk: Ni vse v knjigah. Važna je ideja.

    Je pa res, da je osnovne stvari vseeno treba poznati. Vendar pa to niso 1000 strani debeli, nerazumljivi špehi, ampak osnove višje matematike, elektrotehnike in algoritmov.



    Vendar pa za navadnega smrtnika je tako ali tako vedno dovolj, da uporabi kakšno knjižnico, kar bom za test najbrž naredil tudi jaz. Poleti pa se bom posvetil in poizkušal izboljšati zadevo.

    Thomas ::

    Veliko sreče!

    Pričakujem, da eden bo naredil nekaj takega v bližnji prihodnosti.

    In bolj ko premišljujem o tem - bolj se mi zdi možno, da obstajajo matematične transformcije, ki preslikajo glasovne vzorce v iste kode, če "vsebujejo iste vokale".

    Hm ...
    Man muss immer generalisieren - Carl Jacobi


    Vredno ogleda ...

    TemaSporočilaOglediZadnje sporočilo
    TemaSporočilaOglediZadnje sporočilo
    »

    Microsoft razvil robota, ki vam sega v besedo

    Oddelek: Novice / Znanost in tehnologija
    134731 (2967) TheBlueOne
    »

    Glasovno upravljanje telefona v slovenščini - android

    Oddelek: Mobilne tehnologije
    175419 (4826) dunda
    »

    Prepoznavanje govora

    Oddelek: Programska oprema
    357022 (4647) Blop
    »

    NSA zmore zapisati večino pogovorov (strani: 1 2 )

    Oddelek: Novice / NWO
    5026146 (21861) 7982884e
    »

    Prepoznavanje govora

    Oddelek: Znanost in tehnologija
    141742 (1537) shock

    Več podobnih tem