Bir şarkının parçalarını algılama


9

Umarım bu çok öznel değildir ...

Ben bir müzikal tarzı ne olursa olsun, bir şarkının farklı "parçalarını" tespit çabalarında bir yön arıyorum. Nereye bakacağım hakkında hiçbir fikrim yok, ancak diğer StackOverflow sitelerinin gücüne güvenerek, burada birisinin yönü işaret etmeye yardımcı olabileceğini düşündüm.

Çoğu temel terimde, bir şarkının farklı bölümlerini sadece ardışık yinelenen kalıpları gruplandırarak ve bunları "bölüm" olarak adlandırarak algılayabiliriz. Bu belki de o kadar zor değil - bilgisayarlar, küçük bir varyasyon olsa bile, bir sinyaldeki tekrarlamayı tespit etmekte oldukça iyidir.

Ama çoğu müzikte olduğu gibi “parçalar” çakıştığında zor.

Bu tür bir sistem için ne tür müziklerin en uygun olacağını söylemek zor. Klasik tarzdaki senfonik müziğin en kolay işlenebileceğini tahmin ediyorum.

Bu alanda nerede araştırma yapılacağına dair bir fikrin var mı?


Parçacık kaydından şarkıyı tanımak için bir iPhone uygulaması olduğunu düşünüyorum. Ve bu uygulamayı açıklayan bir makale olduğunu düşünüyorum. Üzgünüm, bağlantım yok ama bununla başlarım.
mpiktas

1
@mpiktas: muhtemelen SoundHound veya Shazam gibi uygulamalardan bahsediyorsunuz . Orada bir teknik inceleme bu detaya çok fazla gitmez rağmen Shazam nasıl çalıştığı hakkında. OP'nin ihtiyaç duyduğu şeyden emin olmasam da, iyi bir başlangıç ​​noktası olabilir.
nico

Yanıtlar:


6

Sinyal işleme konusunda uzman değilim, ancak müzik teorisi hakkında oldukça fazla şey biliyorum. Aksine, klasik müziğin muhtemelen basit matematiksel yöntemlerle analiz edilmesi en zor müziklerden biri olacağını söyleyebilirim. En iyisi, pop veya techno müzik gibi daha basit ve daha tekrarlayıcı bir şeyle başlamaktır. Pop genellikle hedeflerinizin basit bir versiyonuna yardımcı olabilecek bir ayet-koro-ayet ... vs formatına sahiptir.

Verilerinizde en önemli kurucu frekanslarına, belki de farklı alt bölümler arasında hiyerarşik olarak ayrılmak için bir Fourier Dönüşümü kullanmayı deneyin . Özellikle, verilerinizin "parçalarını" nasıl gruplandırmak istediğinize bağlı olarak farklı şeyler arayabilirsiniz.

  1. Pop müziğinizdeki en yavaş salınımlar muhtemelen ayet ve koro arasında ve ayete geri dönüşler olacaktır (belki dakikada 0.75 salınım?).

  2. Daha sonra, akor ilerlemeleriniz arasında, yani şarkınızın her bir ölçüsü arasında daha yüksek frekanslı salınımlar bulabilirsiniz (belki dakikada yaklaşık 6 salınım?).

  3. Bir sonraki en yüksek frekans, şarkı sözlerinin tıngırdatma ve senkoplamasının genellikle pop / folk müziğinde tekrarlandığı bir ölçü dahilindeki bir çubuk (belki de dakikada yaklaşık 24 salınım?) Olacağını düşünüyorum.

  4. Kanlı ayrıntılara inerken, müziğinizin her çubuğunda tekrarlayan ritimleri ve ritimleri bulacaksınız. Bunlardan birini seçmek ve izole etmek (belki de 148 salınım / dakikada atım?) Muhtemelen bir bas davul vuruşu veya bir çıngırak vuruşu veya benzer bir düzen boyunca bir şey verir.

  5. Ritim ve zil sesleri arasında bir yerde, bir elektro gitarda hız / süpürme veya hızlı vokal atlama ritmi gibi müziğinizin hızlı stilistik öğelerini bulabilirsiniz. (Bunların ne kadar hızlı olabileceği hakkında hiçbir fikrim yok, ancak dakikada 1000 vuruş veya daha fazla bir yerde tahmin ediyorum).

  6. Son olarak, hızlı ve muhtemelen en karmaşık ton ve tını unsurlarıdır. "Orta A" notunun 440 Hz, yani İKİNCİ başına 440 salınım olarak standartlaştırıldığını biliyorum. Eminim ton kalitesine ve tınıya göre hangi tür araçların kullanıldığına göre farklılaştırma teknikleri vardır; insan vokallerini tespit etmek için oldukça iyi algoritmalar bile var. Ancak dediğim gibi, sinyal işleme uzmanı değilim.


6

