Lühidalt, nagu soovitas @Some_Guy, tehes väikese aja laienduse võib toimida.
Shazam võimaldas muusika tuvastamist, luues heli väikestest osadest "heli sõrmejäljed" segmenti ja võrrelge neid sõrmejälgi oma andmebaasis salvestatud andmetega. Tuvastussüsteemist vabanemiseks peate veenduma, et ühtegi sama sõrmejäljega helisegmenti pole Shamani andmebaasis. Nii et see on kas 1) Shazamil pole muusikapala ega muusikat, mis sarnaneks teie osadega; või 2) Shazamil on muusikapala, kuid kuidagi õnnestus teil see summutada, nii et Shazam on hägune.
Heliklipi "heli sõrmejälgede" genereerimiseks alustab Shazam selle paljudest lühikestest segmentidest. Öeldes "lühike", peame silmas umbes sajandikku või tuhandikku sekundist. Seejärel valib Shazam iga lühikese segmendi jaoks selles kõige olulisemad sagedusvahemikud. Seejärel kodeeritakse (või programmeerimisterminil räsitud ) sagedusvahemikud koos selle lühikese segmendi ajatempliga. Räsi ja ajatemplit koos nimetame seda näidiseks . Luuakse tuhandeid näidiseid ja saadetakse need seejärel Shazami serverisse, et leida selle ulatuslikust andmebaasist sobiv muusikapala koos miljonite näidetega, mis on loodud miljonitest muusikapaladest.
Sobitamisprotsess on üsna lihtne. Kuna iga proovi kõige olulisemad sagedusvahemikud on räsitud, üritab Shazam leida samade räsiväärtustega proovid ja vaadata, kas neid leitud proove saab ajaskaalaga joondada nende proovidega, et need sobiksid . Kindel räsiväärtus võib ilmuda paljudes muusikapalades, kuid vähem on võimalik, et räsiväärtuste jada ilmuks kahes erinevas muusikapalas. Mida pikem on järjestus, seda vähem võib hash-konflikt tekkida.
Veel mõned faktid Shazami muusika tuvastamise algoritmi kohta:
- Ajaskaala joondamine ei pea olema täiuslik. Pole tähtis, kas mõni proov ei sobi. Shazam skoorib kõik võimalikud muusikapalad ja vali tulemuseks kõige kõrgema skoori. Nagu on öeldud nende paberil, võivad nad rängalt rikutud heliklipist leida vaste, milles on ainult umbes 1-2% efektiivseid näidiseid. Nii et see ei toimi, kui rikutakse osa muusikast (mis pole ka OP nõuete kohaselt aktsepteeritav).
- Muusika kõrguse nihutamine võib töötada, kuid kuna algoritm on mõeldud arvutamiseks sagedusvahemikud täpsete sageduspunktide asemel peate kõrgust muutma suures suurusjärgus, mida publik kindlasti tunneb. On ka mõningaid muid filtreid, mis võivad Shazami petta, kuid märkamatu muutusega on seda siiski võimatu teha.
- Shazami algoritm suudab eraldada mitme segatud pala läbipaistvuse heliklipis, nii et kui segate Shazami äratuntavat muusikat teiste heliradadega, on see siiski tuvastatav.
Tundub, et Shazamil on väga tugev algoritm, mis on laitmatu, kuid siiski on üks eelis, mida saame kasutada, aja täpsus . Shazamis sobitamise määrab täpne ajaskaala joondus. Selle omaduse järgi suudab Shazam eristada isegi sama loo kahte versiooni või öelda, kas laulja võltsib huuli sünkroniseerimisega oma live'i. Süsteem on täpne kuni millisekunditeni, nii et väike ajapikendus võib selle hävitada.
Nagu öeldud, on tehniliselt siiski võimalik seda tüüpi segadust lahendada, eriti kui see on lineaarne, ja kui te pole silmitsi Shazamiga, mis on loodud täpselt sobivate muusikate äratundmiseks. Rääkimata Shazami algoritmist, mis algselt avaldati 2003. aastal. 14 aastat hiljem on muusika sarnasuste tuvastamiseks palju tugevamad algoritmid, näiteks masinõpe.
Selle algoritmi kohta lisateabe saamiseks võite lugeda Shazami paberit.