SPHINK otomatik konuşma kayıt sistemi

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

Taktim

Bu kılavuzda, son model, HMM tabanlı konuşma kayıt sistemini kullanımı üzerinde durulacak. Kullanacağım sistem SPHINX sistemdir ve Carnegie Mellon Universitesi tarafından tasarlanmıştır. SPHINX, bugün dünyada kullanılan en iyi ve en yetenekli bir kayıt sistemidir.

Bir HMM tabanlı sistem, diğer bütün konuşma kayıt sistemleri gibi ses birimlerinin karakterlerini öğreterek konuşulan kelimeleri hafızasında tutan ve onları en düzgün bir şekilde kullanan sistemdir. Ses birimleri ile ilgili olan öğrenme işlemi öğretme olarak adlandırılır. Birimlerin en uygun sıralamasına karar veren öğrenme yetisi işlemine kaydetme veya basitçe kayıt diyoruz.

Bu yüzden, alıştırma ve kayıt için kullanacağın SPHINX sisteminin bu bileşenlerine ihtiyacın olacak. Ayrıca, SPHINX öğretici ve SPHINX kaydedici kelimelerini de yer yer bu kılavuzda kullanacağım.

Tam bir konuşma kayıt sistemi kurmak için gerekli bileşenleri nasıl indireceğine, tanımlayacağına ve çalıştıracağına dair yönergeler size öğretilecek. Örneklendirmek gerekirse SphinxTrain ve SPHINX-3'ü nasıl kullanacağına dair yönergeler verilecek. Eğer kaydediciler ve kendi uygulamaları hakkında daha fazla bilgiye ihtiyaç duyarsan bir CMUSphinx proje sayfasını kontrol ediniz. Bu kılavuz sana bir dil modeli nasıl oluşturacağını öğretmez. Fakat mükemmel bir rehber CMU SLM Toolkit kontrol edebilirsin.

Bu kılavuzun sonunda bir öğretici pozisyonunda olacaksın ve bu sistemi kendi kayıt görevlerin için kullanabileceksin. Bu sistemi öğrenmekden daha önemli olan, gerçek bir HMM tabanlı ASR sisteminini kullanarak birkaç önemli konu hakkında bilgi sahibi olmaktır.

Öğretim için gerekli bileşenler

SPHINX öğreticisi, hem iyi tanımlanmış görevler için sorumlulukları hem de hangi programların çağrıldığını belirleyen betik ayarları içerir. Kodu kendi kullandığın platformda tanımlamalısın.

Öğretici, örnek konuşma sinyallerinin bir ayarını kullanarak, ses birim modellerinin parametrelerini öğrenir. Bu, öğrenim veritabanı olarak adlandırılır. Öğrenim veritabanının bir seçeneği sana verilecek. Öğreticiye hangi ses birimini öğretmek istiyorsan, bunu ona söylemelisin. En azından öğrenim veritabanındaki her konuşma sinyalinde meydana gelen sıralamayı. Bu bilgi betik çeviri dosyası olarak adlandırılan bir dosya tarafından sağlanır. Kelimelerin sıralamaları ve konuşulmayan sesler, konuşma sinyalinde meydana gelmiş gibi yazılır ve bir etiket tarafından takip edilir ve konuşma sinyallerinin yerini tutan sıralama ile ilişkilendirilir. Öğretici daha sonra ses birimlerinin sıralamasında kelime haritasındaki bir ifadeye ses birimlerinin sıralamasını herbir sinyalle olan uyumluluğunu sağlamak için bakar. Bu konuşma sinyallerine ek olarak, veritabanı (tek bir dosya) ve iki sözlük için çeviri betiklerinin ayrı bir seti size verilecek. Bu iki sözlükten biri ses birimleri sırasıyla dizilmiş olan mantıklı (uygun) kelimeler, diğeri ise konuşulmayan kelime veya konuşulmuş gibi görülen kelimelerdir. Ben ilkine dil ifadesi ve sonrakini doldurma ifade deyeceğim.

Özetle, öğretim için verilen bileşenler:

1. Öğretici kaynak kodu 2. Akustik sinyaller 3. İlişkilendirilen çeviri betik dosyası 4. Bir dil ifadesi 5. Doldurma ifade

