(57)【要約】【課題】周波数成分の漏れ出しに着目した位相補正により音声波形の合成をより適切に行う音声分析合成装置を提供する。【解決手段】ＦＦＴ部２３は、１フレーム分の元音声データを対象にＦＦＴを行う。位相変換部２４は、ＦＦＴの実行により得られた各周波数チャンネルの周波数成分から位相、及び周波数振幅を求める。ピッチシフタ２５は、各周波数成分の位相、及び周波数振幅を移動させることでピッチシフトを行う。位相補正部２６は、周波数振幅を参照して、実際に周波数成分が存在する周波数チャンネルである実周波数チャンネルを推定し、その近傍の周波数チャンネルとの間の位相差を維持させる位相補正をピッチシフト後の位相に対して行う。それによりＩＦＦＴ部２７は、その位相補正によって得られた周波数成分に対しＩＦＦＴを実行し、１フレーム分の合成音声データを合成する。【選択図】図２
2008216381.tif 000002
【特許請求の範囲】
【請求項１】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置において、
前記第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析手段と、
前記周波数分析手段による分析結果を基に、前記周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルを推定する推定手段と、
前記推定手段が推定した実周波数チャンネルと近傍の周波数チャンネルとの間の位相関係を維持させる位相補正を行う位相補正手段と、
前記位相補正手段が位相補正を行って得られる周波数成分を用いて、前記第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声分析合成装置。
【請求項２】
前記近傍の周波数チャンネルは、前記実周波数チャンネルの低域側、及び高域側ともに、該実周波数チャンネルから連続する最大で２つの周波数チャンネルである、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項３】
前記推定手段は、前記周波数成分から得られる該周波数成分の大きさを示す周波数振幅を参照して前記実周波数チャンネルを推定する、
ことを特徴とする請求項１、または２記載の音声分析合成装置。
【請求項４】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置として用いることが可能なコンピュータに、
前記第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析機能と、
前記周波数分析機能による分析結果を基に、前記周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルを推定する推定機能と、
前記推定機能により推定した実周波数チャンネルと近傍の周波数チャンネルとの間の位相差を維持させる位相補正を行う位相補正機能と、
前記位相補正機能により位相補正を行って得られる周波数成分を用いて、前記第２の音声波形をフレーム単位で合成する音声合成機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声波形を分析し、その分析結果を用いて音声波形を合成するための技術に関する。
【背景技術】
【０００２】
音声波形を分析し、その分析結果を用いて音声波形を合成する音声分析合成装置のなかには、音声波形の分析として周波数分析を行うものがある。その周波数分析を行って音声波形を合成する従来の音声分析合成装置としては、例えば特許文献１に記載のものがある。その特許文献１に記載された従来の音声分析合成装置は、以下のようにして音声波形の合成を行っている。合成後の音声波形、元の音声波形を区別するために以降、前者を「合成音声波形」、後者を「元音声波形」と表記することとする。
【０００３】
特許文献１に記載された従来の音声分析合成装置は、アナログの音声信号を入力してサンプリングを行うことにより音声データに変換し、その音声データから予め定めたサイズ分の音声データであるフレームの切り出しを行う。その切り出しは、オーバーラップファクタＯＶＬでオーバーラップさせて行う。そのオーバーラップファクタＯＶＬは、フレームサイズをホップサイズ（隣り合うフレーム間のずれに相当するサンプリング数）で割って得られる値である。上記元音声波形は、上記音声信号、或いは音声データによって表されるものである。
【０００４】
ピッチのシフトは、切り出したフレームに対して補間、または間引きを行うことで実現させる。補間、或いは間引きには、一般的なラグランジュ関数やネヴィル補間等を用いることができる。そのピッチシフト自体は、設定されたピッチ変換比であるスケーリングファクタρに従って行う。それによりフレームサイズは、そのファクタρの値が例えば２であれば１／２となる。ピッチは２倍となる。
【０００５】
短時間フーリエ変換（ＳＴＦＴ）、例えば離散フーリエ変換（ＤＦＴ）は、ピッチシフト後のフレームを対象に行う。その変換により、周波数チャンネル毎に周波数成分が抽出される。その周波数成分は、実数部と虚数部からなり、各周波数チャンネルの周波数振幅、及び位相はその周波数成分から算出される。ここではＤＦＴとして高速フーリエ変換（ＦＦＴ）を行うものと想定する。
【０００６】
ピッチシフトを行うことにより、フレームサイズは変化する。そのフレームサイズを元に戻すためのタイムスケーリングは、ＦＦＴの実行により得られた各周波数チャンネルの周波数成分を対象にして行われ、ＩＦＦＴ（逆ＦＦＴ）は、タイムスケーリング後に行う。そのＩＦＦＴによって得られた１フレーム分の音声データは、先に得られた音声データにオーバーラップ加算される。そのオーバーラップ加算により得られた音声データをアナログ信号に変換することにより音声を出力する。上記合成音声波形は、そのアナログ信号、或いはオーバーラップ加算により得られた音声データによって表されるものである。
【０００７】
上記タイムスケーリングでは、連続するフレーム間の位相差をスケーリングファクタρに従って伸縮させることにより、フレームの時間長を変換する。現在のフレームのフレーム番号をｉ、ＦＦＴ後の各周波数チャンネルのチャンネル番号をｋとすると、周波数チャンネルｋの位相θｉ，ｋは、一つ前のフレームでの位相θｉ−１，ｋを用いて
θｉ，ｋ＝θｉ−１，ｋ＋ΔΘｉ，ｋ  ・・・ （１）
と表すことができる。ここでΔΘｉ，ｋは一つ前のフレームから今回のフレームまでの間に進んだ位相、即ちフレーム間の位相差を示している。
【０００８】
その位相θｉ，ｋのタイムスケーリング後の位相θ’ｉ，ｋは、フレーム間位相差ΔΘｉ，ｋ、及びスケーリングファクタρを用いて、以下のようにして算出できる。
θ’ｉ，ｋ＝θ’ｉ−１，ｋ＋ρ・ΔΘｉ，ｋ  ・・・ （２）
フレーム間位相差Δθｉ，ｋは
Δθｉ，ｋ＝θｉ，ｋ−θｉ−１，ｋ      ・・・  （３）
により求められる。しかし、ＦＦＴ（ＤＦＴ）により算出される周波数成分から位相を算出する際にａｒｃｔａｎにより得られる値は−πとπの間に制限される。それにより、位相差Δθｉ，ｋもそのままでは−２πと２πの間の値となる。しかし、フレーム間の時間差が一定時間より短い場合を除き、位相はフレーム間に２π以上進行するのが普通である。このため、実際の位相差をΔΘｉ，ｋとすると、それは以下のようになる。
【０００９】
ΔΘｉ，ｋ＝Δθｉ，ｋ＋２ｎπ  （ただし、ｎ＝０、１，２，・・・）  ・・・ （４）
適切にタイムスケーリングを実施するためには、式（４）中の整数ｎの値を推定する必要がある。その推定を行う操作は位相展開と呼ばれる。その位相展開は以下のようにして行われる。展開の有無の区別を容易にするために、折り畳まれている（展開されていない）位相を小文字のθ、展開されている位相を大文字のΘで表記する。
【００１０】
周波数チャンネルｋの中心周波数（の角速度）Ωｉ，ｋは、サンプリング周波数をｆｓ、ＦＦＴ点数（フレームのサンプリング数）をＮとすると
Ωｉ，ｋ＝（２π・ｆｓ／Ｎ）・ｋ     ・・・ （５）
により求めることができる。この周波数Ωｉ，ｋのとき、直前のフレームとの時間差をΔｔとすると、フレーム間の位相差ΔＺｉ，ｋは
ΔＺｉ，ｋ＝Ωｉ，ｋ・Δｔ     ・・・ （６）
により算出できる。
【００１１】
時間差Δｔは
Δｔ＝Ｎ／（ｆｓ・ＯＶＬ）   ・・・ （７）
で求められるから、式（５）〜（７）より
ΔＺｉ，ｋ＝Ωｉ，ｋ・Δｔ＝（２π・ｆｓ／Ｎ）・ｋ・Ｎ／（ｆｓ・ＯＶＬ）
＝２π・ｋ／ＯＶＬ        ・・・ （８）
となる。一方、式（６）では位相展開されているので、以下のように記述できる。
【００１２】
ΔＺｉ，ｋ＝Δζｉ，ｋ＋２ｎπ     ・・・ （９）
式（３）で算出される位相差Δθｉ，ｋと式（９）中の位相差Δζｉ，ｋの差をδ（＝Δθｉ，ｋ−Δζｉ，ｋ）とすると、式（３）は
Δθｉ，ｋ＝Δζｉ，ｋ＋δ      ・・・  （１０）
と変形することができる。従って、式（９）及び（１０）から
Δθｉ，ｋ−ΔＺｉ，ｋ＝（Δζｉ，ｋ＋δ）−（Δζｉ，ｋ＋２ｎπ）
＝δ−２ｎπ     ・・・ （１１）
が導出できる。
【００１３】
式（１０）及び（１１）中のδは、式（１１）の右辺の２ｎπを削除してその範囲を−πからπの間に制限することで算出できる。そのδは、元音声波形において実際に検出される位相差（以降「実位相差」と呼ぶ）である。
【００１４】
そのように算出される実位相差δに位相差ΔＺｉ，ｋ（＝Ωｉ，ｋ・Δｔ）を加算すれば、以下のように位相展開された位相差ΔΘｉ，ｋを求めることができる。
ΔΘｉ，ｋ＝δ＋ΔＺｉ，ｋ＝δ＋（Δζｉ，ｋ＋２ｎπ）＝（Δζｉ，ｋ＋δ）＋２ｎπ）
＝Δθｉ，ｋ＋２ｎπ        ・・・  （１２）
ところで、上述のようにして合成音声波形を合成する音声分析合成装置では、その合成音声波形による音声（合成音）が、元音声波形の音声（原音）に対してphasiness、若しくはreverbrantと呼ばれる音像のぼやけた音色（位相ズレ感を与える音色）となる現象が発生することが知られている。その原因は、式（２）の位相θ’ｉ−１，ｋを必ずしも正確に求めることができないことにある。
【００１５】
位相θ’ｉ−１，ｋは、直前のフレームまでの変換後のフレーム間位相差δの積分値となっている。従って、過去のフレームにおいて一度でも不正確な位相差δを求めてしまうと、積分値である位相θ’ｉ−１，ｋは不正確なものとなる。通常、音声では、或る周波数成分が別の周波数チャンネルに遷移したり、周波数成分そのものが発生、消滅を繰り返している。このため、全周波数チャンネルにおいて、それらの積分値を常に正しく保持することは不可能である。それにより、時間軸方向の位相整合性は正しく保持されても、同一フレーム内における周波数チャンネル間の位相関係（周波数軸方向の位相整合性）が保持されず、上記現象が発生する。
【００１６】
上述したようなことから、特許文献１に記載された従来の音声分析合成装置では、積分値（位相θ’ｉ−１，ｋ）を使わずに、直前のフレームまでの各周波数チャンネルの位相変化量を基準とする一つの周波数チャンネルの位相変化量から構築し、今回のフレームにおける各周波数チャンネルの位相変化量を展開された位相差から算出し、両者を加算することで今回のフレームでの位相差θ’ｉ，ｋを求めている。それにより、時間軸方向の位相の整合性と周波数軸方向の位相の整合性を共に保持できるように位相補正を行っている。その位相θ’ｉ，ｋは具体的には次式で求めている。
【００１７】
θ'ｉ，ｋ＝（ΔΘｉ，ｋ／ΔΘｉ，B）（θ'ｉ−１，B−θｉ−１，B）
＋（ρ−１）ΔΘｉ，ｋ＋θｉ，ｋ       ・・・ （１３）
式（１３）において、下添字として表記したＢは最も波長の長い、すなわち最も低い周波数成分が存在するチャンネルを示している。式（１３）右辺第１項は、チャンネルＢを基準にして、１フレーム前（直前）のフレームｉ−１までに生じた元音声（元音声波形）と合成音声（合成音声波形）間の位相変化（較差）量を示している。その第２項は、その直前フレームｉ−１から現在のフレームｉに移行する間（以降、便宜的に「直前フレーム間」と呼ぶ）に発生する元音声と合成音声間の位相変化（較差）量を示している。
【特許文献１】特開２００５−２０８６２７号公報
【特許文献２】特開２００６−２４３００６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ＤＦＴでは、音声信号の周波数成分が存在する角周波数が２π・ｋ／Ｎと等しいという特殊な場合（図６の左側のグラフ）を除き、その成分が周囲の周波数チャンネルに漏れ出す（図６の右側のグラフ）。つまり、複数の周波数チャンネルが励起される。これを軽減するためにフレーム抽出（切り出し）はハニング窓等の窓関数を用いて行っている。しかし、窓関数を用いても周波数成分の漏れ出し分は小さくないのが実状である。
【００１９】
漏れ出した周波数成分（漏れ出し成分）の位相は、実際に周波数成分が存在する周波数チャンネル（以降「実周波数チャンネル」）と一致する位相、或いは−πだけずれた位相となる。−πずれる周波数チャンネルは、振動する窓関数のサイドローブが負の値となるチャンネルである。ハニング窓を用いた場合、実周波数チャンネルの両隣に位置する２つの周波数チャンネルでの漏れ出し成分の位相は−πずれる。
【００２０】
音声信号の周波数成分が存在する角周波数が２π・ｋ／Ｎと等しいという特殊な場合でなければ、その周波数成分は上述したように漏れ出して他のチャンネルを励起させる。それらの周波数チャンネル間の位相には、窓関数に依存する関係がある。周波数成分の漏れ出しが発生しないのは特殊な場合のみである。このことから、その漏れ出しに着目した位相補正により、合成音声波形はより適切に合成することが可能となると考えられる。
【００２１】
本発明の課題は、周波数成分の漏れ出しに着目した位相補正により音声波形の合成をより適切に行う音声分析合成装置を提供することにある。
【課題を解決するための手段】
【００２２】
本発明の音声分析合成装置は、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行うことを前提とし、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析手段と、周波数分析手段による分析結果を基に、周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルを推定する推定手段と、推定手段が推定した実周波数チャンネルと近傍の周波数チャンネルとの間の位相関係を維持させる位相補正を行う位相補正手段と、位相補正手段が位相補正を行って得られる周波数成分を用いて、第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【００２３】
なお、上記近傍の周波数チャンネルは、実周波数チャンネルの低域側、及び高域側ともに、該実周波数チャンネルから連続する最大で２つの周波数チャンネルである、ことが望ましい。また、上記推定手段は、周波数成分から得られる該周波数成分の大きさを示す周波数振幅を参照して実周波数チャンネルを推定する、ことが望ましい。
【００２４】
本発明のプログラムは、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置として用いることが可能なコンピュータに、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析機能と、周波数分析機能による分析結果を基に、周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルを推定する推定機能と、推定機能により推定した実周波数チャンネルと近傍の周波数チャンネルとの間の位相差を維持させる位相補正を行う位相補正機能と、位相補正機能により位相補正を行って得られる周波数成分を用いて、第２の音声波形をフレーム単位で合成する音声合成機能と、を実現させる。
【発明の効果】
【００２５】
本発明では、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出し、その分析結果を基に、周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルを推定し、推定した実周波数チャンネルと近傍の周波数チャンネルとの間の位相関係を維持させる位相補正を行い、その位相補正を行って得られる周波数成分を用いて、第２の音声波形をフレーム単位で合成する。
【００２６】
そのような位相補正を行うことにより、位相ズレ感が無い、或いはそれが十分に軽減された第２の音声波形を合成（生成）できることが実験により確認された。このため、その位相補正を行い、それによって得られた周波数成分を用いて第２の音声波形を合成することにより、その合成を適切に行うことができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施の形態による音声分析合成装置を搭載した電子楽器の構成図である。
その電子楽器は、図１に示すように、楽器全体の制御を行うＣＰＵ１と、複数の鍵を備えた鍵盤２と、各種スイッチを備えたスイッチ部３と、ＣＰＵ１が実行するプログラムや各種制御用データ等を格納したＲＯＭ４と、ＣＰＵ１のワーク用のＲＡＭ５と、例えば液晶表示装置（ＬＣＤ）や複数のＬＥＤなどを備えた表示部６と、特には図示しない端子に接続されたマイク７から入力されるアナログの音声信号のＡ／Ｄ変換を行いその音声データを出力するＡ／Ｄ変換器８と、ＣＰＵ１の指示に従い楽音発音用の波形データを生成する楽音生成部９と、その生成部９が生成した波形データのＤ／Ａ変換を行い、アナログのオーディオ信号を出力するＤ／Ａ変換器１０と、そのオーディオ信号の増幅を行うアンプ１１と、そのアンプ１１が増幅を行った後のオーディオ信号を音声に変換するスピーカ１２と、を備えて構成されている。それらの構成において、ＣＰＵ１、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、表示部６、Ａ／Ｄ変換器８、及び楽音生成部９の間はバスによって接続されている。なお、上記スイッチ部３は、例えばユーザーが操作の対象とする各種スイッチの他に、各種スイッチの状態変化を検出するための検出回路を備えたものである。
【００２８】
上記構成の電子楽器において、本実施の形態による音声分析合成装置は、マイク７から入力した音声に対し、そのピッチ（音高）を指定されたピッチに変換（シフト）する音響効果を付与できるものとして実現されている。音声の入力は、外部記憶装置を介して行っても良く、ＬＡＮ、或いは公衆網等の通信ネットワークを介して行っても良い。
【００２９】
図２は、本実施の形態による音声分析合成装置の機能構成図である。
音響効果を付加した音声波形、つまりピッチをシフトした音声波形は、元の音声波形を周波数分析して周波数チャンネル毎に周波数成分（スペクトル成分）を抽出し、抽出した周波数成分をシフトし、そのシフト後の周波数成分を用いて合成（生成）するようになっている。そのために、以下のような機能構成を備えている。
【００３０】
図２に示すＡ／Ｄ変換器（ＡＤＣ）８は、マイク７から出力されたアナログの音声信号をデジタルの音声データに変換するものである。例えばサンプリング周波数２２，０５０Ｈｚ、１６ｂｉｔでＡＤ変換を行う。以降、それがＡＤ変換して得られる音声データについては同様に「元音声データ」、或いは「元波形データ」と呼び、マイク７に入力された音声については「元音声」と呼ぶことにする。
【００３１】
入力バッファ２１は、Ａ／Ｄ変換器８が出力する元音声データを一時的に格納するバッファである。フレーム抽出部２２は、入力バッファ２１に格納された元音声データから予め定められたサイズ分の音声データであるフレームを切り出すことで抽出する。そのサイズ、つまり音声データ数は例えば１０２４である。正確な位相展開の実施にはフレームをオーバーラップさせて抽出する必要があることから、フレームの切り出しはオーバーラップファクタＯＶＬでオーバーラップさせ、窓関数（例えばハニング窓）を用いて行う。そのファクタＯＶＬの値としては４を設定している。この場合、ホップサイズは２５６（１０２４／２５６＝４）である。
【００３２】
フレーム抽出部２２が抽出したフレームはＦＦＴ部２３に出力され、ＦＦＴが実行される。そのＦＦＴの実行により得られた各周波数チャンネルの周波数成分は、位相変換部２４に出力され、周波数チャンネル毎に位相変換が行われる。その位相変換は、式（１）により位相展開された位相Θ’ｉ，ｋ（式（１）中では「θ’ｉ，ｋ」と表記）を求めるものである。
【００３３】
周波数成分の実数部をｒｅａｌ、虚数部をｉｍｇと表記すると、周波数振幅ｍａｇは
ｍａｇ＝（ｒｅａｌ２＋ｉｍｇ２）１／２     ・・・ （１４）
により計算される。その位相をｐｈａｓｅ（＝θ）と表記すると
ｐｈａｓｅ＝ａｒｃｔａｎ（ｉｍｇ／ｒｅａｌ）   ・・・ （１５）
により計算される。この位相ｐｈａｓｅは折り畳まれたものである。それを位相展開することにより、式（１）右辺第２項の位相展開された位相差ΔΘｉ，ｋは最終的には式（１２）により計算される（特許文献１或いは２）。式（１４）により算出した周波数振幅ｍａｇ、及び位相Θ’ｉ，ｋ（フレーム、或いはインデクス値を特に示す必要がない場合には以降「Θ’」と表記する。これは他のシンボルも同様とする）はそれぞれ、用意された配列変数ｍａｇ、及びｍｏｄｉｆｉｅｄ＿ｐｈａｓｅのインデクス値（チャンネル番号）で指定される要素に代入・保持される。式（１５）により算出した位相ｐｈａｓｅは、用意された配列変数ｐｈａｓｅのインデクス値で指定される要素に代入・保持される。
【００３４】
ピッチシフタ２５は、スケーリングファクタρの値に応じて、各周波数チャンネルの振幅ｍａｇ、Θ’を別の周波数チャンネルに移動させることにより、ピッチシフトを行う。その移動のために、配列変数ｓｙｎｔｈ＿ｐｈａｓｅ、及びｓｙｎｔｈ＿ｍａｇを用意している。それにより実際の移動は、配列変数ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ、及びｍａｇの各要素に代入されている値を配列変数ｓｙｎｔｈ＿ｐｈａｓｅ、及びｓｙｎｔｈ＿ｍａｇの代入すべき要素にそれぞれ代入することで行われる。
【００３５】
図６は、周波数信号の漏れ出しを説明する図である。その図６において、２つのグラフは何れも、縦軸は音声信号に存在する周波数信号（成分）による周波数振幅ｍａｇの大きさ（単位はｄＢ）、横軸は周波数をとっている。
【００３６】
図６に示すように、音声信号の周波数成分が存在する角周波数が２π・ｋ／Ｎと等しいという特殊な場合（左側のグラフ）でなければ、その周波数成分は近傍の周波数チャンネルを励起させる。その周波数成分が実際に存在する周波数チャンネルである実周波数チャンネルにおける周波数振幅ｍａｇは、他の周波数チャンネルのそれより大きい。それらの周波数チャンネル間の位相には、窓関数に依存する関係がある。
【００３７】
このようなことから位相補正部２６は、周波数振幅ｍａｇの大きさに着目して実周波数チャンネルの推定を行い、推定した実周波数チャンネル毎に、その近傍の周波数チャンネルの位相Θを実周波数チャンネルの位相Θ、及び窓関数に依存する関係により補正する。それにより、実際に存在する周波数成分により励起される他の周波数チャンネルとの間の位相の関係（位相差）を維持させる。その維持のための操作は配列変数ｓｙｎｔｈ＿ｐｈａｓｅの各要素に代入された位相Θを対象に行われる。また、同様の操作を周波数振幅ｍａｇに対して行う。周波数成分の実数部、及び虚数部は、その補正後、つまり位相補正を行った後の位相、及び周波数振幅を用いて算出する。具体的には、その操作後の位相、及び周波数振幅をｐｈａｓｅ’、及びｍａｇ’で示すと、位相補正を行った後の実数部ｒｅａｌ’、及び虚数部ｉｍｇ’は、以下のオイラーの公式により計算する。
【００３８】
ｒｅａｌ’＝ｍａｇ’・ｃｏｓ（ｐｈａｓｅ’）    ・・・  （１６）
ｉｍｇ’  ＝ｍａｇ’・ｓｉｎ（ｐｈａｓｅ’）    ・・・  （１７）
ＩＦＦＴ部２７は、このようにして周波数チャンネル毎に得られた周波数成分を位相補正部２６から入力し、ＩＦＦＴを実行して時間領域上のデータに戻すことにより、１フレーム分の音声データを生成して出力する。その音声データについては以降「合成音声データ」と呼び、それによって発音される音声を「合成音声」と呼ぶことにする。
【００３９】
出力バッファ２９は、音声としてスピーカ１２から放音させる合成音声データを格納するバッファである。フレーム加算部２８は、ＩＦＦＴ部２７から入力した１フレーム分の合成音声データを、出力バッファ２９に格納された合成音声データにオーバーラップさせて加算する。出力バッファ２９に格納された合成音声データは、Ｄ／Ａ変換器（ＤＡＣ）１０に出力されてＤ／Ａ変換される。
【００４０】
このようにして本実施の形態では、実周波数チャンネルとその周波数成分によって励起される（その周波数成分が漏れ出す）近傍の周波数チャンネルの間の位相の関係（位相差）を維持させる位相補正を行い、その補正を行って得られる各周波数チャンネルの周波数成分を用いて合成音声データを生成する。実験により、その位相の関係を維持させることで合成音声における位相ズレ感が十分に軽減できることが確認された。このため、その関係を維持させる位相補正は、位相ズレ感を与えない合成音声データを生成するうえで極めて効果的である。
【００４１】
本実施の形態では、位相補正を行う対象を実周波数チャンネルの近傍の周波数チャンネルに限定している。それは以下のような理由からである。
実周波数チャンネルの周波数成分によって励起される近傍の周波数チャンネルのフレーム間位相差は、実周波数チャンネルのそれと等しい。上記式（１０）及び（１１）中の実位相差δは、チャンネルｋの中心角周波数２π・ｋ／Ｎがフレーム間の時間差Δｔの間に進行する位相差（以降「中心位相差」）Δθｉ，ｋと、そのチャンネルｋに存在する周波数成分（漏れ出した周波数成分の場合もある）のフレーム間位相差Δζｉ，ｋとの差分である。周波数成分が漏れ出した周波数チャンネルでの位相差Δζは、実周波数チャンネルのフレーム間位相差Δζに等しいから、実周波数チャンネルから離れるほど大きくなる。実周波数チャンネルがｋであれば、実位相差δは０となる。
【００４２】
このとき、実周波数チャンネルｋからｍチャンネル離れたチャンネルでの実位相差δは
δ＝２π・ｆｓ・（ｋ＋ｍ）・Δｔ／Ｎ−２π・ｆｓ・ｋ・Δｔ／Ｎ
＝２π・ｆｓ・ｍ・Δｔ／Ｎ              ・・・  （１８）
となる。時間差Δｔ＝（Ｎ／ＯＶＬ）・（１／ｆｓ）であるから、式（１８）は
δ＝（２π・ｆｓ・ｍ／Ｎ）・（Ｎ／ｆｓ・ＯＶＬ）
＝２π・ｍ／ＯＶＬ                            ・・・  （１９）
と変形される。
【００４３】
正常に位相展開するためには｜δ｜＜２πである必要があるので、結局。正常に位相展開できるｍの値域は
ｍ＜ＯＶＬ      ・・・  （２０）
となる。
【００４４】
従って、実周波数チャンネルとオーバーラップファクタＯＶＬの値以上、離れたチャンネルでは位相展開は適切に実行できない。本実施の形態では、その値を４としていることから、実周波数チャンネルと４チャンネル以上、離れた周波数チャンネルでは位相展開は適切に実行できないことになる。
【００４５】
上記特許文献１に記載された従来の音声分析合成装置では、式（１３）により今回のフレームでの位相差θ’ｉ，ｋを求めている。それにより、位相ズレ感のない合成音声データを生成するのを可能としている。
【００４６】
その式（１３）は、それから明らかなように、全ての周波数チャンネルでの位相展開が適切に実行できていることを前提としている。しかし、上記のように、適切に位相展開できるチャンネルは限られている。
【００４７】
上述したことは、たとえ実周波数チャンネルから或る程度、離れた周波数チャンネルで漏れ出し信号の位相展開に失敗しても、その失敗は位相ズレ感には影響を与えないことを示している。であれば、実周波数チャンネルの近傍の周波数チャンネルの位相のみを調整すれば位相ズレ感を与えない、或いはそれを軽減した合成音声データを生成すれば良いことになる。このことから本実施の形態では、近傍の周波数チャンネルのみを位相補正の対象としている。近傍の周波数チャンネルは、実周波数チャンネルの両隣に位置する２つの周波数チャンネルのみとしている。これは、その２つの周波数チャンネルに対する位相補正を行うだけで合成音声データを適切に合成（生成）できるからである。そのように位相補正を行うことにより、特許文献１に記載された音声分析合成装置と比較して、処理の負荷が軽減するという効果も得られる。
【００４８】
上記入力バッファ２１、及び出力バッファ２９は、例えばＲＡＭ５に確保された領域である。Ａ／Ｄ変換器８、Ｄ／Ａ変換器１０、入力バッファ２１、及び出力バッファ２９を除く各部２２〜２８は、例えばＲＡＭ５をワーク用にして、ＣＰＵ１がＲＯＭ４に格納されたプログラムを実行することで実現される。特に詳細な説明は省略するが、ピッチのシフト量（スケーリングファクタρ）は例えば鍵盤２への操作により指示するようになっている。
【００４９】
本実施の形態による音声分析合成装置は、上述したような位相補正を行うことにより、位相ズレ感を与えない合成音声データを合成し、スピーカ１２から放音させるものとして実現されている。以降は、その音声分析合成装置を実現させる電子楽器の動作について、図３〜図５に示す各種フローチャートを参照して詳細に説明する。
【００５０】
図３は、全体処理のフローチャートである。始めに図３を参照して、その全体処理について詳細に説明する。なお、その全体処理は、ＣＰＵ１が、ＲＯＭ４に格納されたプログラムを実行して電子楽器のリソースを使用することにより実現される。図４及び図５にそれぞれフローチャートを示す処理は、その全体処理の実行時に呼び出されるサブルーチン処理である。
【００５１】
先ず、ステップ３０１では、電源がオンされたことに伴い、初期化処理を実行する。続くステップ３０２では、スイッチ部３を構成するスイッチへのユーザーの操作に対応するためのスイッチ処理を実行する。そのスイッチ処理は、例えばスイッチ部３を構成する検出回路に各種スイッチの状態を検出させてその検出結果を受け取り、その検出結果を解析して状態が変化したスイッチの種類、及びその変化を特定して行われる。
【００５２】
ステップ３０２に続くステップ３０３では、鍵盤２へのユーザーの操作に対応するための鍵盤処理を実行する。その鍵盤処理を実行することにより、鍵盤２への演奏操作に応じて楽音がスピーカ１２から放音される。また、状況に応じて、スケーリングファクタρの設定が行われる。ステップ３０４にはその後に移行する。
【００５３】
ステップ３０４では、Ａ／Ｄ変換器８から元音声データが出力されるサンプリングタイミングか否か判定する。そのタイミングであった場合、判定はＹＥＳとなり、ステップ３０５でその元音声データをＲＡＭ５上の入力バッファ２１に書き込んだ後、ステップ３０６に移行する。そうでない場合には、判定はＮＯとなってステップ３１１に移行する。
【００５４】
ステップ３０６では、フレーム抽出タイミングか否か判定する。前回そのタイミングとなってからホップサイズ分の元音声データをサンプリングする時間が経過した場合、判定はＹＥＳとなってステップ３０７に移行する。そうでない場合には、判定はＮＯとなって上記ステップ３１１に移行する。
【００５５】
ステップ３０７では、入力バッファ２１に格納された元音声データを１フレーム分、抽出し、抽出したフレームに対して、ＦＦＴを実行し、その実行により周波数成分が得られた周波数チャンネル毎に位相変換を行う。式（１３）及び（１４）によりそれぞれ周波数チャンネル毎に算出された周波数振幅ｍａｇ、及び位相ｐｈａｓｅは配列変数ｍａｇ、及びｐｈａｓｅのインデクス値で指定される要素に代入され、位相変換により得られた位相Θは配列返送ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅのインデクス値で指定される要素に代入される。その位相変換を行った後はステップ３０８に移行する。
【００５６】
ステップ３０８では、スケーリングファクタρの値に応じてピッチシフトを行うためのピッチシフト処理を実行する。その後に移行するステップ３０９では、上記位相補正を行うための位相補正処理を実行する。ステップ３１０にはその実行後に移行する。
【００５７】
ステップ３１０では、位相補正を実施した各チャンネルの周波数成分を対象にしたＩＦＦＴを実行し、そのＩＦＦＴにより得られる１フレーム分の合成音声データをＲＡＭ５上の出力バッファ２９に格納された合成音声データにオーバーラップ加算する。ステップ３１１にはその後に移行する。
【００５８】
図２に示すフレーム抽出部２２、ＦＦＴ部２３、及び位相変換部２４は、上記ステップ３０６及び３０７の処理を実行することで実現される。ピッチシフタ２５は、ステップ３０８のピッチシフト処理を実行することで実現される。位相補正部２６は、ステップ３０９の位相補正処理を実行することで実現される。ＩＦＦＴ部２７、及びフレーム加算部２８は、ステップ３１０の処理を実行することで実現される。
【００５９】
ステップ３１１では、１サンプリング分の合成音声データを出力すべきタイミングか否か判定する。そのタイミングであった場合、判定はＹＥＳとなり、次にステップ３１２で出力すべき合成音声データを出力バッファ２９から読み出して楽音生成部９を介しＤ／Ａ変換器１０に送出し、更にステップ３１３でその他処理を実行した後、上記ステップ３０２に戻る。そうでない場合には、判定はＮＯとなり、次にステップ３１３の処理を実行する。
【００６０】
合成された合成音声データは楽音生成部９を介してＤ／Ａ変換器１０に送られる。このことから、楽音生成部９には、自身が生成した楽音の波形データを他から入力したデータとミックスする機能が搭載されている。
【００６１】
図４は、上記ステップ３０８として実行されるピッチシフト処理のフローチャートである。次に図４を参照して、そのピッチシフト処理について詳細に説明する。
上述したように配列変数ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ、及びｍａｇの各要素には、その要素を指定する値で対応付けられた周波数チャンネルの位相Θ及び周波数振幅ｍａｇが代入されている。ピッチシフトは、配列変数ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ、及びｍａｇの各要素に代入された位相Θ及び周波数振幅ｍａｇを、スケーリングファクタρの値に応じて、別の配列変数ｓｙｎｔｈ＿ｐｈａｓｅ、及びｓｙｎｔｈ＿ｍａｇの各要素に代入することで行われる。変数ｊは配列変数ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ、及びｍａｇの各要素の指定に用いられ、変数ｉは配列変数ｓｙｎｔｈ＿ｐｈａｓｅ、及びｓｙｎｔｈ＿ｍａｇの各要素の指定に用いられる。
【００６２】
先ず、ステップ４０１では、変数ｉに１を代入する。続くステップ４０２では、変数ｊに、変数ｉの値をスケーリングファクタρの値で割った値を四捨五入して得られる整数（＝ＩＮＴ（ｉ／ρ））を代入する。そのようにして変数ｊに代入される整数は、変数ｉの値をインデクス値とする周波数チャンネルに位相Θを移動させるべき周波数チャンネルのインデクス値を示している。
【００６３】
ステップ４０２に続くステップ４０３では、スケーリングファクタρ＜１のときに変数ｊの値はＦＦＴ（フレーム）サイズの半分の値ＨＡＬＦ＿ＦＦＴ＿ＳＩＺＥ（ここでは５１２である）を越える場合があることから、変数ｊの値がその値ＨＡＬＦ＿ＦＦＴ＿ＳＩＺＥ以上か否か判定する。その値が値ＨＡＬＦ＿ＦＦＴ＿ＳＩＺＥより小さい場合、判定はＮＯとなってステップ４０４に移行し、各配列要素ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ］及びｍａｇ［ｊ］の値をそれぞれ各配列要素ｓｙｎｔｈ＿ｐｈａｓｅ［ｉ］及びｓｙｎｔｈ＿ｍａｇ［ｉ］に代入する。その後はステップ４０６に移行する。一方、そうでない場合には、判定はＹＥＳとなってステップ４０５に移行し、各配列要素ｓｙｎｔｈ＿ｐｈａｓｅ［ｉ］及びｓｙｎｔｈ＿ｍａｇ［ｉ］に０を代入する。その後はステップ４０６に移行する。
【００６４】
ステップ４０６では、変数ｉの値をインクリメントする。続くステップ４０７では、変数ｉの値が値ＨＡＬＦ＿ＦＦＴ＿ＳＩＺＥより小さいか否か判定する。その大小関係が存在している場合、判定はＹＥＳとなり、上記ステップ４０２に戻る。そうでない場合には、判定はＮＯとなり、ここでピッチシフト処理を終了する。
【００６５】
図５は、図３の全体処理内でステップ３０９として実行される位相補正処理のフローチャートである。最後に図５を参照して、その位相補正処理について詳細に説明する。
図６に示すように、実周波数チャンネルの周波数振幅ｍａｇはその周波数成分により励起された近傍の周波数チャンネルのそれよりも大きい。位相補正処理では、その大小関係に着目して実周波数チャンネルを推定し、推定した実周波数チャンネルと近傍の周波数チャンネルの間の位相差を維持させる位相補正が行われる。その位相補正のための操作は、配列変数ｓｙｎｔｈ＿ｐｈａｓｅ及びｓｙｎｔｈ＿ｍａｇの各要素に代入された値に対して行われる。
【００６６】
先ず、ステップ５０１では、変数ｉに１を代入する。続くステップ５０２では、配列要素ｍａｇ［ｊ］の値が配列要素ｍａｇ［ｊ＋１］の値より大きいか否か判定する。その大小関係が存在していない場合、判定はＮＯとなってステップ５０７に移行する。そうでない場合には、判定はＹＥＳとなってステップ５０３に移行する。
【００６７】
ステップ５０３では、配列要素ｍａｇ［ｊ］の値が配列要素ｍａｇ［ｊ−１］の値より大きいか否か判定する。その大小関係が存在していない場合、判定はＮＯとなってステップ５０７に移行する。そうでない場合には、判定はＹＥＳとなってステップ５０４に移行する。
【００６８】
そのステップ５０４への移行は、変数ｊの値をインデクス値とする周波数チャンネルの周波数振幅ｍａｇはその両隣の周波数チャンネルのそれよりも大きいことを意味している。それにより本実施の形態では、変数ｊの値をインデクス値とする周波数チャンネルを実周波数チャンネルと推定する。そのように連続する３つの周波数チャンネルを参照した推定を行うのは、そのような推定を行い、実周波数チャンネルの両隣に位置する２つの周波数チャンネルのみ位相補正を行っても、合成される合成音声データの音質を十分に改善させることができるためである。実周波数チャンネルの推定が容易に（軽い処理の負荷で）行えることも理由の一つである。
【００６９】
ステップ５０４では、変数ｉに、変数ｊの値にスケーリングファクタρの値を掛けた乗算結果を四捨五入して得られる整数（＝ＩＮＴ（ｊ＊ρ））を代入する。そのようにして変数ｉに代入される整数は、変数ｊの値をインデクス値とする周波数チャンネルの位相Θを移動させた周波数チャンネルのインデクス値を示している。
【００７０】
ステップ５０４に続くステップ５０５では、実周波数チャンネルの両隣に位置する周波数チャンネルを対象に位相補正を行う。その次に移行するステップ５０６では、その位相補正に合わせて、位相補正を行った周波数チャンネルの周波数振幅ｍａｇの補正を行う。ステップ５０７にはその後に移行する。
【００７１】
上記位相補正は、具体的には以下のようにして行われる。その補正は、窓関数としてハニング窓を想定したものである。
ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ−１］＝ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ］
−（ｐｈａｓｅ［ｊ］−ｐｈａｓｅ［ｊ−１］）    ・・・  （２１）
ｓｙｎｔｈ＿ｐｈａｓｅ［ｉ−１］＝ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ−１］
・・・  （２２）
ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ＋１］＝ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ］
−（ｐｈａｓｅ［ｊ］−ｐｈａｓｅ［ｊ＋１］）    ・・・  （２３）
ｓｙｎｔｈ＿ｐｈａｓｅ［ｉ＋１］＝ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［ｊ＋１］
・・・  （２４）
本実施の形態では、配列要素ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅ［］の値を位相補正に合わせて修正している。これは、配列変数ｍｏｄｉｆｉｅｄ＿ｐｈａｓｅの各要素の値は式（１）右辺第１項の値として用いるからである。
【００７２】
一方、位相補正に合わせた周波数振幅ｍａｇの補正は以下のようにして行われる。
ｓｙｎｔｈ＿ｍａｇ［ｉ−１］＝ｍａｇ［ｊ−１］    ・・・  （２５）
ｓｙｎｔｈ＿ｍａｇ［ｉ＋１］＝ｍａｇ［ｊ＋１］    ・・・  （２６）
ステップ５０７では、変数ｊの値をインクリメントする。次のステップ５０８では、変数ｊの値が値ＨＡＬＦ＿ＦＦＴ＿ＳＩＺＥより小さいか否か判定する。その大小関係が存在している場合、判定はＹＥＳとなり、上記ステップ５０２に戻る。そうでない場合には、判定はＮＯとなり、ここで位相補正処理を終了する。
【００７３】
なお、本実施の形態では、式（２１）〜（２４）に示すように、位相補正は実際に得られた位相Θを用いて行っているが、実周波数チャンネルとその近傍の励起される周波数チャンネルの間の位相差は窓関数に依存するものであることから、窓関数により特定される値を用いて位相補正を行っても良い。
【００７４】
また本実施の形態では、連続する３つの周波数チャンネルを参照して、実周波数チャンネルを推定するようにしているが、より多くの周波数チャンネルを参照して推定するようにしても良い。位相補正の対象は、実周波数チャンネルの両隣に位置する周波数チャンネルのみとしているが、例えばその更に隣に位置する周波数チャンネルまで、つまり実周波数チャンネルの低域側、及び広域側に位置する２つの周波数チャンネルまで対象とさせても良い。
【００７５】
それ以上、位相補正する周波数チャンネルを増やしても音質の向上は比較的に小さいことが確認されている。このことから位相補正の対象は、実周波数チャンネルの低域側、及び高域側に位置する２つの周波数チャンネルまで、つまり計４つの周波数チャンネルを上限とすることが望ましい。それにより、低域側、及び高域側のうちの一方のみ、２つの周波数チャンネルを対象としても良い。
【００７６】
上記実周波数チャンネルの推定は、以下のようにして行っても良い。図７及び図８を参照して具体的に説明する。
図７は、展開した位相差と周波数の関係を説明するグラフである。縦軸は位相差、横軸は周波数である。図中に示す直線は、各チャンネルの中心周波数から計算される位相差、すなわち式（６）或いは（８）により計算されるΔＺｉ，ｋを表している。その直線に沿う形でプロットした線は、式（１０）により計算される位相差ΔΘｉ，ｋを表したものである。その位相差ΔΘｉ，ｋはＦＦＴ点数５１２点の前半１２８点分を示している。
【００７７】
図７に示すように、調波構造を持った音声では、その音声の倍音の周波数成分を持つ周波数チャンネル付近で線が階段状（平坦）となる。これは、その周波数チャンネルの周波数成分が近傍のチャンネルに漏れ出すためである。このようなことから、線の階段状となっている部分と直線が交差する個所を含む周波数チャンネルに実際の周波数成分が存在していると考えられる。それにより、その周波数チャンネルを抽出することで実周波数チャンネルを推定しても良い。その交差する個所は、それを通る縦軸と平行な直線を引いて示してある。
【００７８】
図８は、は、実位相差δと周波数の関係を説明するグラフである。そのグラフは図７と同じ音声の場合のものである。縦軸は位相差、横軸は周波数である。その図８には、図７に示す縦軸と平行な直線を横軸上の同じ位置に併せて描いてある。
【００７９】
図８に示すように、実位相差δを表す線は、図７では線の階段状となっている部分と直線が交差する個所で正から負にゼロクロスしている。このことから、ゼロクロスする点を検出することにより、実周波数チャンネルを推定することができる。上記実周波数チャンネルの推定を含め、その推定には特許文献２に記載の技術を用いることができる。
【００８０】
上述したような音声分析合成装置、或いはその変形例を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータ（データ処理装置）にロードすることにより、そのデータ処理装置を用いて本発明を適用させた音声分析合成装置を実現させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【図面の簡単な説明】
【００８１】
【図１】本実施の形態による音声分析合成装置を搭載した電子楽器の構成図である。
【図２】本実施の形態による音声分析合成装置の機能構成図である。
【図３】全体処理のフローチャートである。
【図４】ピッチシフト処理のフローチャートである。
【図５】位相補正処理のフローチャートである。
【図６】周波数信号の漏れ出しを説明する図である。
【図７】展開した位相差と周波数の関係を説明するグラフである。
【図８】実位相差と周波数の関係を説明するグラフである。
【符号の説明】
【００８２】
１ ＣＰＵ
３ スイッチ部
４ ＲＯＭ
５ ＲＡＭ
７ マイク
８ Ａ／Ｄ変換器
９ 楽音生成部
１０ Ｄ／Ａ変換器
１１ アンプ
１２ スピーカ
【図１】
2008216381.tif 000003
【図２】
2008216381.tif 000004
【図３】
2008216381.tif 000005
【図４】
2008216381.tif 000006
【図５】
2008216381.tif 000007
【図６】
2008216381.tif 000008
【図７】
2008216381.tif 000009
【図８】
2008216381.tif 000010