Portál AbcLinuxu, 26. dubna 2024 06:31


Dotaz: Kde najmout programátora co rozumí C, Linuxu a audio signálům?

20.2.2010 23:32 Thunder.m | skóre: 35 | blog: e17
Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Přečteno: 622×
Odpovědět | Admin
Potřeboval bych naprogramovat jeden program, který by prohledával audio soubory ve kterých by se snažil hledat podobné úseky, nevíte o webu kde bych si nějakého takového programátora mohl najmout, případně na koho se obrátit?

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.2.2010 08:32 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Konkrétně člověka ti neporadím, ale podobnou fci docela umí plugin MATCH do Sonic Visualizer z http://www.vamp-plugins.org/download.html
21.2.2010 09:46 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Díky, zkusím se na to podívat, představoval jsem si jednoduchou utilitku v C pro Linux která by mi jako výsledek vyjela kde se nachází podobné části na jaké pozici v daném wavu.
21.2.2010 11:19 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
představoval jsem si jednoduchou utilitku
Všichni jsme si jednou představovali jednoduché utilitky. :)
In Ada the typical infinite loop would normally be terminated by detonation.
Grunt avatar 21.2.2010 23:50 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Jen tak čistě pro zajímavost, na jakém principu by něco takového mělo fungovat? (Předpokládám, že nejde o binární porovnávání, ale něco hodně blízkého percentuálnímu)
Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
22.2.2010 00:03 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
No pokud myslíš matematický model, tak to bych čekal buď vzájemnou korelaci dvou signálů, nebo případně jako to použil Simon Dixon OLTW (on-line time warping). Pokud si zkusíš jeho program tak ukáže graf (potřeba parametr -V) ve kterém je perfektně vidět podobné části pomocí křivky ve tvaru / tj. více se shodujících bloků za sebou, bohužel jeho program je v .jar formátu, nedařilo se mi ho dekompilovat a zase zkompilovat.

Výstup bych viděl jako místa kde se s určitou pravděpodobností nachází podobný úsek, rozsah pravděpodobnosti pro zařazení daného místa by bylo možné nastavit v příkazové řádce.
21.2.2010 13:50 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Tak ještě jednou díky, tato utilita http://www.elec.qmul.ac.uk/people/simond/match/index.html je tomu co jsem chtěl asi nejbližší, problém je že je dělaná na krátké záznamy a jen jeden match, ale z grafů se dá opravdu už najít pozice podobných částí, bohužel zdrojové kódy nikdo asi nikdy neuvolnil, takže tam nic nedodělám :)
21.2.2010 22:02 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
http://downloads.sourceforge.net/vamp/match-vamp-plugin-0.2.1.tar.gz viz http://www.vamp-plugins.org/download.html
21.2.2010 22:28 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Ok, poradil bys ještě co použít abych to mohl porovnávat přímo z příkazové řádky? Zkoušel jsem vamp-simple-host, ten ale umí jako parametr jen jeden soubor wav.
21.2.2010 22:52 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Tak to bohužel neposloužím. Jen jsem si zkoušel ten plugin v sonic visualizeru.
21.2.2010 23:58 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Tak jsem ho zkusil, vyžaduje spojení dvou audio souborů do jednoho stereo souboru a ještě ke všemu nenajde posun správně tak jako původní utilita ze které ho někdo vytvořil (posun najde korektně jen do prvních cca 2 vteřin).
22.2.2010 09:34 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Ale máš k tomu zdroják, tak by možná nemusel být problém to upravit.
22.2.2010 09:45 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Zkoušel jsem, bohužel je to dost složité, jak jsem si četl tak všechny vamp pluginy neumí získávat data z dvou souborů, ale jen z jednoho s více kanály, takže by to asi technologicky nešlo. Spíš se snažím upravit původní program na základě kterého tento match plugin vznikl...
22.2.2010 10:15 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Není problém v podstatě online spojovat dva wavy do jednoho, např. soxem. Ale samozřejmě ty víš nejlépe, co potřebuješ.
22.2.2010 12:06 Tomáš
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Odpovědět | | Sbalit | Link | Blokovat | Admin

To co chcete není vůbec triviální úloha. Jenom definice podobnosti úseků ve dvou skladbách je složitý problém. Proto asi taky výše zmíněné nástroje pracují jen s krátkými úseky. Triviální přístup by bylo počítat diskrétní konvoluci hledat její maximum. Ale tento přístup bude určitě kolabovat pro dlouhé audio soubory s krátkými steknými/podobnými úseky. Je to netriviální úloha z oblasti rozpoznávání. Cesta vede asi přes DFT a další techniky ze zpracování signálů a umělé inteligence.

A ještě třešnička na závěr. Pokud by se vám výpočet pro porovnání dvou souborů trval vteřinu, tak hledání těchto shod v 500 souborech by trvalo 500*500-500 sekund což jsou necelé 3(!) dny.

Pokud máte zájem napište mi (t_tečka_jura_at_volny_tečka_cz) můžeme se sejít a probrat to. Ale první co budu zjištovat je, zda to není Vaše diplomka.

Grunt avatar 22.2.2010 16:58 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
a další techniky ze zpracování signálů a umělé inteligence.
Umělá inteligence by na to potřeba nebyla, ale opravdu to není tak snadné. V oblasti rozpoznávání lidské řeči se používá frekvenční domény a pak následné pozorování určitých frekvencí (každé slovo má vrcholy na různých frekvencích a nebo teda aspoň přibližně). Což je také první věc, která mě napadla. Udělat si FFT vzorku a pak udělat okno v signálu o délce toho vzorku, provádět FFT okna, srovnávat oba vzory a šoupat postupně v signálu okno o vzorek. Tím by se sice vyřešila problém s fázovým posunem a různých přičmoudlin, ale co třeba takové zkreslení a zarovnání způsobené perceptuálnímy kodeky a nebo jen taková blbá hlasitost? Chtělo by to určitě něco komplexnějšího.
Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
22.2.2010 23:19 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Díky moc za dobrý popis, něco podobného jsem použil.
22.2.2010 23:21 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak už se mi to podařilo naprogramovat, byly to šílené dva dny, ale hledání funguje parádně :) V cca 10 minutovém úseku najdu podobný 5 vteřinový záznam za cca 1 vteřinu, krása :)
Řešení 1× (Thunder.m (tazatel))
23.2.2010 00:56 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Příloha:
Ještě přikládám zdrojový kód, je velmi jednoduchý, napsal jsem prakticky vše do main a nejsou ošetřeny všechny výjimky. Pro vstup očekává program 2 soubory, jeden se vzorkem, druhý ve kterém se vzorek hledá. Testoval jsem jen soubory převedené ffmpegem do formátu 16 bit, 11025 Hz, !mono!.

Jeden soubor s cca hodinou záznamu to proleze za 20 vteřin. Testoval jsem ho na 8 různých audio souborech a vše spolehlivě nalezl.

Časem bych snad ještě dodělal podporu pro stereo a přímé načítání mp3 abych to nemusel vše převádět.

23.2.2010 07:34 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Kde najmout programátora co rozumí C, Linuxu a audio signálům?
Super, gratuluji. Nechceš se zkusit mrknout na sox, zda by tvé řešení šlo přepsat jako jeho plugin? Tím by sis ušetřil spoustu starostí kolem I/O, navíc by to určitě akceptovali do upstreamu, protože to je užitečná fce, která v soxu ještě není. Je to taky v C, API docela jednoduché.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.