LOG
Kulağımız sesin şiddetini logaritmik bir ölçüde algılar. Benzer şekilde elde ettiğimiz 12 adet verinin logaritmik kullanılması toplam sistem başarımını arttırıyor. Log işlemi için doğal logaritma iyi sonuç veriyor. Tekrar yeri gelmişken, Bkz. Euler ve ilk değinen J.Bernouilli için bkz. Bileşik faiz problemi.
IDCT (ters ayrık cosinus dönüşümü)
DCT aslında DFT ile akraba diyebileceğimiz bir dönüşüm işlemidir ancak DFT den farklı olarak DCT de imaginer kısım yoktur yalnızda Reel bileşenler vardır. Ek bilgi; DCT imge sıkıştırmada frekans bileşenlerinin bulunması için sık kullanılır. Bknz.jpeg
İfadesi aşağıdaki gibi;
IDCT ile sonuçtaki 12 bileşene
dönüşüm işlemi uygulanıyor. Sayısal işaret işleme konusunda
üstat isimler IDCT yerine DCT işlemi ile de başarılı sonuçlar
alınabileceğini söylüyorlar.
Cosinüs dönüşümü sonrası yüksek
oranda benzersiz sonuçlar oluştuğundan, sonuçtaki 12 bileşenimize
uyguluyor ve farklı ses sonuçlarının birbirinden daha çok
farklılaşmasını sağlıyoruz.
Spectrum üzerinde bir dönüşüm
yapıldığından dolayı bu aşamadan sonra elde edilen değerlere
Cepstrum adı veriliyor. Spec- trum, Ceps- trum olarak ilk dört harf
terslenerek adlandırılıyor. Sözlüklerde Cepstrum terimini
bulamayabilirsiniz bu nedenle açıklama ihtiyacı duydum.
Litaratürdeki geçen tam ismi "Mel-frequency cepstral coefficients (MFCCs)" şeklinde geçmektedir
detaylı bilgi için bu isimle araştırma yapabilirsiniz.
Enerji Bileşeni
Araştırma yaparken birçok konuşma tanıma sisteminde bulduğumuz 12 cepstral bileşene ek olarak 1 adet de enerji bileşeni eklendiğini görebilirsiniz. Türkçe, sözcüklerin çok farklı enerji seviyesinde seslendirildiği bir dil olmadığından (ya da biz gerektiği gibi seslendirmediğimizden) biz enerji seviyesini dâhil etmedik. İtalyanca, İspanyolca gibi vurgu ve tonlamaların çok daha fazla olduğu dillerde daha çok işe yarayan bir bileşen.
Araştırma yaparken birçok konuşma tanıma sisteminde bulduğumuz 12 cepstral bileşene ek olarak 1 adet de enerji bileşeni eklendiğini görebilirsiniz. Türkçe, sözcüklerin çok farklı enerji seviyesinde seslendirildiği bir dil olmadığından (ya da biz gerektiği gibi seslendirmediğimizden) biz enerji seviyesini dâhil etmedik. İtalyanca, İspanyolca gibi vurgu ve tonlamaların çok daha fazla olduğu dillerde daha çok işe yarayan bir bileşen.
Liftering
Yukarıdaki gibi bir filtre ile adaptif olarak değişebilecek şekilde bazı değerlerin baskılanması veya yükseltilmesi işlemleri uygulanabilir. Uygulamaya özel değişkenlik gösterir. Benzer şekilde şimdiye kadar değindiğimiz birçok işlemden sonra elde edilen değerlerin normalizasyonu yapılmaktadır.
*Bu aşamadan sonra elde ettiğimiz 12 adet MFCC katsayısını Cm dizisi olarak ifade edilecek.
Delta ve İvme(acceleration) Değişkenleri
Bu değişkenler sistem başarımını arttırıcı unsurlardır. Cm sonuç dizisindeki sonuçların ne kadar değiştiği ve ne hızla değiştiği ile ilgili bilgileri de sonuca dahil etmek istiyoruz.
Delta bileşeni adından tahmin edildiği gibi değişimi ifade etmektedir. Delta bileşenini en kolay hesaplama yolu her değerden bir öncekini çıkarmaktır.
Ancak gürültüden dolayı bozulmalarda veya farklı seslendirme biçimlerinde sistemimizi daha başarılı hale getirmek için, bulduğumuz cesptral bileşenlere bir polinom fit edip delta ve acc değişkenlerini bulmak çok daha mantıklıdır.
Polinom bulunduktan sonra fizik derslerinden de hatırlanabileceği gibi limp→0 iken 1.türev delta, 2.derece türev acceleration (kısaca acc)değişkenlerini verecektir.
2. dereceden bir polinom fit etmek kazanç/işlem yükü oranı düşünüldüğünde yeterli. Tabii matematiğe düşkün arkadaşlar bilirler polinom fit etmek için en iyi yöntemlerden birisi, en küçük kareler (least squares) yöntemidir. Bknz. Gauss
2. derece polinom h1 + h2*p + h3*p^2 gibi bir şey olacak. Ve Gauss yaklaşımına göre sonuç dizimizdeki 2P+1 kadar elemandan bu polinomu çıkarıp karesini alıyor ve topluyoruz. İdeal durumda toplamın limiti = 0 olmalı.
Yani;
*Bu aşamadan sonra elde ettiğimiz 12 adet MFCC katsayısını Cm dizisi olarak ifade edilecek.
Delta ve İvme(acceleration) Değişkenleri
Bu değişkenler sistem başarımını arttırıcı unsurlardır. Cm sonuç dizisindeki sonuçların ne kadar değiştiği ve ne hızla değiştiği ile ilgili bilgileri de sonuca dahil etmek istiyoruz.
Delta bileşeni adından tahmin edildiği gibi değişimi ifade etmektedir. Delta bileşenini en kolay hesaplama yolu her değerden bir öncekini çıkarmaktır.
Ancak gürültüden dolayı bozulmalarda veya farklı seslendirme biçimlerinde sistemimizi daha başarılı hale getirmek için, bulduğumuz cesptral bileşenlere bir polinom fit edip delta ve acc değişkenlerini bulmak çok daha mantıklıdır.
Polinom bulunduktan sonra fizik derslerinden de hatırlanabileceği gibi limp→0 iken 1.türev delta, 2.derece türev acceleration (kısaca acc)değişkenlerini verecektir.
2. dereceden bir polinom fit etmek kazanç/işlem yükü oranı düşünüldüğünde yeterli. Tabii matematiğe düşkün arkadaşlar bilirler polinom fit etmek için en iyi yöntemlerden birisi, en küçük kareler (least squares) yöntemidir. Bknz. Gauss
2. derece polinom h1 + h2*p + h3*p^2 gibi bir şey olacak. Ve Gauss yaklaşımına göre sonuç dizimizdeki 2P+1 kadar elemandan bu polinomu çıkarıp karesini alıyor ve topluyoruz. İdeal durumda toplamın limiti = 0 olmalı.
Yani;
0=p=-PPChn+p-
( h1 + h2p+ h3p2 ) 2
İfade1
ukarıdaki ifadeye G dersek;
∂G∂h1=
0, ∂G∂h2=
0 ve ∂G∂h3=
0
İfade2
Yukarıdaki diferansiyeller
çözüldüğünde elimizde sıfıra eşit 3 bilinmeyenli 3 ayrı
denklem olur. Gerisi klasik matematik ve buradan polinoma ait h1,h2
ve h3 değişkenleri rahatlıkla bulunabilir.
limp→0(
h1 + h2p+ h3p2 ) ifadesinin
1. derece türevi = h2 = delta
değişkeni,
2.derece türevi = 2*h3 = acc
değişkeni.
Dikkat edilmesi gereken noktalardan
birisi de şu; 12 cepstral değişkenin tümüne bir polinom fit
edilip polinom katysayıları bir kereye mahsus hesaplanmıyor. Cm
dizisinin her elemanı için ilk denklemde büyük P ile ifade
edilen sayıda önceki ve sonraki rakamlara göre bir polinom
bulunuyor. Dolayısıyla 12 Cm değişkenimizden her birisi için 1
delta ve 1 acc değeri hesaplıyoruz.
*Delta sonuçları D dizisinde, Acc
sonuçları için A dizisinde tutulsun.
Bir örnekle şöyle açıklayalım;
Biz sistemimizde P = 2 seçtik
dolayısıyla -> 2P+1 = 5
Yani, Cm dizisinin her serfinde farklı
5 adet elemanı üzerine bir polinom oturuyor ve katsayılar
hesaplanıyor.
Cm[5] için aşağıdaki eşitlik İfade
2 den çözülür ve D[5] ve A[5] bulunur.
(Cm[3] – polinom)^2
+…………..+(Cm[7] – polinom)^2 = 0
Bu işlem Cm dizisinin tüm
elemanlarına tek tek uygulanıyor. Sonuçta D ve A dizilerinin bütün
elemanları hesaplanıyor. Bu 3 dizideki veriler uç uca dizilirse
elimizde aşağıdaki gibi tek bir dizi oluşuyor.
AV = {Cm[0],……………………,
Cm[11],D[0],…………….,D[11],A[0],………………..,A[11]}
Toplamda 20ms uzunluğundaki her bir
çerçeve için 36 adet birbiriyle önemli ölçüde benzeşmeyen
değer bulduk. Bu 36 adet değer bir vektör oluşturuyor.
Örneğin başlangıçtaki fener
kelimesini 110 çerçeveye bölmüşsek ve her çerçeve için 36
elemanlı akustik vektörümüz varsa toplamda 110 akustik vektör *
36 = 3960 adet fener sözcüğünü ifade eden rakam var.
Aşağıda 2 farklı kişi tarafından
seslendirilen ”mendil” sözcüğünün akustik vektörlerine ait
grafikleri bulabilirsiniz.
Bu değerlerin ortalamalarını alıp
üst üste çizdirdiğimizde aşağıdaki grafikte görüldüğü
gibi birbirine çok yakın eğriler çıkıyor
Mesela iki ayrı Mendil ses kaydınından elde edilen grafik
mendil (mavi) - mendil (kırmız)
Mendil ve araba kelimeleri ise
aşağıdaki gibi birbiriyle uyuşmayan eğriler çiziyor.
Devam edecek ...
Hiç yorum yok:
Yorum Gönder