• Sonuç bulunamadı

4. YAPAY SİNİR AĞLARI İLE KONUŞMA TANIMA UYGULAMASI

4.4 Yazılım Geliştirme

Bu çalışma kapsamında, YSA ile Konuşma Tanıma uygulamasının benzetimi amacıyla bir bilgisayar programı geliştirilmiştir. Yazılım ortamı olarak Matlab 7.0 programı ve anılan programa ait Neural Network Toolbox (NNT) araçları ile Graphic User Interface (GUI) tasarım ortamları kullanılmıştır. Bu yazılım ile Türkçe seslendirilen izole rakamları konuşmacıya bağımlı olarak tanıyan bir sistem hedeflenmiştir.

Söz konusu sistem, sayısal sinyal işleme teknikleri kullanılarak ses sinyallerinin özniteliklerinin çıkarılması ve bu özniteliklerin yapay sinir ağları ile sınıflandırılması esasına dayanmaktadır. Takip eden başlıklarda bu esaslar etraflıca anlatılmaktadır.

Bir konuşma tanıma uygulamasında, ses sinyallerinin tanınabilmesi için öncelikle bu sinyallerin doğru şekilde ifade edilmesi gerekmektedir. Diğer bir deyişle, incelenen ses sinyalinin içinde barındırdığı ve yalnızca tanınması hedeflenen kelimeye ait unsurlar belirlenmelidir. Daha sonra belirlenen bu unsurların bir öznitelik vektörü ile ifade edilmesi gerekir. Dolayısıyla ilk aşama, ses sinyallerinin doğru bir şekilde sayısal olarak kaydedilmesidir.

Bu çalışmada bir bayan konuşmacıdan ses örnekleri alınmıştır. Konuşmacıdan, 0’dan 9’a kadar (sıfır, bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz) olan kelimeleri yirmişer defa seslendirmesi istenmiştir. Bu veri setinin seçilmesinin sebebi, çalışmanın literatürdeki diğer örnekleriyle mukayese edilebilmesi, ayrıca bu kelimelerle gerek yoğunluk gerekse anlam yönüyle uygun bir veri tabanı oluşturulabilmesidir.

Bu seslerin kayıt işlemi Goldwave programı ile gerçekleştirilmiştir. Kayıt parametreleri 11,025 kHz. frekans değeri ve 16 bit PCM kodlama olarak belirlenmiştir.

Literatürde ses kayıtlarının kelimenin uzunluğuna bakılmaksızın 0,8 saniyelik kayıt süreleriyle alındığı çalışmalar vardır (Ahad et al. 2002, Azam et al. 2007). Bu gibi kayıt süresini kısıtlayan tercihler seslerin kaydedilme sürecini büyük ölçüde kolaylaştırsa da bir konuşma tanıma uygulamasının en önemli aşaması olan kayıt işlemini hata yapılmasına açık hale getirmektedir. Çünkü kelimelerin seslendirilişleri ile kayıt işleminin aynı anda başlatılmasında güçlükler yaşanmakta ve çoğunlukla konuşmacı ile kayıtları alan uygulayıcı arasında tam bir senkronizasyon sağlanamamaktadır. Ayrıca seslendirilen kelimenin uzunluğundan dolayı kayıt süresinin aşılması veya kelimeyi ifade eden tüm bileşenlerin kaydedilememiş olması da muhtemel bir hatadır.

Diğer taraftan, kayıt süresinin arttırılması ile bu gibi olumsuzlukların ortadan kaldırılabileceği akla gelmektedir. Ancak bu durumda da gereğinden uzun süre kayıt alınmasıyla beraber işlenmesi gereken verinin yanı sıra ses kayıtlarından temizlenmesi gereken ve kayıt şartlarından kaynaklanan gürültünün artacağı göz önünde bulundurulmalıdır. İşlenecek olan verinin artması en genel anlamda sistemi olası hatalara karşı daha zayıf kılmakta, ayrıca bilgisayar daha fazla işlem yükü getirerek sistem performansını olumsuz yönde etkilemektedir.

Sıralanan tüm nedenlerden dolayı bu çalışmada ses kayıtları kelimelerin uzunlukları ile doğru orantılı sürelerle kaydedilmiştir. Böylece kelimelerin eksik kaydedilmesinin ve kayıt süresinin uzun tutulması ile artacak olan işlem yükünün önüne geçilmesi hedeflenmiştir.