Kayıt için verilecek bileşenler

Kaydedici, verilen doğru girişleri ve kayıt görevlerini yürütecek, derlenmiş bir program ayarı içerir. Verilmesi gereken değerler şunlardır: öğretilmiş akustik modeller, bir model içerik dosyası, dil modeli, dil ifadesi, doldurma ifade ve tanımlanması gereken akustik sinyal ayarı. Tanımlanan veri genelde test verisini ifade eder.

Özetle, kayıt için verilen bileşenler:

1. Kaydedici kaynak kodu 2. Dil ifadesi 3. Doldurma ifadesi 4. Dil modeli 5. Test verisi

Bu bileşenlere ek olarak, teşhis için öğretilen akustik modeller gerekir. Bunları kaydediciye bildirmelisin. Akustik model öğretirken, öğretici rastgele adlandırılan model içerik dosyası oluşturacak. Model içerik dosyası, öğretici tarafından kullanılan, her HMM'nin herbir durumu için sayısal kimlikler içeren basit bir dosyadır. Kaydedici bu HMM durumları için doğru parametre ayarlarına burdan erişir. Herhangi bir akustik model ayarı ile verilen ilgili model içerik dosyası kayıt için kullanılmalıdır. Model içerik dosyasının yapısı hakkında daha fazla bilgi öğrenmek istiyorsan CI model açıklama dosyası oluşturma bağlantısına bakabilirsin.

Sistemi ayarlama

Tüm sistemini kurmak için birkaç bileşen indirip, kurman gerekir. İndireceğin tüm gerekli yazılımlar; veri paketi, öğretici ve bir SPHINX kaydedicisidir.

Başlamadan önce gerekli olan yazılım

Betikleri çalıştırmak için Perl ve kaynak kodu tanımlamak için bir C derleyici gerekir.

Perl

Betik tanımlamak için Perl gereklidir. Linux genellikle bazı Perl sürümleri ile gelir. Perl'in yüklü olup olmadığını yüklü ise hangi sürümünün yüklü olduğunu öğrenmek için şu komutu uçbirime yaz:


perl -v 


Eğer yüklü Perl yoksa perl.org'bedava indirebilirsin.

Windows için en bilinen sürüm ActivePerl'de bulunur. Eğer Windows kullanıyor ve cygwin yüklü olsa bile ActivePerl, satır karakterlerinin son düzenlemesinde daha iyi ve cygwin'den daha hızlıdır. Ek olarak, dağıtımlarda olmayan bir paketi ppm komutu kullanarak indirebilirsin. Örneğin, File::Copy modülü indirmek için tüm yapman gereken:


perl ppm install File::Copy


C Derleyici

SphinxTrain ve TRAINX-3, sistemin hakkında temel bilgi bulmak için GNU autoconf'u kullanır. Bunlar çoğu Unix ve Unix benzeri sistemlerde derlenebilir. Linux'de ise tamamen derlenir. Kod, GNU'nun C derleyicisi (gcc) kullanarak derlenir. Bunların hepsi Linux dağıtımlarında ve çoğu platformlar için özgürce kullanılabilir.

Ayrıca Microsoft Visual C++ kullanılarak derlenen dosyaların da tekrar derlenmesine imkan veriyoruz. Örn; Doğal Windows formatları olan solution (.sln) ve project (.vcproj) dosyalarını derlemek için doğal Windows biçimi gereklidir.

Kelime Doğrultma

Kaydedicinin doğruluğunu ölçmek istiyorsan bir doğrultucu programa ihtiyacın olacak. Yaygın olarak kullanılan biri Ulusal Standart ve Teknoloji Enstitüsü (NIST)ndeki sclite'dir. Bu, onların kayıt paketlerin bir bölümünü içerir. Kayıt paketlerini NIST araçları sayfasında bulabilirsin. Yazılım buralardaki konuşma grubunda bulunabilir: ~robust/archive/third_party_packages/NIST_scoring_tools/sctk/linux/bin/sclite.

Bize gelince, CMU'da, NIST program ile aynı işi gören align program kullanmak isteyebilirsin. Fakat özelliklerden bazıları kısıtlıdır. Robust ev dizininde onu bulabilirsin: ~robust/archive/third_party_packages/align/linux/align.

