統計的音声合成について(HMM音声合成)

https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44312.pdf
上のスライドを文章としてまとめたもの。まずは前半部分のHMM音声合成について。

人間の発声の仕組み

下の図は同スライドから引用した発声の仕組みについての図である。

f:id:k17trpsynth:20180309125858p:plain

人間は発声する際、咽頭で音源を作り出し、声道でその音源を共鳴させて音色を変えるという手順を踏んでいる。咽頭では声の強さ、声の高さ、有声音・無声音の切り替えなどが決定される。この時点では音源はブザーと同じであり、何の言葉を発しているかは分からない。そのブザーが声道で共鳴されることで初めて言葉として分かるものになる。声道の形を変えることで様々な種類の言葉を発している。

この人間の発声システムをコンピューター上で模倣できれば音声合成ができるはずである。システムを数学的に扱いやすくなるようにモデル化したものが同スライドから引用した下の図にあるソースフィルターモデルである。

f:id:k17trpsynth:20180309132221p:plain

Source excitation partが咽頭にあたり、Vocal tract resonance partが声道にあたる。咽頭における有声・無声の切り替えはスイッチで表現され、咽頭で発せられた音源(e(n))が声道フィルター(h(n))にかけられて声(x(n))になる様子が畳み込み積分(*)で表現されている。

x(n)=h(n)*e(n)をフーリエ変換したX(z)はh(n)、e(n)をそれぞれフーリエ変換したH(z)、E(z)の積H(z)E(z)となることが知られている(下図も同スライドの引用)。

f:id:k17trpsynth:20180309135304p:plain

ブザーのスペクトルE(z)は平坦な形をしているが、それにH(z)をかけて一部の周波数が強調されたりすることで、意味の分かる音声スペクトルX(z)となる。

HMM音声合成の手順

同スライドから引用した以下の図がHMM音声合成の手順である。

f:id:k17trpsynth:20180309104415p:plain

以下これに沿って説明していく。

HMM音声合成の手順:学習部(Training part)

音声データベースからパラメータを抽出

音声データから特徴量を抽出することは上で述べた発声システムを逆に追っていくことになる。咽頭の部分で Excitation parameter (基本周波数など)が、声道の部分で Spectral parameter (メルケプストラムなど)が抽出される。

HMMモデルの学習

コンテキストラベルと上で得られた音響特徴量をHMMに与えてモデルの学習を行う。まず、コンテキストに依存するHMMをつくるために決定木をもとにした分類を各状態に対し行う。各状態のコンテキストラベルに対してイエスかノーで答えられる質問をいくつか与え、クラスに分類し、それぞれでモデルを学習する。この質問は Excitation parameter と Spectral parameter で別々に用意され、継続長モデルにも個別に用意される。同スライドから図を引用する。

f:id:k17trpsynth:20180316114058p:plain

HMMにおける潜在変数はこの各クラスにあたり、出力変数は各音響特徴量または継続長である。コンテキストがあるクラスに分類されることを条件とした出力変数の条件付き確率分布を学習する。

継続長モデルの学習の仕組みは「ある状態に時間t0で遷移し、その後の時間t1で抜ける確率」を各t0、t1に対して計算するというもの。

HMM音声合成の手順:合成部(Synthesis part)

言語特徴量からパラメータを予測

合成用テキストから得たコンテキストラベルをHMMに与え、もっともらしいパラメータを抽出する。同時にその確率分布の分散と動的特徴量も得て、これらを考慮して最終的に時系列に沿って滑らかなパラメータを得る。

パラメータから波形の合成

HMMから得たパラメータを冒頭で述べた人間の発話の仕組みに沿って波形として合成する。パラメータから波形に変換する際に用いられるフィルターはパラメータの種類ごとに用意されている。代表的なものとしてはメルケプストラムを変換するMLSAフィルタなどがある。

応用的なHMMの話題

話者適応

様々な話者の声を学習した平均声モデルを作り、目標話者の声を作成する際に必要とするデータ量を最小限にするというもの。少ないコストで新しい声の合成ができる。

パラメータ抽出時の問題

  • 有声か無声かを1か0かで判定していると、有声音と無声音の混ざった音はパラメータ抽出しづらい。
    →対策として有声音・無声音それぞれをバンドパスフィルタにかけて混合するという手法がある。(同スライドから引用)
f:id:k17trpsynth:20180316143332p:plain
  • 状態内での確率分布が一定。 出力確率分布が各状態ごとに独立ではないかもしれない。
    →対策として静的・動的特徴量の関係を明示化した Trajectory HMM などが用いられている。

  • 継続長モデルが弱い。
    →対策として継続長を明示した隠れセミマルコフモデルが用いられている。

  • 動的特徴量を考慮してパラメータ出力することで滑らかなパラメータが生成されるが、スペクトルの細かい部分が省略されてしまうため、しばしば過剰に平滑化され、こもって聞こえる。
    →対策としてポストフィルタ、GVなどが用いられる。

参考

https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44312.pdf
音源フィルタ理論
ソースフィルタモデルについてのまとめ(永遠に未完) - 備忘録
http://tanichu.com/wp-content/themes/tanichu/data/pdf/ess12_kobayashi.pdf