S_1124_Gaming Advertisement S_1124_Gaming Advertisement S_1124_Gaming Advertisement

Ako rozpozná váš telefón práve reprodukovanú pesničku?

Archív NXT
0

Jeden z prvých hitov inteligentných telefónov bola aplikácia Shazam. Tá totiž dokáže rozpoznať takmer každú pesničku. Stačí, aby ju váš telefón chvíľu „počúval", a aplikácia vám povie, o akú pesničku ide. V čase, keď inteligentné telefóny neponúkali státisícovú knižnicu aplikácií a pýšiť sa mohli prakticky iba kalkulačkou, sa Shazam stal hitom a niečím, s čím ste sa mohli pochváliť aj pred kamarátmi a známymi. Viete však, na akom princípe tieto aplikácie fungujú? Ako dokážu rozpoznať hudbu?

Proces identifikácie pesničky pozostáva z troch krokov. Veľmi zjednodušene povedané, prvý z nich je vytvorenie databázy, druhý je nahranie úseku pesničky. V poslednom kroku sa porovná nahrávka s existujúcou databázou a výsledkom je informácia, ktorá sa doručí používateľovi. V tejto súvislosti je dobré spomenúť, že Shazam existuje už od roku 2000. Služba bola pôvodne dostupná iba pre niektoré krajiny a fungovala trochu inak ako dnes. Princíp sa však nemenil. V minulosti používateľ nenahrával pesničku pomocou mobilnej aplikácie, ale zatelefonoval na telefónne číslo služby Shazam, počas hovoru nechal prehrávať pesničku a výslednú informáciu získal vo forme SMS správy.

Krok číslo 1: Tvorba databázy

Je logické, že služby ako Shazam alebo SoundHound musia porovnávať nahrávky s nejakými dátami, ktoré sú uložené v dátových centrách služby. Preto služba nerozpozná nahrávku z koncertu a takisto si neporadí s vaším hmkaním pesničky. Tvorbu databázy a proces porovnávania môžeme prirovnať k zbieraniu odtlačkov prstov. Rovnako ako polícia zbiera a porovnáva odtlačky prstov, aj služby Shazam alebo SoundHound získavajú „odtlačky prstov" pesničiek.

obr 1.jpg

Spektogram pesničky pred zjednodušením a po ňom

Tento proces je z technologického hľadiska pomerne zložitý na vysvetlenie, pokúsime sa ho však zrozumiteľne priblížiť.

Proces pridávania pesničky do databázy sa začína vytvorením jej spektrogramu (sonogramu). Ide v podstate o trojdimenzionálny graf. Na x-ovej osi sa nachádza údaj o čase, na y-ovej osi je zadefinovaná frekvencia zvuku. Tretia dimenzia je intenzita danej frekvencie. Shazam takýmto spôsobom spracuje každú pesničku. Keby sa však mal v databáze ukladať celý spektrogram, databáza by bola príliš veľká. Takisto môžeme povedať, že služba celý spektrogram nepotrebuje, na rozpoznanie pesničky je zbytočný. Algoritmu úplne postačí, ak pracuje s informáciami o bodoch, kde je intenzita frekvencie maximálna. Takisto pozná čas a frekvenciu týchto bodov. Vo všeobecnosti však platí, že na 1 sekundu pripadá viacero (možno aj desiatky) bodov, ktorých frekvencia a čas sú uložené do tabuľky. Práve táto tabuľka je nosná informácia, ktorá definuje pesničku a s ktorou sa porovnáva úryvok v aplikácii.

obr 2.jpg

Grafická prezentácia kľúčového bodu a okolitých bodov

No informácie o bodoch sa v takomto formáte neukladajú do databázy. Nasleduje ešte ďalšia časť algoritmu. Shazam si v ďalšom kroku spracovania pesničky vyberie kľúčové body a okolie blízkych bodov, ktoré tomuto bodu prislúchajú. Pre každý okolitý bod sa v databáze uloží informácia, ktorá obsahuje údaj o frekvencii kľúčového bodu, frekvenciu daného okolitého bodu a časový rozdiel medzi oboma bodmi. Zároveň sa uloží aj čas výskytu kľúčového bodu v pesničke. Keby sme posledné vety prezentovali vo forme rovnice, uložená informácia vyzerá takto: (f1 + f2 + (t2 - t1)) + t1, kde f1,t1 označuje frekvenciu a čas kľúčového bodu a f2,t2 údaje konkrétneho okolitého bodu. Výsledkom je teda hašovacia tabuľka, ktorá obsahuje informáciu o frekvencii a v ďalšom stĺpci čas, v ktorom sa daná frekvencia objaví v pesničke. Posledným stĺpcom je údaj o pesničke a umelcovi. Použitie kľúčového bodu a okolitých bodov je dôležité z toho hľadiska, že algoritmus nedokáže z niekoľkosekundovej nahrávky určiť presný čas jednej frekvencie. Tento problém však vysvetlíme v ďalšom kroku.

Krok číslo 2: Nahrávka a jej spracovanie

Z pohľadu používateľa je aplikácia veľmi pohodlná. Algoritmus dokáže rozoznať pesničku aj v hlučnom prostredí, napr. v bare, kde sa do pesničky miešajú okolité hlasy. To je dané silou algoritmu. Na úspešné rozpoznanie údajne postačí, ak sa dá z 15-sekundovej nahrávky použiť 1 ÷ 2 % bodov zo spektrogramu.

obr 3.jpg

Ak sa zhoduje nahrávka s porovnávanou pesničkou, krúžky vytvoria úsečku

Proces identifikácie pesničky sa začína podobne ako generovanie dát do databázy služby z kroku číslo 1. Pätnásťsekundová nahrávka sa spracuje do formy spektrogramu, ten sa následne zjednoduší do zoznamu dôležitých bodov. Algoritmus zistí frekvenciu prvého bodu a v databáze začína hľadať zodpovedajúce pesničky. Jeden bod však na správne rozpoznanie logicky nestačí. Ak sa nahrávka a pesnička zhodujú vo viacerých bodoch, vytvorí sa graf, na ktorého x-ovej osi je zobrazený čas pesničky v databáze a na y-ovej osi je čas nahrávky. Do grafu sa zakreslí krúžok v čase, keď sa frekvencie zhodujú, a ak sa z krúžkov vytvorí úsečka, algoritmus našiel správnu pesničku.

Verdikt PC REVUE

Na podobnom princípe ako Shazam funguje aj aplikácia SoundHound. Tá na oficiálnych stránkach opisuje proces rozpoznania pesničky ako porovnanie extrahovaných dát z nahrávky s dátami v databáze. Shazam robí v podstate to isté a v článku sme vám tento proces bližšie predstavili. Je zrejmé, že algoritmus je veľmi dobre optimalizovaný a aplikácia, ktorá beží v dátových centrách Shazamu, dokáže vykonať krok číslo 2 v priebehu pár sekúnd. Keby sme mali celý článok zjednodušiť do dvoch viet, povedali by sme, že Shazam a SoundHound neporovnávajú pesničky. Služby porovnávajú iba zvuky a kontrolujú, či sa dané zvuky objavujú v príslušnej postupnosti.

zaver.png

Shazam má v databáze takmer 10 miliónov pesničiek, ale čo v databáze nie je, to nerozpozná

Stiahnite si aplikáciu Shazam do vášho mobilného zariadenia

shazam_Android.pngshazam_IOS.png

Stiahnite si aplikáciu SoundHound

soundhound_Android.pngsoundhound_iOS.png

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať