[第1実施形態]
第1実施形態について、図面を参照しながら、以下説明する。
<1.1:音声合成処理装置の構成>
図1は、第1実施形態に係る音声合成処理装置100の概略構成図である。
音声合成処理装置100は、図1に示すように、テキスト解析部1と、フルコンテキストラベルベクトル処理部2と、エンコーダ部3と、アテンション部4と、デコーダ部5と、ボコーダ6とを備える。
テキスト解析部1は、処理対象言語のテキストデータDinを入力とし、入力されたテキストデータDinに対して、テキスト解析処理を実行し、様々な言語情報からなるコンテキストを含む音素ラベルであるコンテキストラベルの系列を取得する。なお、日本語のように、アクセントやピッチによって、同じ文字(例えば、漢字)であっても、発音されたときの音声波形が異なる言語では、当該音素(処理対象の音素)の前後の音素についての言語情報も、コンテキストラベルに含める必要がある。テキスト解析部1は、上記のように、テキストが発音されたときの音声波形を特定するためのコンテキストラベル(処理対象言語によって必要となる先行する音素、および/または、後続する音素のデータを含めたコンテキストラベル)をフルコンテキストラベルデータDx1として、フルコンテキストラベルベクトル処理部2に出力する。
フルコンテキストラベルベクトル処理部2は、テキスト解析部1から出力されるデータDx1(フルコンテキストラベルのデータ)を入力する。フルコンテキストラベルベクトル処理部2は、入力されたフルコンテキストラベルデータDx1から、sequence-to-sequence方式のニューラルネットワークのモデルの学習処理に適したフルコンテキストラベルデータを取得するためのフルコンテキストラベルベクトル処理を実行する。そして、フルコンテキストラベルベクトル処理部2は、フルコンテキストラベルベクトル処理により取得したデータをデータDx2(最適化フルコンテキストラベルデータDx2)として、エンコーダ部3のエンコーダ側プレネット処理部31に出力する。
エンコーダ部3は、図1に示すように、エンコーダ側プレネット処理部31と、エンコーダ側LSTM層32(LSTM:Long short-term memory)とを備える。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2から出力されるデータDx2を入力する。エンコーダ側プレネット処理部31は、入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、リカーレントニューラルネットワークの隠れ層(LSTM層)に対応する層であり、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(これをデータDx3(t)と表記する)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(これをデータDx4(t-1)と表記する)とを入力する。エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理を実行し、処理後のデータをデータDx4(データDx4(t))としてアテンション部4に出力する。
アテンション部4は、エンコーダ部3から出力されるデータDx4と、デコーダ部5のデコーダ側LSTM層52から出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4は、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データ(これをデータhiという。また、時刻tの入力側隠れ状態データをデータhi(t)と表記する。)を所定の時間ステップ分記憶保持する。時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4に出力されたデータDx4(=hi)の集合を、hi1...Sと表記する。つまり、アテンション部4は、下記に相当するデータhi1...Sを記憶保持する。
hi1...S={Dx4(1),Dx4(2),・・・,Dx4(S)}
また、アテンション部4は、デコーダ部5のデコーダ側LSTM層52から出力されるデータDy3、すなわち、出力側隠れ状態データ(これをデータhoという)を所定の時間ステップ分記憶保持する。時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52により取得され、アテンション部4に出力されたデータDy3(=ho)の集合を、ho1...Tと表記する。つまり、アテンション部4は、下記に相当するデータho1...Tを記憶保持する。
ho1...T={Dy3(1),Dy3(2),・・・,Dy3(T)}
そして、アテンション部4は、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
c(t)=f1_attn(hi1...S,ho1...T)
f1_attn():コンテキスト状態データを取得する関数
に相当する処理を実行して、現時刻tのコンテキスト状態データc(t)を取得する。そして、アテンション部4は、取得したコンテキスト状態データc(t)をデコーダ側LSTM層52に出力する。
デコーダ部5は、図1に示すように、デコーダ側プレネット処理部51と、デコーダ側LSTM層52と、線形予測部53と、ポストネット処理部54と、加算器55と、を備える。
デコーダ側プレネット処理部51は、線形予測部53から出力される、1時間ステップ前のデータDy4(これをDy4(t-1)という)を入力する。デコーダ側プレネット処理部51は、例えば、複数層(例えば、2層)の全結合層を有しており、データの正規化処理(例えば、線形予測部53から出力されるデータ(ベクトルデータ)の次元数が2Nであり、デコーダ側LSTM層に入力されるデータ(ベクトルデータ)の次元数がNである場合、データの次元数をNにするように、例えば、ドロップアウト処理を行うことを含む)、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、デコーダ側LSTM層52に入力可能なデータを取得する。そして、デコーダ側プレネット処理部51は、上記処理(プレネット処理)により取得したデータをデータDy2としてデコーダ側LSTM層52に出力する。
デコーダ側LSTM層52は、リカーレントニューラルネットワークの隠れ層(LSTM層)に対応する層である。デコーダ側LSTM層52は、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(これをデータDy2(t)と表記する)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52から出力されたデータDy3(これをデータDy3(t-1)と表記する)と、アテンション部4から出力される時刻tのコンテキスト状態データc(t)とを入力する。
デコーダ側LSTM層52は、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(データDy3(t))として線形予測部53に出力する。また、デコーダ側LSTM層52は、データDy3(t)、すなわち、時刻tの出力側隠れ状態データho(t)をアテンション部4に出力する。
線形予測部53は、デコーダ側LSTM層52から出力されるデータDy3を入力する。線形予測部53は、所定の期間(例えば、メルスペクトログラムを取得するための1フレーム期間に相当する期間)内に、デコーダ側LSTM層52から出力されるデータDy3(複数のデータDy3)を記憶保持し、当該複数のデータDy3を用いて線形変換することで、所定期間におけるメルスペクトログラムの予測データDy4を取得する。そして、線形予測部53は、取得したデータDy4をポストネット処理部54、加算器55、および、デコーダ側プレネット処理部51に出力する。
ポストネット処理部54は、例えば、複数層(例えば、5層)のコンボリューション層を有しており、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理やtanh関数による処理)を実行し、予測データ(予測メルスペクトログラム)の残差データ(residual)を取得し、取得した残差データをデータDy5として加算器55に出力する。
加算器55は、線形予測部53から出力される予測データDy4(予測メルスペクトログラムのデータ)と、ポストネット処理部54から出力される残差データDy5(予測メルスペクトログラムの残差データ)とを入力する。加算器55は、予測データDy4(予測メルスペクトログラムのデータ)と、残差データDy5(予測メルスペクトログラムの残差データ)とに対して加算処理を実行し、加算処理後のデータ(予測メルスペクトログラムのデータ)をデータDy6としてボコーダ6に出力する。
ボコーダ6は、音響特徴量のデータを入力とし、入力された音響特徴量のデータから、当該音響特徴量に対応する音声信号波形を出力する。本実施形態において、ボコーダ6は、ニューラルネットワークによるモデルを用いたボコーダを採用する。ボコーダ6は、入力される音響特徴量を、メルスペクトログラムのデータとし、出力を当該メルスペクトログラムに対応する音声信号波形とする。ボコーダ6は、学習時において、メルスペクトログラムと、当該メルスペクトログラムにより実現される音声信号波形(教師データ)として、ニューラルネットワークのモデルを学習させ、当該ニューラルネットワークのパラメータの最適化パラメータを取得することで、当該ニューラルネットワークのモデルを最適化する処理を行う。そして、ボコーダ6は、予測時において、最適化したニューラルネットワークのモデルを用いて、処理を行うことで、入力されるメルスペクトログラムのデータ(例えば、デコーダ部5から出力されるデータDy6)から、当該メルスペクトログラムに対応する音声信号波形を予測し、予測した音声信号波形のデータをデータDoutとして出力する。
<1.2:音声合成処理装置の動作>
以上のように構成された音声合成処理装置100の動作について以下説明する。
以下では、音声合成処理装置100の動作を、(1)学習処理(学習時の処理)と、(2)予測処理(予測時の処理)とに分けて説明する。
(1.2.1:学習処理)
まず、音声合成処理装置100による学習処理について、説明する。なお、説明便宜のため、処理対象言語を日本語として、以下、説明する。
処理対象言語である日本語のテキストデータDinをテキスト解析部1に入力する。また、当該テキストデータDinに対応するメルスペクトログラム(音響特徴量)のデータを教師データとして用意する。
テキスト解析部1は、入力されたテキストデータDinに対して、テキスト解析処理を実行し、様々な言語情報からなるコンテキストを含む音素ラベルであるコンテキストラベルの系列を取得する。
日本語は、アクセントやピッチによって、同じ文字(例えば、漢字)であっても、発音されたときの音声波形が異なる言語であるので、当該音素(処理対象の音素)の前後の音素についての言語情報も、コンテキストラベルに含める必要がある。テキスト解析部1は、処理対象を日本語とする場合、テキストデータDinに対して、日本語用のテキスト解析処理を実行し、テキストが発音されたときの音声波形を特定するためのパラメータについて、必要に応じて、(1)当該音素のみのデータ、(2)先行する音素、および/または、後続する音素についてのデータを取得し、取得したデータをまとめてフルコンテキストラベルデータを取得する。
図2は、処理対象言語を日本語とした場合のテキスト解析処理により取得されるフルコンテキストラベルデータに含まれる情報(パラメータ)(一例)を示す図である。
図2に示す場合では、フルコンテキストラベルデータの各パラメータは、図2の「概要」に示した内容を特定するためのデータであり、図2の表に示した次元数、音素数分のデータである。
図2に示すように、テキスト解析部1は、図2の表の全てのパラメータのデータをまとめて、フルコンテキストラベルデータ(ベクトルのデータ)として、取得する。図2の場合、フルコンテキストラベルデータは、478次元のベクトルデータとなる。
上記のようにして取得されたフルコンテキストラベルデータDx1は、テキスト解析部1からフルコンテキストラベルベクトル処理部2に出力される。
フルコンテキストラベルベクトル処理部2は、入力されたフルコンテキストラベルデータDx1から、sequence-to-sequence方式のニューラルネットワークのモデルの学習処理に適したフルコンテキストラベルデータを取得するためのフルコンテキストラベルベクトル処理を実行する。具体的には、フルコンテキストラベルベクトル処理部2は、先行する音素についてのパラメータ(データ)、後続する音素についてのパラメータ(データ)を削除することで、最適化フルコンテキストラベルデータDx2を取得する。例えば、フルコンテキストラベルデータDx1が図2に示すパラメータを含むデータである場合、先行する音素についてのパラメータ(データ)、後続する音素についてのパラメータ(データ)を削除することで、最適化フルコンテキストラベルデータDx2を取得する。
図3は、上記のようにして取得した最適化フルコンテキストラベルデータに含まれる情報(パラメータ)(一例)を示す図である。
図3の場合、最適化フルコンテキストラベルデータは、130次元のベクトルデータとなり、478次元のベクトルデータであるフルコンテキストラベルデータDx1と比べると、次元数が著しく低減されていることが分かる。
音声合成処理装置100で用いられているニューラルネットワークのモデルが、sequence-to-sequence方式のニューラルネットワーク(リカーレントニューラルネットワーク)のモデルであり、エンコーダ側LSTM層32、デコーダ側LSTM層52を有しているので、入力されるデータ列について、時系列の関係を考慮した学習処理、予測処理ができるため、従来技術で必要とされていた先行する音素、後続する音素のデータは、冗長となり、学習処理の効率、予測処理の精度を悪化させる原因となる。そのため、音声合成処理装置100では、上記のように、当該音素についてのパラメータ(データ)のみを残して取得した最適化フルコンテキストラベルデータDx2を取得し、取得した最適化フルコンテキストラベルデータDx2を用いて、学習処理、予測処理を行うことで、高速かつ高精度に処理を実行することができる。
上記により取得されたデータDx2(最適化フルコンテキストラベルデータDx2)は、フルコンテキストラベルベクトル処理部2からのエンコーダ部3のエンコーダ側プレネット処理部31に出力される。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2から入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(t)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(t-1)とを入力する。そして、エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理を実行し、処理後のデータをデータDx4(データDx4(t))としてアテンション部4に出力する。
アテンション部4は、エンコーダ部3から出力されるデータDx4と、デコーダ部5のデコーダ側LSTM層52から出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4は、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データhiを所定の時間ステップ分記憶保持する。例えば、アテンション部4は、時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4に出力されたデータDx4(=hi)の集合を、hi1...S(={Dx4(1),Dx4(2),・・・,Dx4(S)})として記憶保持する。
また、アテンション部4は、デコーダ部5のデコーダ側LSTM層52から出力されるデータDy3、すなわち、出力側隠れ状態データhoを所定の時間ステップ分記憶保持する。例えば、アテンション部4は、時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52により取得され、アテンション部4に出力されたデータDy3(=ho)の集合を、ho1...T(={Dy3(1),Dy3(2),・・・,Dy3(T)})として記憶保持する。
そして、アテンション部4は、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
c(t)=f1_attn(hi1...S,ho1...T)
f1_attn():コンテキスト状態データを取得する関数
に相当する処理を実行して、現時刻tのコンテキスト状態データc(t)を取得する。
そして、アテンション部4は、取得したコンテキスト状態データc(t)をデコーダ側LSTM層52に出力する。
デコーダ側プレネット処理部51は、線形予測部53から出力される、1時間ステップ前のデータDy4(t-1)を入力する。デコーダ側プレネット処理部51は、例えば、複数層(例えば、2層)の全結合層を有しており、データの正規化処理(例えば、線形予測部53から出力されるデータ(ベクトルデータ)の次元数が2Nであり、デコーダ側LSTM層に入力されるデータ(ベクトルデータ)の次元数がNである場合、データの次元数をNにするように、例えば、ドロップアウト処理を行うことを含む)、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、デコーダ側LSTM層52に入力可能なデータを取得する。そして、デコーダ側プレネット処理部51は、上記処理(プレネット処理)により取得したデータをデータDy2としてデコーダ側LSTM層52に出力する。
デコーダ側LSTM層52は、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(t)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52から出力されたデータDy3(t-1)と、アテンション部4から出力される時刻tのコンテキスト状態データc(t)とを入力する。
デコーダ側LSTM層52は、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。また、デコーダ側LSTM層52は、データDy3(t)、すなわち、時刻tの出力側隠れ状態データho(t)をアテンション部4に出力する。
線形予測部53は、デコーダ側LSTM層52から出力されるデータDy3を入力する。線形予測部53は、所定の期間(例えば、メルスペクトログラムを取得するための1フレーム期間に相当する期間)内に、デコーダ側LSTM層52から出力されるデータDy3(複数のデータDy3)を記憶保持し、当該複数のデータDy3を用いて線形変換することで、所定期間におけるメルスペクトログラムの予測データDy4を取得する。そして、線形予測部53は、取得したデータDy4をポストネット処理部54、加算器55、および、デコーダ側プレネット処理部51に出力する。
ポストネット処理部54は、例えば、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理やtanh関数による処理)を実行し、予測データ(予測メルスペクトログラム)の残差データ(residual)を取得し、取得した残差データをデータDy5として加算器55に出力する。
加算器55は、線形予測部53から出力される予測データDy4(予測メルスペクトログラムのデータ)と、ポストネット処理部54から出力される残差データDy5(予測メルスペクトログラムの残差データ)とを入力する。加算器55は、予測データDy4(予測メルスペクトログラムのデータ)と、残差データDy5(予測メルスペクトログラムの残差データ)とに対して加算処理を実行し、加算処理後のデータ(予測メルスペクトログラムのデータ)をデータDy6として出力する。
そして、音声合成処理装置100では、上記のように取得されたデータDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)とを比較し、両者の差(比較結果)(例えば、差分ベクトルのノルムやユークリッド距離により表現する差)が小さくなるように、エンコーダ部3、デコーダ部5のニューラルネットワークのモデルのパラメータを更新する。音声合成処理装置100では、このパラメータ更新処理を繰り返し実行し、データDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)との差が十分小さくなる(所定の誤差範囲におさまる)、ニューラルネットワークのモデルのパラメータを最適化パラメータとして取得する。
音声合成処理装置100では、上記のようにして取得した最適化パラメータに基づいて、エンコーダ部3、デコーダ部5のニューラルネットワークのモデルの各層に含まれるシナプス間の結合係数(重み係数)を設定することで、エンコーダ部3、デコーダ部5のニューラルネットワークのモデルを最適化モデル(学習済みモデル)とすることができる。
以上により、音声合成処理装置100において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
また、ボコーダ6として、ニューラルネットワークによるモデルを用いたボコーダを採用する場合、入力される音響特徴量を、メルスペクトログラムのデータとし、出力を当該メルスペクトログラムに対応する音声信号波形として学習処理を実行する。つまり、ボコーダ6において、メルスペクトログラムのデータを入力し、音声合成処理をニューラルネットワークによるモデルを用いた処理により実行し、音声波形データを出力させる。ボコーダ6から出力される当該音声波形データと、ボコーダに入力したメルスペクトログラムに対応する音声波形データ(正解の音声波形データ)とを比較し、両者の差(比較結果)(例えば、差分ベクトルのノルムやユークリッド距離により表現する差)が小さくなるように、ボコーダ6のニューラルネットワークのモデルのパラメータを更新する。ボコーダ6では、このパラメータ更新処理を繰り返し実行し、ボコーダの入力データ(メルスペクトログラムのデータ)と、ボコーダ6に入力されたメルスペクトログラムに対応する音声波形データ(正解の音声波形データ)との差が十分小さくなる(所定の誤差範囲におさまる)、ニューラルネットワークのモデルのパラメータを最適化パラメータとして取得する。
ボコーダ6では、上記のようにして取得した最適化パラメータに基づいて、ボコーダ6のニューラルネットワークのモデルの各層に含まれるシナプス間の結合係数(重み係数)を設定することで、ボコーダ6のニューラルネットワークのモデルの最適化モデル(学習済みモデル)とすることができる。
以上により、ボコーダ6において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
なお、音声合成処理装置100において、(1)エンコーダ部3、デコーダ部5の学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行してもよいし、上記のように、個別に学習処理を実行してもよい。音声合成処理装置100において、(1)エンコーダ部3、デコーダ部5の学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行する場合、入力をテキストデータとし、当該テキストデータに対応する音声波形データ(正解の音声波形データ)とを用いて、(1)エンコーダ部3、デコーダ部5のニューラルネットワークのモデルと、(2)ボコーダ6のニューラルネットワークのモデルの最適化パラメータを取得することで学習処理を実行すればよい。
(1.2.2:予測処理)
次に、音声合成処理装置100による予測処理について、説明する。なお、予測処理においても、説明便宜のため、処理対象言語を日本語として、以下、説明する。
予測処理を実行する場合、音声合成処理装置100では、上記の学習処理により取得された学習済みモデル、すなわち、エンコーダ部3、デコーダ部5のニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)、および、ボコーダ6のニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)が構築されている。そして、音声合成処理装置100では、当該学習済みモデルを用いて予測処理が実行される。
音声合成処理の対象とする日本語のテキストデータDinをテキスト解析部1に入力する。
テキスト解析部1は、入力されたテキストデータDinに対して、日本語用のテキスト解析処理を実行し、例えば、図2に示すパラメータを含む478次元のベクトルデータとして、フルコンテキストラベルデータDx1を取得する。
そして、取得されたフルコンテキストラベルデータDx1は、テキスト解析部1からフルコンテキストラベルベクトル処理部2に出力される。
フルコンテキストラベルベクトル処理部2は、入力されたフルコンテキストラベルデータDx1に対して、フルコンテキストラベルベクトル処理を実行し、最適化フルコンテキストラベルDx2を取得する。なお、ここで取得される最適化フルコンテキストラベルDx2は、エンコーダ部3、デコーダ部5のsequence-to-sequence方式のニューラルネットワークのモデルの学習処理を行うときに設定した最適化フルコンテキストラベルデータDx2と同じ次元数を有し、かつ、同じパラメータ(情報)を有するデータである。
上記により取得されたデータDx2(最適化フルコンテキストラベルデータDx2)は、フルコンテキストラベルベクトル処理部2からエンコーダ部3のエンコーダ側プレネット処理部31に出力される。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2から入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(t)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(t-1)とを入力する。そして、エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理(ニューラルネットワーク処理)を実行し、処理後のデータをデータDx4(データDx4(t))としてアテンション部4に出力する。
アテンション部4は、エンコーダ部3から出力されるデータDx4と、デコーダ部5のデコーダ側LSTM層52から出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4は、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データhiを所定の時間ステップ分記憶保持する。例えば、アテンション部4は、時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4に出力されたデータDx4(=hi)の集合を、hi1...S(={Dx4(1),Dx4(2),・・・,Dx4(S)})として記憶保持する。
また、アテンション部4は、デコーダ部5のデコーダ側LSTM層52から出力されるデータDy3、すなわち、出力側隠れ状態データhoを所定の時間ステップ分記憶保持する。例えば、アテンション部4は、時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52により取得され、アテンション部4に出力されたデータDy3(=ho)の集合を、ho1...T(={Dy3(1),Dy3(2),・・・,Dy3(T)})として記憶保持する。
そして、アテンション部4は、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
c(t)=f1_attn(hi1...S,ho1...T)
f1_attn():コンテキスト状態データを取得する関数
に相当する処理を実行して、現時刻tのコンテキスト状態データc(t)を取得する。
そして、アテンション部4は、取得したコンテキスト状態データc(t)をデコーダ側LSTM層52に出力する。
デコーダ側プレネット処理部51は、線形予測部53から出力される、1時間ステップ前のデータDy4(t-1)を入力する。デコーダ側プレネット処理部51は、例えば、複数層(例えば、2層)の全結合層を有しており、データの正規化処理(例えば、線形予測部53から出力されるデータ(ベクトルデータ)の次元数が2Nであり、デコーダ側LSTM層に入力されるデータ(ベクトルデータ)の次元数がNである場合、データの次元数をNにするように、例えば、ドロップアウト処理を行うことを含む)、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、デコーダ側LSTM層52に入力可能なデータを取得する。そして、デコーダ側プレネット処理部51は、上記処理(プレネット処理)により取得したデータをデータDy2としてデコーダ側LSTM層52に出力する。
デコーダ側LSTM層52は、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(t)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52から出力されたデータDy3(t-1)と、アテンション部4から出力される時刻tのコンテキスト状態データc(t)とを入力する。
デコーダ側LSTM層52は、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。また、デコーダ側LSTM層52は、データDy3(t)、すなわち、時刻tの出力側隠れ状態データho(t)をアテンション部4に出力する。
線形予測部53は、デコーダ側LSTM層52から出力されるデータDy3を入力する。線形予測部53は、所定の期間(例えば、メルスペクトログラムを取得するための1フレーム期間に相当する期間)内に、デコーダ側LSTM層52から出力されるデータDy3(複数のデータDy3)を記憶保持し、当該複数のデータDy3を用いて線形変換することで、所定期間におけるメルスペクトログラムの予測データDy4を取得する。そして、線形予測部53は、取得したデータDy4をポストネット処理部54、加算器55、および、デコーダ側プレネット処理部51に出力する。
ポストネット処理部54は、例えば、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理やtanh関数による処理)を実行し、予測データ(予測メルスペクトログラム)の残差データ(residual)を取得し、取得した残差データをデータDy5として加算器55に出力する。
加算器55は、線形予測部53から出力される予測データDy4(予測メルスペクトログラムのデータ)と、ポストネット処理部54から出力される残差データDy5(予測メルスペクトログラムの残差データ)とを入力する。加算器55は、予測データDy4(予測メルスペクトログラムのデータ)と、残差データDy5(予測メルスペクトログラムの残差データ)とに対して加算処理を実行し、加算処理後のデータ(予測メルスペクトログラムのデータ)をデータDy6として、ボコーダ6に出力する。
ボコーダ6は、デコーダ部5の加算器55から出力されるデータDy6(予測メルスペクトログラムのデータ(音響特徴量のデータ))を入力とし、入力されたデータDy6に対して、学習済みモデルを用いたニューラルネットワーク処理による音声合成処理を実行し、データDy6(予測メルスペクトログラム)に対応する音声信号波形データを取得する。そして、ボコーダ6は、取得した音声信号波形データを、データDoutとして出力する。
このように、音声合成処理装置100では、入力されたテキストデータDinに対応する音声波形データDoutを取得することができる。
以上のように、音声合成処理装置100では、処理対象言語(上記では日本語)のテキストを入力とし、当該処理対象言語に応じたテキスト解析処理により、フルコンテキストラベルデータを取得し、取得したフルコンテキストラベルデータからsequence-to-sequence方式を用いたニューラルネットワークのモデルで処理(学習処理、および/または、予測処理)を実行するのに適したデータである最適化フルコンテキストラベルデータを取得する。そして、音声合成処理装置100では、入力を最適化フルコンテキストラベルデータとし、出力をメルスペクトログラム(音響特徴量の一例)として、エンコーダ部3、アテンション部4、および、デコーダ部5において、ニューラルネットワークのモデルを用いた処理(学習処理、予測処理)を実行することで、高精度な処理を実現できる。さらに、音声合成処理装置100では、ボコーダ6により、上記により取得したメルスペクトログラム(音響特徴量の一例)から、当該メルスペクトログラムに対応する音声信号波形データを取得し、取得したデータを出力することで、音声波形データ(データDout)を取得する。これにより、音声合成処理装置100では、入力されたテキストに相当する音声波形データを取得することができる。
つまり、音声合成処理装置100では、sequence-to-sequence方式を用いたニューラルネットワークのモデルで処理するのに適した最適化フルコンテキストラベルデータを用いて、ニューラルネットワークによる処理が実行されるため、高精度な音声合成処理を実行することができる。また、音声合成処理装置100では、処理対象言語に応じたテキスト解析処理を行い、当該テキスト解析処理で取得されたフルコンテキストラベルデータから、sequence-to-sequence方式を用いたニューラルネットワークのモデルで処理するのに適した最適化フルコンテキストラベルデータを取得し、取得した最適化フルコンテキストラベルデータを用いて処理を行うことで、任意の処理対象言語について、高精度な音声合成処理を行うことができる。
したがって、音声合成処理装置100では、日本語等の英語以外の言語を処理対象言語とする場合においても(処理対象言語を任意の言語にできる)、sequence-to-sequence方式を用いたテキスト音声合成用のニューラルネットワークのモデルにより、学習・最適化を行い、高品質な音声合成処理を実現することができる。
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
本変形例の音声合成処理装置では、ボコーダ6が、例えば、下記先行技術文献に開示されているような、可逆変換が可能なニューラルネットワークのモデルを用いた処理を行う。この点が第1実施形態と相違し、それ以外については、本変形例の音声合成処理装置は、第1実施形態の音声合成処理装置100と同様である。
(先行技術文献A):
R. Prenger, R. Valle, and B. Catanzaro, “WaveGlow: A flowbased generative network for speech synthesis,” in Proc. ICASSP, May 2019.
図4は、第1実施形態の第1変形例の音声合成処理装置のボコーダ6の概略構成を示す図であり、学習処理時においけるデータの流れを明示した図である。
図5は、第1実施形態の第1変形例の音声合成処理装置のボコーダ6の概略構成を示す図であり、予測処理時においけるデータの流れを明示した図である。
本変形例のボコーダ6は、図4に示すように、ベクトル処理部61と、アップサンプリング処理部62と、m個(m:自然数)の可逆処理部63a~63xとを備える。
まず、本変形例のボコーダ6の学習処理について、説明する。
本変形例のボコーダ6は、学習処理において、音響特徴量としてメルスペクトログラム(これをデータhとする)と、当該メルスペクトログラムに対応する音声信号波形データ(正解データ)(これをデータxとする)とを入力し、ガウス白色ノイズ(これをデータzとする)を出力する。
ベクトル処理部61は、学習処理時において、音声信号波形データxを入力し、入力したデータxに対して、例えば、コンボリューション処理を施して、可逆処理部63a(学習処理時において最初にデータ入力される可逆処理部)に入力可能な次元数のベクトルデータDx1に変換する。そして、ベクトル処理部61は、変換したベクトルデータDx1を可逆処理部63aに出力する。
アップサンプリング処理部62は、音響特徴量としてメルスペクトログラムのデータhを入力し、入力されたメルスペクトログラムのデータhに対して、アップサンプリング処理を実行し、処理後のデータ(アップサンプリングされたメルスペクトログラムのデータ)をデータh1として、可逆処理部63a~63xのそれぞれのWN変換部632に出力する。
可逆処理部63aは、図4に示すように、可逆1×1畳み込み層と、アフィンカップリング層とを備える。
可逆1×1畳み込み層は、ベクトル処理部61から出力されるデータDx1を入力とし、入力されたデータに対して、重み係数行列Wk(k=1)(シナプス間の結合係数(重み係数)を規定する行列)により、ニューラルネットワーク処理を実行する、つまり、
DxA1=W1×Dx1
に相当する処理を実行して、データDxA1を取得する。
なお、重み係数行列Wkは、直行行列となるように設定されており、したがって、逆変換が可能となる。
このようにして取得されたデータDxA1は、可逆1×1畳み込み層からアフィンカップリング層に出力される。
アフィンカップリング層では、データ分割部631により、
x=DxA1
xa,xb=split(x)
split():データ分割をする関数
に相当する処理を実行し、入力データxを2分割し、分割データxaとxbを取得する。例えば、xがn1×2(n1:自然数)のビット数のデータである場合、xaは、xの上位n1ビット分のデータであり、xbは、xの下位n1ビット分のデータである。
そして、データxaは、MN変換部632およびデータ合成部634に出力される。また、データxbは、アフィン変換部633に出力される。
MN変換部632は、データ分割部631から出力されるデータxaと、アップサンプリング処理部62から出力されるアップサンプリングされたメルスペクトログラムのデータh1とを入力する。そして、MN変換部632は、データxaと、データh1とに対して、任意の変換であるMN変換(例えば、WaveNetによる変換)を実行し、アフィン変換のパラメータとするデータsj,tj(sj:アフィン変換用の行列、tj:アフィン変換用のオフセット)を取得する。取得されたアフィン変換のパラメータとするデータsj,tjは、WN変換部632からアフィン変換部633に出力される。
アフィン変換部633は、MN変換部632により取得されたデータsj,tjを用いて、データ分割部631から入力されるデータxbに対して、アフィン変換を行う。つまり、アフィン変換部633は、
xb’=Affin(sj,tj,xb)
=sj×xb+tj
に相当する処理を実行することで、データxbのアフィン変換後のデータxb’を取得し、取得したデータxb’をデータ合成部634に出力する。
データ合成部634では、データ分割部631から出力されるデータxaと、アフィン変換部633から出力されるデータxb’とを入力し、データxaと、データxb’とを合成する処理、すなわち、
Dx2=concat(xa,xb’)
に相当する処理を実行し、データDx2を取得する。なお、データ合成部634でのデータ合成処理は、例えば、xa、xb’が、それぞれ、n1ビットのデータである場合、上位n1ビットがxaとなり、下位n1ビットがxb’となるn1×2ビットのデータを取得する処理である。
このようにして取得されたデータDx2は、可逆処理部63aから、可逆処理部63b(2番目の可逆処理部)に出力される。
可逆処理部63b~63xでは、可逆処理部63aと同様の処理が実行される。つまり、本変形例のボコーダ6では、図4に示すように、可逆処理部63aの処理がm回繰り返し実行される。そして、最終段の可逆処理部63xからのデータzが出力される。なお、本変形例のボコーダ6は、m個の可逆処理部を備えるものとする。
そして、本変形例のボコーダ6では、出力データzが、ガウス白色ノイズとなるように、ニューラルネットワークのモデルの学習を行う。つまり、xを入力としたときのzをz(x)とすると、z(x)がガウス分布N(μ,σ)(μは平均値でありμ=0、σは標準偏差)に従うガウス確率変数となるように、本変形例のボコーダ6のニューラルネットワークのモデルのパラメータを設定する。なお、σは、例えば、入力される音響特徴量としてメルスペクトログラムのデータの情報量Iに相関のあるデータとする。
つまり、本変形例のボコーダ6では、xが入力されたときの尤度(θ:ニューラルネットワークのパラメータ)p
θ(x)を、下記数式により規定することができ、当該尤度p
θ(x)を最大にするパラメータθ
optを取得することで、学習処理を実行する。
p
θ(x):xが入力されたときの尤度(θ:ニューラルネットワークのパラメータ)
s
j(x,h):x、hが入力されたときのj番目のアフィンカップリング層の出力係数ベクトル
W
k:k番目の可逆1×1畳み込み層の係数行列(重み付け係数の行列)
z(x):xが入力されたときの出力値(出力ベクトル)。
h:音響特徴量(ここでは、メルスペクトログラム)
σ
WG
2:ガウス分布の予測分散値
なお、z(x)は、ガウス分布N(μ,σ)(μは平均値でありμ=0、σは標準偏差)に従うガウス確率変数に相当するものである。すなわち、z~N(μ,σ)=N(0,σ)である。また、m1は、アフィンカップリング層の処理の回数、m2は、可逆1×1畳み込み層の処理の回数であり、本変形例のボコーダ6では、m1=m2=mである。
本変形例のボコーダ6では、下記数式に相当する処理を実行することで、本変形例のボコーダ6のニューラルネットワークのモデルの最適化パラメータθ
optを取得する。
本変形例のボコーダ6では、上記の学習処理により取得した最適化パラメータθ
optにより、ニューラルネットワークのモデルのパラメータが設定され(各可逆処理部63b~63xのアフィンカップリング層、可逆1×1畳み込み層のパラメータが設定され)、学習済みモデルが構築される。
次に、本変形例のボコーダ6の予測処理について、説明する。
本変形例のボコーダ6は、予測処理において、音響特徴量としてメルスペクトログラム(これをデータhとする)と、当該メルスペクトログラムの情報量Iに相関のあるデータを標準偏差σとし、平均値を「0」とするガウス白色ノイズzとを入力とする。
本変形例のボコーダ6では、予測処理時において、図5に示すように、学習処理時とは、逆の処理が実行される。
メルスペクトログラムのデータ(例えば、デコーダ部5から出力されるデータDy6)がアップサンプリング処理部62に入力される。
アップサンプリング処理部62は、音響特徴量としてメルスペクトログラムのデータhを入力し、入力されたメルスペクトログラムのデータhに対して、アップサンプリング処理を実行し、処理後のデータ(アップサンプリングされたメルスペクトログラムのデータ)をデータh1として、可逆処理部63a~63xのそれぞれのWN変換部632に出力する。
また、ガウス白色ノイズz(データzという)が可逆処理部63xに入力される。
そして、可逆処理部63xにおいて、入力されたデータzに対して、アフィンカップリング層の処理、可逆1×1畳み込み層の層の処理が実行される。この処理が、図5に示すように、m回繰り返し実行される。各処理は、同様であるので、可逆処理部63aでの処理について、説明する。
データ合成部634では、可逆処理部63bから出力されるデータDx’2を入力し、学習処理時とは逆の処理、すなわち、データ分割処理を実行する。つまり、データ合成部634では、
x=Dx’2
xa,xb’=split(x)
split():データ分割をする関数
に相当する処理を実行し、入力データxを2分割し、分割データxaとxb’を取得する。
そして、データ合成部634は、取得したデータxaをMN変換部632およびデータ分割部631に出力し、データxb’をアフィン変換部633に出力する。
MN変換部632は、データ合成部634から出力されるデータxaと、アップサンプリング処理部62から出力されるアップサンプリングされたメルスペクトログラムのデータh1とを入力する。そして、MN変換部632は、データxaと、データh1とに対して、任意の変換であるMN変換(例えば、WaveNetによる変換)を実行し、アフィン変換のパラメータとするデータsj,tj(sj:アフィン変換用の行列、tj:アフィン変換用のオフセット)を取得する。取得されたアフィン変換のパラメータとするデータsj,tjは、WN変換部632からアフィン変換部633に出力される。
アフィン変換部633は、MN変換部632により取得されたデータsj,tjを用いて、データ合成部634から入力されるデータx’bに対して、アフィン逆変換(学習処理時に行ったアフィン変換の逆変換)を行う。つまり、アフィン変換部633は、
xb=Affin-1(sj,tj,xb’)
に相当する処理を実行することで、データxb’のアフィン逆変換後のデータxbを取得し、取得したデータxbをデータ分割部631に出力する。
データ分割部631は、データ合成部634から出力されるデータxaと、アフィン変換部633から出力されるデータxbとを入力し、データxaと、データxbとを合成する処理、すなわち、
Dx’1=concat(xa,xb)
に相当する処理を実行し、データDx’1を取得する。そして、データ分割部631は、取得したデータDx’1を出力する。
上記のようにして可逆処理部63x~63aにより処理されることで取得されたデータDx’1が、ベクトル処理部61に入力される。
ベクトル処理部61は、学習処理時と逆の処理を実行することで、データDx’1から、予測音声信号波形データxを取得し、出力する。
以上のように処理することで、本変形例のボコーダ6では、入力z(ガウス白色ノイズz)と、メルスペクトログラムのデータhから、予測音声信号波形データxを取得することができる。
本変形例のボコーダ6では、ニューラルネットワークを可逆変換できる構成を採用している。このため、本変形例のボコーダ6では、(1)ガウス白色ノイズが入力されたときに出力される音声波形データの尤度と、(2)音声波形データが入力されたときに出力されるガウス白色ノイズの尤度とを等価にし、学習処理を行いやすい(計算が容易である)後者(音声波形データが入力されたときに出力されるガウス白色ノイズの尤度)により、学習処理を行うことで、効率良く学習処理を行うことができる。
そして、本変形例のボコーダ6では、ニューラルネットワークを可逆変換できる構成を有しているので、上記学習処理により取得した学習済みモデルにより、予測処理を、学習処理時とは逆の処理(逆変換)により実現できる。
このように、本変形例のボコーダ6では、音響特徴量としてメルスペクトログラムのデータから音声波形データを直接予測(取得)できる構成をシンプルな構成で実現できる。そして、本変形例のボコーダ6では、このようなシンプルな構成を有しているので、処理精度を保ちながら、予測処理を高速に行うことができ、音声合成処理をリアルタイムで実行することが可能になる。
図6は、本変形例の音声合成処理装置によりTTS処理(処理対象言語:日本語)実行し、取得した音声波形データのメルスペクトログラム(予測データ)と、入力テキストの実際の音声波形データのメルスペクトログラム(オリジナルデータ)とを示す図である。
図6から分かるように、本変形例の音声合成処理装置によりTTS処理では、非常に高精度な音声波形データが予測(取得)できる。
[第2実施形態]
次に、第2実施形態について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
第1実施形態では、エンコーダ・デコーダ方式(sequence-to-sequence方式)を用いたの音声合成処理装置100について、説明した。第1実施形態の音声合成処理装置100は、注意機構(アテンション部4)を備えており、音素継続長と音響モデルとを注意機構を用いて同時に最適化するニューラル音声合成処理を実現することができる。これにより、第1実施形態の音声合成処理装置100では、自然音声クラスの高音質なテキスト音声合成を実現できる。しかしながら、第1実施形態の音声合成処理装置100では、推論時(予測処理時)に、まれに注意機構予測が失敗することがあり、これにより合成発話が途中で止まってしまう、同じフレーズを何回も繰り返してしまう、等の問題がある。
第2実施形態では、上記問題を解決するための技術について、説明する。
<2.1:音声合成処理装置の構成>
図7は、第2実施形態に係る音声合成処理装置200の概略構成図である。
第2実施形態に係る音声合成処理装置200は、第1実施形態の音声合成処理装置100において、アテンション部4を削除し、音素継続長推定部7を追加した構成を有している。そして、第2実施形態に係る音声合成処理装置200は、第1実施形態の音声合成処理装置100において、テキスト解析部1をテキスト解析部1Aに置換し、フルコンテキストラベルベクトル処理部2をフルコンテキストラベルベクトル処理部2Aに置換し、デコーダ部5をデコーダ部5Aに置換した構成を有している。
テキスト解析部1Aは、第1実施形態のテキスト解析部1と同様の機能を有しており、さらに、音素のコンテキストラベルを取得する機能を有している。テキスト解析部1Aは、処理対象言語のテキストデータDinから音素のコンテキストラベルを取得し、取得した音素のコンテキストラベルのデータをデータDx01として、音素継続長推定部7に出力する。
音素継続長推定部7は、テキスト解析部1Aから出力されるデータDx01(音素のコンテキストラベルのデータ)を入力する。音素継続長推定部7は、データDx01(音素のコンテキストラベルのデータ)から、データDx01に対応する音素の音素継続長を推定(取得)する音素継続長推定処理を実行する。具体的には、音素継続長推定部7は、例えば、隠れマルコフモデル(HMM:Hidden Markov Model)、ニューラルネットワークモデル等を用いた、音素のコンテキストラベルから当該音素の音素継続長を推定(予測)するモデル(処理システム)により、音素継続長推定処理を実行する。
そして、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータをデータDx02として、フルコンテキストラベルベクトル処理部2Aに出力する。
フルコンテキストラベルベクトル処理部2Aは、第1実施形態のフルコンテキストラベルベクトル処理部2と同様の機能を有しており、さらに、音素継続長推定部7により推定された音素継続長に相当する期間において、当該音素継続長に対応する音素についての最適化フルコンテキストラベルデータをエンコーダ部3に継続して出力する機能を有する。
フルコンテキストラベルベクトル処理部2Aは、テキスト解析部1から出力されるデータDx1(フルコンテキストラベルのデータ)と、音素継続長推定部7から出力されるデータDx02(音素の音素継続長のデータ)とを入力する。
フルコンテキストラベルベクトル処理部2Aは、テキスト解析部1Aから出力されるデータDx1(フルコンテキストラベルのデータ)を入力する。フルコンテキストラベルベクトル処理部2Aは、入力されたフルコンテキストラベルデータDx1から、sequence-to-sequence方式のニューラルネットワークのモデルの学習処理に適したフルコンテキストラベルデータを取得するためのフルコンテキストラベルベクトル処理を実行する。そして、フルコンテキストラベルベクトル処理部2Aは、フルコンテキストラベルベクトル処理により取得したデータをデータDx2(最適化フルコンテキストラベルデータDx2)として、エンコーダ部3のエンコーダ側プレネット処理部31に出力する。このとき、フルコンテキストラベルベクトル処理部2Aは、音素継続長推定部7により推定された音素継続長に相当する期間において、当該音素継続長に対応する音素についての最適化フルコンテキストラベルデータをエンコーダ部3に継続して出力する。
デコーダ部5Aは、第1実施形態のデコーダ部5において、デコーダ側LSTM層52をデコーダ側LSTM層52Aに置換した構成を有している。それ以外は、デコーダ部5Aは、第1実施形態のデコーダ部5と同様である。
デコーダ側LSTM層52Aは、デコーダ側LSTM層52と同様の機能を有している。デコーダ側LSTM層52Aは、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(これをデータDy2(t)と表記する)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52Aから出力されたデータDy3(これをデータDy3(t-1)と表記する)と、エンコーダ部3から出力される時刻tの入力側隠れ状態データhi(t)を入力する。
デコーダ側LSTM層52Aは、入力されたデータDy2(t)、データDy3(t-1)、および、入力側隠れ状態データhi(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(データDy3(t))として線形予測部53に出力する。
<2.2:音声合成処理装置の動作>
以上のように構成された音声合成処理装置200の動作について以下説明する。
図8は、推定された音素継続長に基づいて、エンコーダ部3に入力するデータDx2を生成する処理を説明するための図である。
以下では、音声合成処理装置200の動作を、(1)学習処理(学習時の処理)と、(2)予測処理(予測時の処理)とに分けて説明する。
(2.2.1:学習処理)
まず、音声合成処理装置200による学習処理について、説明する。なお、説明便宜のため、処理対象言語を日本語として、以下、説明する。
処理対象言語である日本語のテキストデータDinをテキスト解析部1Aに入力する。また、当該テキストデータDinに対応するメルスペクトログラム(音響特徴量)のデータを教師データとして用意する。
テキスト解析部1Aは、第1実施形態と同様に、入力されたテキストデータDinに対して、テキスト解析処理を実行し、様々な言語情報からなるコンテキストを含む音素ラベルであるコンテキストラベルの系列を取得する。
テキスト解析部1Aは、第1実施形態と同様に、取得したフルコンテキストラベルデータをデータDx1としてフルコンテキストラベルベクトル処理部2に出力する。
また、テキスト解析部1Aは、処理対象言語のテキストデータDinから音素のコンテキストラベルを取得し、取得した音素のコンテキストラベルのデータをデータDx01として、音素継続長推定部7に出力する。
音素継続長推定部7は、テキスト解析部1Aから出力されるデータDx01(音素のコンテキストラベルのデータ)から、データDx01に対応する音素の音素継続長を推定(取得)する音素継続長推定処理を実行する。具体的には、音素継続長推定部7は、例えば、隠れマルコフモデル(HMM:Hidden Markov Model)、ニューラルネットワークモデル等を用いた、音素のコンテキストラベルから当該音素の音素継続長を推定(予測)するモデル(処理システム)により、音素継続長推定処理を実行する。
そして、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータをデータDx02として、フルコンテキストラベルベクトル処理部2Aに出力する。
フルコンテキストラベルベクトル処理部2Aは、テキスト解析部1Aから出力されるデータDx1(フルコンテキストラベルのデータ)から、sequence-to-sequence方式のニューラルネットワークのモデルの学習処理に適したフルコンテキストラベルデータを取得するためのフルコンテキストラベルベクトル処理(第1実施形態と同様のフルコンテキストラベルベクトル処理)を実行する。そして、フルコンテキストラベルベクトル処理部2Aは、フルコンテキストラベルベクトル処理により取得したデータをデータDx2(最適化フルコンテキストラベルデータDx2)として、エンコーダ部3のエンコーダ側プレネット処理部31に出力する。このとき、フルコンテキストラベルベクトル処理部2Aは、音素継続長推定部7により推定された音素継続長に相当する期間において、当該音素継続長に対応する音素についての最適化フルコンテキストラベルデータをエンコーダ部3に継続して出力する。
フルコンテキストラベルベクトル処理部2Aにより取得されたデータDx2(最適化フルコンテキストラベルデータDx2)は、フルコンテキストラベルベクトル処理部2からのエンコーダ部3のエンコーダ側プレネット処理部31に出力される。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2から入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(t)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(t-1)とを入力する。そして、エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理を実行し、処理後のデータをデータDx4(データDx4(t)(=入力側隠れ状態データhi(t)))としてデコーダ部5Aのデコーダ側LSTM層52Aに出力する。
デコーダ側プレネット処理部51は、線形予測部53から出力される、1時間ステップ前のデータDy4(t-1)を入力する。デコーダ側プレネット処理部51は、例えば、複数層(例えば、2層)の全結合層を有しており、データの正規化処理(例えば、線形予測部53から出力されるデータ(ベクトルデータ)の次元数が2Nであり、デコーダ側LSTM層に入力されるデータ(ベクトルデータ)の次元数がNである場合、データの次元数をNにするように、例えば、ドロップアウト処理を行うことを含む)、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、デコーダ側LSTM層52に入力可能なデータを取得する。そして、デコーダ側プレネット処理部51は、上記処理(プレネット処理)により取得したデータをデータDy2としてデコーダ側LSTM層52に出力する。
デコーダ側LSTM層52Aは、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(t)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52から出力されたデータDy3(t-1)と、エンコーダ部3から出力される時刻tの入力側隠れ状態データhi(t)(=Dx4(t))とを入力する。
デコーダ側LSTM層52Aは、入力されたデータDy2(t)、データDy3(t-1)、および、入力側隠れ状態データhi(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。
線形予測部53、ポストネット処理部54、および、加算器55では、第1実施形態と同様の処理が実行される。
そして、音声合成処理装置200では、上記のように取得されたデータDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)とを比較し、両者の差(比較結果)(例えば、差分ベクトルのノルムやユークリッド距離により表現する差)が小さくなるように、エンコーダ部3、デコーダ部5Aのニューラルネットワークのモデルのパラメータを更新する。音声合成処理装置100では、このパラメータ更新処理を繰り返し実行し、データDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)との差が十分小さくなる(所定の誤差範囲におさまる)、ニューラルネットワークのモデルのパラメータを最適化パラメータとして取得する。
音声合成処理装置200では、上記のようにして取得した最適化パラメータに基づいて、エンコーダ部3、デコーダ部5Aのニューラルネットワークのモデルの各層に含まれるシナプス間の結合係数(重み係数)を設定することで、エンコーダ部3、デコーダ部5Aのニューラルネットワークのモデルを最適化モデル(学習済みモデル)とすることができる。
以上により、音声合成処理装置200において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
なお、音声合成処理装置200において、第1実施形態の音声合成処理装置100における学習処理により取得したニューラルネットワークの学習済みモデル(最適化モデル)を用いてもよい。つまり、音声合成処理装置200において、第1実施形態の音声合成処理装置100における学習処理により取得したニューラルネットワークの学習済みモデルのエンコーダ部3およびデコーダ部5の最適パラメータを用いて、音声合成処理装置200のエンコーダ部3およびデコーダ部5Aのパラメータを設定することで、音声合成処理装置200において、学習済みモデルを構築するようにしてもよい。
また、ボコーダ6として、ニューラルネットワークによるモデルを用いたボコーダを採用する場合、その学習処理は、第1実施形態と同様である。
これにより、第1実施形態と同様に、ボコーダ6において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
なお、音声合成処理装置200において、(1)エンコーダ部3、デコーダ部5Aの学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行してもよいし、上記のように、個別に学習処理を実行してもよい。音声合成処理装置200において、(1)エンコーダ部3、デコーダ部5Aの学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行する場合、入力をテキストデータとし、当該テキストデータに対応する音声波形データ(正解の音声波形データ)とを用いて、(1)エンコーダ部3、デコーダ部5Aのニューラルネットワークのモデルと、(2)ボコーダ6のニューラルネットワークのモデルの最適化パラメータを取得することで学習処理を実行すればよい。
(2.2.2:予測処理)
次に、音声合成処理装置200による予測処理について、説明する。なお、予測処理においても、説明便宜のため、処理対象言語を日本語として、以下、説明する。
予測処理を実行する場合、音声合成処理装置200では、上記の学習処理により取得された学習済みモデル、すなわち、エンコーダ部3、デコーダ部5Aのニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)、および、ボコーダ6のニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)が構築されている。そして、音声合成処理装置200では、当該学習済みモデルを用いて予測処理が実行される。
音声合成処理の対象とする日本語のテキストデータDinをテキスト解析部1Aに入力する。
テキスト解析部1Aは、入力されたテキストデータDinに対して、日本語用のテキスト解析処理を実行し、例えば、図2に示すパラメータを含む478次元のベクトルデータとして、フルコンテキストラベルデータDx1を取得する。
そして、取得されたフルコンテキストラベルデータDx1は、テキスト解析部1Aからフルコンテキストラベルベクトル処理部2Aに出力される。
また、テキスト解析部1Aは、処理対象言語のテキストデータDinから音素のコンテキストラベルを取得し、取得した音素のコンテキストラベルのデータをデータDx01として、音素継続長推定部7に出力する。
音素継続長推定部7は、テキスト解析部1Aから出力されるデータDx01(音素のコンテキストラベルのデータ)から、データDx01に対応する音素の音素継続長を推定(取得)する音素継続長推定処理を実行する。具体的には、音素継続長推定部7は、例えば、隠れマルコフモデル(HMM:Hidden Markov Model)、ニューラルネットワークモデル等を用いた、音素のコンテキストラベルから当該音素の音素継続長を推定(予測)するモデル(処理システム)により、音素継続長推定処理を実行する。
例えば、図8に示すように、入力データDinが「今日の天気は...」である場合、データDx01に含まれる各音素のデータを、
(1)ph0=「k」、(2)ph1=「y」、(3)ph2=「ou」、(4)ph3=「n」、(5)ph04=「o」、(6)phsil=無音状態、(7)ph5=「t」、(8)ph6=「e」、(9)ph07=「n」、・・・
とし、音素phk(k:整数)の推定された音素継続長をdur(phk)とすると、音素継続長推定部7は、音素phk(k:整数)のコンテキストラベルを用いて、音素継続長推定処理を実行することで、音素phkの推定された音素継続長dur(phk)を取得する。例えば、上記の各音素(音素phk)について、音素継続長推定部7により取得(推定)された音素継続長dur(phk)が、図8に示す時間の長さ(継続長)を有するものとする。
そして、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータ(図8の場合、dur(phk))をデータDx02として、フルコンテキストラベルベクトル処理部2Aに出力する。
フルコンテキストラベルベクトル処理部2Aは、入力されたフルコンテキストラベルデータDx1に対して、フルコンテキストラベルベクトル処理を実行し、最適化フルコンテキストラベルDx2を取得する。なお、ここで取得される最適化フルコンテキストラベルDx2は、エンコーダ部3、デコーダ部5Aのsequence-to-sequence方式のニューラルネットワークのモデルの学習処理を行うときに設定した最適化フルコンテキストラベルデータDx2と同じ次元数を有し、かつ、同じパラメータ(情報)を有するデータである。
上記により取得されたデータDx2(最適化フルコンテキストラベルデータDx2)は、フルコンテキストラベルベクトル処理部2からエンコーダ部3のエンコーダ側プレネット処理部31に出力される。このとき、フルコンテキストラベルベクトル処理部2Aは、音素継続長推定部7により推定された音素継続長に相当する期間において、当該音素継続長に対応する音素についての最適化フルコンテキストラベルデータをエンコーダ部3に継続して出力する。例えば、図8に示すように、音素phkについての最適化フルコンテキストラベルデータをデータDx2(phk)とすると、フルコンテキストラベルベクトル処理部2Aは、音素phkについての最適化フルコンテキストラベルデータDx2(phk)を、当該音素phkの推定された音素継続長dur(phk)に相当する期間において、継続してエンコーダ部3に出力する。
つまり、音素phkについての最適化フルコンテキストラベルデータDx2(phk)は、推定された音素継続長dur(phk)に相当する期間、繰り返しエンコーダ部3に出力される。すなわち、フルコンテキストラベルベクトル処理部2Aでは、推定された音素継続長dur(phk)に基づいて、エンコーダ部3へ入力するデータ(最適化フルコンテキストラベルデータDx2(phk))の時間引き延ばし処理が実行される。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2Aから入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(t)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(t-1)とを入力する。そして、エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理(ニューラルネットワーク処理)を実行し、処理後のデータをデータDx4(データDx4(t)(=入力側隠れ状態データhi(t)))としてデコーダ部5Aのデコーダ側LSTM層52Aに出力する。
デコーダ側LSTM層52Aは、入力されたデータDy2(t)、データDy3(t-1)、および、入力側隠れ状態データhi(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。
線形予測部53、ポストネット処理部54、および、加算器55では、第1実施形態と同様の処理が実行される。
ボコーダ6は、デコーダ部5Aの加算器55から出力されるデータDy6(予測メルスペクトログラムのデータ(音響特徴量のデータ))を入力とし、入力されたデータDy6に対して、学習済みモデルを用いたニューラルネットワーク処理による音声合成処理を実行し、データDy6(予測メルスペクトログラム)に対応する音声信号波形データを取得する。そして、ボコーダ6は、取得した音声信号波形データを、データDoutとして出力する。
このように、音声合成処理装置200では、入力されたテキストデータDinに対応する音声波形データDoutを取得することができる。
以上のように、音声合成処理装置200では、処理対象言語(上記では日本語)のテキストを入力とし、当該処理対象言語に応じたテキスト解析処理により、フルコンテキストラベルデータを取得し、取得したフルコンテキストラベルデータからsequence-to-sequence方式を用いたニューラルネットワークのモデルで処理(学習処理、および/または、予測処理)を実行するのに適したデータである最適化フルコンテキストラベルデータを取得する。そして、音声合成処理装置200では、入力を最適化フルコンテキストラベルデータとし、出力をメルスペクトログラム(音響特徴量の一例)として、エンコーダ部3、および、デコーダ部5Aにおいて、ニューラルネットワークのモデルを用いた処理(学習処理、予測処理)を実行することで、高精度な処理を実現できる。さらに、音声合成処理装置200では、ボコーダ6により、上記により取得したメルスペクトログラム(音響特徴量の一例)から、当該メルスペクトログラムに対応する音声信号波形データを取得し、取得したデータを出力することで、音声波形データ(データDout)を取得する。これにより、音声合成処理装置200では、入力されたテキストに相当する音声波形データを取得することができる。
さらに、音声合成処理装置200では、エンコーダ部3への入力データ(最適化フルコンテキストラベルデータ)を、音素継続長推定部7により取得(推定)した音素ごとの音素継続長に基づいて、引き延ばす処理(音素phkの音素継続長dur(phk)に相当する期間、音素phkの最適化フルコンテキストラベルデータを、繰り返しエンコーダ部3に入力する処理)を実行する。つまり、音声合成処理装置200では、安定して音素継続長を適切に推定することができる、隠れマルコフモデル等のモデルを用いた推定処理を実行して取得した音素継続長を用いて予測処理を実行するので、注意機構予測が失敗することに起因する、合成発話が途中で止まってしまう、同じフレーズを何回も繰り返してしまう、等の問題が発生することはない。
すなわち、音声合成処理装置200では、(1)音素継続長については、安定して音素継続長を適切に推定することができる、隠れマルコフモデル等のモデルを用いた推定処理(音素継続長推定部7による処理)により取得し、(2)音響特徴量については、sequence-to-sequence方式を用いたニューラルネットワークのモデルで処理することにより取得する。
したがって、音声合成処理装置200では、注意機構予測が失敗することに起因する、合成発話が途中で止まってしまう、同じフレーズを何回も繰り返してしまう、等の問題が発生することを適切に防止するとともに、高精度な音声合成処理を実行することができる。
[第3実施形態]
次に、第3実施形態について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
<3.1:音声合成処理装置の構成>
図9は、第3実施形態に係る音声合成処理装置300の概略構成図である。
第3実施形態に係る音声合成処理装置300は、第1実施形態の音声合成処理装置100において、テキスト解析部1をテキスト解析部1Aに置換し、アテンション部4をアテンション部4Aに置換し、デコーダ部5をデコーダ部5Bに置換した構成を有している。そして、音声合成処理装置300は、音声合成処理装置100において、音素継続長推定部7と、強制アテンション部8と、内分処理部9と、コンテキスト算出部10とを追加した構成を有している。
テキスト解析部1A、および、音素継続長推定部7は、第2実施形態のテキスト解析部1Aと同様の構成、機能を有している。
なお、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータをデータDx02として、強制アテンション部8に出力する。
アテンション部4Aは、エンコーダ部3から出力されるデータDx4と、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4Aは、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データhiを所定の時間ステップ分記憶保持する。時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4Aに出力されたデータDx4(=hi)の集合を、hi1...Sと表記する。つまり、アテンション部4Aは、下記に相当するデータhi1...Sを記憶保持する。
hi1...S={Dx4(1),Dx4(2),・・・,Dx4(S)}
また、アテンション部4Aは、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータDy3、すなわち、出力側隠れ状態データhoを所定の時間ステップ分記憶保持する。時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52Bにより取得され、アテンション部4Aに出力されたデータDy3(=ho)の集合を、ho1...Tと表記する。つまり、アテンション部4Aは、下記に相当するデータho1...Tを記憶保持する。
ho1...T={Dy3(1),Dy3(2),・・・,Dy3(T)}
そして、アテンション部4Aは、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
watt(t)1...S=f2_attn(hi1...S,ho1...T)
f2_attn():重み付け係数データを取得する関数
に相当する処理を実行して、現時刻tの重み付け係数データwatt(t)1...Sを取得する。そして、アテンション部4Aは、取得した重み付け係数データwatt(t)1...Sを内分処理部9に出力する。なお、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データの集合データを重み付け係数データwatt(t)1...Sと表記する。
また、アテンション部4Aは、データDx4(=hi)の集合データhi1...Sをコンテキスト算出部10に出力する。
強制アテンション部8は、音素継続長推定部7から出力される推定された音素継続長のデータDx02を入力する。強制アテンション部8は、音素継続長データDx02に対応する音素についてのエンコーダ部3により処理されたデータが出力されるとき、当該音素の推定された音素継続長(音素継続長データDx02)に相当する期間、重み付け係数を強制的に所定の値(例えば、「1」)にした重み付け係数データwf(t)を生成する。なお、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データと対応づけるために、時刻tを中心として、S個にデータを拡張(同一データを複製して拡張)した重み付け係数データwf(t)を重み付け係数データwf(t)1...Sと表記する。
強制アテンション部8は、上記により生成した重み付け係数データwf(t)1...Sを内分処理部9に出力する。
内分処理部9は、アテンション部4Aから出力される重み付け係数データwatt(t)1...Sと、強制アテンション部8から出力される重み付け係数データwf(t)1...Sとを入力する。そして、内分処理部9は、重み付け係数データwatt(t)1...Sと、重み付け係数データwf(t)1...Sとに対して、内分処理を実行することで、合成重み付け係数データw(t)を取得する。具体的には、内分処理部9は、
w(t)1...S=(1-α)×watt(t)1...S+α×wf(t)1...S
0≦α≦1
に相当する処理を実行することで、合成重み付け係数データw(t)を取得する。なお、上記数式(内分処理)は、それぞれ対応する要素ごとに、内分処理を実行することを表している。つまり、j番目(1≦j≦S)のデータについては、
w(t)j=(1-α)×watt(t)j+α×wf(t)j
に相当する処理が実行されることで、j番目の合成重み付け係数データw(t)jが取得される。
そして、内分処理部9は、取得した合成重み付け係数データw(t)1...Sをコンテキスト算出部10に出力する。
コンテキスト算出部10は、アテンション部4Aから出力されるデータDx4(=hi)の集合データhi1...Sと、内分処理部9から出力される合成重み付け係数データw(t)1...Sとを入力する。そして、コンテキスト算出部10は、合成重み付け係数データw(t)1...Sに基づいて、データDx4(=hi)の集合データhi1...Sに対して、重み付け加算処理を実行することで、コンテキスト状態データc(t)を取得する。そして、コンテキスト算出部10は、取得したコンテキスト状態データc(t)をデコーダ部5Bのデコーダ側LSTM層52Bに出力する。
デコーダ部5Bは、第1実施形態のデコーダ部5において、デコーダ側LSTM層52をデコーダ側LSTM層52Bに置換した構成を有している。それ以外は、デコーダ部5Bは、第1実施形態のデコーダ部5と同様である。
デコーダ側LSTM層52Bは、デコーダ側LSTM層52と同様の機能を有している。デコーダ側LSTM層52Bは、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(これをデータDy2(t)と表記する)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52Bから出力されたデータDy3(これをデータDy3(t-1)と表記する)と、コンテキスト算出部10から出力される時刻tのコンテキスト状態データc(t)とを入力する。
デコーダ側LSTM層52Bは、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(データDy3(t))として線形予測部53に出力する。また、デコーダ側LSTM層52Bは、データDy3(t)、すなわち、時刻tの出力側隠れ状態データho(t)をアテンション部4Aに出力する。
<3.2:音声合成処理装置の動作>
以上のように構成された音声合成処理装置300の動作について以下説明する。
図10~図12は、アテンション部4Aにより取得された重み付け係数データwatt(t)と、強制アテンション部8により取得された重み付け係数データwf(t)とから取得した合成重み付け係数データw(t)を用いてコンテキスト状態データc(t)を取得する処理について説明するための図である。
(3.2.1:学習処理)
まず、音声合成処理装置300による学習処理について、説明する。なお、説明便宜のため、処理対象言語を日本語として、以下、説明する。
処理対象言語である日本語のテキストデータDinをテキスト解析部1Aに入力する。また、当該テキストデータDinに対応するメルスペクトログラム(音響特徴量)のデータを教師データとして用意する。
テキスト解析部1Aは、第1実施形態と同様に、入力されたテキストデータDinに対して、テキスト解析処理を実行し、様々な言語情報からなるコンテキストを含む音素ラベルであるコンテキストラベルの系列を取得する。
テキスト解析部1Aは、第1実施形態と同様に、取得したフルコンテキストラベルデータをデータDx1としてフルコンテキストラベルベクトル処理部2に出力する。
また、テキスト解析部1Aは、処理対象言語のテキストデータDinから音素のコンテキストラベルを取得し、取得した音素のコンテキストラベルのデータをデータDx01として、音素継続長推定部7に出力する。
音素継続長推定部7は、テキスト解析部1Aから出力されるデータDx01(音素のコンテキストラベルのデータ)から、データDx01に対応する音素の音素継続長を推定(取得)する音素継続長推定処理を実行する。具体的には、音素継続長推定部7は、例えば、隠れマルコフモデル(HMM:Hidden Markov Model)、ニューラルネットワークモデル等を用いた、音素のコンテキストラベルから当該音素の音素継続長を推定(予測)するモデル(処理システム)により、音素継続長推定処理を実行する。
そして、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータをデータDx02として、強制アテンション部8に出力する。
フルコンテキストラベルベクトル処理部2Aは、テキスト解析部1Aから出力されるデータDx1(フルコンテキストラベルのデータ)から、sequence-to-sequence方式のニューラルネットワークのモデルの学習処理に適したフルコンテキストラベルデータを取得するためのフルコンテキストラベルベクトル処理(第1実施形態と同様のフルコンテキストラベルベクトル処理)を実行する。そして、フルコンテキストラベルベクトル処理部2Aは、フルコンテキストラベルベクトル処理により取得したデータをデータDx2(最適化フルコンテキストラベルデータDx2)として、エンコーダ部3のエンコーダ側プレネット処理部31に出力する。
フルコンテキストラベルベクトル処理部2Aにより取得されたデータDx2(最適化フルコンテキストラベルデータDx2)は、フルコンテキストラベルベクトル処理部2からのエンコーダ部3のエンコーダ側プレネット処理部31に出力される。
エンコーダ側プレネット処理部31は、フルコンテキストラベルベクトル処理部2から入力したデータDx2に対して、コンボリューション処理(コンボリューションフィルタによる処理)、データの正規化処理、活性化関数による処理(例えば、ReLU関数(ReLU:Rectified Linear Unit)による処理)を実行し、エンコーダ側LSTM層32に入力可能なデータを取得する。そして、エンコーダ側プレネット処理部31は、上記処理(プレネット処理)により取得したデータをデータDx3としてエンコーダ側LSTM層32に出力する。
エンコーダ側LSTM層32は、エンコーダ側プレネット処理部31から、現時刻tにおいて出力されるデータDx3(t)と、1つ前の時間ステップにおいて、エンコーダ側LSTM層32から出力されたデータDx4(t-1)とを入力する。そして、エンコーダ側LSTM層32は、入力されたデータDx3(t)、データDx4(t-1)に対して、LSTM層による処理を実行し、処理後のデータをデータDx4(データDx4(t)(=入力側隠れ状態データhi(t)))としてアテンション部4Aに出力する。
アテンション部4Aは、エンコーダ部3から出力されるデータDx4と、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4Aは、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データhiを所定の時間ステップ分記憶保持する。例えば、アテンション部4Aは、時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4Aに出力されたデータDx4(=hi)の集合を、hi1...S(={Dx4(1),Dx4(2),・・・,Dx4(S)})として記憶保持する。
また、アテンション部4Aは、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータDy3、すなわち、出力側隠れ状態データhoを所定の時間ステップ分記憶保持する。例えば、アテンション部4Aは、時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52Bにより取得され、アテンション部4Aに出力されたデータDy3(=ho)の集合を、ho1...T(={Dy3(1),Dy3(2),・・・,Dy3(T)})として記憶保持する。
そして、アテンション部4Aは、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
watt(t)1...S=f2_attn(hi1...S,ho1...T)
f2_attn():重み付け係数データを取得する関数
に相当する処理を実行して、現時刻tの重み付け係数データwatt(t)1...Sを取得する。
そして、アテンション部4Aは、取得した重み付け係数データwatt(t)1...Sを内分処理部9に出力する。また、アテンション部4Aは、データDx4(=hi)の集合データhi1...Sをコンテキスト算出部10に出力する。
強制アテンション部8は、音素継続長データDx02に対応する音素についてのエンコーダ部3により処理されたデータが出力されるとき、当該音素の推定された音素継続長(音素継続長データDx02)に相当する期間、重み付け係数を強制的に所定の値(例えば、「1」)にした重み付け係数データwf(t)を生成する。そして、強制アテンション部8は、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データと対応づけるために(内分処理ができるようにするために)、時刻tを中心として、S個にデータを拡張(同一データを複製して拡張)した重み付け係数データwf(t)1...Sを生成する。
強制アテンション部8は、上記により生成した重み付け係数データwf(t)1...Sを内分処理部9に出力する。
内分処理部9は、アテンション部4Aから出力される重み付け係数データwatt(t)1...Sと、強制アテンション部8から出力される重み付け係数データwf(t)1...Sとを入力する。そして、内分処理部9は、重み付け係数データwatt(t)1...Sと、重み付け係数データwf(t)1...Sとに対して、内分処理を実行することで、合成重み付け係数データw(t)を取得する。具体的には、内分処理部9は、
w(t)1...S=(1-α)×watt(t)1...S+α×wf(t)1...S
0≦α≦1
に相当する処理を実行することで、合成重み付け係数データw(t)1...Sを取得する。そして、内分処理部9は、取得した合成重み付け係数データw(t)1...Sをコンテキスト算出部10に出力する。
コンテキスト算出部10は、アテンション部4Aから出力されるデータDx4(=hi)の集合データhi1...Sと、内分処理部9から出力される合成重み付け係数データw(t)1...Sとを入力する。そして、コンテキスト算出部10は、合成重み付け係数データw(t)1...Sに基づいて、データDx4(=hi)の集合データhi1...Sに対して、重み付け加算処理を実行することで、コンテキスト状態データc(t)を取得する。そして、コンテキスト算出部10は、取得したコンテキスト状態データc(t)をデコーダ部5Bのデコーダ側LSTM層52Bに出力する。
なお、学習処理時において、内分比αを「0」に固定してもよい。この場合(内分比αを「0」に固定した場合)、音声合成処理装置300では、第1実施形態と同様の構成により学習処理が実行されることになる。また、学習処理時において、内分比αを所定の値(例えば、0.5)に固定して、音声合成処理装置300において、学習処理を実行してもよい。
ここで、学習処理時において、内分比αを所定の値に固定する場合について、図10~図12を用いて説明する。なお、説明便宜のため、内分比αを「0.5」に固定する場合について、説明する。以下では、(1)音素に対応する音声が出力される期間内の処理(図11の場合)と、(2)無音状態である期間内の処理(図12の場合)とについて説明する。
まず、「(1)音素に対応する音声が出力される期間内の処理(図11の場合)」について、説明する。
例えば、図10に示すように、入力データDinが「今日の天気は...」である場合、データDx01に含まれる各音素のデータを、
(1)ph0=「k」、(2)ph1=「y」、(3)ph2=「ou」、(4)ph3=「n」、(5)ph04=「o」、(6)phsil=無音状態、(7)ph5=「t」、(8)ph6=「e」、(9)ph07=「n」、・・・
とし、音素phk(k:整数)の推定された音素継続長をdur(phk)とすると、音素継続長推定部7は、音素phk(k:整数)のコンテキストラベルを用いて、音素継続長推定処理を実行することで、音素phkの推定された音素継続長dur(phk)を取得する。例えば、上記の各音素(音素phk)について、音素継続長推定部7により取得(推定)された音素継続長dur(phk)が、図10に示す時間の長さ(継続長)を有するものとする。
強制アテンション部8は、音素継続長データDx02に対応する音素についてのエンコーダ部3により処理されたデータが出力されるとき、当該音素の推定された音素継続長(音素継続長データDx02)に相当する期間、重み付け係数を強制的に所定の値(例えば、「1」)にした重み付け係数データwf(t)を生成する。図10の場合、強制アテンション部8は、音素phkについてのエンコーダ部3により処理されたデータが出力されるとき、音素phkの音素継続長dur(phk)に相当する期間、重み付け係数を強制的に所定の値(例えば、「1」)にした重み付け係数データwf(t)を内分処理部9に出力し続ける(図10において、wf(t)[phk]と表記した部分に相当)。
また、図10において、処理対象の音素に対応付けて、アテンション部4Aにより取得された重み付け係数データwatt(t)を示している。具体的には、図10において、音素phkに対応する、アテンション部4Aにより取得された重み付け係数データwatt(t)が出力される期間を「watt(t)[phk]」として示している。なお、説明便宜のため、図10では、アテンション部4Aによる音素継続長の予測が正しくなされた場合を示している。
また、図10において、音素phkに対応する合成重み付け係数データw(t)を「w(t)[phk]」として示している。
図11は、時刻t2(時間ステップt2)における処理を説明するための図であり、図10において処理対象音素が「ou」であるときの期間の一部を時間軸方向に拡大して示した図である。なお、説明便宜のため、音声合成処理装置300において、データDx4(=hi)の集合データhi1...Sは、9個のデータ(すなわち、S=9)(図11において、期間T(t2)において取得され、記憶保持されているデータ)であるものとする(以下、同様)。
ここで、時刻t2における処理について、説明する。
強制アテンション部8は、時刻t2において、音素継続長Dx02から、音素「ou」に相当する音声が出力継続される期間であることを認識し、時刻t2の重み付け係数データwf(t)を「1」に設定する。さらに、強制アテンション部8は、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データと対応づけるために(内分処理ができるようにするために)、時刻t2を中心として、S(=9)個にデータを拡張(同一データを複製して拡張)した重み付け係数データwf(t)1...Sを生成する。なお、wf(t)1...Sは、
wf(t)1...S={w01,w02,w03,w04,w05,w06,w07,w08,w09}
0≦w0j≦1(1≦j≦S)
t=t2
であるものとし、wf(t2)1...Sにおいて、w01~w09は、すべて「1」に設定される(図11参照)。
強制アテンション部8は、上記により生成した重み付け係数データwf(t2)1...Sを内分処理部9に出力する。
アテンション部4Aは、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
watt(t)1...S=f2_attn(hi1...S,ho1...T)
f2_attn():重み付け係数データを取得する関数
に相当する処理を実行して、時刻t2の重み付け係数データwatt(t2)1...Sを取得する。時刻t2の重み付け係数データwatt(t)1...Sが図11に示すデータ(一例)であるものとする。なお、watt(t)1...Sは、
watt(t)1...S={w11,w12,w13,w14,w15,w16,w17,w18,w19}
0≦w1j≦1(1≦j≦S)
t=t2
であるものとし、w11~w19は、例えば、アテンション部4Aにより、以下の値として、取得されたものとする(図11参照)。
w11=0.0、w12=0.2、w13=0.4、w14=0.8、w15=1.0
w16=0.8、w17=0.4、w18=0.2、w19=0.0
アテンション部4Aは、上記により取得された重み付け係数データwatt(t2)1...Sを内分処理部9に出力する。
内分処理部9は、アテンション部4Aから出力される重み付け係数データwatt(t2)1...Sと、強制アテンション部8から出力される重み付け係数データwf(t2)1...Sとを入力する。そして、内分処理部9は、重み付け係数データwatt(t2)1...Sと、重み付け係数データwf(t2)1...Sとに対して、内分処理を実行することで、合成重み付け係数データw(t2)1...Sを取得する。具体的には、内分処理部9は、
w(t2)1...S=(1-α)×watt(t2)1...S+α×wf(t2)1...S
0≦α≦1
に相当する処理を実行することで、合成重み付け係数データw(t2)1...Sを取得する。
ここでは、α=0.5であるので、watt(t2)1...Sと、wf(t2)1...Sとの平均値が合成重み付け係数データw(t)1...Sとなる。なお、w(t)1...Sは、
w(t)1...S={w1,w2,w3,w4,w5,w6,w7,w8,w9}
0≦w1j≦1(1≦j≦S)
t=t2
であるものとすると、w1~w9は、内分処理部9により、以下の値として、取得される(図11参照)。
w1=0.5×w01+0.5×w11=0.5+0=0.5
w2=0.5×w02+0.5×w12=0.5+0.1=0.6
w3=0.5×w03+0.5×w13=0.5+0.2=0.7
w4=0.5×w04+0.5×w14=0.5+0.4=0.9
w5=0.5×w05+0.5×w15=0.5+0.5=1.0
w6=0.5×w06+0.5×w16=0.5+0.4=0.9
w7=0.5×w07+0.5×w17=0.5+0.2=0.7
w8=0.5×w08+0.5×w18=0.5+0.1=0.6
w9=0.5×w09+0.5×w19=0.5+0=0.5
そして、内分処理部9は、取得した合成重み付け係数データw(t2)1...Sをコンテキスト算出部10に出力する。
コンテキスト算出部10は、アテンション部4Aから出力されるデータDx4(=hi)の集合データhi
1...Sと、内分処理部9から出力される合成重み付け係数データw(t2)
1...Sとを入力する。そして、コンテキスト算出部10は、合成重み付け係数データw(t2)
1...Sに基づいて、データDx4(=hi)の集合データhi
1...Sに対して、重み付け加算処理を実行することで、コンテキスト状態データc(t)を取得する。つまり、コンテキスト算出部10は、以下の数式に相当する処理を実行することで、コンテキスト状態データc(t)を取得する。
t=t2
w
j:合成重み付け係数データw(t2)
1...Sのj番目の要素データ(1≦j≦S)
そして、コンテキスト算出部10は、取得したコンテキスト状態データc(t2)をデコーダ部5Bのデコーダ側LSTM層52Bに出力する。
次に、「(2)無音状態である期間内の処理(図12の場合)」について、説明する。
図12は、時刻t3(時間ステップt3)における処理を説明するための図であり、図10において無音状態の期間(図10において、「silent(無音状態)」で示した期間)の一部を時間軸方向に拡大して示した図である。
ここで、時刻t3における処理について、説明する。
強制アテンション部8は、時刻t3において、音素継続長Dx02から、無音状態(発声すべき音素がない状態)の期間であることを認識し、時刻t3の重み付け係数データwf(t)を「0」に設定する。さらに、強制アテンション部8は、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データと対応づけるために(内分処理ができるようにするために)、時刻t2を中心として、S(=9)個にデータを拡張(同一データを複製して拡張)した重み付け係数データwf(t)1...Sを生成する。なお、wf(t)1...Sは、
wf(t)1...S={w01,w02,w03,w04,w05,w06,w07,w08,w09}
0≦w0j≦1(1≦j≦S)
t=t2
であるものとし、wf(t3)1...Sにおいて、w01~w09は、すべて「0」に設定される(図12参照)。
強制アテンション部8は、上記により生成した重み付け係数データwf(t3)1...Sを内分処理部9に出力する。
アテンション部4Aは、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
watt(t)1...S=f2_attn(hi1...S,ho1...T)
f2_attn():重み付け係数データを取得する関数
に相当する処理を実行して、時刻t3の重み付け係数データwatt(t3)1...Sを取得する。時刻t3の重み付け係数データwatt(t)1...Sが図12に示すデータ(一例)であるものとする。なお、watt(t)1...Sは、
watt(t)1...S={w11,w12,w13,w14,w15,w16,w17,w18,w19}
0≦w1j≦1(1≦j≦S)
t=t2
であるものとし、w11~w19は、例えば、アテンション部4Aにより、すべて値が「0」として、取得されたものとする(図12参照)。
アテンション部4Aは、上記により取得された重み付け係数データwatt(t3)1...Sを内分処理部9に出力する。
内分処理部9は、アテンション部4Aから出力される重み付け係数データwatt(t3)1...Sと、強制アテンション部8から出力される重み付け係数データwf(t3)1...Sとを入力する。そして、内分処理部9は、重み付け係数データwatt(t3)1...Sと、重み付け係数データwf(t3)1...Sとに対して、内分処理を実行することで、合成重み付け係数データw(t3)1...Sを取得する。具体的には、内分処理部9は、
w(t3)1...S=(1-α)×watt(t3)1...S+α×wf(t3)1...S
0≦α≦1
に相当する処理を実行することで、合成重み付け係数データw(t3)1...Sを取得する。
ここでは、α=0.5であるので、watt(t3)1...Sと、wf(t3)1...Sとの平均値が合成重み付け係数データw(t)1...Sとなる。なお、w(t)1...Sは、
w(t)1...S={w1,w2,w3,w4,w5,w6,w7,w8,w9}
0≦w1j≦1(1≦j≦S)
t=t2
であるものとすると、w1~w9は、内分処理部9により、すべて値が「0」として、取得される(図12参照)。
そして、内分処理部9は、取得した合成重み付け係数データw(t2)1...Sをコンテキスト算出部10に出力する。
コンテキスト算出部10は、アテンション部4Aから出力されるデータDx4(=hi)の集合データhi
1...Sと、内分処理部9から出力される合成重み付け係数データw(t3)
1...Sとを入力する。そして、コンテキスト算出部10は、合成重み付け係数データw(t2)
1...Sに基づいて、データDx4(=hi)の集合データhi
1...Sに対して、重み付け加算処理を実行することで、コンテキスト状態データc(t)を取得する。つまり、コンテキスト算出部10は、以下の数式に相当する処理を実行することで、コンテキスト状態データc(t)を取得する。
t=t2
w
j:合成重み付け係数データw(t3)
1...Sのj番目の要素データ(1≦j≦S)
そして、コンテキスト算出部10は、取得したコンテキスト状態データc(t3)をデコーダ部5Bのデコーダ側LSTM層52Bに出力する。
図12の場合、無音状態であるので、アテンション部4A、および、強制アテンション部8により取得される重み付け係数データがすべて0であるので、コンテキスト状態データc(t3)も「0」となる。つまり、上記により、無音状態であることを適切に示すコンテキスト状態データc(t3)が取得される。
上記のように取得されたコンテキスト状態データc(t)がデコーダ部5Bのデコーダ側LSTM層52Bに出力される。
そして、アテンション部4Aは、取得した重み付け係数データwatt(t)1...Sを内分処理部9に出力する。また、アテンション部4Aは、データDx4(=hi)の集合データhi1...Sをコンテキスト算出部10に出力する。
デコーダ側プレネット処理部51での処理は、第1実施形態と同様である。
デコーダ側LSTM層52Bは、デコーダ側プレネット処理部51から、現時刻tにおいて出力されるデータDy2(t)と、1つ前の時間ステップにおいて、デコーダ側LSTM層52から出力されたデータDy3(t-1)と、コンテキスト算出部10から出力される時刻tのコンテキスト状態データc(t)とを入力する。
デコーダ側LSTM層52Aは、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。
線形予測部53、ポストネット処理部54、および、加算器55では、第1実施形態と同様の処理が実行される。
そして、音声合成処理装置200では、上記のように取得されたデータDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)とを比較し、両者の差(比較結果)(例えば、差分ベクトルのノルムやユークリッド距離により表現する差)が小さくなるように、エンコーダ部3、デコーダ部5Bのニューラルネットワークのモデルのパラメータを更新する。音声合成処理装置100では、このパラメータ更新処理を繰り返し実行し、データDy6(予測メルスペクトログラムのデータ)と、テキストデータDinに対応するメルスペクトログラム(音響特徴量)の教師データ(正解のメルスペクトログラム)との差が十分小さくなる(所定の誤差範囲におさまる)、ニューラルネットワークのモデルのパラメータを最適化パラメータとして取得する。
音声合成処理装置300では、上記のようにして取得した最適化パラメータに基づいて、エンコーダ部3、デコーダ部5Bのニューラルネットワークのモデルの各層に含まれるシナプス間の結合係数(重み係数)を設定することで、エンコーダ部3、デコーダ部5Aのニューラルネットワークのモデルを最適化モデル(学習済みモデル)とすることができる。
以上により、音声合成処理装置300において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
なお、音声合成処理装置300において、第1実施形態の音声合成処理装置100における学習処理により取得したニューラルネットワークの学習済みモデル(最適化モデル)を用いてもよい。つまり、音声合成処理装置200において、第1実施形態の音声合成処理装置100における学習処理により取得したニューラルネットワークの学習済みモデルのエンコーダ部3およびデコーダ部5の最適パラメータを用いて、音声合成処理装置200のエンコーダ部3およびデコーダ部5Bのパラメータを設定することで、音声合成処理装置300において、学習済みモデルを構築するようにしてもよい。
また、ボコーダ6として、ニューラルネットワークによるモデルを用いたボコーダを採用する場合、その学習処理は、第1実施形態と同様である。
これにより、第1実施形態と同様に、ボコーダ6において、入力をテキストデータとし、出力をメルスペクトログラムとするニューラルネットワークの学習済みモデル(最適化モデル)を構築できる。
なお、音声合成処理装置300において、(1)エンコーダ部3、デコーダ部5Bの学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行してもよいし、上記のように、個別に学習処理を実行してもよい。音声合成処理装置300において、(1)エンコーダ部3、デコーダ部5Bの学習処理と、(2)ボコーダ6の学習処理とを連携させて学習処理を実行する場合、入力をテキストデータとし、当該テキストデータに対応する音声波形データ(正解の音声波形データ)とを用いて、(1)エンコーダ部3、デコーダ部5Bのニューラルネットワークのモデルと、(2)ボコーダ6のニューラルネットワークのモデルの最適化パラメータを取得することで学習処理を実行すればよい。
(3.2.2:予測処理)
次に、音声合成処理装置300による予測処理について、説明する。なお、予測処理においても、説明便宜のため、処理対象言語を日本語として、以下、説明する。
予測処理を実行する場合、音声合成処理装置300では、上記の学習処理により取得された学習済みモデル、すなわち、エンコーダ部3、デコーダ部5Bのニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)、および、ボコーダ6のニューラルネットワークの最適化モデル(最適化パラメータが設定されているモデル)が構築されている。そして、音声合成処理装置300では、当該学習済みモデルを用いて予測処理が実行される。
音声合成処理の対象とする日本語のテキストデータDinをテキスト解析部1Aに入力する。
テキスト解析部1Aは、入力されたテキストデータDinに対して、日本語用のテキスト解析処理を実行し、例えば、図2に示すパラメータを含む478次元のベクトルデータとして、フルコンテキストラベルデータDx1を取得する。
そして、取得されたフルコンテキストラベルデータDx1は、テキスト解析部1Aからフルコンテキストラベルベクトル処理部2に出力される。
また、テキスト解析部1Aは、処理対象言語のテキストデータDinから音素のコンテキストラベルを取得し、取得した音素のコンテキストラベルのデータをデータDx01として、音素継続長推定部7に出力する。
音素継続長推定部7は、テキスト解析部1Aから出力されるデータDx01(音素のコンテキストラベルのデータ)から、データDx01に対応する音素の音素継続長を推定(取得)する音素継続長推定処理を実行する。具体的には、音素継続長推定部7は、例えば、隠れマルコフモデル(HMM:Hidden Markov Model)、ニューラルネットワークモデル等を用いた、音素のコンテキストラベルから当該音素の音素継続長を推定(予測)するモデル(処理システム)により、音素継続長推定処理を実行する。
例えば、図8に示すように、入力データDinが「今日の天気は...」である場合、データDx01に含まれる各音素のデータを、
(1)ph0=「k」、(2)ph1=「y」、(3)ph2=「ou」、(4)ph3=「n」、(5)ph04=「o」、(6)phsil=無音状態、(7)ph5=「t」、(8)ph6=「e」、(9)ph07=「n」、・・・
とし、音素phk(k:整数)の推定された音素継続長をdur(phk)とすると、音素継続長推定部7は、音素phk(k:整数)のコンテキストラベルを用いて、音素継続長推定処理を実行することで、音素phkの推定された音素継続長dur(phk)を取得する。例えば、上記の各音素(音素phk)について、音素継続長推定部7により取得(推定)された音素継続長dur(phk)が、図8に示す時間の長さ(継続長)を有するものとする。
そして、音素継続長推定部7は、音素継続長推定処理により取得(推定)した音素継続長のデータ(図8の場合、dur(phk))をデータDx02として、強制アテンション部8に出力する。
強制アテンション部8は、音素継続長データDx02に対応する音素についてのエンコーダ部3により処理されたデータが出力されるとき、当該音素の推定された音素継続長(音素継続長データDx02)に相当する期間、重み付け係数を強制的に所定の値(例えば、「1」)にした重み付け係数データwf(t)を生成する。そして、強制アテンション部8は、入力側隠れ状態データの集合データhi1...Sの各要素データに対する重み付け係数データと対応づけるために(内分処理ができるようにするために)、時刻tを中心として、S個にデータを拡張(同一データを複製して拡張)した重み付け係数データwf(t)1...Sを生成する。
強制アテンション部8は、上記により生成した重み付け係数データwf(t)1...Sを内分処理部9に出力する。
エンコーダ部3では、第1実施形態と同様の処理が実行される。
アテンション部4Aは、エンコーダ部3から出力されるデータDx4と、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータho(出力側隠れ状態データho)とを入力する。アテンション部4Aは、エンコーダ部3から出力されるデータDx4、すなわち、入力側隠れ状態データhiを所定の時間ステップ分記憶保持する。例えば、アテンション部4Aは、時間ステップt=1からt=S(S:自然数)の期間において、エンコーダ部3により取得され、アテンション部4Aに出力されたデータDx4(=hi)の集合を、hi1...S(={Dx4(1),Dx4(2),・・・,Dx4(S)})として記憶保持する。
また、アテンション部4Aは、デコーダ部5Bのデコーダ側LSTM層52Bから出力されるデータDy3、すなわち、出力側隠れ状態データhoを所定の時間ステップ分記憶保持する。例えば、アテンション部4Aは、時間ステップt=1からt=T(T:自然数)の期間において、デコーダ側LSTM層52Bにより取得され、アテンション部4Aに出力されたデータDy3(=ho)の集合を、ho1...T(={Dy3(1),Dy3(2),・・・,Dy3(T)})として記憶保持する。
そして、アテンション部4Aは、入力側隠れ状態データの集合データhi1...Sと、出力側隠れ状態データの集合データho1...Tと、に基づいて、例えば、
watt(t)1...S=f2_attn(hi1...S,ho1...T)
f2_attn():重み付け係数データを取得する関数
に相当する処理を実行して、現時刻tの重み付け係数データwatt(t)1...Sを取得する。
そして、アテンション部4Aは、取得した重み付け係数データwatt(t)1...Sを内分処理部9に出力する。また、アテンション部4Aは、データDx4(=hi)の集合データhi1...Sをコンテキスト算出部10に出力する。
内分処理部9は、アテンション部4Aから出力される重み付け係数データwatt(t)1...Sと、強制アテンション部8から出力される重み付け係数データwf(t)1...Sとを入力する。そして、内分処理部9は、重み付け係数データwatt(t)1...Sと、重み付け係数データwf(t)1...Sとに対して、内分処理を実行することで、合成重み付け係数データw(t)を取得する。具体的には、内分処理部9は、
w(t)1...S=(1-α)×watt(t)1...S+α×wf(t)1...S
0≦α≦1
に相当する処理を実行することで、合成重み付け係数データw(t)1...Sを取得する。そして、内分処理部9は、取得した合成重み付け係数データw(t)1...Sをコンテキスト算出部10に出力する。
コンテキスト算出部10は、アテンション部4Aから出力されるデータDx4(=hi)の集合データhi1...Sと、内分処理部9から出力される合成重み付け係数データw(t)1...Sとを入力する。そして、コンテキスト算出部10は、合成重み付け係数データw(t)1...Sに基づいて、データDx4(=hi)の集合データhi1...Sに対して、重み付け加算処理を実行することで、コンテキスト状態データc(t)を取得する。そして、コンテキスト算出部10は、取得したコンテキスト状態データc(t)をデコーダ部5Bのデコーダ側LSTM層52Bに出力する。
デコーダ側LSTM層52Bは、入力されたデータDy2(t)、データDy3(t-1)、および、コンテキスト状態データc(t)を用いて、LSTM層による処理を実行し、処理後のデータをデータDy3(t)として線形予測部53に出力する。
線形予測部53、ポストネット処理部54、および、加算器55では、第1実施形態と同様の処理が実行される。
ボコーダ6は、デコーダ部5Bの加算器55から出力されるデータDy6(予測メルスペクトログラムのデータ(音響特徴量のデータ))を入力とし、入力されたデータDy6に対して、学習済みモデルを用いたニューラルネットワーク処理による音声合成処理を実行し、データDy6(予測メルスペクトログラム)に対応する音声信号波形データを取得する。そして、ボコーダ6は、取得した音声信号波形データを、データDoutとして出力する。
このように、音声合成処理装置300では、入力されたテキストデータDinに対応する音声波形データDoutを取得することができる。
音声合成処理装置300では、図10~図12を用いて説明したのと同様に、予測処理時においても、アテンション部4Aにより取得された重み付け係数データwatt(t)と、強制アテンション部8により取得された重み付け係数データwf(t)とを内分処理により合成した重み付け係数データを用いて、コンテキスト状態データc(t)を生成する。そして、音声合成処理装置300では、上記のようにして生成されたコンテキスト状態データc(t)を用いて、デコーダ部5B、ボコーダ6による処理が実行されるため、注意機構予測が失敗することに起因する、合成発話が途中で止まってしまう、同じフレーズを何回も繰り返してしまう、等の問題が発生することを適切に防止できる。
例えば、図13に示すように、時刻t2においての処理で、注意機構の予測が失敗している場合、すなわち、図13に示すように、アテンション部4により取得された重み付け係数データが「0」(あるいは所定の値以下)である場合(watt(t)1...Sのすべての要素データの値が「0」(あるいは所定の値以下)である場合)であっても、音声合成処理装置300では、強制アテンション部8により取得された重み付け係数データwf(t)の重みにより、注意機構の予測の失敗が音声合成処理に影響を及ぼさないようにできる合成重み付け係数データw(t)1...Sを取得することができる(図13の場合。合成重み付け係数データw(t)1...Sの各要素データの値は、すべて「0.5」)。
このように、音声合成処理装置300では、音素継続長については、安定して音素継続長を適切に推定することができる、隠れマルコフモデル等のモデルを用いた推定処理(音素継続長推定部7による処理)により取得した音素継続長を用いて処理することで、音素継続長の予測精度を保証する。つまり、音声合成処理装置300では、安定して音素継続長を適切に推定することができる、隠れマルコフモデル等のモデルを用いた推定処理(音素継続長推定部7による処理)により取得した音素継続長を用いて強制アテンション部8により取得した重み付け係数データと、アテンション部4Aにより取得された重み付け係数データとを適度に合成した重み付け係数データにより生成したコンテキスト状態データc(t)を用いて予測処理を実行する。したがって、音声合成処理装置300では、注意機構の予測が失敗する場合(アテンション部4により適切な重み付け係数データが取得できない場合)であっても、強制アテンション部8により取得した重み付け係数データによる重み分の重み付け係数データが取得できるため、注意機構の予測の失敗が音声合成処理に影響を及ぼさないようにできる。
さらに、音声合成処理装置300では、音響特徴量については、sequence-to-sequence方式を用いたニューラルネットワークのモデルで処理することにより取得できるので、高精度な音響特徴量の予測処理が実現できる。
したがって、音声合成処理装置300では、注意機構予測が失敗することに起因する、合成発話が途中で止まってしまう、同じフレーズを何回も繰り返してしまう、等の問題が発生することを適切に防止するとともに、高精度な音声合成処理を実行することができる。
なお、上記では、内分比αを固定値(例えば、0.5)に設定した場合について、説明したが、これに限定されることはなく、内分比αは動的に更新されるものであってもよい。例えば、内分処理部9において、アテンション部4Aから入力される重み付け係数データwatt(t)1...Sが所定の期間、継続して、所定の値よりも小さい、あるいは、略0であり、かつ、強制アテンション部8から入力される重み付け係数データwf(t)1...Sが「1」である場合、アテンション部4による処理が失敗している(注意機構予測が失敗している)と判定し、αの値をより大きな値(重み付け係数データwf(t)1...Sの重みが大きくなる値)に調整(更新)するようにしてもよい。
また、音声合成処理装置300において、エンコーダ部3、デコーダ部5は、上記の構成に限定されるものではなく、他の構成のものであってよい。例えば、下記文献Aに開示されているトランスフォーマーモデルのアーキテクチャによるエンコーダ、デコーダの構成を採用して、エンコーダ部3、デコーダ部5を構成するようにしてもよい。この場合、トランスフォーマーモデルのアーキテクチャによるエンコーダとデコーダの間に設置されるアテンション機構を、本実施形態で説明した機構、すなわち、アテンション部4、強制アテンション部8、内分処理部9、コンテキスト算出部10により、アテンション機構が取得した重み付け係数データと、強制アテンション部8が取得した重み付け係数データとを内分処理により合成し、合成した重み付け係数データによりコンテキスト状態データを取得する機構に置換する構成を採用すればよい。
(文献A):A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, AN. Gomez, L. Kaiser, I. Polosukhin, “Attention is all you need”31st Conference on Nural information Processing System (NIPS 2017), Long Beach, CA, USA.
[他の実施形態]
上記実施形態(変形例を含む)の音声合成処理装置において、エンコーダ側LSTM層32、デコーダ側LSTM層52は、それぞれ、複数のLSTM層を備えるものであってもよい。また、エンコーダ側LSTM層32、デコーダ側LSTM層52は、それぞれ、双方向LSTM層(順伝搬、逆伝搬をLSTM層)で構成されるものであってもよい。
また、上記実施形態(変形例を含む)では、音声合成処理装置が、テキスト解析部1と、フルコンテキストラベルベクトル処理部2とを備え、テキスト解析部1で取得したフルコンテキストラベルデータから、フルコンテキストラベルベクトル処理部2により、最適化フルコンテキストラベルデータを取得する場合について説明したが、これに限定されることはなく、例えば、音声合成処理装置において、最適化フルコンテキストラベルデータを取得する、テキスト解析部を設け、フルコンテキストラベルベクトル処理部を省略する構成としてもよい。
また、上記実施形態(変形例を含む)を適宜組み合わせてもよい。
また上記実施形態(変形例を含む)で説明した音声合成処理装置において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。
なおここではLSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
また上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらにソフトウェアおよびハードウェアの混在処理により実現しても良い。
例えば上記実施形態の各機能部をソフトウェアにより実現する場合、図14に示したハードウェア構成(例えばCPU、GPU、ROM、RAM、入力部、出力部、通信部、記憶部(例えば、HDD、SSD等により実現される記憶部)、外部メディア用ドライブ等をバスBusにより接続したハードウェア構成)を用いて各機能部をソフトウェア処理により実現するようにしてもよい。
また上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、図14に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
また上記実施形態における処理方法の実行順序は、必ずしも上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
前述した方法をコンピュータに実行させるコンピュータプログラム、及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここでコンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限らず、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
なお本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。