Shazam je jednou z nejoblíbenějších aplikací pro rozpoznávání hudby. Umožňuje uživatelům znát název a interpreta písně pouhým nahráním krátké části melodie. Jak tento unikátní algoritmus funguje? Pojďme to vyřešit.
Základem práce Shazam je technologie zvaná spektrální analýza. Tento algoritmus rozděluje zvukový signál na malé fragmenty a porovnává jejich spektra s databází známých písní. Přitom Shazam nepoužívá celou skladbu jako identifikátor, ale jen malou Pasáž, obvykle kolem 20 sekund.
Klíčovým bodem shazamovy práce je přechod z dočasného zobrazení zvuku na spektrální. Algoritmus vytváří spektrogram zvukového záznamu, který umožňuje analyzovat jeho frekvenční a časové charakteristiky. Shazam pak vytvoří Fourierovu transformaci pro každý fragment a extrahuje jedinečnou sadu frekvencí zvanou "otisk".
Zajímavé je, že Shazam je záměrně odolný vůči změnám výšky a rychlosti zvuku. To znamená, že i když skladbu nahrajete trochu špatně nebo změníte její tempo, Shazam stále dokáže najít shody. Dosahuje toho pomocí matematické techniky zvané invariantní vzhledem k času detekce.
Po vytvoření otisků je Shazam porovnává s databází obsahující miliony skladeb. K tomu dochází velmi rychle díky jedinečné struktuře indexů, která umožňuje rychlé a efektivní hledání shod. Pokud je nalezena shoda, zobrazí se uživateli informace o skladbě, včetně názvu, interpreta a alba.
Co je Shazam a jak funguje
Shazamova práce je založena na algoritmu, který analyzuje jedinečné vlastnosti zvukové stopy a porovnává je s databází hudebních nahrávek. Tento proces se skládá z několika fází:
1. Záznam zvukových dat. Aplikace zaznamenává několik sekund zvuku, zatímco uživatel drží zařízení blízko zdroje zvuku.
2. Převod na zvukový tisk. Zvuková stopa je převedena na jedinečný zvukový otisk, který zahrnuje informace o spektrálním obsahu zvuku, tempu, tónu a dalších charakteristikách.
3. Porovnejte zvukový tisk s databází. Zvukový tisk je porovnáván s předem připravenou databází uložených zvukových tisků. Databáze obsahuje informace o milionech různých hudebních skladeb.
4. Závěr výsledků. Pokud je zvukový tisk úspěšně porovnán s jednou ze skladeb v databázi, aplikace zobrazí informace o názvu skladby, interpretovi a odkaz na další informace nebo možnost poslechnout nebo koupit skladbu.
Shazam má široké uplatnění, nejen v hudebním průmyslu, ale také v oblastech marketingu a reklamy, kde jeho algoritmus pomáhá identifikovat zvuky z televizních a rozhlasových reklam a filmů a televize.
Algoritmus rozpoznávání hudby
Algoritmus rozpoznávání hudby aplikovaný v Shazam je založen na mnoha krocích, které se provádějí k identifikaci konkrétní skladby. Zde jsou hlavní fáze algoritmu:
- Nahrávání a segmentace zvuku: Shazam začne fungovat, když uživatel nahraje malý kousek hudby (obvykle asi 10-15 sekund). Tento fragment se pak rozdělí na malé segmenty trvající asi 0,1 sekundy.
- Převod zvuku na spektrogram: každý segment zvuku je převeden z časové oblasti na frekvenční pomocí Fourierovy transformace. To umožňuje získat spektrogram, který zobrazuje různé frekvence přítomné ve zvuku v každém okamžiku.
- Vytvoření jedinečného otisku zvuku: pro každý segment spektrogramu je vypočítán hash tisk, který je jedinečným identifikátorem tohoto segmentu. Hash tisky se pak ukládají do databáze Shazam pro pozdější srovnání.
- Porovnání otisků prstů: když uživatel nahraje nový kus hudby, Shazam na tento úryvek použije stejné kroky a porovná jeho hash výtisky s těmi, které již v databázi jsou. Pokud existuje shoda, Shazam vrátí informace o nalezené písni.
Kromě hlavních fází Shazam také používá další techniky, jako je komprese dat a ukládání hash otisků ve stromových strukturách, aby se urychlil proces rozpoznávání hudby.
Analýza zvukových vln
Shazam používá speciální algoritmus k analýze zvukových vln písně a určení jejího identifikátoru.
Když uživatel nahraje úryvek skladby v aplikaci Shazam, algoritmus začne analyzovat akustické vlastnosti tohoto úryvku. Tento proces se skládá z několika kroků:
- Shazam rozděluje zvukový záznam na malé fragmenty, které se nazývají "akustické otisky". Každý otisk obsahuje informace o spektru zvukových frekvencí a jejich intenzitě v daném fragmentu.
- Dále algoritmus převádí tato data na jedinečný kód, který se nazývá "binární hash". Tento hash je zjednodušenou verzí akustického potisku.
- Získané binární hashy jsou pak porovnány s databází akustických otisků, která obsahuje miliony nahrávek skladeb. Vyhledávání se provádí podobným způsobem jako vyhledávání v běžné databázi pomocí algoritmu známého jako"hledání nejbližšího souseda".
- Shazam tedy najde odpovídající akustický otisk v databázi a vrátí uživateli informace o nalezené skladbě.
Takový algoritmus umožňuje Shazamu být rychlý a přesný při rozpoznávání hudby, i když je přítomen hluk nebo jiné zkreslení zvuku.
Proces učení algoritmu
K vytvoření vzorků se používá sada tréninkových dat, která zahrnuje různé hudební žánry, interprety a zvukové soubory různé kvality. Tato data pomáhají algoritmu naučit se rozpoznávat různé charakteristiky zvuků, jako je melodie, rytmus a tempo.
Během učení algoritmus analyzuje tréninková data a hledá jedinečné podpisy, které lze použít k identifikaci hudebních skladeb. Učí se také rozlišovat společné rysy mezi různými verzemi stejné písně, jako jsou remixy nebo živá vystoupení. To pomáhá algoritmu být odolnější vůči změnám ve zvukových souborech, jako je různá hlasitost, překrývání šumu nebo efekty.
Po dokončení procesu učení je algoritmus schopen rozpoznat zvukové vzorky z nových zvukových souborů. Porovnává podpisy z těchto souborů se vzorky uloženými v jeho databázi a zobrazí nejvhodnější výsledek. Je třeba poznamenat, že algoritmus má omezenou sadu tréninkových dat, takže nemusí vždy rozpoznat vzácné nebo málo známé stopy.