Yani sıra kelimelerin başlangıç ve bitişleri sinyallerin enerji kareleri toplamı ile bulunarak daha etkin bir veri alma süreci sağlanmıştır (Rabiner and Samber 1975).

Sonraki aşama bu ses sinyallerinin özniteliklerinin hesaplanmasıdır ve bunun için çeşitli yöntemler mevcuttur (Lippmann 1989, Rabiner and Juang 1993). Bu çalışmada kullanılan öznitelik vektörlerinin hesaplanmasında, üçüncü bölümdeki Sayısal Sinyal İşleme başlığı altında detayları verilen MFC katsayıları kullanılmaktadır. Yine aynı bölümde anılan katsayıların hesaplandığı MFC algoritmasının blok diyagramına da yer verilmiştir. Bu blok diyagramda mevcut işlemler Matlab programı ile, her biri için ayrı .m dosyaları hazırlanarak, sırasıyla gerçekleştirilmiştir. Bu işlemlerde kullanılan parametreler Çizelge 4.2’de sunulmaktadır.

Çizelge 4.2 MFC hesabında kullanılan parametreler

Örnekleme hızı 11,025 kHz.

Veri seti Türkçe rakamlar

Konuşmacı 1, bayan

Tekrar sayısı 20

Pencere fonksiyonu Hamming

Pencere sayısı 256

FFT noktası 512

MFC katsayı adedi 16

Yukarıdaki parametreler kullanılarak, Matlab’de oluşturulan MFCC.m dosyası ile her bir kelime için 16 adet Mel-frekans katsayısı belirlenmiştir. Bir kelimenin doğru ifade edilebilmesi için 16 katsayının yeterli olup olmadığı ise, diğer ağ parametrelerinin de benzer şekilde belirlendiği gibi, deneme-yanılma yöntemi ile kararlaştırılmıştır.

Daha sonra bu katsayılar kullanılarak ve yine her bir kelime için ayrı ayrı olmak üzere, uzunlukları kelimelerin uzunlukları ile orantılı 10 adet öznitelik vektörü oluşturulmuştur.

Takiben, elde edilen öznitelik vektörleri ile kelimelerin modellenmesi ve test edilmek istenen kelimelerin bu modellere göre sınıflandırılması süreci gelmektedir. Bu çalışmanın modelleme ve veri sınıflandırma kısmında, aynı zamanda çalışmanın esas konusunu teşkil eden ve yanı sıra, örüntü tanıma problemlerinde sıklıkla kullanılan başarılı bir sınıflandırıcı olan YSA tercih edilmiştir (Haykin 1999, Öztemel 2006).

Literatürde çeşitli ağ modellerinin kullanıldığı pek çok çalışma mevcuttur. Ancak bu tür çalışmalarda genellikle tek bir ağ modeli kullanılmakta ve o modelin performansı üzerinde durulmaktadır. Burada diğer çalışmalardan farklı olarak çok katmanlı algılayıcı, Elman ağları ve olasılıksal sinir ağları olmak üzere üç ağ modeli kullanılmıştır. Böylece genel sistem performansının yanı sıra göreceli ağ performanslarının da değerlendirilmesi imkanı doğmuştur.

Uygulamada kullanılan geri yayılımlı ÇKA, Elman ve OSA yapıları, Matlab NNT’de mevcut olan ve sırasıyla newff, newelm, newpnn komutları ile gerçekleştirilmiştir. Bu ağların seçilmesindeki başlıca kriter yapılan literatür taraması ile ulaşılan bilgilere göre örüntü tanıma problemlerindeki genel başarımları olmuştur. Yanı sıra tasarım ve uygulama kolaylığı, ağın eğitilmesi için gereken sürenin az olması, ağın işlem yükünün hafifliği gibi diğer bazı kriterler de gözetilmiştir. Söz konusu üç ağ türünün konuşma tanımadaki başarımlarına bu tezin sonuç kısmında değinilecektir.

Yukarıda sıralanan ağ modellerine ilişkin tasarım parametreleri deneme-yanılma yöntemiyle belirlenmiş ve aşağıdaki başlıklarda verilmiştir.

