Ses tanıma için Spektrogramlarla Derin Öğrenme


12

Spektrogramlar kullanarak sesi (örneğin hayvanların sesleri) sınıflandırma olasılığını araştırıyordum. Fikir, spektrogramdaki segmentleri tanımak ve bir (veya birçok) sınıf etiketi çıkarmak için derin bir kıvrımlı sinir ağları kullanmaktır. Bu yeni bir fikir değil (bkz. Örneğin balina sesi sınıflandırması veya müzik tarzı tanıma ).

Karşılaştığım sorun, farklı uzunluktaki ses dosyalarına ve dolayısıyla farklı boyutlardaki spektrogramlara sahip olmam. Şimdiye kadar gördüğüm her yaklaşım sabit boyutlu bir ses örneği kullanıyor ancak bunu yapamıyorum çünkü ses dosyam 10 saniye veya 2 dakika uzunluğunda olabilir.

Örneğin, başlangıçta bir kuş sesi ve sonunda bir kurbağa sesi ile (çıktı "Kuş, Kurbağa" olmalıdır). Şu anki çözümüm sinir ağına geçici bir bileşen eklemek olacaktır (tekrarlayan bir sinir ağından daha fazla yaratılması) ama şimdilik basit tutmak istiyorum. Herhangi bir fikir, link, öğretici, ...?


1
En basit yol, STFT (spektrogram) yerine sabit uzunlukta bir FFT kullanmaktır. Bu, değişken uzunluktaki probleminizi ortadan kaldıracaktır. Neden sadece tekrarlayan bir sinir ağı uygulamıyorsunuz? Sadece çalışılmış bir örneğe mi ihtiyacınız var? Varsa, hangi yazılımı kullanacağınız konusunda esnek misiniz?
Emre

1
Sabit uzunluklu bir FFT ile çok fazla bilgi kaybedeceğimi düşünüyorum. Bunu yaparsam, önce 'ilginç' parçalar aradığım bir bölümleme yapmak zorunda kalacağımı düşünüyorum. Bunu yapabilir veya tekrarlayan sinir ağlarına gidebilirim (bir örnek güzel ama süper gerekli değil, Lasagne kullanmak istedim). Bundan kaçınmaya çalışmamın nedeni, tekrarlayan bir sinir ağının çıkışıyla uğraşmanın daha zor olmasıdır (her seferinde adımda ancak sadece tüm dosya için etiketlerim var). Bu yüzden en basit modelle başlamak ve yavaş yavaş daha karmaşık hale getirmek istedim.
user667804

Neyi kullandığınızı ve bulduğunuz en iyi yaklaşımı söyler misiniz? @ user667804
nia

Çözüm için bu makaleye göz atın: ceur-ws.org/Vol-1609/16090547.pdf Spektrogramın sabit boyutlu parçaları üzerinde bir CNN kullanmak ve daha sonra son bir tahmin oluşturmak için çıktıların ortalamasını almak (ayrı ayrı çıktıların ortalaması işe yarıyor gibi görünüyor) en iyi).
user667804

Yanıtlar:


4

Otomatik konuşma tanıma (ASR) için, filtre bankası özellikleri spektrogramlar CNN olarak iyi olarak gerçekleştirmek Tablo 1 . Hayvan seslerini sınıflandırmak için fbank üzerinde bir DBN-DNN sistemi eğitebilirsiniz.

Uygulamada, Viterbi kod çözme işlemi daha uzun ifadeler için iyi çalışmadığından, daha uzun konuşma ifadeleri daha kısa ifadelere bölünür. Siz de aynısını yapabilirsiniz.

Daha uzun ifadeleri sabit uzunluktaki daha küçük ifadelere bölebilirsiniz. Daha uzun ifadeleri daha küçük olanlara bölmek kolaydır. Sorun, daha küçük ifadelerin sabit uzunluğa ulaşması için uzunluğu arttırmaktır.

Daha küçük ifadeleri arttırmak için spektrogramın frekans eksenini bükebilirsiniz. Bu veri artırımının ASR performans verisi arttırmasını iyileştirdiği gösterilmiştir .

İçinde birden fazla ses bulunan daha uzun bir ifade için, müzik bölütleme algoritmalarını kullanarak birden fazla söze bölebilirsiniz. Bu ifadeler, bölünme veya büyütme ile sabit uzunlukta yapılabilir.


4

RNN'ler yeterince iyi sonuçlar vermiyorlardı ve eğitilmesi de zor, bu yüzden CNN'lerle gittim.

Spesifik bir hayvan sesi sadece birkaç saniye uzunluğunda olduğu için spektrogramı parçalara bölebiliriz. 3 saniyelik bir uzunluk kullandım. Daha sonra her bir yığın üzerinde sınıflandırma yaparız ve her ses dosyası için tek bir tahmin oluşturmak üzere çıktıları ortalarız. Bu gerçekten iyi çalışıyor ve uygulanması da basit.

Daha ayrıntılı bir açıklama burada bulunabilir: http://ceur-ws.org/Vol-1609/16090547.pdf

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.