Shazam Nasıl Çalışıyor? Shazam Algoritması

Shazam.. Herhangi bir yerde “aa bu şarkının adı neydi?” dediğimizde yardımımıza koşan, hak ettiği değeri görmeyen harika bir uygulama.

1999 yılında henüz mobil uygulamalar bile yokken bu işi yapıyorlardı. Nasıl mı? 2580’i arayarak 10 saniye uzunluğunda merak ettiğiniz müziği dinletiyorsunuz ve sonra Shazam tarafından mesaj beklemeye başlıyorsunuz.

Shazam’ı kullandığım ilk günden beri bu soru benim kafamı kurcaladı durdu. Bunu yalnızca merak edenin ben olmadığımı bildiğim için bugün alternatif bir araştırma yaparak Shazam şarkıları nasıl buluyor ve ne çeşit bir algoritma kullanıyor araştırdım. Türkçe kaynaklarda bu konu hakkında detaylı bilgi veren elle tutulur kaynaklar yok fakat global içerik dünyası lebiderya! Ne ararsanız onu buluyorsunuz.

Peki Shazam şarkıları nasıl buluyor?

Her şarkının tıpkı her insana ait parmak izi olduğu gibi bir izi vardır. Bu ize Spektogram adı verilir. Shazam dinlettiğiniz şarkının spektrumunu, kendi veritabanındaki spektrumları tarayarak eşleştirir. Daha sonra da bu spektrumun ait olduğu şarkının ismini size sunar.

Daha açıklayıcı olursam, Shazam algoritması tıpkı bir sihirbaz gibi işin bütün gizemini koruyor fakat mantığını anladıktan sonra “şerefsizim benim aklıma gelmişti” tribine sokuyor. İşte basit adımlar;

1- Shazam önce bütün popüler olan veya olmayan şarkıların parmak izini(spektogram) veritabanına kaydediyor.

2- Bulunmasını istediğimiz şarkıyı 10 saniye boyunca(değişebiliyor) dinletiyoruz.

3- Shazam bu parmak izini veritabanında tarıyor.

4- Eşleşme tamamlanınca sonucu bize ekranda gösteriyor.

Shazam algoritması bundan ibaret dersem çok yanılmış olurum ama indirgeyebildiğim en basit hali bu fakat yine de bazı konulara değinmeden geçemeyeceğim.

Şarkılara ait parmak izi(sprektogram) nedir?

Grafikteki her bir nokta, belirli bir zamanda belirli bir frekansın yoğunluğunu temsil eder. Zaman, x ekseninde ve frekans y ekseninde, yatay çizgi sürekli düzgün bir sesi, dikey çizgi de anlık gürültü patlamalarını temsil eder.

Shazam Algoritması bu grafiği oluşturarak ve pik yoğunluklarının frekanslarını tanımlayarak bir şarkının parmak izini oluşturur. Her bir yükseliş noktasındaki frekansları ve başlangıçtan itibaren geçen süreyi takip eder. 10 saniyelik bir ses dosyasının parmak izi örneği;

şeklindedir. Shazam bir şarkının parmak izini key’i frekans olan bir hash tablosu olarak oluşturur. Daha sonra ilk key’i alarak (yukarıda 823.44) karşılaştırma yapmaya başlar.

Shazam için burada en zorlayıcı durum insanların popüler şarkılardan ziyade nadir bilinen şarkıları da taratması. Shazam bu duruma katmanlı sistemle çözüm buldu diyebiliriz. Yani sisteme giren şarkıyı ararken katman katman şeklinde aramak. İlk katmanda en bilindik şarkılar, ikincisinde orta, üçüncüsünde nadir vb. şeklinde karşılaştırarak ilerlemek. Böylece sisteme kayıtlı her şarkıyı tarayabilme imkanı elde ediyor.
Fakat kafalarımız hala karışık.
– Kaç katmanlı olmalı?
– Her katman kaç popüler şarkı bulundurmalı?
– Her katmanda sorgu ne kadar sürmeli?

Bu sistemdeki en olası hata da yanlış pozitif sonucun çıkmasıdır. Yani sorun şu ki: şarkıyı kıyaslarken en yüksek sonuçlu popüler şarkı seçilebilir ancak daha ilerilerde daha yüksek puanlı daha az popüler bir şarkı olabilir.

Şarkıları kıyaslarken oluşabilecek bir zorlukta gelen şarkının ses kalitesi ve kullanılabilme oranıdır. Şöyle ki:

– Bir çok türde şarkı olması

– Farklı cihazlardan, farklı mikrofonlardan ve farklı gürültü seviyesine sahip ortamlarda kaydedilmiş olması

gibi zorluklar uyum sürecini etkileyen şeylerdir.

Oluşturulan hash’lerin tekrarlanma ihtimali olduğundan yukarıda bahsettiğimiz ses izleri oluşturulurken spektogramda sadece yükseliş noktaları işaretlenmez, buna ek olarak bir de bağlantı noktaları oluşturulur. Böylece key sadece tek bir frekans değil de bağlantı noktasındaki frekans ile yükseliş noktasındaki frekans birlikte kullanılır. Bu şekilde daha fazla nokta oluşturularak hedef bölgedeki nokta sayısı yani yoğunluk arttırılabilir. Bu da üretilen hash sayısını ve veritabanında yapılan kıyaslamada uyuşma oranını arttırır.

Son olarak Shazam ile ilgili birkaç bilgi vermek istiyorum:
– Shazam’ın başlangıçtan beri kullanıcı sayısı:
3 Milyar
– Aylık Shazam kullanıcısı:
100 Milyon
– Shazam’daki toplam ses dosyası sayısı:
12 Milyar (Kasım 2018’den beri)

Bir yanıt yazın