HMMで音声合成まとめ

最近なんとなく音声合成関係の記事を調べてるのでこのエントリに追加していく

既にある合成音声ソフトでメジャーなのは、音声の破片を繋ぎ合わせるタイプで、音声の破片の数が多ければ多いほどより自然な合成音声ができる。VOCALOID2まではDIPHONE(音と音のつながり部分、子音+母音など)を音声の破片として集めていたそうだ。日本語の場合DIPHONE合成に必要な破片の数は500個くらいで、英語の場合2500個くらいらしい。最近VOCALOID3が出たが、DIPHONEより音と音のつながり部分の範囲を広げてTRIPHONE合成と呼ばれるものになっている。DIPHONEの場合は二つの組合せだったが、TRIPHONEは子音+母音+子音のように、三つの組合せを考えるために必要な破片の数が増える。VOCALOIDの場合は音声の破片にピッチ調整(音の高さの調整)を施してから繋ぎ合わせていると思われる。

しかし、人間が歌を歌ったりするときに音の高さを変えて発声することは、単に音の破片をピッチ調整したものを繋ぐ事で再現できるだろうか。DIPHONEなどの子音+母音の組み合わせだけではなく、各音階でそれぞれの音の破片を収録する必要がありそうだ。そうなってくると必要な音の破片の数は膨大になってくる。

Sinsyなどはこれとは別原理で、隠れマルコフモデルを使っている(HMM)。テキストと音声のデータを対にしたデータをHMMという統計モデルに与えることによって、HMMの挙動を決めるパラメータを学習することができる。学習済のHMMにテキストデータを与えると、音声合成に必要なパラメータが生成される。そのパラメータを使ってメルケプストラム分析合成という手法を使うことによって波形データを合成するという流れらしい。

歌声の場合は韻律(音の高低、長さ)の情報は楽譜によって指定されるので推定する必要がない。実はテキスト読み上げより簡単かもしれない。

音声情報処理で使われる隠れマルコフモデルLeft-to-Right HMM (状態が一方向にのみ遷移していく。以前の状態に戻ることはない)が多い。これは音声情報がエルゴード的でないことによる。また、音声情報は連続値を扱うため、HMMの出力は連続値である必要がある。出力変数が正規分布に従うようにするとこれを実現できる。(連続分布型HMM)

東大の授業資料?音声認識への応用を中心に。