2 puan yazan GN⁺ 2024-11-11 | 1 yorum | WhatsApp'ta paylaş
  • Proje özeti

    • Bu proje, müziği notaya dönüştüren bir program yapmayı hedefliyor.
    • Harici enstrüman ayırma kütüphaneleri kullanmadan, müziği onu oluşturan enstrümanlara ayıran bir açık kaynak proje.
    • Projenin çıkış noktası, kişisel ihtiyaçlar ve basit bir açık kaynak algoritmanın olmamasıydı.
  • Hazırlık süreci

    • Enstrüman verileri, University of Iowa Electronic Music Studios veritabanından alındı.
    • Bu verilerden tüm dalga biçiminin Fourier dönüşümü ve dalga biçiminin zarfı çıkarıldı.
  • Çalışma prensibi

    • Enstrümanların ses dalga biçimleri esas olarak Fourier dönüşümü ve zarf ile karakterize ediliyor.
    • Bu sayede hangi enstrümanın hangi notayı çaldığı belirlenebiliyor.
  • Fourier dönüşümü

    • Müzik dosyasının Fourier dönüşümü her 0,1 saniyede bir uygulanarak bir spektrogram oluşturuluyor.
    • Her enstrüman için saklanan Fourier dönüşümleri toplanarak 0,1 saniyelik pencerenin Fourier dönüşümü yeniden kuruluyor.
    • Her enstrümanın büyüklüğü, MSE maliyet fonksiyonunun frekansa göre kısmi türevi üzerinden bulunuyor.
  • Zarf

    • Zarf, dalga biçiminin üst sınırıdır; gürültüye ve belirli dalga biçimi türlerine dayanıklı bir yönteme ihtiyaç vardır.
    • Dalga biçimi parçalara bölünür ve her parçanın maksimum değeri alınarak zarf elde edilir.
    • Zarf; atak, sürdürme ve bırakma bölümlerine ayrılarak analiz edilir.
    • Enstrüman dalga biçimleri statik veya dinamik sönümlemeye sahip olabilir; bunu ayırt etmek için sönümleme katsayısı ve değişim oranı analiz edilir.
  • Dalga biçimlerinin farklı türleri

    • Müzik dosyasını işlemek için her notanın frekansı üzerinde bant geçiren filtre uygulanır.
    • Her enstrüman için atak ve bırakmanın çapraz korelasyonu kullanılarak her notanın başlangıcı ve bitişi bulunur, ardından maliyeti hesaplamak için MSE kullanılır.
    • Fourier dönüşümü aşamasında bulunan büyüklük ile maliyetin tersi çarpılarak nihai büyüklük elde edilir.
  • Sonuçlar ve görselleştirme

    • Notaları göstermek için matplotlib'in scatter plot'u kullanılır.
    • Başlangıçta büyüklüklerden sesi yeniden üretmeye çalışıldı, ancak çok sayıda sorun çıktığı için bu fikirden vazgeçildi.
    • Nota rekonstrüksiyonu için faydalıdır; özellikle perde veya akor bulmakta zorlanan durumlarda yardımcı olur.

1 yorum

 
GN⁺ 2024-11-11
Hacker News görüşleri
  • Başlık kafa karıştırıcı olabilir. Bu proje ses kaynağı ayırma değil, bir pitch detection algoritması ve ayrıca enstrüman sınıflandırma özelliği de içeriyor
    • Sonuçları düzeltmek daha uzun sürebilir
  • Otomatik müzik transkripsiyonu (audio->MIDI), derin öğrenme ve müzik bilgi erişiminin önemli bir alt alanıdır
    • Google'ın MT3 projesi başarılı bir model olarak anılıyor
    • Piyano transkripsiyonunda, düşük kaliteli seste bile neredeyse kusursuz doğruluk gösteriyor
  • Ses ayırma ile ilgileniyorsanız RipX'e bakmaya değer
    • Ayrılmış parçaları MIDI dosyaları olarak dışa aktarabiliyor
    • Hâlâ bazı sorunları var ama iyi çalışıyor
    • Stem ayırma artık müzik yazılımlarında standart ve neredeyse tüm DAW'lar bunu sunuyor
  • Gerçek enstrüman fiziği, basit Fourier dönüşümü şablonlarıyla yakalanamayabilir
    • Trompet, yumuşak çalındığında ve yüksek sesle çalındığında farklı harmonik spektrumlara sahip olabilir
    • Enstrümanın şiddetine göre harmonik içerik büyük ölçüde değişebilir
    • Her enstrüman için şiddete bağlı Fourier şablonları eklenerek doğruluk artırılabilir
  • 15 yıl önce Audiosurf oynadığım günleri hatırlatıyor
  • YouTube video demosu kaynak ayırmayı gösteriyor gibi görünmüyor
  • Kimse "separation" kelimesinin dört kez yanlış yazıldığını söylemiyor
  • Bazı videolarda ses yokmuş gibi görünüyor
  • Bu proje Joshua Bird'ün erkek kardeşinin çalışması olabilir
    • Joshua Bird zaten etkileyici projeler yapmıştı
  • Kaynak kodunu bulamıyorum ama proje ilgi çekici görünüyor