Veriyi Ayarlama

Sphinx Grup, bu uygulama ile kullanılabilecek iki ses veritabanının kullanımını sağlar. Her biri kendi özelliklerine sahiptir ve sadece uygun olarak sağlanır. Sağlanan veri yüksek performanslı kayıt verisi oluşturma için yeterli değildir. Onlar sadece sistemi nasıl kullanacağına dair ön bilgi verir.

Veritabanları, veritabanları sayfasında sağlanır. Ya AN4 ya da RM1'i seç. AN4 sesi içerir, fakat çok küçük veritabanıdır. Onu, eğer deneylerinde örnek dosyalar oluşturma istiyorsan seçebilirsin. RM1, biraz daha büyüktür ve bir sistemde biraz daha performan sağlar. Eğer ses lisanslı ise sağlanmaz. Benim kullandığım örnek dosyalar doğrudan öğretici ve kaydediciler tarafından sağlanır. RM1 hakkında daha fazla bilgi için LDC'ye bakınız.

Gerekli adımlar:

  • 1. Bir dizin oluştur ve bu dizini oraya taşı:

mkdir deneme<br>
cd deneme 


  • 2. Ya AN4 ya da RM1'e tıklayarak ses tarballarını indir. İletişim kutusu açıldığında "Kaydet"i seç. Bunu az önce oluşturduğun deneme dizinine kaydet. Bunlar tarball terimi ile tanıdık değildir. Bu, bizim içerik dosyamız olan .tar.gz'dir. İçeriklerin açılması söyle yapılır.

Not: Tarball terimi sıkıştırılmış klasör anlamına gelir ve Linux tarafından kullanılır.

    • Windows'da Windows Explorer kullanarak deneme dizinine git, ses tarbalına sağ tıkla ve WinZip menüsünde "Buraya aç"ı seç.
    • Linux/Unix'de:
      • Eğer AN4 kullanıyorsan

gunzip -c an4_sphere.tar.gz | tar xf - 


      • Eğer RM1 kullanıyorsan

gunzip -c rm1_cepstra.tar.gz 


Bunu bitirdiğinde, aşağıdaki içeriklere sahip bir deneme dizini oluşacak.

Dosya İçeriği
Dosya yolu:deneme
   * an4
   * an4_sphere.tar.gz


veya


Dosya İçeriği
Dosya yolu:deneme
   * rm1
   * rm1_cepstra.tar.gz


Öğreticiyi ayarlama

Kod çağırma

SphinxTrain, subversion (svn) kullanarak veya bir tarball indirerek çağrabilir. svn depoya eklenen yeni değişimler gibi kodu güncellemek için onu kolayca yapar. Fakat svn'yi yüklemen gerekir. Tarballın kullanımı daha kolay olduğu için bunu tavsiye ederim.

1.) Yine de svn'yi yüklemek istiyorsan uçbirime şu komutu girin:


sudo apt-get install subversion 


svn hakkında daha fazla bilgi SVN Home'da bulunabilir.

svn'yi kullanma için şunu girip bir müddet bekleyin:


svn co https://cmusphinx.svn.sourceforge.net:/svnroot/cmusphinx/trunk/SphinxTrain 


2.) Tarball'ı kullanma, SphinxTrain tarball'a tıklayarak indir ve iletişim kutusu açıldığında "Kaydet"i seç. Onu aynı deneme dizinine kaydet. İçeriği aşağıdaki gibi aç.

  • A.) Windows'da, Windows Explorer kullanarak deneme klasörüne git, SphinxTrain tarball'a sağ tıkla ve WinZip menüsünde "Buraya aç"ı seç.
  • B.) Linux/Unix'de:

gunzip -c SphinxTrain.nightly.tar.gz | tar xf - 


İndirme seçeneği hakkında daha fazla bilgi cmusphinx.org sayfasının altındaki Download instructions başlığında bulunur.

Bunu bitirdiğinde, aşağıdaki içeriğe sahip bir deneme dizinin olacak


Dosya İçeriği
Dosya yolu:deneme
   * an4
   * an4_sphere.tar.gz
   * SphinxTrain
   * SphinxTrain.nightly.tar.gz


veya


