Keras ile Ses Sınıflandırma: ECS-50

Bu yazıda LibROSA ve Keras kullanarak Google tarafından sağlanan ECS-50 veri kümesi üzerinde ses sınıflandırma yapacağız.

ECS-50 Veri Kümesi

ECS-50 veri kümesi Google tarafından Youtube aracılığıyla kaydedilmiş olup 50 farklı sınıfta 200 saniyelik ses kayıtlarından oluşur.

Veri kümesini aşağıdan indirebilirsiniz(600MB):

karoldvl/ESC-50

Veri kümemizi çalışma klasörümüzde data isminde bir alt klasörde saklayalım.

LibROSA ile MFCC Özniteliklerinin Çıkarımı

Ses sekansı(zaman domeni) üzerinde direk çalışmak yerine MFCC*(mel frekansı domeni) öznitelikleri üzerinde analizi gerçekleştireceğiz.

Ses dosyalarını okuyup LibROSA vasıtasıyla MFCC özelliklerini çıkaralım. Bu işlem uzun sürüyor fakat bir kere gerçekleştirip MFCC öznitelik matrislerini .NPY formatında saklayarak kolayca tekrar tekrar kullanabiliriz.

Burda dikkat edilmesi gereken iki nokta var:

  • n_mfcc: Bu parametre her satırda kaç MFCC katsayısı olacağını belirliyor. Farklı değerler denediğimde çok olmasının beklenildiği gibi sınıflandırma yetisini arttırdığını gördüm(Ne kadar çok veri o kadar iyi).
  • sklearn.preprocessing.scale: Veriyi normalize etmek, optimizasyon algoritmasının hedefe ulaşabilmesi için önemli.

1 Boyutlu CNN ile Sınıflandırma

Model

1 boyutlu 3 konvolüsyonel katman üzerine iki katmanlı bir ağ yapısı:

Veri Ön İşleme

Ön işleme aşamasında her dosyadan MFCC vektörlerini çekiyoruz. Aynı dosyada alınan vektörler, hedef sütunumuzda aynı indekse sahip. En sonunda öznitelik matrisimizin şeklini 1 boyutlu CNN yapısının istediği şekle getiriyoruz.

Eğitim

Sonuçlar

2 Boyutlu CNN ile Sınıflandırma

Model

Veri Ön İşleme

Burada yukarıdan farklı olan kısım artık modelimizin 2 boyutlu girdi istemesi. MFCC öznitelik vektörlerimizi bunun için kare matrislere böldük. Satır 17–26 arasında bunun nasıl gerçeklendiğini görebilirsiniz:

Eğitim

Sonuçlar

Öneri ve yorumlarınızla destek olmayı unutmayın. Bir başka yazıda görüşmek üzere.

Source: Deep Learning on Medium