Ako rozpozná váš telefón práve reprodukovanú pesničku?
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.
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.
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.
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.
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
Stiahnite si aplikáciu SoundHound