Dosya İçeriği
Dosya yolu:deneme
  * rm1
   * rm1_cepstra.tar.gz
   * SphinxTrain
   * SphinxTrain.nightly.tar.gz


Derleme

Linux/Unix'de:


cd SphinxTrain
configure
make 


Uçbirimde bu işlemlerin yapılması biraz zaman alacaktır. Bu işlem sonunda uçbirimde şu gözükecektir:


kullanıcıadı@kullanıcıadı:~/deneme/SphinxTrain$ 


Windows'da:

1. deneme/SphinxTrain/SphinxTrain.sln dosyasına çift tıkla. Bu, eğer yüklüyse MS Visual C++'ı açacak. Eğer değilse Microsoft'a sor. 2. "Build" menüsünde "Batch Build"i seç ve bütün nesneleri işaretle. "Rebuild All"a tıkla. Bu gerekli bütün çalıştırılabilirleri öğretici tarafından kuracak.

Denemeyi Kurma

Kodu derledikten sonra, bütün ilgili çalıştırılabilirleri ve betikleri bir veri gibi aynı alana kopyalayarak kurmalısın. Mevcut çalışan dizini deneme olarak varsayalım. Şunu yapman gerekir.


cd SphinxTrain 


  • Eğer AN4 yüklediysen

perl scripts_pl/setup_tutorial.pl an4 


  • Eğer RM1 yüklediysen

perl scripts_pl/setup_tutorial.pl rm1 


Kaydediciyi ayarlama

Sphinx Grup uygulaman için en iyisini seçmene yardım edecek özellikleri olan birkaç farklı kaydediciye sahiptir.

  • PocketSphinx: Bu, Sphinx-2'nin modernleştirilmiş sürümüdür. Özellikle gömülü ve taşınabilir sistemler için yapılandırılmıştır. SPHINX-2'den ortalama %20 daha az Hafıza ve %5-20 daha az İşlemci harcar. Bunula birlikte aktif gelişimin altındadır. Böylece arayüz ve özellik ayarı kararsızdır.
  • SPHINX-3: Devamlı HMM'ler kullanır. Hem canlı hem de yığın kayıt yapabilir. Varsayılan olarak geliştirilmiş en etkin kaydedicidir.
  • SPHINX-4: Devamlı HMM'ler kullanır. Java programlama dili ile yazılmıştır. Yüksek esneklik ve üstün doğruluk ve küçük görevlerde yüksek hıza sahiptir.

Uygulaman için uygun olan kaydediciyi seçebilirsin. Ben bu kılavuzda temel kaydedici olarak SPHINX-3'ü kullanacağım. İlk önce hatalardan korumak için modelini SPHINX-3 ile test etmen iyi bir düşüncedir.

SPHINX-3 Yükleme

Kod çağırma

SPHINX-3, subversion (svn) kullanarak veya bir tarball indirerek düzeltebilir. svn depoya eklenen yeni değişimler gibi kodu güncellemek için onu kolayca yapar. Fakat svn'yi yüklemen gerekir. Tarballın kullanımı daha kolaydır.

Yine de svn'yi kullanmak istiyorsan uçbirime şunları yaz ve biraz bekle:


svn co https://cmusphinx.svn.sourceforge.net:/svnroot/cmusphinx/trunk/sphinxbase 
svn co https://cmusphinx.svn.sourceforge.net:/svnroot/cmusphinx/trunk/sphinx3 


Eğer Tarball'ı kullanmak istiyorsan, sphinx3 tarball ve sphinxbase'ye tıklayarak indir ve iletişim kutusu açıldığında "Kaydet"i seç. Onları aynı deneme dizinine kopyala. İçerikleri şöyle aç.

  • A.) Windows'da, Windows Explorer kullanarak, deneme klasörüne git sphinxbase ve sphinx3 tarballs'lara sağ tıkla WinZip menüsünde "Buraya aç"ı seç.
  • B.) Linux/Unix'de:

gunzip -c sphinxbase.nightly.tar.gz | tar xf -<br>
gunzip -c sphinx3.nightly.tar.gz | tar xf -
 


Bunu bitirdiğinde, deneme dizinini içeriği şöyle olacaktır:


