DNN音声合成について

引用は全て「深層学習に基づく統計的音声合成」(https://www.jstage.jst.go.jp/article/jasj/73/1/73_55/_pdf)から。

統計的音声合成とは

音声合成の問題をテキスト解析部と波形生成部に分解すると,テキストから音素,品詞,単語などを表現する離散値系列(言語特徴量系列)を推定する問題と,言語特徴量系列から音声の特徴を表す連続値系列(音響特徴量系列)を推定し,音響特徴量系列から波形を合成する問題へと分けることができる。

文字列から音声に変換する過程をテキスト解析とそれを元にした波形生成の2つに分けて考えている。

統計的音声合成は,言語情報量系列 l から音響特徴量系列 o が生成される確率P(o | l, λ) を音響モデルと呼ばれる統計モデルによってモデル化することで実現される。

波形生成をする際に、テキスト解析から得られる音素や品詞、単語といった特徴(言語特徴量)から波形のスペクトルのパラメータ、基本周波数といった特徴(音響特徴量)を推定するが、統計的音声合成とはその推定に学習データから得られる確率をモデル化したものを使うような音声合成法である。
同論文(https://www.jstage.jst.go.jp/article/jasj/73/1/73_55/_pdf)から引用した以下の図は統計的音声合成の全体像を理解するのに役に立った。

f:id:k17trpsynth:20180131183901p:plain

DNN音声合成における学習の特徴

DNN に基づく音声合成(DNN 音声合成)では,言語特徴量から音響特徴量を予測する回帰問題にDNN を利用する。

DNN 音声合成では,あらかじめフレーム単位の音響特徴量系列と音素単位の言語特徴量系列の対応(音素境界)を設定し,フレーム単位の音響特徴量と言語特徴量の対を用意する。

コンテクストに関する質問に対する二値(0/1),又は連続値での回答を連結し,数値データとして表現された言語特徴量を用意する。

決定木でしか分類できなかったHMMとは違い、DNNでは連続値で分類することができる。例えば、アクセント型を分類する際、HMMでは「0型か?→はい/いいえ」「1型か?→はい/いいえ」...と分類していたのに対してDNNでは「アクセント型は?→x型」と答えることができる。

DNN音声合成における合成の特徴

まず,継続長モデルを用いて音素継続長を推定し,テキストと音素継続長からフレーム単位の言語特徴量を抽出する。

文字列からは時間は読み取れないので別に用意したモデルを用いて文字列を話す長さを推定し、フレームごとに分割してそれぞれのフレームに言語特徴量のラベルづけをする。

次に,抽出された言語特徴量を DNN へと入力し,DNN からの出力を連結することで音響特徴量系列を得る。DNNはフレームごとに独立に音響特徴量の推定を行うため,得られる音響特徴量系列は合成音声の品質を低下させるような不連続がしばしば含まれる。このため,DNN 音声合成においても HMM 音声合成と同様に,動的特徴量を用いたパラメータ生成アルゴリズムを利用することで合成音声の品質が改善することが知られている。

DNNはフレーム単位で音響特徴量を推定するためその境目で基本周波数などが不連続だったりする場合がある。これでは合成音声は不自然なものになってしまうので、フレームごとのDNNの出力をまとめて1つの出力として考え、それらまとめた出力が、どの「動的特徴量までも含めた音響特徴量」に対応するかという確率を考えて、その確率が最大となるような静的特徴量から波形を作る。音響特徴量を選ぶ際に動的特徴量も考慮することにより、フレーム間の不連続さが解消され、合成音声の不自然さを減らすことができる。