En başından başlayalım. Cepstrum'u hesaplamanın standart yolu aşağıdaki gibidir:
C( x ( t ) ) =F- 1[ log( F[ x ( t ) ] ) ]
MFCC katsayıları durumunda durum biraz farklıdır, ancak yine de benzerdir.
Ön vurgulama ve pencereleme işleminden sonra, sinyalinizin DFT'sini hesaplar ve örtüşen üçgen filtrelerin filtre bankasını erime ölçeğinde ayrılmış olarak uygularsınız (bazı durumlarda doğrusal ölçek mel'den daha iyidir):
Cepstrum tanımına gelince, şimdi spektrumun zarfını (azaltılmış spektrum) mel-frekans ölçeğinde temsil ettiniz. Eğer bunu temsil ederseniz, o zaman onun orijinal sinyal spektrumunuza benzediğini göreceksiniz.
Bir sonraki adım, yukarıda elde edilen katsayıların logaritmasını hesaplamaktır. Bunun nedeni, cepstrumun sinyali vokal kanalının dürtü tepkisinden ayıran homomorfik bir dönüşüm olması gerektiğidir. Nasıl?
Orijinal konuşma sinyali s ( t ) çoğunlukla dürtü yanıtı ile kıvrılır h ( t ) vokal kanalı:
s^( t ) = s ( t ) ⋆ sa ( t )
Frekans alanında evrişim spektrumların bir çarpımıdır:
S^( f) = S( f) ⋅ H( f)
Bu, aşağıdaki özelliğe dayanarak iki parçaya ayrılabilir: günlük( a ⋅ b ) = günlük( a ) + günlük( b ).
Ayrıca dürtü tepkisinin zaman içinde değişmemesini bekliyoruz, bu nedenle ortalamanın çıkarılmasıyla kolayca çıkarılabilir. Şimdi grup enerjilerimizin logaritmalarını neden aldığımızı görüyorsunuz.
Cepstrum tanımındaki son adım Ters Fourier Dönüşümü olacaktır F- 1. Sorun şu ki, sadece log enerjilerimiz var, faz bilgisi yok, bu yüzden uyguladıktan sonra ifft
karmaşık değerli katsayılar elde ediyoruz - tüm bu çabaların kompakt bir temsil olması çok zarif değil. Her ne kadar FT'nin 'basitleştirilmiş' versiyonu olan Ayrık Kosinüs Dönüşümü'nü alabilir ve gerçek değerli katsayıları alabiliriz! Bu prosedür, cosinusoidleri log-enerji katsayılarımızla eşleştirerek görselleştirilebilir. Cepstrum'un 'spektrum spektrumu' olarak da adlandırıldığını hatırlayabilir misiniz? Bu tam adım - log-energy zarf katsayılarımızda herhangi bir periyodiklik arıyoruz.
Şimdi görüyorsunuz, şimdi orijinal spektrumun nasıl göründüğünü anlamak oldukça zor. Ek olarak, genellikle sadece ilk 12 MFCC'yi alıyoruz, çünkü daha yüksek olanlar log enerjilerindeki hızlı değişiklikleri tanımlamaktadır, bu da genellikle tanıma oranını daha da kötüleştirmektedir. DCT yapmanın nedenleri şunlardı:
Başlangıçta IFFT yapmalısınız, ancak DCT'den gerçek değerli katsayıları almak daha kolaydır. Ek olarak, artık tam spektrumumuz yok (tüm frekans bölmeleri), ancak mel filtre bankalarında enerji katsayıları var, bu nedenle IFFT kullanımı biraz fazladır.
İlk şekilde, filtre bankalarının üst üste geldiğini görüyorsunuz, bu yüzden yan yana olanlardan gelen enerji iki arasında yayılıyor - DCT onları süslemeye izin veriyor. Bunun örneğin diyagonal kovaryans matrislerini (diğer katsayılar arasında korelasyon yok) kullanabileceğiniz Gauss Karışım Modelleri durumunda iyi bir özellik olduğunu unutmayın (tüm katsayılar ilişkilidir) - bu işleri basitleştirir.
Mel frekans katsayılarını dekolatize etmenin başka bir yolu, sadece bu amaç için kullanılan PCA (Ana Bileşen Analizi) olacaktır. Şansımız için, dekorla ilgili sinyaller söz konusu olduğunda DCT'nin PCA'nın çok iyi bir yaklaşımı olduğu kanıtlandı, bu nedenle Ayrık Kosinüs Dönüşümü kullanmanın başka bir avantajı oldu.
Bazı literatür:
Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Ses ve Ötesi: Ses İçeriği Dizine Ekleme ve Alma