Dosya İçeriği
Dosya yolu:deneme
  * an4
   * an4_sphere.tar.gz
   * SphinxTrain
   * SphinxTrain.nightly.tar.gz
   * sphinx3
   * sphinx3.nightly.tar.gz
   * sphinxbase
   * sphinxbase.nightly.tar.gz


veya


Dosya İçeriği
Dosya yolu:deneme
   * rm1
   * rm1_cepstra.tar.gz
   * SphinxTrain
   * SphinxTrain.nightly.tar.gz
   * sphinx3
   * sphinx3.nightly.tar.gz
   * sphinxbase
   * sphinxbase.nightly.tar.gz


Derleme

  • A.) Linux/Unix'de:
  #sphinxbase'i derleme
  cd sphinxbase
 # Eğer svn kullandıysan, autogen.sh çalıştırman gerekir, Burada
 # açıklandığı gibi. Eğer tarball yüklediysen, onu çalıştırman gerekmez.
 #
 # ./autogen.sh
 ./configure
 make

 #SPHINX-3 derleme
 cd sphinx3 
 # Eğer svn kullandıysan, autogen.sh çalıştırman gerekir. Burada 
 # açıklandığı gibi. Eğer tarball yüklediysen, onu çalıştırman gerekmez. 
 # 
 # ./autogen.sh
 configure --prefix=`pwd`/build --with-sphinxbase=`pwd`/..  /sphinxbase 
 make 
 make install
  • B.) Windows'da, eğer SphinxBase'yi yayımlama sisteminden indirdiysen, onu 'sphinxbase-0.1' olarak yeniden adlandır ve sonra:

1. deneme/sphinxbase/sphinxbase.sln dosyasına çift tıkla. Bu, eğer yüklüyse MS Visual C++'ı açacak. Eğer değilse Microsoft'a sor. 2. "Build" menüsünde Batch Build'i ardından tüm nesneleri seç. Rebuild All'a tıkla. Bu SphinxBase paketindeki bütün kitaplıkları kuracak. 3. tutorial/sphinx3/programs.sln dosyasına çift tıkla. Bu eğer yüklüyse MS Visual C++'yi açacak. Eğer değilse [url=http://www.microsoft.com/] Microsoft[/url]'a sor. 4. Build menüsünde Batch Build'i seç. Rebuild All'a tıkla. Bu, SPHINX-3 paketindeki bütün çalıştırılabilir olanları kuracak.

Denemeyi Kurma

Kodu derledikten sonra, bütün ilgili çalıştırılabilirleri ve betikleri bir veri gibi aynı alana kopyalayarak kurmalısın. Mevcut çalışan dizini deneme olarak varsayalım. Şunu yapman gerekir.


cd sphinx3 


  • Eğer AN4 yüklediysen

perl scripts/setup_tutorial.pl an4 


  • Eğer RM1 yüklediysen

perl scripts/setup_tutorial.pl rm1 


Başlangıç öğretim çalıştırma nasıl kurulur

Veriyi yüklediğin dizine git. Eğer Linux'de yukardaki yönergeleri takip ettiysen bunu yapmak şu kadar kolaydır:

  • Eğer AN4 kullanıyorsan

cd ../an4 


  • Eğer RM1 kullanıyorsan

cd ../rm1 


ve Windows'da:

  • Eğer AN4 kullanıyorsan

cd ..\an4 


  • Eğer RM1 kullanıyorsan

cd ..\rm1[/code] 


PocketSphinx için modelleri öğretinceye kadar betikler "kutunun haricinde" çalışır. Bu sebeple, etc/sphinx_train.cfg dosyasını düzenlemen gerekir. Satır tanımlama değişkeni $CFG_HMM_TYPE değiştirmeksizin. Böylece kutu aşağıdaki gibi olacak.

Dosya İçeriği
Dosya yolu:etc/sphinx_train.cfg

#$CFG_HMM_TYPE = '.cont.'; # Sphinx III <br> $CFG_HMM_TYPE = '.semi.'; # Sphinx II


Not: Eğer uçbirimden dosyayı açamadıysan dosyaya elle ulaşmak için; /Ev/kullanıcı_adın/deneme/rm1 (veya an4)/etc/sphinx_train.cfg yolunu kullan ve dosyayı aç. Ardından yukardaki satırları arattır.

