Müzik Tanıma ve Sinyal İşleme

7 Cevap php

Ben istiyorum build something similar to Tunatic veya Midomi ve ben kullanmak zorunda hangi algoritmaları merak ediyorum (ne yaptıklarını emin değilseniz bunları deneyin); Ben bu tür uygulamaların işleyişi hakkında sahip fikri bu gibi bir şeydir:

  1. birkaç şarkı ile büyük bir veritabanı var
  2. her şarkı için 1. (örneğin 64kbps) kalite / bit-oranını azaltmak ve sesi "hash" hesaplamak
  3. tanımlamak istediğiniz müziğin sesi / alıntı var
  4. yılında şarkı için 3. (64kbps tekrar) kalite / bit-oranını azaltmak ve ses "hash" hesaplamak
  5. 4. Ses hash 2. Ses sağlamalarının herhangi eşleşen müzik iade ise

Ben nedeniyle çevre sesler ve kodlama farklılıkları kalite / bit-hızı azaltma olsa.

Am I in the right track here? Herkes bana herhangi bir specific documentation or examples verebilir misiniz? Midori bile hum's, bu oldukça Dehşet etkileyici tanımak gibi görünüyor! Bunu nasıl yaparsınız?

Ses sağlamalarının yok veya ben sadece yapılmış bir şey mi? Onlar yoksa, bunları nasıl hesaplayabilirsiniz? Ve daha da önemlisi, how can I check if child-hash içinde father-hash ?

Nasıl hakkında gitmek istiyorum building a similar system with Python (maybe a built-in module) or PHP?

(Tercihen Python veya PHP) Bazı örnekler büyük takdir edilecektir. Şimdiden teşekkürler!

7 Cevap

Ben birkaç Müzik Bilgi Alma tekniklerini uygulayan serin bir çerçeve çevre üzerinde çalıştı. Ben pek bir uzman (edit: aslında ben sadece açıklığa kavuşturmak için, bir uzman yerde yakın değilim) değilim, ama Hızlı Fourier Dönüşümü tüm bu şeylerle yerde kullanıldığını söyleyebilirim. Fourier analizi tuhaf ama uygulama oldukça düz ileri. Bunun yerine zaman etki daha frekans alanında analiz Temelde ses hakkında pek çok bilgi alabilirsiniz. Bu Fourier analizi verir budur.

Eğer yapmak istediğiniz ne biraz konu dışı olabilir. Her durumda, oynamak, hem de çekirdek kütüphane kendisi için sourcecode inceleyen projede bazı serin araçlar vardır: http://marsyas.sness.net

Ben müzik bilgisi alma (MIR) araştırma yapmak. Müzik parmak izi üzerinde seminal kağıt 2002-03 etrafında Haitsma ve Kalker tarafından biridir. Google size almalısınız.

Shazam yöntemi hakkında beyaz kağıt; (2000 öncesi gerçekten erken) bir erken okudum. Bu noktada, sadece temel olarak spectrotemporal tepe tespit edilir ve daha sonra tepe karma. Ben prosedür gelişti eminim.

Bu yöntemlerin her ikisi de sinyal seviyesinde müzik benzerlik adres, yani, çevre çarpıtmalara sağlamdır. Ben sorgu-by-uğultu (QBH) için iyi çalıştığını sanmıyorum. Ancak, bu farklı (henüz ilgili) çözümleri ile farklı (henüz ilişkili) sorundur, bu nedenle literatürde çözümler bulabilirsiniz. (Burada adı çok fazla.)

IsmiR yargılamanın çevrimiçi serbestçe kullanılabilir. Siz değerli şeyler orada bulabilirsiniz: http://www.ismir.net/

Ben Marsyas gibi varolan bir kütüphaneyi kullanarak katılıyorum. Ne istediğinizi bağlıdır. Numpy / Scipy burada vazgeçilmez olduğunu, ben düşünüyorum. Basit şeyler kendi Python ile yazılmış olabilir. Eğer KSFD, MFCC gibi şeyler gerekiyorsa Heck, ben size kodu e-posta gönderebilirsiniz.

Müzik çıkarılan MFCC .. bu en sık benzer şarkıları bulmak için kullanılan şarkılar arasında timbrel benzerlik bulmakta çok faydalıdır. Darren tarafından belirtildiği gibi, Marsyas tek bir vektör gösterimi için MFCC dönüştürerek MFCC ayıklamak ve benzeri şarkıları bulmak için kullanılabilecek bir araçtır ..

MFCC dışında, Ritim de şarkı benzerlik bulmak için kullanılır .. Mirex 2009 sunulan birkaç belge var

bu sana müzik benzerlik tespit en yararlı farklı algoritmalar ve özellikleri iyi bir bakış verecektir.

Onun i son sinyal işleme yaptım beri bir süre oldu, daha ziyade frekans alanı temsilleri (örneğin FFT veya DCT) bakmak gerekir Altörneklemeden daha. Sonra bir tür karma yapmak ve o içeri dizisi ile veritabanı şarkı için arama yapabilir

Zor kısmı (belki gen aramada bazı kağıtları ilgi olabilir) bu arama hızlı yapıyor. Ben iTunes de aramayı daraltmak için araçların bazı tespitini yapar sanıyorum.

Belirli bir müzik bilgisi alma hizmeti (isim sözü) yapar hangi yöntemi hakkında bir kağıt okudum - Kısa Zamanlı Fourier ses numune üzerinde dönüşümü hesaplanarak. Algoritma, sonra özellikle yüksek genlik frekans alanı yani zaman pozisyonları ve frekanslar 'doruklarına' dışarı alır, ve bir karma oluşturmak için bu piklerin zaman ve frekans kullanır. Karma, farklı örnekler ve aynı zamanda pik bilgilerin yaklaşık% 50 veri kaybına karşı ayağa arasındaki şaşırtıcı birkaç çarpışmalar vardır çıkıyor .....

MusicBrainz project Böyle bir veritabanını tutar. Bir parmak izi göre kendisine sorguları yapabilirsiniz.

Proje, bir süre beri zaten var ve geçmişte farklı parmak izleri kullandı. Listesi için here bakın.

Kullanmakta oldukları son parmak izi AcoustId. Böyle parmak oluşturabilirsiniz Chromaprint kütüphane (Python bağlamaları ile) vardır. Bunu ham PCM veri beslemek gerekir.

Geçenlerde (FFmpeg kullanarak) çözme yapar ve AcoustId parmak izi (Chromaprint kullanarak) ve diğer şeyler (de portaudio yoluyla akışı oynatmak için) üretmek için gibi fonksiyonları sağlar Python kütüphane yazdım. Bkz here.

Şu anda ActionScript 3 kullanarak bir müzik arama motoru geliştiriyorum. Fikri ilk akorları analiz ve çerçeveler (o anda mp3 dosyaları sınırlı bulunuyor) işaretleme nerede ölçüde frekans değişimi (melodi değişiklikler ve görmezden sesler). Bundan sonra ben giriş ses aynı şeyi yapmak ve ters dosyaları ile sonuçları maç. Uygun bir eşleşen şarkı belirler.

Axel yöntemi için, ben bir konuşma tanıma programı uygulamak yok çünkü, bir şarkı ya da sadece uğultu olsun sorgu endişe etmemesi gerektiğini düşünüyorum. Ama karma işlevlerini kullanır yöntemi hakkında merak ediyorum. Bana bunu açıklayabilir misiniz?