次に、本発明の実施形態について、図面を参照しながら説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては同一の参照番号を付し、重複する説明は省略する。
[基礎となる実施形態]
(音声合成装置の構成)
図1は、音声合成装置100の基本構成を示すブロック図であり、図2は、音声合成装置100の具体的構成を示すブロック図である。音声合成装置100は、音源波形をサブバンド分割部110によりサブバンド分割して蓄積し、入力情報に応じてサブバンド毎に振幅を調整する。そして、振幅を調整されたサブバンド分割音源波形ベクトルを用いてサブバンド合成部140により合成し、目標となるスペクトル特性を近似的に有する音声波形を合成する。
音声合成装置100は、入力された時系列の音源制御情報およびスペクトル特性情報を基に、音声波形を合成する。本実施形態において、音源制御情報とは合成する音声波形の基本周波数および各サブバンドの有声重み係数である。図1に示すように、音声合成装置100は、サブバンド分割部110、サブバンド分割音源生成部120、サブバンドパワー調整部130およびサブバンド合成部140を備えている。
サブバンド分割部110は、音源波形を複数の周波数帯域に分割し、音源波形の分割によりベクトル系列を生成する。サブバンド分割部110は、等時間間隔内のベクトル系列からベクトルを間引き、蓄積をするためのサブバンド分割音源波形ベクトルを生成することが好ましい。
なお、サブバンド分割部110は、例えば分析フィルタバンクE0(z)〜EM−1(z)およびダウンサンプラD↓により構成される。分析フィルタバンクE0(z)〜EM−1(z)は、M個の周波数帯域に等分割するフィルタバンクで構成される。ダウンサンプラD↓は、サブバンド分割後のM次元のベクトル系列に対し、等時間間隔でD(ただしD≦Mとする)サンプルのベクトル系列から(D−1)のベクトルを間引いて1つのベクトルのみを残す処理を行なう。このような間引き処理により、事前蓄積のサイズと、合成フィルタバンクの処理量をそれぞれ削減できる。
サブバンド分割音源生成部120は、音源波形を複数の周波数帯域に分割して蓄積されたサブバンド分割音源波形ベクトルに基づいて、入力された音源制御情報に対応するサブバンド分割音源波形ベクトルを生成する。その際には、蓄積されたサブバンド分割音源波形ベクトルのうち複数のサブバンド分割音源波形ベクトルを組み合わせて、入力された音源制御情報に対応するサブバンド分割音源波形ベクトルを生成する。
サブバンド分割音源生成部120は、さらに蓄積部121および選択部122を備えている。蓄積部121は、事前に生成した、比較的短時間の音源波形(音源波形素片)をサブバンド分割した結果としてのベクトルを格納する。このベクトルは、サブバンド分割数と同じ次元数のベクトルであり、これをサブバンド分割波形ベクトルという。
選択部122は、入力された基本周波数の情報に基づき、事前蓄積されたサブバンド分割波形ベクトルを選択、加算する。このようにして、サブバンド分割音源生成部120は、選択されたサブバンド分割波形ベクトルを用いて、または、複数種類のサブバンド分割波形ベクトルをサブバンド分割波形ベクトルとして構成して、サブバンド分割された音源波形ベクトルを出力する。なお、上記の蓄積までは事前処理として予め行ない、それ以降の処理は入力情報があったときに行なう。
サブバンドパワー調整部130は、生成されたサブバンド分割音源波形ベクトルに対して、入力されたスペクトル特性情報に応じたサブバンド毎の振幅調整を行なう。サブバンドパワー調整部130には、各サブバンドのパワーを制御するための乗算回路を設けている。サブバンドパワー調整部130は、入力されるスペクトル特徴情報に基づき、サブバンド毎にこの係数A0〜AM−1を調整する。その結果、目標音声のスペクトル特性を再現する。なお、入力となるスペクトル情報は、直接的に各サブバンドのパワー情報で構成しても良いが、例えばメルケプストラム係数を入力とし、内部的に各サブバンドのパワー情報を計算し、その結果を用いてもよい。
サブバンド合成部140は、振幅調整がなされたサブバンド分割音源波形ベクトルを単一の音声波形に合成する。すなわち、サブバンド分割波形を合成し、最終的な合成音声波形を生成する。サブバンド合成部140は、例えばアップサンプラD↑および合成フィルタバンクR0(z)〜RM−1(z)により構成される。アップサンプラD↑は、振幅調整がなされたサブバンド分割音源波形ベクトルに対し、帯域分割信号間にゼロ値サンプルを挿入し、D倍のアップサンプリングを行なう。合成フィルタバンクR0(z)〜RM−1(z)は、M個の周波数帯域に分割されたサブバンド分割音源波形ベクトルを単一の音声波形に合成する。
(フィルタバンクの構成)
フィルタバンクを構成するあるフィルタの係数に離散フーリエ変換(DFT)や離散コサイン変換(DCT)、あるいはそれらの逆変換の係数系列を掛けると、基となったフィルタの特性を、周波数軸上でシフトした形のフィルタ特性が得られる。そして、このようなフィルタでフィルタバンクを構成することで、フィルタバンクの処理で必要な計算に、FFT(高速フーリエ変換)等の高速化手法が利用可能となる。これにより、サブバンド分割・サブバンド合成の処理を高速化することができる。
図3Aおよび図3Bは、それぞれサブバンド分割部110の実際の回路構成および理論的な構成を示すブロック図である。また、図4Aおよび図4Bは、それぞれサブバンド合成部140の実際の回路構成および理論的な構成を示すブロック図である。いずれの例も離散コサイン変換を用いた構成例を示している。
サブバンド分割部110およびサブバンド合成部140のいずれについても、実際の回路構成には、遅延要素z−1が設けられ、離散コサイン変換要素DCTまたは逆離散コサイン変換要素IDCTが設けられている。これに対し、サブバンド分割部110およびサブバンド合成部140と理論的に等価な構成では、上記の各要素が含まれない形が等価となっている。サブバンド分割部110と理論的に等価な構成では、フィルタ処理を行なってからダウンサンプリングを行なうため、処理のサンプルレートが大きく、処理量も大きくなるが、実際の構成では、先にダウンサンプリングを行なっているため、処理量は少なくなる。これは、サブバンド合成部140も同様である。
図5は、等帯域分割フィルタバンクについて周波数に対する振幅特性を示すグラフである。DFTやDCTのみを用いた場合、矩形窓関数をインパルス応答とする帯域通過フィルタを、周波数軸上でシフトした形の帯域通過フィルタで構成されるフィルタバンクと通常見なせる。以下、シフト前の基となるフィルタを基礎フィルタと呼ぶ。なお、基礎フィルタを、一般にはより好ましいと考えられる、遮断域での減衰量がより大きい周波数特性を持つ帯域通過フィルタ(なお周波数0を中心とする場合は、低域通過フィルタとなる)とすることも可能である。ただし、サブバンド分割処理結果をサブバンド合成した場合に原音声波形が復元できるようにフィルタを設計する必要がある。その条件は完全再構成条件と呼ばれる。また、フィルタ構成によっては厳密な復元が不可能な場合があり、その場合は、近似的に復元されるようにフィルタを設計する。また、長さMのDFTを用いた場合は、基となるフィルタを、正規化角周波数で2πk/M(k≦0<M)シフトさせたM個のフィルタでフィルタバンクが構成され、DCTを用いた場合は、その定義にもよるが、以下の例で定義されるDCT変換の場合、正規化角周波数でπ(k+1/2)/Mシフトさせた特徴と、π(−k+1/2)/Mシフトさせた特徴の和をその周波数特性とする、M個のフィルタでフィルタバンクが構成される。
以下の例では、DCT変換および逆DCT変換のペアを用いている。DFTの入出力は複素数で定義されるのに対し、DCTの入出力は実数であり、処理をより簡単に行なうことができる。例えば、(1)式のM次のDCT係数を係数とするフィルタとして(2)式(0≦k<M)を用いても分析フィルタバンクを構成できる。
DCT係数の特性上、これはM分割の等帯域分割フィルタバンクであり、さらにこのフィルタバンクは、完全再構成条件を満たすように構成できるので、帯域分割波形から入力波形を復元することができる。
なお、上記の構成において、サブバンド数はスペクトル特徴情報で記述されるスペクトルを所定の精度で模擬できるだけの数とする。例えば、1サンプルのスペクトル情報がk次(0次係数も含めパラメータ数としてはk+1個)のメルケプストラムの場合で、かつここでのkがスペクトル特徴を表現するのに必要な次元数の場合、そのようなスペクトルを一般的に模擬するために、少なくとも(k+1)個のサブバンド数が必要となる。
また、サブバンドパワー調整部130は、白色な音源に対して、各サブバンドのゲインを調整し、入力されたスペクトル特徴情報に対応する音声波形を生成するように動作する。なお、マルチバンド混合励振を行なう場合は、予めインパルス音源と白色雑音源が等パワーとなるように正規化しておき、各サブバンドのパワー重みの和が1となるように制御することで白色な音源を得ることができる。
先述のように、スペクトル情報として各サブバンドのパワー値を直接入力とする構成ではなく、メルケプストラム係数等から変換して各サブバンドのパワー係数を求めてもよい。サブバンド中心のスペクトル強度を、サブバンドのパワー値と見なして制御することで、目標のスペクトル特徴を近似的に得ることができる。サブバンドの中心は、DFTに基づくフィルタバンクを構成する場合、正規化角周波数軸上で、0,2π/M,4π/M,…となる。
一方、先述のDCTに基づくフィルタバンクを構成する場合は、±π/2M,±3π/2M,…となる。ただし、入力が実数系列でかつ、インパルス応答が対称な基礎フィルタを用いる場合は、周波数特性も全て周波数0を中心に対称となるので、例えば正規化角周波数で0からπの範囲のみ考えれば良い。サブバンド毎のスペクトル特性はフィルタバンク係数から求めることができるので、目標のスペクトル特徴との誤差を、周波数軸上で、サブバンド数よりもより細かい間隔で評価してもよい。例えば平均二乗誤差が最少となるようなサブバンドのパワー係数の組を、反復近似推定等により求めることで、より正確な制御を実現できる。なお、上記の例は一例であり、DCT変換・逆DCT変換のペアを、他の可逆変換のペアに置き換えることもできる。
(音源の制御方法)
次に、音源の制御方法について説明する。まず前提として、サブバンド分割・サブバンド合成の前後で処理の線形性が保証されているものとする。先述のDFTやDCTに基づくフィルタバンクは、線形な操作の組み合わせだけでその処理が構成されているので、この条件を満たす。
このとき、インパルス列について、例えば、過去の32サンプルから32帯域の分割を行ない、かつ各帯域の分析フィルタ・合成フィルタがFIRフィルタで表現可能な場合、サブバンド分割した結果を次のように得ることができる。すなわち、入力フレームの1番目と20番目のサンプルでインパルスが立っているようなインパルス音源波形を帯域分割した場合には、1番目のサンプルのみでインパルスが立っている音源波形をサブバンド分割した結果と、20番目のサンプルのみでインパルスが立っている音源波形をサブバンド分割した結果の各要素を足すことにより得ることができる。
つまり、M帯域分割の場合、インパルス音源については、M種類の音源波形の変化の事前蓄積があれば良い。実際には、音声合成で用いる基本周波数は比較的に低いので、音源波形のMサンプル内に2つ以上のインパルスが含まれるケースが少ない場合も考えられる。その場合、足し合わせ処理の処理量はほぼ無視することができる。
なお、事前作成・蓄積する波形を生成するための処理量は音声合成時の処理ではないためあまり問題とならない。したがって、例えば、1.5番目のサンプルでインパルスが立っているといった、仮想的にサンプリング周期以上の時間精度でインパルスの位置を制御することも容易である。そのような音源波形は、例えば2倍のサンプリング周波数を用いた対応する波形をまず作成し、高域遮断フィルタであるアンチエイリアスフィルタを掛けることで、元のサンプリング周波数におけるナイキスト周波数以上の成分を除去してから、2:1のダウンサンプリングによりサンプルを間引くことで得ることができる。
このような手法は、サンプリング周波数が低く、インパルス位置をサンプル点に丸めてしまうと合成される音声の基本周波数の誤差が大きくなるケースで特に有効である。逆にサンプリングレートが高い場合は、インパルスの位置精度を下げ、蓄積するサブバンド分割波形の数を減らすという方法も考えられる。
一方、白色雑音源については、インパルスの足し合わせで白色雑音を合成しても良いが、適当な個数、フレーム長の白色雑音列を事前に帯域分割・蓄積しておき、それをフレーム毎にランダムに選択することで、近似的に構成しても良い。この場合、変換波形を蓄積する必要はあるものの、重みづけ和の計算処理が不要となるので、処理量を減らすことができる。なお、比較的少ない数の蓄積のみから白色な雑音を生成するため、蓄積された帯域分割音源波形を複数個足し合わせて、帯域分割音源波形を構成する方法も考えられる。
(非最大間引きフィルタバンクを用いた構成)
フィルタバンクにおける間引き率Mはその値が1(全く間引かない)からMまでの場合で、少なくとも再合成前に各サブバンドでパワー調整を行なわない場合、サブバンド合成結果がサブバンド分割前の入力信号と一致するようなフィルタバンクを構成することができることが理論上知られている。例えば、DFTやDCTのみでフィルタバンクを構成し、間引き率Lの間引きを行なう場合、計算誤差を無視すれば、それらの逆変換により入力波形が完全に復元できることは明らかである。
しかし、特にD=M(間引き率が最大であり、最大間引きと呼ばれる)の場合は、DCTを用いると、正規化角周波数において(ただしここではその対称性から0からπの範囲のみ考えることとする)、0〜π/M、π/M〜2π/M、...、(M−2)π/M〜(M−1)π/Mの各帯域の成分が、それが通過帯域、遮断帯域であるかに関わらず、それぞれのサブバンドに全て折り返されて格納される。そして、合成時に、各サブバンドの折り返し雑音成分が互いに打ち消しあうことで、入力波形が復元される。
各サブバンドのフィルタを帯域通過と見た場合、その通過域の幅もπ/Mだが、実際には、通過域で常にゲインが1、遮断域で常に0となるような理想的なフィルタは、有限長のフィルタでは理論上実現できない。実際には、遮断域でもある程度の通過量があり、最大間引きの場合、大きな折り返し雑音が各サブバンドには含まれている。このため、各サブバンドのパワーをサブバンド毎に独立に変更してしまうと、サブバンド間で互いに打ち消しあっている折り返し雑音の構造が崩れてしまい、その折り返し雑音が問題となる。
これに対し、DにMより小さい値を設定すると、サンプルの間引きによる折り返しの幅が、フィルタバンクにおける帯域通過フィルタの通過域の幅より広くなるので、各サブバンドの折り返し雑音が減り、サブバンド毎に独立にパワーを調整した場合でも、折り返し雑音の影響を小さくすることができる。このような設定は非最大間引きと呼ばれる。一般に間引き率Dを小さくするほど、折り返し雑音の影響は小さくなるが、情報量的には冗長となり、蓄積・処理するデータ量が増える。このため、折り返し雑音の影響を抑えるために必要な範囲で、Dはできるだけ大きな値を設定することが好ましい。
先述の非最大間引きは、帯域分割前、帯域合成後の波形系列から見ると、フレームシフトDのオーバラップ分析を行なっていることと等価である。また、時間領域におけるDサンプルの処理毎に、サブバンド分割領域における1サンプルの処理が行なわれる。ここで、簡単のためにDがMの約数であるとする。なお、完全再構成条件を満たすフィルタバンクを用いるものとする。
まず、インパルス音源については、非最大間引きであっても、上記で説明している音源の制御方法と同様の方法で制御する。ただし、例えば長さMのフレームにおいて、先頭からNサンプル目(ただしM>N≧Dとする)のサンプルが立っている場合、Dサンプルのフレームシフトにより、次のフレームでは先頭からN−D番目のサンプルにインパルスが立つ。このとき、インパルス音源はそれぞれのタイミングで、対応する事前蓄積されたサブバンド分割波形ベクトルを出力する。
一方、白色雑音については、例えば、最も簡単な方法として、M×Nサンプル周期で同じ波形を繰り返すことで生成する方法が考えられる。その場合は、フレームシフトに対応する、M×N×(M/D)通りの、長さMの波形を事前蓄積しておき、フレームシフトに応じて順に出力する方法がまず考えられる。ここでNは、雑音周期が聴感上問題ない程度となるものであれば良い。例えば雑音の周期M×Nが、可聴周波数の下限(例えば20Hz)に対応する周期より長ければよい。
あるいは、長さMの白色雑音波形素片を予め何個か用意しておき、それをランダムに繋ぎ合わせる方法もある。ここで1つの長さMの白色雑音波形素片について、時間軸上の素片範囲外でサンプル値が全て0として扱う。この白色雑音波形素片単独の時間領域における1フレーム内での出現パターンは、フレーム内における波形の開始点の違いで決まり、開始点には−M+D,−M+2D,…,−D,0,D,…,M−Dの計(2(M/D)−1)個のパターンがある。
1フレーム分の雑音波形は1種類(開始点が0の場合)または2種類の長さMの雑音波形の組み合わせで表現できる。したがって、事前作成する長さMのサンプルの白色雑音波形素片がN種類のとき、合計N(2(M/D)−1)個の事前蓄積から、1または2個のサブバンド分割波形を取得し、それをサブバンド分割領域で足し合わせる処理により、白色雑音源を実現できる。
また、白色雑音波形素片の長さをM/2,M/4,…と短くしていくことで、その場合、1フレーム内での出現パターン数が減り、音源で必要な足し合せ処理が増えていく。逆に白色雑音波形素片の長さを長くすることもできる。その場合は出現パターン数が増えるため、必要な蓄積の数が増えるが、音源で足し合わせの処理が必要となる場合が減ることとなる。
[第1の実施形態]
(正弦波合成を用いた装置の構成)
上記の実施形態は、音源ごとに乗算回路を設けてスペクトル包絡特性の再現と音源の混合比調整を同時に行なう構成であるが、例えば混合励振源の各帯域のパワーが等しくなるような条件の下でサブバンド分割された音源波形をまず作成し、それに対してサブバンドごとにパワー制御を行なうこともできる。
図6は、混合励振源の一部に正弦波合成成分を用いた音声合成装置200の基本構成を示すブロック図であり、図7は、音声合成装置200の具体的構成を示すブロック図である。音声合成装置200の基本構成は、音声合成装置100と同様であり、音源波形をサブバンド分割部210によりサブバンド分割して蓄積し、入力情報に応じてサブバンド毎に振幅を調整する。そして、振幅を調整されたサブバンド分割音源波形ベクトルを用いてサブバンド合成部140により合成し、目標となるスペクトル特性を近似的に有する音声波形を合成する。
音声合成装置200は、入力された時系列の音源制御情報およびスペクトル特性情報を基に、音声波形を合成する。音源制御情報とは基本周波数および混合重みの情報である。音声合成装置200では、インパルス列と正弦波合成とをサブバンド単位で切り替えて有声音の構成要素である周期性波形を合成する。インパルス列から合成するサブバンドについては、サブバンド符号化されたベクトル系列の各要素に、目標のスペクトル特性となるように適当な振幅乗数を掛ける。
一方、正弦波合成により合成するサブバンド成分については、合成対象となるサブバンドに含まれる各調波成分(駆動音源の基本周波数の整数倍の成分)が目標のスペクトル特性を構成するように、各調波成分にそれぞれ適当な振幅乗数を乗ずる。この際、正弦波の位相は、例えば、先述のインパルス列から合成した場合と等遅延となるように制御する。例えば、インパルス列におけるインパルスが配置される時刻からさらに帯域分割フィルタの遅延時間を加えた時刻に位相が0となるような、その周波数が基本周波数の整数倍となる余弦関数の足し合わせが挙げられる。このような余弦関数の足し合わせは、従来のインパルス列から合成する場合を模擬でき、上記の条件を満たす。あるいは、もっと自然音声の特徴に近づけるように、異なる位相制御方法を用いてもよい。なお、帯域分割フィルタのオーバラップ特性により、通常、1つの調波成分は複数のサブバンドの成分として分割される。このため、サブバンド合成部の合成結果が目標のスペクトル特性となるように、各調波成分に対して、複数のサブバンドで正弦波の振幅、位相をそれぞれ制御する必要がある。
そして、これら2種類の音声合成方法をサブバンド符号化におけるベクトル要素単位で組み合わせて、サブバンド符号化された合成音声系列を生成し、復号することで最終的な音声波形を生成する。
図6に示すように、音声合成装置200は、サブバンド分割部210、サブバンド分割音源生成部220、サブバンドパワー調整部130、正弦波合成部232、サブバンド分割波形ベクトル生成部236およびサブバンド合成部140を備えている。
サブバンド分割音源生成部220は、正弦波合成により周期性成分を合成するサブバンドリスト以外のサブバンドインパルス音源に対応するサブバンド分割音源波形ベクトルと、白色雑音音源に対応するサブバンド分割音源波形ベクトルとの重み付け和により生成されたサブバンド分割音源波形ベクトルを生成する。サブバンド分割部210は、インパルス側分割部211aおよび白色雑音側分割部211bを備えている。インパルス側分割部211aはインパルス音源をサブバンド分割し、白色雑音側分割部211bは、白色雑音源をサブバンド分割する。
サブバンド分割音源生成部220は、インパルス側蓄積部221a、インパルス側選択部222a、インパルス側重み付け乗算部223a、白色雑音側蓄積部221b、白色雑音側選択部222b、白色雑音側重み付け乗算部223bおよび加算部224を備えている。
インパルス側蓄積部221aは、インパルス音源に基づくサブバンド分割音源波形ベクトルを蓄積する。インパルス側選択部222aは、入力された基本周波数の情報に基づき、事前蓄積されたインパルス音源に基づくサブバンド分割波形ベクトルを選択する。インパルス側重み付け乗算部223aは、選択されたサブバンド分割波形ベクトルの各要素に重み付け係数Ap0〜Ap(M−1)のうちApm〜Ap(M−1)をそれぞれ乗算する。
一方、白色雑音側蓄積部221bは、白色雑音源に基づくサブバンド分割音源波形ベクトルを蓄積する。白色雑音側選択部222bは、例えば上記の「音源の制御方法」に記載された方法に基づき、事前蓄積された白色雑音源に基づくサブバンド分割波形ベクトルを選択する。白色雑音側重み付け乗算部223bは、選択されたサブバンド分割波形ベクトルの各要素に重み付け係数Aa0〜Aa(M−1)をそれぞれ乗算する。なお、各係数は、Apx+Aax=1となるように決められる。
加算部224は、正弦波合成により周期性成分を合成するサブバンドリスト以外のサブバンドについてそれぞれインパルス側および白色雑音側で重み付け乗算されたサブバンド分割波形ベクトルを加算する。このように、複数種類のサブバンド分割波形ベクトルを、音源情報に基づき1つのサブバンド分割波形ベクトルとして生成する。混合励振源を音源に用いる場合、音源情報に基づき、インパルス列と雑音源の混合比調整も同時に行なう。
なお、インパルス側蓄積部221a、インパルス側選択部222aおよびインパルス側重み付け乗算部223aは、インパルス側サブバンド分割音源生成部220aを構成する。白色雑音側蓄積部221b、白色雑音側選択部222bおよび白色雑音側重み付け乗算部223bは、白色雑音側サブバンド分割音源生成部220bを構成する。
サブバンドパワー調整部130は、生成されたサブバンド分割音源波形ベクトルに対して、入力されたスペクトル特性情報に応じたサブバンド毎の振幅調整を行なう。サブバンドパワー調整部130は、各サブバンドのパワーを制御するための乗算回路を有し、入力されるスペクトル特徴情報に基づき、サブバンド毎にこの係数A0〜AM−1を調整する。
正弦波合成部232は、正弦波合成により周期性成分を合成するサブバンドリスト(特定のサブバンド)について、サブバンド毎に出力目標音声のスペクトル特性を模擬するように、振幅調整された正弦波を合成する。これにより、サブバンド符号化におけるサブバンド数が少ない場合であっても、入力されたスペクトル特性情報を周波数軸方向に対してより高精度に反映させた音声を合成することができる。その結果、処理量の増加を抑えつつ、高い解像度で音声を再現できる。なお、サブバンド毎の振幅調整がなされた正弦波合成成分に対しては、インパルス成分の混合重み係数Ap0〜Ap(m−1)を乗じ、それをサブバンドの正弦波合成による成分として保存する。
正弦波合成部232は、特定のサブバンドにおいてインパルス音源に対応させて正弦波合成成分を生成することが好ましい。また、正弦波合成部232は、低い側の一部の帯域のサブバンドを特定のサブバンドとして正弦波合成成分を生成することが好ましい。これにより、低い側の一部の帯域のサブバンドにおいて、入力されたスペクトル特性情報を周波数軸方向に対して高精度に反映させた音声を合成できる。低い周波数の方を細かく扱うことで特に聴覚特性を向上できる。正弦波合成部232の動作の詳細は、後述する。
サブバンド分割波形ベクトル生成部236は、特定のサブバンドにおいて振幅調整されたサブバンド分割音源波形ベクトルおよび正弦波が合成された正弦波合成成分を組み合わせて1つのサブバンド分割波形ベクトルを生成する。なお、サブバンドパワー調整部130およびサブバンド合成部140の機能は、音声合成装置100のものと同様である。
サブバンド合成部140は、振幅調整がなされたサブバンド分割音源波形ベクトルを単一の音声波形に合成する。サブバンド合成部140は、例えばアップサンプラD↑および合成フィルタバンクR0(z)〜RM−1(z)により構成される。
このように、音声合成装置200は、音源波形の種類に応じて、それぞれサブバンド分割し、音声合成時に事前蓄積した帯域サブバンド分割波形ベクトルを用いて音源となるサブバンド分割波形ベクトルを生成する。
(正弦波合成部による処理)
以下に、正弦波合成部232の動作の詳細を説明する。正弦波合成部232における処理は、例えば正弦波合成部232による最終出力波形と同じサンプリングレートで特定の周波数の正弦波を生成し、それらを組み合わせて周期性波形を構築して、サブバンド符号化を行なうことで実現できる。
サブバンド符号化の処理が線形な処理のみで構成される場合、より効率的な処理のために、正弦波合成部232における処理は、ダウンサンプリングされたサンプリングレートと同じサンプリングレートで正弦波系列を生成して先にサブバンド符号化し、サブバンド符号のベクトルを定数倍することで正弦波の振幅調整を行なってから、そのベクトルを足し合わせることで、出力となる正弦波合成成分を生成してもよい。
このように正弦波合成部232は、サブバンド分割音源波形ベクトルとして原波形を完全もしくは近似的に復元できるようにダウンサンプリングし、ダウンサンプリングでのサンプリングレートと等しいサンプリングレートで、特定のサブバンドにおいて正弦波合成成分を生成することが好ましい。このようにして、音声合成時においてサブバンド符号化処理を行なうことなく、予めサブバンド符号化された正弦波合成結果を出力することで、処理量を削減しつつ、入力に対応した合成音声波形を生成できる。
さらに、サブバンド符号化された正弦波の生成処理においては、通常のサブバンド符号化処理を行なわずに、その振幅および位相特性からサブバンド符号化されたベクトル系列を直接求めることが可能である。これは、合成対象の周期性波形の周波数は音源情報として与えられ、サブバンド符号化に用いられる各フィルタの周波数−振幅特性および周波数−位相特性から、その振幅および位相特性が求まるため、可能になる。
各サブバンドの各サンプルの値は、スペクトル特徴情報から決まる振幅特性を用いて得られた当該位相における正弦波の振幅と、帯域遮断フィルタの振幅特性の積で決まる。なお、位相は、帯域遮断フィルタの位相特性を反映させたものとする。三角関数については、例えば事前に数百の位相に対する値のテーブルを準備しておき、テーブルで定義された値の間を一次補間で求める方法等により、効率的に求めることができる。帯域遮断フィルタの振幅特性と位相特性についても同様にテーブルと一次補間を組み合わせる方法で効率的に求めることができる。
上記の計算では、サブバンド符号化におけるフィルタの遮断域において、その振幅特性は一部の点を除き完全に0ではない。したがって、厳密な処理を行なうとすると、ある1つの正弦波系列に対するサブバンド符号化結果は、全てのサブバンド成分、すなわちサブバンド分割波形ベクトルの全ての次元要素に対して、それぞれ計算して求めなければならなくなる。正弦波合成部232は、合成する全てのサブバンドの成分に対してそれぞれ計算して求める必要があることになる。
ただし、フィルタ遮断域の遮断量が充分に大きいと考えられるときは、遮断域に対応する次元の要素の値を0と見なすことで、正弦波の振幅制御に必要な乗算処理を削減できる。例えば、32帯域分割が行われるMPEGオーディオでは、符号化で用いられる疑似直交鏡像フィルタバンクで、隣接サブバンドの中心周波数まで帯域制限フィルタのエッジ周波数をオーバラップさせ、基本的にはある周波数において常に2つのサブバンドが重なる構造となっており、また、帯域制限フィルタの遮断域は実用上充分なものと見なせる。
例えば、32kHzサンプリング時には、サブバンド符号化部の帯域制限フィルタの通過域は、0Hzから0.75kHz,0.25kHzから1.25kHz,0.75kHzから1.75kHz,1.25kHzから2.25kHz,…となる。この場合に、1kHzの正弦波は、主に2番目と3番目のサブバンドの成分として符号化される。そこで、上記の近似により、残りの30サブバンドの値は0に固定し、正弦波合成部232においてサブバンド分割波形ベクトルを生成する際に必要な加算および乗算処理を省くことができる。
(音声合成装置の動作例)
次に、音声合成装置200の動作例を説明する。図8および図9は、音声合成装置200の動作の一例を示すフローチャートである。なお、図中のA、B、Cは、図8と図9との流れを結ぶ点を示している。本動作例では、フレームシフトがDサンプル、音源波形の1素片の長さがMサンプル、分割帯域数がMであることを前提条件としている。
まず、ランダムに選択した雑音素片n1のフレーム内開始点s1を0に設定し、ランダムに選択した雑音素片n2のフレーム内開始点s2をMに設定する(ステップT1)。次に、入力データの有無を判定する(ステップT2)。入力データが無い場合には、処理を終了する。入力データがある場合には、入力データとして、基本周波数、混合重み、スペクトル特徴情報を取得する(ステップT3)。
入力された基本周波数からインパルスの位置を決定する(ステップT4)。各インパルスに対応するサブバンド分割音源波形ベクトルを蓄積されたサブバンド分割音源波形ベクトルから取得する(ステップT5)。なお、取得数はインパルスの数と同じ個数である。そして、インパルス側で取得したサブバンド分割音源波形ベクトルの和を計算する(ステップT6)。また、正弦波合成により周期性成分を合成するサブバンドリスト以外のサブバンドについて、インパルス側でサブバンド分割音源波形ベクトルの要素をそれぞれ混合重み係数倍する(ステップT7)。
sを正弦波合成により周期性成分を合成するサブバンドリストの最初の要素とする(ステップT8)。fkを基本周波数のある整数倍の値のうち、サブバンドsの分析フィルタ(Es(z))の通過域に含まれる最小の値とし、x=0とする(ステップT9)。
周波数がfkでインパルスの位置を中心とする余弦関数を、スペクトル特徴から定まる周波数−振幅特性関数P(w)によりP(w)(ただしw=2πfk/fs、fsはサンプリング周波数)倍する。そして、その関数にフィルタEs(z)を適用した場合について、対象時刻tにおけるその結果の値を計算し、xに加算する(ステップT10)。すなわちxをx+|Es(w)|P(w)cos(2πfk(t−t0)+argEs(w))で更新する。なお、Es(w)はEs(z)のzをexp(jw)に置き換えた関数(jは虚数単位)、tが対象時刻、t0がインパルス位置の時刻である。
fkを基本周波数分だけ増加させ、合成対象を1つ上の調波に更新する(ステップT11)。fkがEs(z)の通過域に含まれるか否かを判定する(ステップT12)。含まれる場合はステップT10に戻る。そうでなければステップT13へ進む。xにそのサブバンドsのインパルス成分の混合重み係数を乗じ、それをサブバンドsの正弦波合成による成分として保存する(ステップT13)。
サブバンドsが正弦波合成により周期性成分を合成するサブバンドのリストの最後の要素か否かを判定する(ステップT14)。最後の要素でない場合にはsを正弦波合成により周期性成分を合成するサブバンドのリストのsの次の要素に更新し(ステップT15)、ステップT9へ戻る。最後の要素である場合には、2個の白色雑音のサブバンド分割音源波形ベクトルである(n1,s1)、(n2,s2)の情報に基づき蓄積されたサブバンド分割音源波形ベクトルから取得する(ステップT16)。
そして、取得したサブバンド分割音源波形ベクトルの和を計算する(ステップT17)。白色雑音源波形のサブバンド分割音源波形ベクトルの要素は、それぞれ(1−混合重み係数)倍する(ステップT18)。
次に、雑音素片n1のフレーム内開始点s1をs1−Dに設定し、雑音素片n2のフレーム内開始点s2をs2−Dに設定する(ステップT19)。フレーム内開始点s1が−Mより大きいか否かを判定し(ステップT20)、大きい場合には、ステップT22に進む。
フレーム内開始点s1が−M以下である場合には、雑音素片n1を雑音素片n2と同じに設定し、フレーム内開始点s1を0に設定する。また、雑音素片n2を新たにランダムに選択し、雑音素片n2のフレーム内開始点s2をMに設定する(ステップT21)。
次に、正弦波合成により周期性成分を合成するサブバンドリスト以外のサブバンドについて、混合励振源のサブバンド分割音源波形ベクトルとして、インパルス側と白色雑側の重み付きサブバンド分割音源波形ベクトルの和を計算する(ステップT22)。そして、音源波形のサブバンド分割音源波形ベクトルの各要素に対し、スペクトル特徴に基づく値を乗じる(ステップT23)。
サブバンドリストに含まれるサブバンドについて正弦波合成側と白色雑音側の重み付きサブバンド分割音源波形ベクトルの和を計算する(ステップT24)。サブバンド合成処理を行ない(ステップT25)、Dサンプルを出力して(ステップT26)、ステップT2に戻る。このような処理により、処理量を削減し、十分な音声合成処理や混合励振が可能になる。なお、上記のような動作は、装置内のコンピュータによりプログラムが実行されることで行なわれる。
なお、上記の実施形態では、入力情報に応じてサブバンド毎に振幅を調整しているが、音源波形を複数の周波数帯域の成分に分解し、分解された成分をそれぞれサブバンド符号化し、サブバンド符号化された分解成分について振幅を調整してもよい。