Portál AbcLinuxu, 10. května 2025 10:55
Řešení dotazu:
představoval jsem si jednoduchou utilitkuVšichni jsme si jednou představovali jednoduché utilitky. :)
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.
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.
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.