SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
やるおが
               Triphone HMMを
                作るようです

                     June 7, 2011, Shinya Shimizu
                            (@kakenman)
2011年6月7日火曜日
       ____
        /͡  ͡\
      /( ●)  (●)\
     /::::::͡(__人__)͡::::: \    今日はなんとなくtriphone音響モデルを作りたい気分だお!
     |     |r┬-|     |    
     \      `ー'´     /




        /      \
      /  _ノ  ヽ、_  \
     / o゚((●)) ((●))゚o \  でもぶっちゃけmonophone音響モデルもよく分かってないお
     |     (__人__)    |   HTKに詳しいやらない夫に聞いてみるお!
     \     ` ͡´     /




2011年6月7日火曜日
    |┃三 ガラッ
                   |┃  ____
                   |┃/͡  ͡\
                   |┃(●)  (●) \
               ̶̶‐.|┃:͡(__人__)͡:::::\   えへへっ
                   |┃  |r┬-|     |͡) HTKの使い方教えてくれだお!
                   |┃   `ー'ォ     //
                   (͡ヽ・    ・ ̄ /
                   |┃ノ       /
                   |┃   つ   <
                   |┃  (::)(::)   ヽ
                   |┃/    >  )
                   |┃     (__)


                   |┃
                   |┃  ____
                   |┃/͡  ͡\
                   |┃ (̶)  (̶)\
               ̶̶‐.|┃:͡(__人__)͡:::::\
                   |┃           |
                   |┃          /
                   |┃ヽ・    ・ ̄ /
                   |┃ \    ,.:∴~・:,゜・~・:,゜・ ,
                   |┃ヽ_)つ ∴・゜゜・・∴~・:,゜・・∴
                   |┃  (::)(::)  ヽ    ・゜゜・∴~゜
                   |┃/    >  )    ゜゜・∴:,゜・~
                   |┃     (__)    :,゜・~:,゜・゜゜・~


2011年6月7日火曜日
      / ̄ ̄\
            /ノ( _ノ  \
            | ͡(( ●)(●) < HTKBook読んで勝手にやってろ!
            .|     (__人__) /͡l
             |     ` ͡´ノ |`'''| 
            / ͡ヽ     }  |  |            ____    ぐぇあ
           /  へ  \   }__/ /           /─  ̶\   
         / / |      ノ   ノ           /●))  ((●\ . , ・
        ( _ ノ    |      \´       _   /    (__人__) ,∴\ ,   
               |       \_,, -‐ ''"   ̄ ゙̄''̶---└'´ ̄`ヽ/  > て 
               .|                        __ ノ /  (
               ヽ           _,, -‐ ''" ̄ヽ、 ̄ `ー'´  /  r'" ̄
                 \       , '´          /       .| 
                  \     (           /       |
                    \    \        /         |




2011年6月7日火曜日
      ____
         /      \
       /  _ノ  ヽ、_  \
      / o゚((●)) ((●))゚o \  でもHTKBookは英語だお・・・
      |     (__人__)    |  そもそもBaum-WelchどころかHMMもよくわかってないお   
      \     ` ͡´     /  でもHTKが使えるようにしてくれだお



      / ̄ ̄\
     /   _ノ  \    HMMわかってなくてHTKが理解できるわけないだろ・・・
     |    ( ●)(●)   
    . |     (__人__)   まぁ,だが一応だいたいの説明をしながら演習をすることはできる
      |     ` ͡´ノ   就職も決まったし教えてやるよ・・・
    .  |         }
    .  ヽ        }
       ヽ     ノ        \
       /    く  \        \    
       |     \   \         \
        |    |ヽ、二͡)、          \




2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    まず,HMMだが,HMMについてちゃんと説明し出すと結構な手間だ.
  |    ( ●)(●)   全く分かってないんなら,「(時間的に)変化する特徴量の系列を記述したもの」
 . |     (__人__)   と思っておけばいい.音素の数だけHMMを作って,入力音声に対して,
   |     ` ͡´ノ   /a/のHMMはどうか?/i/のHMMはどうか・・・と順番にあてはめていって,
 .  |         }    一番それっぽいものを認識結果とするわけだな.
 .  ヽ        }    
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \


      ※ HMMは「(時間的に)変化する特徴量のモデル化」というのがポイント。時間的に定常なもの、例えば画像がリン
      ゴかナシかの分類をしたいのであれば、単に画素について、「りんごの画素の分布」と「ナシの画素の分布」を学
      習すればよい。ところが、音声の場合は時間的に変化するので、時間的に分布が変化していくようなモデルを用い
      る必要がある。




2011年6月7日火曜日
  / ̄ ̄\
   /   _ノ  \    で,/a/のHMM,/i/のHMM...を作成してやる必要がある.
   |    ( ●)(●)   そこで用いられるHMMの学習アルゴリズムがBaum-Welchアルゴリズムだ.
  . |     (__人__)   これも詳細は説明しないが,このアルゴリズムはHMMを0から作ることは
    |     ` ͡´ノ   できない.既にあるHMMのパラメータをアップデートし改良することだけだ.
  .  |         }    
  .  ヽ        }    
     ヽ     ノ        \
     /    く  \        \    
     |     \   \         \
      |    |ヽ、二͡)、          \

            ____
         / ノ  \\
        / (●)  (●)\     HMMの作成にHMMが必要とか,意味不明だお・・・
      / ∪  (__人__)  \    頭がおかしくなったのかお・・・
      |      ` ͡´    |
       \ /͡)͡)͡)   //͡)͡)͡)
      ノ  | / / /   (͡) / / / /
    /´    | :::::::::::(͡)  ゝ  :::::::::::/
   |    l  |     ノ  /  )  /
   ヽ    ヽ_ヽ    /'   /    /
    ヽ __     /   /   /

2011年6月7日火曜日
        / ̄ ̄\ 
            /       \       
            |::::::        |      まだ説明は途中だろ,常識的に考えて・・・
           . |:::::::::::     |     
             |::::::::::::::    |          ....,:::´, .  
           .  |::::::::::::::    }          ....:::,,  ..
           .  ヽ::::::::::::::    }         ,):::::::ノ .
              ヽ::::::::::  ノ        (:::::ソ: .
              /:::::::::::: く         ,ふ´..
      -̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶  
               |:::::::::::::::|ヽ、二͡)━~~'´




2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    Baum-Welchは0からHMMを作ることはできないから,初期HMMがいる.
  |    ( ●)(●)   そして初期HMMの作り方には二種類ある.
 . |     (__人__)   ひとつは,自分で必死で音声を切り出して,ここからここまでが/a/ですよ,
   |     ` ͡´ノ   と教えてやって初期モデルを作る方法だ.HInitコマンドを使ってやる.
 .  |         }    だが,音声を切り出すのが面倒だし,今回はやらん.
 .  ヽ        }    
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \



      ※ Baum-WelchとEM: 一般的に,隠れ変数を持つモデルのパラメータ推定を,隠れ変数の期待値(Expectation)を求める
      のと,パラメータの最尤推定解を求める(Maximization)のを繰り返すアルゴリズムをEMアルゴリズム(Expectation
      Maximization algorithm)と呼ぶ.HMMに対しEMの考え方を用いてパラメータ推定を行うアルゴリズムをBaum-Welch
      アルゴリズムという.つまり,EMは一般名,Baum-WelchはHMMに固有な名前と考えればよい.
       ちなみに,Baum-Welchの考え方は,(E)「どこがどの音素っぽいか求める」(M)「じゃあ音素の特徴がわかる」(E)
      「それを用いてどこがどの音素っぽいか再推定する」(M)「音素の特徴を再推定する」(E)「どこがどの音素っぽい
      か(ry となる.

2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    もう一つの方法は,「どこからどこまでが/a/とかわかんないから,全部同じ
  |    ( ●)(●)   初期値でいいや」という方法だ.flat startと呼ばれる.今回はこれを使う.
 . |     (__人__)  
   |     ` ͡´ノ   コマンドとしては,HCompVを使う.これを使って,全部ひっくるめた平均の
 .  |         }    初期モデルを作成しているのがtutorialの2だ.
 .  ヽ        }    3では,それを全音素にコピーして初期値としている.
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \




     ※ 前ページのEMでも触れたが,「音素の特徴を推定するには,どこがどの音素か見極める必要がある.」「どこが
     どの音素か見極めるには,音素の特徴が分かっていなければならない」という「服を買いに行く服がない」問題を
     どう解くかがポイントになる。



2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    
  |    ( ●)(●)   
 . |     (__人__)  
   |     ` ͡´ノ  これで初期HMMができた.あとはラベル(どの音声ファイルがどの音素列で
 .  |         }   構成されているか)と音声ファイルを使ってHMMをアップデートしていくだろ,
 .  ヽ        }   常識的に考えて.
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \




2011年6月7日火曜日
      / ̄ ̄ ̄\
      / ─    ─ \
     /  (●)  (●)  \.   ラベルはあるけど,spが書き起こされていないお
     |    (__人__)    |   このままだと,spは一回も登場していないから学習されないお
     \    ` ͡´    /  それでいいのかお
     /              \

   / ̄ ̄\
  /   _ノ  \    
  |    ( ●)(●)  そこに気付くとはなかなか鋭いな. 
 . |     (__人__)   spはどこで発声されるか分かりづらく,書き起こされていないことが多いんだ.
   |     ` ͡´ノ  普通,音声を聞いて書き起こすのではなく,セリフを予め用意して読んでもらう
 .  |         }   わけだしな.
 .  ヽ        }   
    ヽ     ノ    だがとりあえずあんまり気にしなくていい.無視して学習しろ.コマンドは
    /    く  \  HERest (Embedded Re-estimation) だ.tutorialの4がこれに当たるな.  
    |     \   \         \
     |    |ヽ、二͡)、          \



   ※ sp: short pause. 文の間ではなく,文中に任意に現れる休止区間.息継ぎとか.文の読み方によってどこで現れる
   かが異なるので,どこにあるか分からない.


2011年6月7日火曜日
       ____
       /      \
     /  _ノ  ヽ、_  \
    / o゚((●)) ((●))゚o \  ほんとはちゃんとしたラベルで学習したいんだお・・・
    |     (__人__)'    |
    \     `͡´     /

         ____
       /      \
     /  _ノ  ヽ、_  \
    /  o゚͡   ゚͡o  \  でもどこにspが入っているかまでラベルに書いていないお・・・
    |     (__人__)    |
    \     ` ͡´     /

         ____
       /͡  ͡\
     /( ●)  (●)\
    /::::::͡(__人__)͡::::: \   だからspはなかったことにして学習するお!
    |     |r┬-|     |
    \      `ー'´     /




2011年6月7日火曜日
     ____
     /      \ ( ;;;;(
    /  _ノ  ヽ__\) ;;;;)
  /    (─)  (─ /;;/
  |       (__人__) l;;,´ spを無視してとりあえずsp以外を学習したものの,
  /      ∩ ノ)━・'/ spの学習はどうするんだお・・・
  (   \ / _ノ´.|  |
  .\  "  /__|  |
    \ /___ /


     / ̄ ̄\
   /   _ノ  \
   |    ( ●)(●)
  . |     (__人__)   大丈夫だ.spは要はポーズだ.
    |     ` ͡´ノ   長さなど多少は違うものの,silE, silBとかなり似ているんだ.
  .  |         }    とりあえず,silEをコピーしてspにしておけばいいだろう.
  .  ヽ        }    これがtutorialの5だな。
     ヽ     ノ        \
     /    く  \        \
     |     \   \         \
      |    |ヽ、二͡)、          \



2011年6月7日火曜日
  |王|  ┴ ソ  十/  | |   | | _丿
 ニ|ニ|ニ  二 王  /レ、  レ |  | | \   
 ノ ヽ   口 我  Vン   ノ  ・・   )  いくらなんでもsilEをコピーしてspってのはひどいお
                      ヽ  それだったらそもそもspを作る必要がないお!
        /  \  丿\     `v'͡ヽ/͡ヽ/      ,. ‐- .. _
       /  ( ●)  (●)                  /  __  `` ー- 、
     /  ::::::͡(_人__)͡ヽ               , ィ/   ゝヽ ̄ヽ ー- '
     |       |r┬-|   |            _ / { {ヽ、_   ヽ' ノ_,.〉  
     \        `ー'´  /ァー- 、_ ... -‐ '    ヽヽ、 `>、..ノ=┘
       /j >-‐ ' ´/ /   /    /   _ノ      \ `ー '!
   , -‐ 7´/{͡|  / _/   j                  >‐'
  / / //| 〉‐f/ \'    !                ,  ' ´
 / ,' > .|/ レ   ゚ノ    |           ,.. -‐ '"
/  {  ヽ |  〉  /__  t     ,. -‐ ' ´
  |   ヽ| / /  '   `  ヽ、  /
  |   `!//           /



        / ̄ ̄\ 
      /       \       spを含めてそれらしい音響モデルができたんだ,
      |::::::        |      それを使ってspの場所をdetectして
     . |:::::::::::     |     ラベルを書き直して学習し直すだろ,常識的に考えて・・・
       |::::::::::::::    |          ....,:::´, .  
     .  |::::::::::::::    }          ....:::,,  ..
     .  ヽ::::::::::::::    }         ,):::::::ノ .
        ヽ::::::::::  ノ        (:::::ソ: .
        /:::::::::::: く         ,ふ´..
-̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶  
         |:::::::::::::::|ヽ、二͡)━~~'´
2011年6月7日火曜日
      / ̄ ̄ ̄\
      / ─    ─ \
     /  (●)  (●)  \.   よくわからないお.
     |    (__人__)    |   spを無視して学習するのは必要だったのかお?
     \    ` ͡´    /  
     /              \




     / ̄ ̄\
   /   _ノ  \    本当はsp入りのラベルが欲しいが,どこにspが入っているか分からない.
   |    ( ●)(●)  そこでどこにspが入っているか自動推定したいんだが,そのためには
  . |     (__人__)  どこがどの音っぽい,という情報,HMMが必要になる.
    |     ` ͡´ノ  HMMを作るのにHMMが必要になるわけだ.そこで,まずspを無視して
  .  |         }   粗いHMMを作成しておいて,それを使ってspの位置を推定して,改めて
  .  ヽ        }   学習し直すんだ.
     ヽ     ノ    spの位置を推定しているのがtutorialの6,それを用いて学習し直して
     /    く  \ いるのがtutorialの7だ.
     |     \   \         \
      |    |ヽ、二͡)、          \



2011年6月7日火曜日
     ____
           /      \ ( ;;;;(
          /  _ノ  ヽ__\) ;;;;)
        /    (─)  (─ /;;/
        |       (__人__) l;;,´  なんか面倒だお・・・
        /      ∩ ノ)━・'/  
        (   \ / _ノ´.|  |
        .\  "  /__|  |
          \ /___ /

     / ̄ ̄\
   /   _ノ  \   
   |    ( ●)(●)   面倒なようだが,これはBaum-Welchを使う上での宿命だな.
  . |     (__人__)   Baum-Welchは,HMMのパラメータを更新するんだが,更新前のパラメータ
    |     ` ͡´ノ  から近い局所最適解に近づくだけ,という特徴がある.
  .  |         }   つまり,初期値を適切に設定してやる必要があるわけだ.
  .  ヽ        }    そのため,初期値を更新してBaum-Welch・・・初期値を更新して
     ヽ     ノ    Baum-Welch・・・という手順を踏むことになる.
     /    く  \       
     |     \   \         \
      |    |ヽ、二͡)、          \


   ※実際にはBaum-Welchの問題というよりはもっと大きな「服を買いに行く服がない」問題


2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    
  |    ( ●)(●)   
 . |     (__人__)  
   |     ` ͡´ノ   これでようやく,monophone音響モデルの完成だ.
 .  |         }    
 .  ヽ        }    
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \




2011年6月7日火曜日
      / ̄ ̄ ̄\
                / ─    ─ \
               /  (●)  (●)  \.   
               |    (__人__)    |   monophone音響モデル?
               \    ` ͡´    /  
               /              \



            / ̄ ̄\
           /   _ノ  \    
           |    ( ●)(●)  
          . |     (__人__)  
            |     ` ͡´ノ  
          .  |         }   ああ,monophoneだ.
          .  ヽ        }   
             ヽ     ノ   
             /    く  \ 
             |     \   \         \
              |    |ヽ、二͡)、          \




2011年6月7日火曜日
                   γ ͡͡ヽ    やるおはtriphoneの作り方を聞いたんだお!!
     / ̄ ̄\           ( ( ヽ ) ノ   monophoneなんて要らないんだお!
   /_ノ     \     (͡) 三  ノ 从 ゝ
   ( ●)( ●)  ヽ   三/ | ニ  ____     (͡)   
  . | (__人__) u  }   |  |   /\   / ) し / |  ミ  
    | ` ͡´    ノ   !   、 /(○ )::(○ )͡\/ | ミ   
  .  |         }    \./:::::::(_人_)::::::::  i'   |
  .  ヽ        }      |     )ww)     |  |
     ヽ     ノ   ヘ   \    `ー"      ノ
     /    く 、_/っ/      \ .    .   \
     |     \--一''           \
      |    |ヽ、二͡)、          \

      まぁまて,落ち着け・・・




2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    さっきもいった通り,Baum-WelchによるHMMの更新には初期値が重要になる
  |    ( ●)(●)   突然triphoneを作ると,初期値が適当でないから変な値になってしまうんだ.
 . |     (__人__)   triphoneは,monophoneの種類の三乗の種類があるんだからな.※
   |     ` ͡´ノ   ここまでで作ったmonophoneのHMMを初期値として,triphoneのHMMを
 .  |         }    学習するんだ.
 .  ヽ        }    
    ヽ     ノ    ここらがtutorialの10,11,12に当たるな.
    /    く  \  言い忘れていたが,monophone->triphoneなど,HMMの変更には
    |     \   \    HHEd(HMM Edit)を用いる
     |    |ヽ、二͡)、          \




      ※一般論として,求めるべきパラメータに対して学習サンプルが少なすぎると,たまたま出てきたサンプルに適合
      するように学習されてしまって汎用性がなくなる.これを過学習(Overfitting)という.
      これを防ぐため,今回のように,だいたいこういう値だよ,という事前知識を与えてやる方法がよく用いられる
       ちなみに,triphoneはmonophoneの三乗あるってのは実は嘘.t t t とかいうtriphoneが存在しないように,言語的
      に存在し得ない音素列は多い.



2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    
  |    ( ●)(●)   
 . |     (__人__)  
   |     ` ͡´ノ   これで,基本的にtriphoneHMMは完成だ.
 .  |         }    
 .  ヽ        }    
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \




       / ̄ ̄ ̄\
     / ─    ─ \
    /  (●)  (●)  \.   まだtutorialには13,14,15,16,17があるお
    |    (__人__)    |   こいつらは不要なのかお
    \    ` ͡´    /  
    /              \




2011年6月7日火曜日
                  
           / ̄ ̄\     それは,triphoneの過学習を緩和するために状態共有を行ったり,
         /       \    HMMの出力分布をSingle GaussianからGaussian Mixtureに
         |::::::        |  変更したりしている部分だな.GMM(Gaussian Mixture Model)は
        . |:::::::::::     |  はSingle Gaussianより記述力が高く,より自由なモデル化ができる
          |::::::::::::::    | 
        .  |::::::::::::::    }          ....:::,,  ..
        .  ヽ::::::::::::::    }         ,):::::::ノ .
           ヽ::::::::::  ノ        (:::::ソ: .
           /:::::::::::: く         ,ふ´..
   -̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶  
            |:::::::::::::::|ヽ、二͡)━~~'´




             / ̄ ̄ ̄\
           / ─    ─ \
          /  (●)  (●)  \.   日本語でおkだお
          |    (__人__)    |  
          \    ` ͡´    /  
          /              \



2011年6月7日火曜日
  / ̄ ̄\
  /   _ノ  \    
  |    ( ●)(●)   
 . |     (__人__)  
   |     ` ͡´ノ   まぁ,この辺は別に本質じゃない.説明しようと思えばできるが・・・
 .  |         }    今日はとりあえずここまででいいだろう.ちゃんとtriphoneHMMはできたしな.
 .  ヽ        }    
    ヽ     ノ        \
    /    く  \        \    
    |     \   \         \
     |    |ヽ、二͡)、          \