Linux makinelerde, çoklu işlemcinin avantajlarından faydalanmak için betikleri kurabilirsin. Bunu yapmak için, /etc/sphinx_train.cfg'yi düzenle. $CFG_NPART değişkeninin olduğu satırı sistemdeki işlemcinin sayısıyla eşleştir ve $CFG_QUEUE_TYPE ile tanımlanan satırı aşağıdaki gibi düzenle:

Dosya İçeriği
Dosya yolu:/etc/sphinx_train.cfg

# Queue::POSIX yerel bir makinedeki çoklu İşlemciler için # Queue::PBS bir PBS/TORQUE dizisi kullanma için $CFG_QUEUE_TYPE = "Queue::POSIX";


Eğer TORQUE veya PBS toplu sistemleri çalıştıran bilgisayar ağına sahipsen, ağdaki çalışan öğretim işlerini yukarıda $CFG_NPART ile açıklandığı şekilde programlayabilir ve aşağıdaki gibi $CFG_QUEUE_TYPE'yi düzenleyebilirsin:

Dosya İçeriği
Dosya yolu:/etc/sphinx_train.cfg

# Queue::POSIX yerel bir makinedeki çoklu İşlemciler için <br> # Queue::PBS bir PBS/TORQUE dizisi kullanma için <br> $CFG_QUEUE_TYPE = "Queue::PBS";


Sistem doğrudan akustik sinyallerle çalışmaz. Sinyaller ilk önce mevcut akustik sinyallerin yerinde kullanılan örnek vektör sırasına dönüştürülür. Bu dönüşümü veya parametreleştirmeyi an4 dizininden yapmak için uçbirime şunları yaz. Eğer Linux yerine windows kullanıyorsan / karakterini \ ile değiştir. Eğer zaten cepstra biçimli dosyalar yerine rm1 indirdiysen, bunu yapman gerekmez. Bu adımı da yapma:


perl scripts_pl/make_feats.pl  -ctl etc/an4_train.fileids 


Bu betik, her öğretim telaffuzunu 13 boyutlu vektör sıralama olarak hesaplar. Dalga dosyalarının listesi ses dosyalarının tam yolunu içerdiğine dikkat et. Veriler çalıştığın dizinle aynı yere yerleştirildi. Yollar gerçektir, göreceli değildir. Bunu, eğer veri dosyasının yeri farklıysa an4_test.fileids dosyası gibi değiştirmelisin. Bu işlem hızlı bir makinede yaklaşık olarak 10 dakika sürer. Fakat zaman değişkendir. Bir yandan çalışırken bir taraftan da okumaya devam edebilirsin. MFCC'ler ./feat dizinine otomatik olarak yerleşecektir. Öğrenim ve tanılama için konuşma sinyalinde hesaplanan örnek vektörlerin türüne dikkat et. Bu kılavuzun haricinde MFCC'lere sınırlanmamıştır. MFCC haricindeki örnekleri de hesaplayabilirsin. SPHINX-3 ve SPHINX-4 herhangi tür boyutlu örnekleri kullanabilir. Bunula beraber bu programda iki sebepten dolayı MFCC'yi kullanacaksın: a) Bunlar HMM tabanlı sistemler altında en akustik şartları sağlayan, en iyi tanılama performansı verir. b) Bu uygulama konuşma parametresinin sinyal işlemeyi kaplamaya yönelik değildir ve sadece standart kullanım platformu için yardım sunar. Şimdi sistemi öğrenmeye başlayabilirsin.