Geri yayılımlı ÇKA

Geri yayılımlı ÇKA modelinin tasarımı için Matlab programı work dizininde mevcut egit1.m dosyasında yazılan kod satırları aşağıda sunulmuştur.

newff ( [20 20 15 10], {'tansig', 'tansig', 'tansig’, 'purelin'});

NNet_CurveFitting.trainParam.epochs = 200;

NNet_CurveFitting.trainParam.goal = 1e-6;

Kod satırlarında da görüldüğü gibi ağ yapısı üç adet saklı katman ve bir adet çıkış katmanından oluşmaktadır. İlk iki saklı katmanın her birinde 20’şer, üçüncü saklı katmanda 15 ve çıkış katmanında 10 adet nöron kullanılmıştır. Bu nöronlardan saklı katmanlarda yer alanlar tanjant sigmoid, çıkış katmanında yer alanlar ise doğrusal transfer fonksiyonlarına sahiptir. Ayrıca ağın eğitim aşamasında kullanılacak olan yineleme sayısı 200 ve ulaşılması hedeflenen ortalama karesel hata oranı ise milyonda bir olarak tasarlanmıştır.2

Elman ağı

Elman ağının tasarımı için Matlab programı work dizininde mevcut egit2.m dosyasında yazılan kod satırları aşağıda sunulmuştur.

newelm ( [40 30 10], {'tansig', 'tansig', 'logsig'});

NNet_CurveFitting.trainParam.epochs = 1000;

NNet_CurveFitting.trainParam.goal = 1e-6;

Bu satırlarda da görüldüğü gibi ağ yapısı iki adet saklı katman ve bir adet çıkış katmanından oluşmakta ve bu katmanlarda sırasıyla 40, 30 ve 10 adet nöron bulunmaktadır.

Ayrıca bu nöronlardan saklı katmanlarda yer alanlar tanjant sigmoid ve doğrusal, çıkış katmanında yer alanlar ise logaritmik sigmoid transfer fonksiyonları kullanmaktadır. Ayrıca ağın eğitim aşamasında kullanılacak olan yineleme sayısı 1000 ve ulaşılması hedeflenen ortalama karesel hata oranı ise milyonda bir olarak tasarlanmıştır.3

2, 3 Sistem, eğitim aşamasında bu değerlerden hangisine daha önce ulaşırsa o parametre esas alınarak eğitim

işlemi sonlandırılmaktadır.

OSA

OSA tasarımı için Matlab programı work dizininde mevcut egit3.m dosyasında yazılan kod satırı aşağıda sunulmuştur.

NNet_CurveFitting = newpnn(giris,cikis);

Bu ağ yapısı için tasarım işlemi önceki iki ağ yapısından eğitim yönüyle farklıdır. Çünkü burada, ağa verilen ilk giriş-çıkış eşleşmeleri için ağırlıklar belirli bir olasılık fonksiyonu uyarınca değiştirildiğinden kullanıcı ağın eğitimi aşamasını görmemektedir. Bu aşamada ağ, spread olarak tanımlanan ve olasılık fonksiyonunun yoğunluğunu ayarlamaya yardımcı bir dağılım sabitinin uygun değere ayarlanması ile şekillendirilmektedir. Deneme-yanılma yoluyla ağ tasarlanırken, bu değer 0,1’e yakınsa ağın en yakın komşu sınıflandırıcı gibi davrandığı gözlemlenmiştir. Değer 0,1’den arttıkça ise diğer vektörler de ağın çıkışını etkilemeye başlamakta ve çıkışlar daha dağınık olabilmektedir.

Kullanılan OSA yapısı, iki adet saklı katman ve bir adet çıkış katmanından oluşmakta ve bu katmanlarda sırasıyla 310, 10 ve 10 adet nöron bulunmaktadır. Dağılım sabiti ise 0,1 alınmıştır.

Ağda, 10 olan çıktı sayısı 11 olarak değiştirildiğinde, tanınması hedeflen dışındaki kelimelerle yapılan testlerde sonuç “TANIMSIZ” olarak alınabilmiştir. Bunun nedeni, herhangi bir durum için olasılıklar toplamının 1 olması ve olasılık fonksiyonun sonuçta bir değere yakınsaması gerekliliğidir. Bu gereklilik, Konuşma Tanıma uygulamasında test edilen 10 kelimeye ilaveten “TANIMSIZ” olarak kaydedilen bir ses ile sağlanmıştır.

Böylece ağa, bu 10 kelimeden birisine adresleyemediği sonuçların tanımsız olarak değerlendirilmesi öğretilebilmiştir.

Uygulamada kullanılacak olan her üç ağın da yukarıdaki başlıklarda verilen parametrelerle tasarlanmasından sonra, eğitim ve test aşamalarının gereksinimleri yerine getirilmelidir.

Seslerin özniteliklerinin çıkarılması aşamasında 10 kelimenin her birinin 20 defa seslendirilmesi sonucu toplam 200 sesten oluşan bir veri tabanı elde edilmiştir. Bu veri tabanındaki seslerden %20’si ağın eğitimi, %80’i ise ağın testi için ayrılmıştır.

YSA modellerinin eğitim aşamasında kullanılacak olan ve 40 sesten oluşan veri, aşağıda açıklandığı şekilde düzenlenerek giriş ve çıkış matrisleri oluşturulmuştur.

Öncelikle her bir ses sinyali için ayrı ayrı hesaplanan MFC katsayıları tek matriste birleştirilmiş ve giris.mat olarak saklanmıştır. Şekilde, giriş matrisinin oluşturulması için örnek bir form görülmektedir.

Şekil 4.1 Giriş matrisinin oluşturulması

Sonrasında, her ses sinyalinin MFC katsayılarına karşılık gelecek şekilde 0 ve 1 değerlerinden oluşan çıkış matrisi oluşturulmuş ve cıkıs.mat olarak saklanmıştır.

Şekil 4.2 Çıkış matrisinin oluşturulması

Böylece seslendirilen kelimelerin öz niteliklerinden oluşan “giriş” ve bu desenlerin sınıflandırıldığı “çıkış” matrisleri oluşturulmuş ve ağ eğitilmiştir.

Test aşamasına gelindiğinde daha önce eğitilmiş olan ağ, aşağıdaki kod satırı ile benzetilmiştir.

y = sim(NNet_CurveFitting,c5);

Bu benzetim neticesinde oluşan çıkış matrisinde, Geri yayılımlı ÇKA için:

• (y(i,k)<1.50) & (y(i,k)>0.50) aralığında yer alan değerler 1’e ve

• (y(i,k)<0.50) & (y(i,k)>-0.50) aralığında yer alan değerler 0’a

Elman ağları için:

• (y(i,k)<1.30) & (y(i,k)>0.70) aralığında yer alan değerler 1’e ve

• (y(i,k)<0.30) & (y(i,k)>-0.30) aralığında yer alan değerler 0’a

dönüştürülmüş.

Tüm satırlardaki “1” adetleri ayrı ayrı hesaplanarak, satırlar birbirleri ile mukayese edilmiştir. En fazla sayıda “1” içeren satırın karşılığı olan kelimenin:

En büyük 1 adedi > Öznitelik değerinin uzunluğu/2

kriterini sağlaması durumunda tanıma işlemi tamamlanmış, tanınan kelime, aşağıdaki kod satırı ile hesaplanan başarı yüzdesi ile birlikte kullanıcıya sunulmuştur.

(En büyük 1 adedi*100)/Tüm satırlardaki toplam 1 adedi

Eğer seslendirilen kelimenin tanınması için gerekli kriter sağlanamamışsa, kelime tanıma uygulaması sonucunun “TANIMSIZ” olduğu ibaresi ile kullanıcı bilgilendirilmektedir.

Yazılım, kullanım kolaylığı sağlanması amacıyla Matlab programı GUI modülü ile desteklenmiş ve bir uygulama ara yüzü hazırlanmıştır. Eğitim, Ağ seçimi, Test verisi, Test sinyali ve Test sonucu pencerelerine yer verilen bu ara yüz sayesinde kullanıcının yapılan işlemleri daha kolay takip edebilmesi amaçlanmıştır. Böylece test işlemleri daha kolay gerçekleştirilebilmekte, farklı ağ modelleri ve kelimelere ilişkin sonuçlar birbirleriyle hızla mukayese edilebilmektedir.

Benzer Belgeler