2011年6月7日火曜日
               / ̄ ̄\
                   /  ヽ_  .\    というわけで,これで終了だ.
                  ( ●)( ●)  |   あとはHTKBookを読んで頑張ってくれ.
                  (__人__)      |    
                  l` ͡´    |    
                  {         |     やるおがTriphone HMMを作るようです
                  {       /       完
                  ヽ     ノ
              ▼/ ̄      ̄ ̄)____
            〃(⊥) ´/    / ̄ ̄/ /   〃 ͡i
        ___i /͡\./   /∧ ∧し' __|;;;;;;;;;;i




2011年6月7日火曜日
使ったコマンドまとめ1
    •    HCopy
        •      特徴量抽出コマンド.今回はwavからMFCCを作った.

    •    HCompV
        •      データ全ての平均と分散をとる.flat startのHMMの初期化に使う

    •    HInit & HRest
        •      bootstrapped startの時に使う.手動で音声を切り分けてHMMを初期
               化

    •    HERest ( Embedded Re-estimation)
        •      音声データとその音素ラベルを用いて,Baum-WelchによりHMMのパ
               ラメータ更新を行う.

    •    HERestとHRestの違い

        •      HERestはEmbedded.手動で音声を切り分けずに,「こことここが同
               じ音」という条件だけをもとに自動切り分けをしつつ学習する.
               HRestは手動切り分けが必要.

2011年6月7日火曜日
使ったコマンドまとめ2

        •      HParse
            •     手動で作成した認識用文法をコンパイルして認識に使える形式に
                  する.

        •      HVite (Viterbi)
            •     文法による音声認識を行う.(大語彙連続音声認識は無理)

            •     認識結果を与えて音素のアラインメントに用いることもできる.

            •     結果を与えた音素アラインメントを強制アラインメントという

        •      HLEd (Label Edit)
            •     ラベルファイルを編集する.今回はmonophoneラベルからtriphone
                  ラベルへの変更に用いた.

        •      HHEd (HMM Edit)
            •     HMMを編集する.今回はMixture数の変更などに用いた.


2011年6月7日火曜日

Contenu connexe

Tendances

Tendances (20)

やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
 
[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audio[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audio
 
[DL輪読会]Temporal DifferenceVariationalAuto-Encoder
[DL輪読会]Temporal DifferenceVariationalAuto-Encoder[DL輪読会]Temporal DifferenceVariationalAuto-Encoder
[DL輪読会]Temporal DifferenceVariationalAuto-Encoder
 
深層生成モデルに基づく音声合成技術
深層生成モデルに基づく音声合成技術深層生成モデルに基づく音声合成技術
深層生成モデルに基づく音声合成技術
 
音声認識の基礎
音声認識の基礎音声認識の基礎
音声認識の基礎
 
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~
多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~
 
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
 
One Class SVMを用いた異常値検知
One Class SVMを用いた異常値検知One Class SVMを用いた異常値検知
One Class SVMを用いた異常値検知
 
PRML11章
PRML11章PRML11章
PRML11章
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstm
 
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
PRML輪読#1
PRML輪読#1PRML輪読#1
PRML輪読#1
 
PRML11.2 - 11.6
PRML11.2 - 11.6PRML11.2 - 11.6
PRML11.2 - 11.6
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 
言語と画像の表現学習
言語と画像の表現学習言語と画像の表現学習
言語と画像の表現学習
 
ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章ベイズ推論による機械学習入門 第4章
ベイズ推論による機械学習入門 第4章
 
最尤推定法(NNでの応用)
最尤推定法(NNでの応用)最尤推定法(NNでの応用)
最尤推定法(NNでの応用)
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響
 

Similaire à やるおがtriphone HMMを作るようです

やる夫で学ぶマーケティング
やる夫で学ぶマーケティングやる夫で学ぶマーケティング
やる夫で学ぶマーケティング
logch admin
 
【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD
Kohki Miki
 
Eucalyptus 3.1 and next in #occpv
Eucalyptus 3.1 and next in #occpvEucalyptus 3.1 and next in #occpv
Eucalyptus 3.1 and next in #occpv
Osamu Habuka
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門
Ryo Miyake
 

Similaire à やるおがtriphone HMMを作るようです (13)

やる夫で学ぶマーケティング
やる夫で学ぶマーケティングやる夫で学ぶマーケティング
やる夫で学ぶマーケティング
 
ゆとりがErlangを始めるようです
ゆとりがErlangを始めるようですゆとりがErlangを始めるようです
ゆとりがErlangを始めるようです
 
【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD
 
Eucalyptus 3.1 and next in #occpv
Eucalyptus 3.1 and next in #occpvEucalyptus 3.1 and next in #occpv
Eucalyptus 3.1 and next in #occpv
 
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
 
Dev camp25 lt
Dev camp25 ltDev camp25 lt
Dev camp25 lt
 
Title
TitleTitle
Title
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門
 
Gitのすすめ
GitのすすめGitのすすめ
Gitのすすめ
 
PHP使いから見たRuby(Talking about PHP & Ruby)
PHP使いから見たRuby(Talking about PHP & Ruby)PHP使いから見たRuby(Talking about PHP & Ruby)
PHP使いから見たRuby(Talking about PHP & Ruby)
 
20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボー
 
Source treeで始めるgit
Source treeで始めるgitSource treeで始めるgit
Source treeで始めるgit
 
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
 

やるおがtriphone HMMを作るようです

  • 1. やるおが Triphone HMMを 作るようです June 7, 2011, Shinya Shimizu (@kakenman) 2011年6月7日火曜日
  • 2.        ____      /͡  ͡\    /( ●)  (●)\   /::::::͡(__人__)͡::::: \    今日はなんとなくtriphone音響モデルを作りたい気分だお!   |     |r┬-|     |       \      `ー'´     /      /      \    /  _ノ  ヽ、_  \   / o゚((●)) ((●))゚o \  でもぶっちゃけmonophone音響モデルもよく分かってないお   |     (__人__)    |   HTKに詳しいやらない夫に聞いてみるお!   \     ` ͡´     / 2011年6月7日火曜日
  • 3.     |┃三 ガラッ     |┃  ____     |┃/͡  ͡\     |┃(●)  (●) \ ̶̶‐.|┃:͡(__人__)͡:::::\   えへへっ     |┃  |r┬-|     |͡) HTKの使い方教えてくれだお!     |┃   `ー'ォ     //     (͡ヽ・    ・ ̄ /     |┃ノ       /     |┃   つ   <     |┃  (::)(::)   ヽ     |┃/    >  )     |┃     (__)     |┃     |┃  ____     |┃/͡  ͡\     |┃ (̶)  (̶)\ ̶̶‐.|┃:͡(__人__)͡:::::\     |┃           |     |┃          /     |┃ヽ・    ・ ̄ /     |┃ \    ,.:∴~・:,゜・~・:,゜・ ,     |┃ヽ_)つ ∴・゜゜・・∴~・:,゜・・∴     |┃  (::)(::)  ヽ    ・゜゜・∴~゜     |┃/    >  )    ゜゜・∴:,゜・~     |┃     (__)    :,゜・~:,゜・゜゜・~ 2011年6月7日火曜日
  • 4.       / ̄ ̄\     /ノ( _ノ  \     | ͡(( ●)(●) < HTKBook読んで勝手にやってろ!     .|     (__人__) /͡l      |     ` ͡´ノ |`'''|      / ͡ヽ     }  |  |            ____    ぐぇあ    /  へ  \   }__/ /           /─  ̶\     / / |      ノ   ノ           /●))  ((●\ . , ・ ( _ ノ    |      \´       _   /    (__人__) ,∴\ ,           |       \_,, -‐ ''"   ̄ ゙̄''̶---└'´ ̄`ヽ/  > て         .|                        __ ノ /  (        ヽ           _,, -‐ ''" ̄ヽ、 ̄ `ー'´  /  r'" ̄          \       , '´          /       .|            \     (           /       |             \    \        /         | 2011年6月7日火曜日
  • 5.       ____      /      \    /  _ノ  ヽ、_  \   / o゚((●)) ((●))゚o \  でもHTKBookは英語だお・・・   |     (__人__)    |  そもそもBaum-WelchどころかHMMもよくわかってないお      \     ` ͡´     /  でもHTKが使えるようにしてくれだお   / ̄ ̄\  /   _ノ  \    HMMわかってなくてHTKが理解できるわけないだろ・・・  |    ( ●)(●)    . |     (__人__)   まぁ,だが一応だいたいの説明をしながら演習をすることはできる   |     ` ͡´ノ   就職も決まったし教えてやるよ・・・ .  |         } .  ヽ        }    ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 6.   / ̄ ̄\  /   _ノ  \    まず,HMMだが,HMMについてちゃんと説明し出すと結構な手間だ.  |    ( ●)(●)   全く分かってないんなら,「(時間的に)変化する特徴量の系列を記述したもの」 . |     (__人__)   と思っておけばいい.音素の数だけHMMを作って,入力音声に対して,   |     ` ͡´ノ   /a/のHMMはどうか?/i/のHMMはどうか・・・と順番にあてはめていって, .  |         }    一番それっぽいものを認識結果とするわけだな. .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ ※ HMMは「(時間的に)変化する特徴量のモデル化」というのがポイント。時間的に定常なもの、例えば画像がリン ゴかナシかの分類をしたいのであれば、単に画素について、「りんごの画素の分布」と「ナシの画素の分布」を学 習すればよい。ところが、音声の場合は時間的に変化するので、時間的に分布が変化していくようなモデルを用い る必要がある。 2011年6月7日火曜日
  • 7.   / ̄ ̄\  /   _ノ  \    で,/a/のHMM,/i/のHMM...を作成してやる必要がある.  |    ( ●)(●)   そこで用いられるHMMの学習アルゴリズムがBaum-Welchアルゴリズムだ. . |     (__人__)   これも詳細は説明しないが,このアルゴリズムはHMMを0から作ることは   |     ` ͡´ノ   できない.既にあるHMMのパラメータをアップデートし改良することだけだ. .  |         }     .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \           ____        / ノ  \\       / (●)  (●)\     HMMの作成にHMMが必要とか,意味不明だお・・・     / ∪  (__人__)  \    頭がおかしくなったのかお・・・     |      ` ͡´    |      \ /͡)͡)͡)   //͡)͡)͡)     ノ  | / / /   (͡) / / / /   /´    | :::::::::::(͡)  ゝ  :::::::::::/  |    l  |     ノ  /  )  /  ヽ    ヽ_ヽ    /'   /    /   ヽ __     /   /   / 2011年6月7日火曜日
  • 8.         / ̄ ̄\        /       \              |::::::        |      まだ説明は途中だろ,常識的に考えて・・・      . |:::::::::::     |             |::::::::::::::    |          ....,:::´, .        .  |::::::::::::::    }          ....:::,,  ..      .  ヽ::::::::::::::    }         ,):::::::ノ .         ヽ::::::::::  ノ        (:::::ソ: .         /:::::::::::: く         ,ふ´.. -̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶            |:::::::::::::::|ヽ、二͡)━~~'´ 2011年6月7日火曜日
  • 9.   / ̄ ̄\  /   _ノ  \    Baum-Welchは0からHMMを作ることはできないから,初期HMMがいる.  |    ( ●)(●)   そして初期HMMの作り方には二種類ある. . |     (__人__)   ひとつは,自分で必死で音声を切り出して,ここからここまでが/a/ですよ,   |     ` ͡´ノ   と教えてやって初期モデルを作る方法だ.HInitコマンドを使ってやる. .  |         }    だが,音声を切り出すのが面倒だし,今回はやらん. .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ ※ Baum-WelchとEM: 一般的に,隠れ変数を持つモデルのパラメータ推定を,隠れ変数の期待値(Expectation)を求める のと,パラメータの最尤推定解を求める(Maximization)のを繰り返すアルゴリズムをEMアルゴリズム(Expectation Maximization algorithm)と呼ぶ.HMMに対しEMの考え方を用いてパラメータ推定を行うアルゴリズムをBaum-Welch アルゴリズムという.つまり,EMは一般名,Baum-WelchはHMMに固有な名前と考えればよい.  ちなみに,Baum-Welchの考え方は,(E)「どこがどの音素っぽいか求める」(M)「じゃあ音素の特徴がわかる」(E) 「それを用いてどこがどの音素っぽいか再推定する」(M)「音素の特徴を再推定する」(E)「どこがどの音素っぽい か(ry となる. 2011年6月7日火曜日
  • 10.   / ̄ ̄\  /   _ノ  \    もう一つの方法は,「どこからどこまでが/a/とかわかんないから,全部同じ  |    ( ●)(●)   初期値でいいや」という方法だ.flat startと呼ばれる.今回はこれを使う. . |     (__人__)     |     ` ͡´ノ   コマンドとしては,HCompVを使う.これを使って,全部ひっくるめた平均の .  |         }    初期モデルを作成しているのがtutorialの2だ. .  ヽ        }    3では,それを全音素にコピーして初期値としている.    ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ ※ 前ページのEMでも触れたが,「音素の特徴を推定するには,どこがどの音素か見極める必要がある.」「どこが どの音素か見極めるには,音素の特徴が分かっていなければならない」という「服を買いに行く服がない」問題を どう解くかがポイントになる。 2011年6月7日火曜日
  • 11.   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)    . |     (__人__)     |     ` ͡´ノ  これで初期HMMができた.あとはラベル(どの音声ファイルがどの音素列で .  |         }   構成されているか)と音声ファイルを使ってHMMをアップデートしていくだろ, .  ヽ        }   常識的に考えて.    ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 12.       / ̄ ̄ ̄\     / ─    ─ \    /  (●)  (●)  \.   ラベルはあるけど,spが書き起こされていないお    |    (__人__)    |   このままだと,spは一回も登場していないから学習されないお    \    ` ͡´    /  それでいいのかお    /              \   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)  そこに気付くとはなかなか鋭いな.  . |     (__人__)   spはどこで発声されるか分かりづらく,書き起こされていないことが多いんだ.   |     ` ͡´ノ  普通,音声を聞いて書き起こすのではなく,セリフを予め用意して読んでもらう .  |         }   わけだしな. .  ヽ        }       ヽ     ノ    だがとりあえずあんまり気にしなくていい.無視して学習しろ.コマンドは    /    く  \  HERest (Embedded Re-estimation) だ.tutorialの4がこれに当たるな.      |     \   \         \     |    |ヽ、二͡)、          \ ※ sp: short pause. 文の間ではなく,文中に任意に現れる休止区間.息継ぎとか.文の読み方によってどこで現れる かが異なるので,どこにあるか分からない. 2011年6月7日火曜日
  • 13.        ____      /      \    /  _ノ  ヽ、_  \   / o゚((●)) ((●))゚o \  ほんとはちゃんとしたラベルで学習したいんだお・・・   |     (__人__)'    |   \     `͡´     /        ____      /      \    /  _ノ  ヽ、_  \   /  o゚͡   ゚͡o  \  でもどこにspが入っているかまでラベルに書いていないお・・・   |     (__人__)    |   \     ` ͡´     /        ____      /͡  ͡\    /( ●)  (●)\   /::::::͡(__人__)͡::::: \   だからspはなかったことにして学習するお!   |     |r┬-|     |   \      `ー'´     / 2011年6月7日火曜日
  • 14.      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´ spを無視してとりあえずsp以外を学習したものの, /      ∩ ノ)━・'/ spの学習はどうするんだお・・・ (   \ / _ノ´.|  | .\  "  /__|  |   \ /___ /    / ̄ ̄\  /   _ノ  \  |    ( ●)(●) . |     (__人__)   大丈夫だ.spは要はポーズだ.   |     ` ͡´ノ   長さなど多少は違うものの,silE, silBとかなり似ているんだ. .  |         }    とりあえず,silEをコピーしてspにしておけばいいだろう. .  ヽ        }    これがtutorialの5だな。    ヽ     ノ        \    /    く  \        \    |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 15.   |王|  ┴ ソ  十/  | |   | | _丿  ニ|ニ|ニ  二 王  /レ、  レ |  | | \     ノ ヽ   口 我  Vン   ノ  ・・   )  いくらなんでもsilEをコピーしてspってのはひどいお                       ヽ  それだったらそもそもspを作る必要がないお!         /  \  丿\     `v'͡ヽ/͡ヽ/      ,. ‐- .. _        /  ( ●)  (●)                  /  __  `` ー- 、      /  ::::::͡(_人__)͡ヽ               , ィ/   ゝヽ ̄ヽ ー- '      |       |r┬-|   |            _ / { {ヽ、_   ヽ' ノ_,.〉        \        `ー'´  /ァー- 、_ ... -‐ '    ヽヽ、 `>、..ノ=┘        /j >-‐ ' ´/ /   /    /   _ノ      \ `ー '!    , -‐ 7´/{͡|  / _/   j                  >‐'   / / //| 〉‐f/ \'    !                ,  ' ´  / ,' > .|/ レ   ゚ノ    |           ,.. -‐ '" /  {  ヽ |  〉  /__  t     ,. -‐ ' ´   |   ヽ| / /  '   `  ヽ、  /   |   `!//           /         / ̄ ̄\      /       \       spを含めてそれらしい音響モデルができたんだ,       |::::::        |      それを使ってspの場所をdetectして      . |:::::::::::     |     ラベルを書き直して学習し直すだろ,常識的に考えて・・・        |::::::::::::::    |          ....,:::´, .        .  |::::::::::::::    }          ....:::,,  ..      .  ヽ::::::::::::::    }         ,):::::::ノ .         ヽ::::::::::  ノ        (:::::ソ: .         /:::::::::::: く         ,ふ´.. -̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶            |:::::::::::::::|ヽ、二͡)━~~'´ 2011年6月7日火曜日
  • 16.       / ̄ ̄ ̄\     / ─    ─ \    /  (●)  (●)  \.   よくわからないお.    |    (__人__)    |   spを無視して学習するのは必要だったのかお?    \    ` ͡´    /      /              \    / ̄ ̄\  /   _ノ  \    本当はsp入りのラベルが欲しいが,どこにspが入っているか分からない.  |    ( ●)(●)  そこでどこにspが入っているか自動推定したいんだが,そのためには . |     (__人__)  どこがどの音っぽい,という情報,HMMが必要になる.   |     ` ͡´ノ  HMMを作るのにHMMが必要になるわけだ.そこで,まずspを無視して .  |         }   粗いHMMを作成しておいて,それを使ってspの位置を推定して,改めて .  ヽ        }   学習し直すんだ.    ヽ     ノ    spの位置を推定しているのがtutorialの6,それを用いて学習し直して    /    く  \ いるのがtutorialの7だ.    |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 17.      ____    /      \ ( ;;;;(   /  _ノ  ヽ__\) ;;;;) /    (─)  (─ /;;/ |       (__人__) l;;,´  なんか面倒だお・・・ /      ∩ ノ)━・'/   (   \ / _ノ´.|  | .\  "  /__|  |   \ /___ /    / ̄ ̄\  /   _ノ  \     |    ( ●)(●)   面倒なようだが,これはBaum-Welchを使う上での宿命だな. . |     (__人__)   Baum-Welchは,HMMのパラメータを更新するんだが,更新前のパラメータ   |     ` ͡´ノ  から近い局所最適解に近づくだけ,という特徴がある. .  |         }   つまり,初期値を適切に設定してやる必要があるわけだ. .  ヽ        }    そのため,初期値を更新してBaum-Welch・・・初期値を更新して    ヽ     ノ    Baum-Welch・・・という手順を踏むことになる.    /    く  \           |     \   \         \     |    |ヽ、二͡)、          \ ※実際にはBaum-Welchの問題というよりはもっと大きな「服を買いに行く服がない」問題 2011年6月7日火曜日
  • 18.   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)    . |     (__人__)     |     ` ͡´ノ   これでようやく,monophone音響モデルの完成だ. .  |         }     .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 19.       / ̄ ̄ ̄\     / ─    ─ \    /  (●)  (●)  \.       |    (__人__)    |   monophone音響モデル?    \    ` ͡´    /      /              \   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)   . |     (__人__)     |     ` ͡´ノ   .  |         }   ああ,monophoneだ. .  ヽ        }       ヽ     ノ       /    く  \     |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 20.                    γ ͡͡ヽ    やるおはtriphoneの作り方を聞いたんだお!!    / ̄ ̄\           ( ( ヽ ) ノ   monophoneなんて要らないんだお!  /_ノ     \     (͡) 三  ノ 从 ゝ  ( ●)( ●)  ヽ   三/ | ニ  ____     (͡)    . | (__人__) u  }   |  |   /\   / ) し / |  ミ     | ` ͡´    ノ   !   、 /(○ )::(○ )͡\/ | ミ    .  |         }    \./:::::::(_人_)::::::::  i'   | .  ヽ        }      |     )ww)     |  |    ヽ     ノ   ヘ   \    `ー"      ノ    /    く 、_/っ/      \ .    .   \    |     \--一''           \     |    |ヽ、二͡)、          \     まぁまて,落ち着け・・・ 2011年6月7日火曜日
  • 21.   / ̄ ̄\  /   _ノ  \    さっきもいった通り,Baum-WelchによるHMMの更新には初期値が重要になる  |    ( ●)(●)   突然triphoneを作ると,初期値が適当でないから変な値になってしまうんだ. . |     (__人__)   triphoneは,monophoneの種類の三乗の種類があるんだからな.※   |     ` ͡´ノ   ここまでで作ったmonophoneのHMMを初期値として,triphoneのHMMを .  |         }    学習するんだ. .  ヽ        }        ヽ     ノ    ここらがtutorialの10,11,12に当たるな.    /    く  \  言い忘れていたが,monophone->triphoneなど,HMMの変更には    |     \   \    HHEd(HMM Edit)を用いる     |    |ヽ、二͡)、          \ ※一般論として,求めるべきパラメータに対して学習サンプルが少なすぎると,たまたま出てきたサンプルに適合 するように学習されてしまって汎用性がなくなる.これを過学習(Overfitting)という. これを防ぐため,今回のように,だいたいこういう値だよ,という事前知識を与えてやる方法がよく用いられる  ちなみに,triphoneはmonophoneの三乗あるってのは実は嘘.t t t とかいうtriphoneが存在しないように,言語的 に存在し得ない音素列は多い. 2011年6月7日火曜日
  • 22.   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)    . |     (__人__)     |     ` ͡´ノ   これで,基本的にtriphoneHMMは完成だ. .  |         }     .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \       / ̄ ̄ ̄\     / ─    ─ \    /  (●)  (●)  \.   まだtutorialには13,14,15,16,17があるお    |    (__人__)    |   こいつらは不要なのかお    \    ` ͡´    /      /              \ 2011年6月7日火曜日
  • 23.                            / ̄ ̄\     それは,triphoneの過学習を緩和するために状態共有を行ったり,       /       \    HMMの出力分布をSingle GaussianからGaussian Mixtureに       |::::::        |  変更したりしている部分だな.GMM(Gaussian Mixture Model)は      . |:::::::::::     |  はSingle Gaussianより記述力が高く,より自由なモデル化ができる        |::::::::::::::    |       .  |::::::::::::::    }          ....:::,,  ..      .  ヽ::::::::::::::    }         ,):::::::ノ .         ヽ::::::::::  ノ        (:::::ソ: .         /:::::::::::: く         ,ふ´.. -̶̶̶̶̶|:::::::::::::::: \ -̶,̶̶ノ::ノ̶̶            |:::::::::::::::|ヽ、二͡)━~~'´       / ̄ ̄ ̄\     / ─    ─ \    /  (●)  (●)  \.   日本語でおkだお    |    (__人__)    |      \    ` ͡´    /      /              \ 2011年6月7日火曜日
  • 24.   / ̄ ̄\  /   _ノ  \      |    ( ●)(●)    . |     (__人__)     |     ` ͡´ノ   まぁ,この辺は別に本質じゃない.説明しようと思えばできるが・・・ .  |         }    今日はとりあえずここまででいいだろう.ちゃんとtriphoneHMMはできたしな. .  ヽ        }        ヽ     ノ        \    /    く  \        \        |     \   \         \     |    |ヽ、二͡)、          \ 2011年6月7日火曜日
  • 25.                / ̄ ̄\              /  ヽ_  .\    というわけで,これで終了だ.             ( ●)( ●)  |   あとはHTKBookを読んで頑張ってくれ.             (__人__)      |                 l` ͡´    |                 {         |     やるおがTriphone HMMを作るようです             {       /       完             ヽ     ノ         ▼/ ̄      ̄ ̄)____       〃(⊥) ´/    / ̄ ̄/ /   〃 ͡i   ___i /͡\./   /∧ ∧し' __|;;;;;;;;;;i 2011年6月7日火曜日
  • 26. 使ったコマンドまとめ1 • HCopy • 特徴量抽出コマンド.今回はwavからMFCCを作った. • HCompV • データ全ての平均と分散をとる.flat startのHMMの初期化に使う • HInit & HRest • bootstrapped startの時に使う.手動で音声を切り分けてHMMを初期 化 • HERest ( Embedded Re-estimation) • 音声データとその音素ラベルを用いて,Baum-WelchによりHMMのパ ラメータ更新を行う. • HERestとHRestの違い • HERestはEmbedded.手動で音声を切り分けずに,「こことここが同 じ音」という条件だけをもとに自動切り分けをしつつ学習する. HRestは手動切り分けが必要. 2011年6月7日火曜日
  • 27. 使ったコマンドまとめ2 • HParse • 手動で作成した認識用文法をコンパイルして認識に使える形式に する. • HVite (Viterbi) • 文法による音声認識を行う.(大語彙連続音声認識は無理) • 認識結果を与えて音素のアラインメントに用いることもできる. • 結果を与えた音素アラインメントを強制アラインメントという • HLEd (Label Edit) • ラベルファイルを編集する.今回はmonophoneラベルからtriphone ラベルへの変更に用いた. • HHEd (HMM Edit) • HMMを編集する.今回はMixture数の変更などに用いた. 2011年6月7日火曜日