Betik dizininde, (./scripts_pl 00*'dan 99*'a kadar sıralanmış birkaç dizin vardır. Her dizin ya slave*.pl adında ya da .pl içeren basit bir dosyaya sahiptir. Sıralama dizinlere doğru devam eder ve aşağıdaki gibi ya slave*.pl'ya da sadece .pl dosyasını çalıştır. Her zaman dediğimiz gibi eğer Linux yerine Windows kullanıyorsan /
karakterini \ ile değiştirmelisin.


perl scripts_pl/00.verify/verify_all.pl <br>
perl scripts_pl/10.vector_quantize/slave.VQ.pl <br>
perl scripts_pl/20.ci_hmm/slave_convg.pl <br>
perl scripts_pl/30.cd_hmm_untied/slave_convg.pl <br>
perl scripts_pl/40.buildtrees/slave.treebuilder.pl <br>
perl scripts_pl/45.prunetree/slave-state-tying.pl <br>
perl scripts_pl/50.cd_hmm_tied/slave_convg.pl <br>
perl scripts_pl/90.deleted_interpolation/deleted_interpolation.pl <br>
perl scripts_pl/99.make_s2_models/make_s2_models.pl 


Bütün bunları çalıştırmak zor gelirse, basitçe RunAll.pl betiğini şu şekilde çalıştırabilirsin:


perl scripts_pl/RunAll.pl 


Buradan, basitçe her dizindeki slave*.pl'yi çalıştırmalısın. Dosya bulunmayan dizinlerde, sadece .pl dosyası olduğuna bil.

Betikler makinedeki işleri başlatacak ve herbir iş çalışması için birkaç dakika sürecek. Herhangi bir betik çalıştırmadan önce, dizinin, senin mevcut dizin (bizdeki deneme) olduğunu kontrol et. Her bir slave*.pl'yi çalıştırdıktan sonra içerikleri tekrar kontrol et. Birkaç yeni dizin oluşturuldu. Bu dizinler öğrenim veya deneme aşamasında oluşturulan dosyaları barındırır. Bu noktada bu dizinlerin içeriklerine hakim olmalısın. Çünkü bazı dizin adları kendilerini açıklayabilir ve eğer merak edersen onları keşfedebilirsin.

Mevcut dizininde (deneme) oluşan dosyalardan biri .html dosyasıdır. Bu, kullandığın veritabanına bağlı olarak an4.html veya rml.html şeklinde adlandırılır. Bu dosya yapılan işlerin bir durum raporunu içerir. Başlattığın işin başarıyla tamamlandığını doğrular. Daha sonra sadece sonraki slave*.pl'yi sırayla başlat. Bu işlemi bütün dizinlerde slave*.pl çalışıncaya kadar takrarla.

00*'dan 99*'a kadar devam eden betik işlemlerinde, herbiri tanılama için kullanılmış birkaç akustik model ayarı oluşturduğuna dikkat et. Bu adımlardan bazılarının sadece yarı devam model oluşturma için gerektiğine de dikkat et. Dizinindeki 20.ci_hmm'de tamamlamak için çalıştırılan ilk iş, İçerik Bağımsızlığı (CI) modellerini dilindeki ön kelime birimleri için öğrenmen içindir. 30.cd_hmm_untied dizinindeki işler tamamlamak için çalışdığında İçerik Bağımlılık modellerini öğreneceksin. Bunlar CD-çözüm modelleri olarak adlandırılır. Bunlar durumları sırayla birbirine bağlayan hücreler oluşturmak içindir. 40.buildtrees'deki işler her alt kelime biriminin durum ağacını kurar. 45.prunetree, ağaçları kırpar ve durumları bağlar. Takibindeki 50.cd-hmm_tied'de, öğrenim kitağlığındaki çoklu telefonlar için son modelleri eğitir. Bunlara CD-eğitimli modeller diyoruz. Herhangi durum sonunda modelleri teşhis etmek için kullanabilirsin...

Şimdi öğrenimini tamamladın. Son model ve konumu, veritabanına ve kullandığın model türüne bağlı olacak. Eğer model öğrenmeye devam etmek için RM1 kullanıyorsan son 8 Gauss/durum, 3 durum, bağlı CD akustik modeller (HMM'ler) ile 1000 bağlı durum ./model_parameters/rm1.cd_cont_1000_8/ dizininde bulacaksın. Ve ayrıca ./model_architecture/ içinde rm1.1000.mdef dosyasında bir model içeriği bulacaksın. Bu dosya önceki sistem tarafından kullanılan ses modelleriyle alakalıdır. Öğrenim işlemi bu belgede genişçe açıklandı. Bununla beraber eğer AN4 ile yarı devamlı modeller öğrendiysen, son model ./model_parameters'da /an4.1000.s2models'de bulunacaktır. Bütün dosyaları bulmak için pecketsphinx ile kod çözmelisin.

Öğrenim esnasında birkaç kritik olmayan hata şunun gibi oluşabilir:

 This step had 6 ERROR messages and 2 WARNING messages. Please check the log file for details.

Onlara aldırma, Bu, veritabanında birkaç hata olması bile iyi bir sonuçtur. Hataların ana kaynağı an4'deki gibi verinin küçük miktarıdır ve kayıtların kötü kalitesidir. Bunun sebebi, kayıttaki "final state not reached" (Son duruma ulaşılamadı) veya "mgau less then zero" hatalarıdır. Eğer çok fazla hata oluşursa, bu demektir ki öğrenim kurulum aşamasını gözden geçirmek gerekir.

Başlangıç kod çözücü nasıl çalıştırılır

Kod çözmeyi çalıştırmak nispeten basittir. İlk önce, test setindeki bütün örnekleri MFCC hesaplar. Eğer indirdiysen, dosyalar zaten cepstra biçimindedir. Bu yüzden bu adımı uygulaman gerekmez. Eğer indirmediysen dalga dosyasından MFCC'leri hesaplamak için, en üstte an4 adındaki dizine, uçbirime şunları yazarak eriş:


perl scripts_pl/make_feats.pl  -ctl etc/an4_test.fileids 


Bunun çalışması için yaklaşık olarak 10 dakika gerekecek.

Şimdi kod çözmeye hazırsın. Uçbirime aşağıdaki komutu yaz:


perl scripts_pl/decode/slave.pl 


Bu sağlanan bütün bileşenleri akustik modeller ve başlangıç öğreniminde çalıştırarak oluşturduğun model içerik dosyaları da dahil olmak üzere kod çözme için kullanır. Tanımlama işi tamamlandığında, betik, Kelime Hata Oranı (WER) veya Cümle Hata Oranı (SER)i tanımlar. SER'i hesaplayan fonksiyonun çok basit şekilde kurulduğuna dikkat et. * tabi ki CMU makine kullanmıyorsan. Eğer WER'İ hesaplamak istiyorsan, bunu yapmak için kod indirip tanımlamalısın. En bilinenlerden biri standart araştırma topluluğu, NIST'de bulunur.

Eğer program doğrulamıyorsa, etc/sphinx_decode.cfg dosyasındaki şu satırı şöyle değiştirebilirsin:

Dosya İçeriği
Dosya yolu:etc/sphinx_decode.cfg
$DEC_CFG_ALIGN = "builtin";


Eğer betikleri CMU'da çalıştırıyorsan yukardaki satır normalde şöyle olacaktır:

Dosya İçeriği
Dosya yolu:etc/sphinx_decode.cfg

DEC_CFG_ALIGN = \\ <br> "/afs/cs.cmu.edu/user/robust/archive/third_party_packages/NIST_scoring_tools/sctk/linux/bin/sclite";


Kod çözücü betiği çalıştırdığında, üst dizindeki .html dosyasında deneyimin için doğruluk hakkında bilgi gösterecektir. Bu, ayrıca dosyaların iki ayarını oluşturacak. Bu ayarlardan biri, .align genişlemesi ile doğrultma programı tarafından oluşturulmuş doğrultmaları içerir. Eğer NIST aracını an4 ile kullandıysan .html dosyası aşağıdaki satıra benzer sonuç verecektir:

 SENTENCE ERROR: 56.154% (73/130)   WORD ERROR RATE: 16.429% (127/773)

veya eğer rm1 kullandıysan

 SENTENCE ERROR: 38.833% (233/600)   WORD ERROR RATE: 7.640% (434/5681)

İkinci yüzdelik sayısı, (7.640%) WER'dir ve HMMler de durum başına 8 Gauss kullanarak elde edilir. WER, hangi kod çözücüyü kullandığına bağlı olarak değişebilir.

Eğer gömülü betik kullandıysan, satır şuna benzeyecektir:

 SENTENCE ERROR: 56.154% (73/130)

İlk kısımdaki hatalar kelime hata oranını (WER), ikincisindekiler ise cümle hata oranını (SER) belirtir. Bu yüzden farklılıkları anlaşılabilir.

Kaynakça

Ubuntu-tr forum'daki SPHINX Otomatik Konuşma Kayıt Sistemi konusu