SlideShare a Scribd company logo
やるおが
               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日火曜日

More Related Content

What's hot

Prml 3 3.3
Prml 3 3.3Prml 3 3.3
Prml 3 3.3
Arata Honda
 
RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Review
sesejun
 
PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)
Yasunori Ozaki
 
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
Naoki Hayashi
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
Takeshi Arabiki
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
Takeshi Sakaki
 
JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス
Shinnosuke Takamichi
 
音声合成のコーパスをつくろう
音声合成のコーパスをつくろう音声合成のコーパスをつくろう
音声合成のコーパスをつくろう
Shinnosuke Takamichi
 
Prml6
Prml6Prml6
最適化計算の概要まとめ
最適化計算の概要まとめ最適化計算の概要まとめ
最適化計算の概要まとめ
Yuichiro MInato
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
Naoki Hayashi
 
球面フィッティングの導出と実装
球面フィッティングの導出と実装球面フィッティングの導出と実装
球面フィッティングの導出と実装
j_rocket_boy
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
. .
 
[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数
Deep Learning JP
 
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
Hisao Soyama
 
第7回 配信講義 計算科学技術特論B(2022)
第7回 配信講義 計算科学技術特論B(2022)第7回 配信講義 計算科学技術特論B(2022)
第7回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
Nagi Teramo
 
[DL輪読会]Deep Learning 第18章 分配関数との対峙
[DL輪読会]Deep Learning 第18章 分配関数との対峙[DL輪読会]Deep Learning 第18章 分配関数との対峙
[DL輪読会]Deep Learning 第18章 分配関数との対峙
Deep Learning JP
 

What's hot (20)

Prml 3 3.3
Prml 3 3.3Prml 3 3.3
Prml 3 3.3
 
RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Review
 
PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)
 
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス
 
音声合成のコーパスをつくろう
音声合成のコーパスをつくろう音声合成のコーパスをつくろう
音声合成のコーパスをつくろう
 
Prml6
Prml6Prml6
Prml6
 
最適化計算の概要まとめ
最適化計算の概要まとめ最適化計算の概要まとめ
最適化計算の概要まとめ
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
Prml 4.1.1
Prml 4.1.1Prml 4.1.1
Prml 4.1.1
 
球面フィッティングの導出と実装
球面フィッティングの導出と実装球面フィッティングの導出と実装
球面フィッティングの導出と実装
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
 
[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数
 
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
 
第7回 配信講義 計算科学技術特論B(2022)
第7回 配信講義 計算科学技術特論B(2022)第7回 配信講義 計算科学技術特論B(2022)
第7回 配信講義 計算科学技術特論B(2022)
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
 
[DL輪読会]Deep Learning 第18章 分配関数との対峙
[DL輪読会]Deep Learning 第18章 分配関数との対峙[DL輪読会]Deep Learning 第18章 分配関数との対峙
[DL輪読会]Deep Learning 第18章 分配関数との対峙
 

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

やる夫で学ぶマーケティング
やる夫で学ぶマーケティングやる夫で学ぶマーケティング
やる夫で学ぶマーケティングlogch admin
 
ゆとりがErlangを始めるようです
ゆとりがErlangを始めるようですゆとりがErlangを始めるようです
ゆとりがErlangを始めるようです
sleepy_yoshi
 
【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDD【TDDBC2.1】やる夫で学ぶTDD
【TDDBC2.1】やる夫で学ぶTDDKohki 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 #occpvOsamu Habuka
 
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
hecomi
 
Title
TitleTitle
Title
stucon
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門Ryo Miyake
 
PHP使いから見たRuby(Talking about PHP & Ruby)
PHP使いから見たRuby(Talking about PHP & Ruby)PHP使いから見たRuby(Talking about PHP & Ruby)
PHP使いから見たRuby(Talking about PHP & Ruby)
mochiko AsTech
 
20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボー
gurezo
 
Source treeで始めるgit
Source treeで始めるgitSource treeで始めるgit
Source treeで始めるgit
Satoshi Kamigaki
 
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
Tomoo Amano
 

Similar to やるおが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日火曜日