Müzik genellikle, bazı hareketli pencere yaklaşımıyla yapılan parça parçaları üzerinde hesaplanan MFCC'ler gibi bazı ek şeyler içeren MPEG7 tanımlayıcıları kullanılarak tanımlanır (yani, bir pencere boyutunuz ve hopunuz var, sesin başlangıcına yerleştirilen pencere ile başlayın, daha sonra hop ile taşıyın ve sonuna ulaşıncaya kadar tekrarlayın).
Bu şekilde bir parça bir masaya dönüştürülür; sizin durumunuzda parçalara biraz kümeleme uygulamak ve böylece bu "parçaları" tespit etmek için kullanılabilir.


Şimdi bu daha çok! İyi teknik cevap.
makine özlemi

5

Bu konuda çok çeşitli açılardan birçok farklı yöntem ve çok sayıda literatür vardır. İşte aramanız için iyi bir başlangıç ​​noktası olabilecek birkaç önemli nokta.

Eğer geçmişiniz matematiksel veya hesaplamalıdan daha müzikal ise, David Cope'un eserleriyle ilgilenebilirsiniz , yayınlanan eserlerinin çoğu klasik müzik parçalarının analizine odaklanır, ancak daha genel görünen rekombinant adı verilen özel bir girişimi vardır . Çalışmalarının çoğu, müziği dil tipi modeller olarak kullandı, ancak en azından yaptığı çalışmaların en azından bir kısmının, tüm müzikal genom benzeri yaklaşıma doğru değiştiğine inanıyorum . Çevrimiçi olarak çok fazla yazılımı var , ancak genellikle Lisp ile yazılmış ve bazıları sadece Linux'un çeşitli sürümlerinde çalışabilir, ancak bazıları Linux'ta veya ortak lisp'i çalıştırmak için herhangi bir yerde çalışmalıdır .

Genel olarak sinyallerin ve müziğin analizi, makine öğreniminde çok popüler bir sorun olmuştur. Christopher Bishop metinlerinde Örüntü Tanıma ve Örüntü Tanıma ve Makine Öğrenimi için Sinir Ağları iyi bir başlangıç ​​kapsamına sahiptir . İşte müzik sınıflandırma kısmına sahip olan, ancak özellik çıkarma konusunda iyi bir kapsama sahip olan bir MSc makalesine bir örnek, yazarın Bishop metinlerinden en az birini ve diğer birkaç kaynağı belirtiyor. Ayrıca konulara ilişkin daha güncel makaleler için çeşitli kaynaklar önermektedir .

Daha matematiksel veya istatistiksel olan kitaplar (en azından içeriklerine göre yazarlıkları tarafından):

Bishop ve makine öğreniminin hesaplama perspektifinden bahsettiğimden beri, Hastie'nin daha yeni İstatistiksel Öğrenim Unsurlarına (ücretsiz yasal indirme için kullanılabilir) bir göz atmanızı önermezsem hikayenin yarısını anlatırdım. , Tibshirani ve Friedman. Bu metinde özellikle bir ses işleme örneği olduğunu hatırlamıyorum, ancak kapsanan yöntemlerin bir kısmı bu soruna uyarlanabilir.

Dikkate değer bir başka metin de Jan Beran'ın Müzikoloji İstatistiğidir . Bu, özellikle müzik eserlerinin analizi için bir dizi istatistiksel araç sağlar ve ayrıca çok sayıda referansa sahiptir.

Yine orada birçok başka kaynak var. Bunların çoğu, geçmişinizin ne olduğuna ve en rahat olduğunuz soruna hangi yaklaşıma bağlı olduğuna bağlıdır. Umarım bunların en azından bir kısmı size cevap arayışınızda rehberlik eder. Bize arka planınız hakkında daha fazla bilgi verirseniz, sorun hakkında ek ayrıntılar verirseniz veya bu gönderiye yanıt olarak bir soru sorarsanız, eminim ben veya buradaki diğer birçok kişi sizi daha spesifik bilgilere yönlendirmekten memnuniyet duyarız. İyi şanslar!


4

Harika bir cevap değil, araştırma için iki yer:

Uluslararası Müzik Bilgi Erişim Derneği'nin sadece bu konuda tonlarca yayınlanmış makalesi var, ne kadar bilgi var www.ismir.net

& Echo Nest (Benzer şeyler yapmak için API içeren bir başlangıç) echonest.com

GÜNCELLEME: bazı açık kaynaklı parmak izi kodları da yayınladılar. http://echoprint.me/


0

Ben de benzer bir problemle ilgilendim. İşte çözüm. Scape arsa denilen o kadar eski bir bilimsel öneri değil . Ayrıntılar için bu makaleye bakın (güzel görünüyor).

Buna ek olarak, müzikte çok sayıda benzer istatistik uygulaması olduğu için yazarın web sitesini de ziyaret etmenizi öneririm . Diğer benzer kaynakları ararken , benzer alanları içeren Music Information Retrieval terimini kullanmanızı öneririm .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.