(57)【要約】【課題】  位相ズレ感を与える音声波形の合成を確実に回避できる音声分析合成装置を提供する。【解決手段】  ＦＦＴ部２５は、高周波成分が除去され、ピッチシフトが行われた１フレーム分の元音声データを対象にＦＦＴを行う。タイムスケーリング部２６は、ＦＦＴにより周波数成分が得られたチャンネル毎に、周波数振幅、位相、現フレームと直前のフレーム間における位相差分、及び、それを展開した位相差分をそれぞれ計算し、周波数振幅のピークに着目して基準とするチャンネルＢを検出し、そのチャンネルＢを基準とする形で、それらの計算結果を用いて合成音声における各チャンネルの位相を算出する。ＩＦＦＴ部２７は、その位相に応じて周波数成分を操作し、操作後の周波数成分に対しＩＦＦＴを行い、１フレーム分の合成音声データを合成する。【選択図】      図２
2005208627.tif 000002
【特許請求の範囲】
【請求項１】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置において、
前記第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析手段と、
前記第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、前記周波数チャンネルのなかの所定の周波数チャンネルを基準にして算出し、該位相較差量を用いる形で、現在のフレームにおける該第２の音声波形の位相を該周波数チャンネル毎に前記周波数分析手段が抽出した周波数成分を参照して算出する位相算出手段と、
前記周波数分析手段が抽出した周波数成分を前記位相成分算出手段が算出した位相に応じて周波数チャンネル毎に変換し、該変換後の周波数成分を用いて、前記第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声分析合成装置。
【請求項２】
前記位相算出手段は、前記位相較差量の他に、前記所定数前のフレームから前記現在のフレームまでの間に生じる前記第１、及び第２の音声波形間の位相較差量、及び該現在のフレームにおける該第１の音声波形の位相を用いる形で、該現在のフレームにおける該第２の音声波形の位相を前記周波数チャンネル毎に算出する、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項３】
前記所定数前のフレームは直前のフレームであり、前記所定の周波数チャンネルは、前記周波数成分を有するもののなかで周波数が最低の周波数チャンネルである、
ことを特徴とする請求項１、または２記載の音声分析合成装置。
【請求項４】
前記音声合成手段は、前記周波数分析手段で用いられたオーバーラップファクタと異なるオーバーラップファクタで前記第２の音声波形を合成できる、
ことを特徴とする請求項１、２、または３記載の音声分析合成装置。
【請求項５】
前記音声合成手段は、前記第１の音声波形のピッチをシフトした前記第２の音声波形を合成できる、
ことを特徴とする請求項１〜４の何れか１項に記載の音声分析合成装置。
【請求項６】
前記音声合成手段は、前記周波数分析手段が前記周波数チャンネル毎に抽出した周波数成分から前記第１の音声波形のフォルマントを抽出し、該周波数成分に対する操作により該抽出したフォルマントのシフトを行い、該操作を前記変換と併せて行った後の周波数成分を用いて前記第２の音声波形を合成できる、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項７】
前記音声合成手段は、前記周波数成分から前記周波数チャンネル毎に周波数振幅を求め、該周波数振幅を対象にしたフィルタリング処理により前記第１の音声波形のフォルマントを抽出する、
ことを特徴とする請求項６記載の音声分析合成装置。
【請求項８】
前記音声合成手段は、前記周波数チャンネル毎に求めた周波数振幅の状態を基に、前記フィルタリング処理で用いる次数を必要に応じて変更する、
ことを特徴とする請求項７記載の音声分析合成装置。
【請求項９】
前記音声合成手段は、前記周波数成分に対する操作として、該周波数成分から求められる周波数振幅の値が所定値以下となっている周波数振幅をより小さい値とさせる操作を併せて行う、
ことを特徴とする請求項６、または７記載の音声分析合成装置。
【請求項１０】
前記音声合成手段が合成した前記第２の音声波形を前記第１の音声波形と併せて出力することができる、
ことを特徴とする請求項１〜９の何れか１項に記載の音声分析合成装置。
【請求項１１】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
前記第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する機能と、
前記第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、前記周波数チャンネルのなかの所定の周波数チャンネルを基準にして算出し、該位相較差量を用いる形で、現在のフレームにおける該第２の音声波形の位相を該周波数チャンネル毎に前記抽出する機能により抽出した周波数成分を参照して算出する機能と、
前記抽出する機能により抽出した周波数成分を前記算出する機能により算出した位相に応じて周波数チャンネル毎に変換し、該変換後の周波数成分を用いて、前記第２の音声波形をフレーム単位で合成する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声波形を分析し、その分析結果を用いて音声波形を合成するための技術に関する。
【背景技術】
【０００２】
音声波形を分析し、その分析結果を用いて音声波形を合成する音声分析合成装置のなかには、音声波形の分析として周波数分析を行うものがある。そのような音声分析合成装置では、音声波形の合成は、具体的には以下のようにして行われる。ここでは、合成後の音声波形、元の音声波形を区別するために、前者を「合成音声波形」、後者を「元音声波形」と表記することとする。
【０００３】
合成音声波形を合成するまでの過程は、分析（analysis）過程、変更（modification）過程、及び合成（synthesis）過程、の３段階に大別される。以降、従来の音声分析合成装置においてその過程毎に行われている処理について具体的に説明する。
＜分析過程＞
元音声波形は、所定の時間間隔で音声をサンプリングして得られるものである。その元音声波形から、予め定めた時間間隔（サンプリング数）分のサンプリングデータがフレームとして切り出され、短時間フーリエ変換（ＳＴＦＴ）が行われる。そのＳＴＦＴにより、周波数が異なる周波数チャンネル毎に周波数成分が抽出される。その周波数成分は、実数部と虚数部からなり、各周波数チャンネルの周波数振幅、及び位相はその周波数成分から算出する。ＳＴＦＴは、信号データを短時間分、切り出して離散フーリエ変換（ＤＦＴ）を行うものである。このことから、ＤＦＴはＳＴＦＴを含む意味で用いることにする。そのＤＦＴでは、高速フーリエ変換（ＦＦＴ）が用いられるのが普通である。
【０００４】
ピッチ（音高）をシフトするピッチスケーリングを行う場合、切り出したフレームに対し補間、或いは間引きを行ってピッチをシフトさせた後にＦＦＴを行う。
＜変更過程＞
元音声波形のＤＦＴ（ＦＦＴ）はフレーム単位で行われることから、合成音声波形の合成もフレーム単位で行われる。その合成音声波形における周波数チャンネルｋの位相θ'i,kは下記式で計算される。発音持続時間を変化させるタイムスケーリングのみを行う場合、各周波数チャンネルの周波数振幅は変化させる必要はない。
【０００５】
θ'i,k＝θ'i-1,k＋ρ・ΔΘi,k      ・・・  （１）
ここで、ΔΘi,kは元音声波形で周波数チャンネルｋにおける直前のフレームと今回のフレームとの間の位相差を表し、ρはピッチスケーリングを行う程度を示すスケーリングファクタを表している。下添字のｉは、フレームを表している。今回のフレーム（現フレーム）はｉ、直前のフレームはｉ−１で表されている。このようなことから、（１）式は、合成音声波形における現フレームの周波数チャンネルｋの位相θ'i,kは、合成音声波形における直前フレーム時点での位相（スケーリングファクタρにより変換された後の位相差積算値）に、位相差ΔΘi,kにファクタρの乗算値を加算することで算出されることを示している。
【０００６】
その位相差ΔΘi,kは、展開されている必要がある。音声波形の合成において、位相の展開（ｕｎｗｒａｐ）、及び折り畳み（ｗｒａｐ）は重要な意味がある。このため、そのことについて以下に詳細に説明する。展開の有無の区別を容易にするために、折り畳まれている位相を小文字のθ、展開されている位相を大文字のΘで表記する。
【０００７】
任意のチャンネルｋの任意の時刻ｔにおける位相θk,tは次式で表現できる。
【０００８】
【数１】
2005208627.tif 000003
【０００９】
その（２）式から明らかなように、位相θk,tは角速度ωkを積分することで得られる。一方、ＤＦＴにより算出される周波数成分から位相を算出する際にａｒｃｔａｎにより得られる値は−πとπの間に制限される。すなわち折り畳まれている位相θk,tとして得られる。それにより、以下の式で表現される位相Θk,tにおいて２ｎπの項が欠落していることとなる。
【００１０】
Θk,t＝θk,t＋２ｎπ  （ただし、ｎ＝０、１，２，・・・）  ・・・  （３）
（１）式により位相θ'k,tを計算するためには折り畳まれている位相θk,tを展開する必要がある。その展開は、（３）式におけるｎを推定する作業であり、ＤＦＴのチャンネルｋの中心周波数を基にして推定することができる。
【００１１】
Δθi,k＝θi,k−θi-1,k                                    ・・・  （４）
（４）式中のΔθi,kは、チャンネルｋにおける折り畳まれた位相θi,kのフレーム間の位相差を示している。そのチャンネルｋの中心周波数（の角速度）Ωi,kは、サンプリング周波数をｆｓ、ＤＦＴ点数（フレームのサンプリング数）をＮとすると
Ωi,k＝（２π・ｆｓ／Ｎ）・ｋ              ・・・  （５）
により求めることができる。この周波数Ωi,kのとき、直前のフレームとの時間差をΔｔとすると、位相差ΔＺi,kは
ΔＺi,k＝Ωi,k・Δｔ                       ・・・  （６）
により算出できる。時間差Δｔ自体は
Δｔ＝Ｎ／（ｆｓ・ＯＶＬ）                 ・・・  （７）
で求められる。（７）式中のＯＶＬは、フレームサイズをホップサイズ（隣り合うフレームのずれに相当するサンプリング数）で割った値であるオーバーラップファクタを示している。
【００１２】
（６）式では位相展開されている。このため、以下の式で記述できる。
ΔＺi,k＝Δζi,k＋２ｎπ                   ・・・  （８）
（４）式で算出される位相差Δθi,kと（８）式中の位相差Δζi,kの差をδ（＝Δθi,k−Δζi,k）とすると、
Δθi,k−Ωi,k・Δｔ＝（Δζi,k＋δ）−（Δζi,k＋２ｎπ）
＝δ−２ｎπ          ・・・  （９）
が導出できる。従って（９）式の右辺の２ｎπを削除してその範囲を−πからπの間に制限すればδを算出できる。そのδは、元音声波形において実際に検出される位相差（以降「実位相差」と呼ぶ）である。
【００１３】
そのように算出される実位相差δに位相差ΔＺi,k（＝Ωi,k・Δｔ）を加算すれば、以下のように位相展開された位相差ΔΘi,kを求めることができる。
ΔΘi,k＝δ＋Ωi,k・Δｔ＝δ＋（Δζi,k＋２ｎπ）＝Δθi,k＋２ｎπ
・・・  （１０）
（１）式と（１０）式によりタイムスケーリングされた位相θ'i,kが算出される。ただしチャンネルの中心周波数を基に位相展開する方法では、実位相差δは｜δ｜＜πとする必要がある。その最大値δmaxの絶対値は隣のチャンネルに信号が遷移しない限界の値であるから、
｜δmax｜＝(２π・ｆｓ／Ｎ)・(ｋ＋0.5)・Δｔ−(２π・ｆｓ／Ｎ)・ｋ・Δｔ
＝(２π・ｆｓ／２Ｎ)・(Ｎ／（ｆｓ・ＯＶＬ))＝π／ＯＶＬ
・・・  （１１）
となる。
【００１４】
（１１）式と｜δ｜＜πの関係よりオーバーラップファクタＯＶＬの値はＯＶＬ＞１の関係となる。すなわち位相展開するにはフレームをオーバーラップさせる必要があることがわかる。
【００１５】
さらに、ＤＦＴでは、通常１チャンネルの信号が複数のチャンネルを励起させる。正規化角周波数ω、初期位相φ、振幅１の複素正弦波ｆｎの窓かけしない場合（窓関数として方形窓を適用した場合と等価）、そのＤＦＴは以下のように求められる。
【００１６】
【数２】
2005208627.tif 000004
【００１７】
上記複素正弦波ｆｎは以下のように表すことができる。
【００１８】
【数３】
2005208627.tif 000005
【００１９】
（１２）式から、角周波数ω＝（２π／Ｎ）・ｋ以外の周波数となっているチャンネルが全て励起されることがわかる。通常は何らかの窓関数を用いるので、その窓関数の帯域幅に応じて励起されるチャンネル、その数が変化する。窓関数としてハニング窓を用いた場合、そのＤＦＴ値は
Ｗ0＝(１／２)Ｎ，Ｗ1＝−(１／４)Ｎ，Ｗ-1＝−(１／４)Ｎ  ・・・  （１３）
となり、これが各チャンネルに畳み込まれる。（１３）式から明らかなように、たとえ角周波数ω＝（２π／Ｎ）・ｋの場合でも周波数振幅値が１：２：１の割合で３チャンネルが励起される。角周波数ωが隣り合う２つのチャンネルの中間にある場合には、周波数振幅値が１：５：５：１の割合で４チャンネルが励起される。
【００２０】
励起される各チャンネル全てで正しく位相展開するためには（８）式中のｎが励起される各チャンネル間で等しい値とならなければならない。この制約から、窓関数として例えばハニング窓を適用した場合には、オーバーラップファクタＯＶＬの値は４以上とする必要がある。
【００２１】
上記分析過程では、そのような値のオーバーラップファクタＯＶＬに従ってフレームを切り出し、切り出したフレームに窓関数を掛けた後、ＦＦＴを行う。変更過程では、上述したようにして求められるチャンネルの位相を維持させつつ、各チャンネルの周波数振幅を必要に応じて操作する。
＜合成過程＞
合成過程では、変更過程で変更（操作）された後の周波数成分を逆ＦＦＴ（ＩＦＦＴ（逆高速フーリエ変換））により時間座標上の信号に戻し、１フレーム分の合成音声波形を生成する。その１フレームの音声波形は、オーバーラップファクタＯＶＬをファクタρの値に応じて変更する値で前のフレームとオーバーラップさせて加える。それにより、ピッチスケーリング、及びタイムスケーリングを行った後の合成音声波形を生成する。
【００２２】
上述のようにして合成音声波形を合成する従来の音声分析合成装置では、その合成音声波形による音声（合成音）が、元音声波形の音声（原音）に対してphasiness、若しくはreverbrantと呼ばれる位相ズレ感を与えるものとなるという問題点があった。そのような位相ズレ感は、合成音における音源との距離感が、原音におけるそれと比較して遠く離れていると感じられる距離感となってしまうことにより、聴感上、悪影響を及ぼす場合があることから非常に望ましくない。それは、ピッチのシフトが比較的に非常に小さい場合においても発生する。以下、その原因について詳細に説明する。
【００２３】
上述したように、位相の展開を正確に実行するためにはフレームをオーバーラップさせる必要がある。そのためのオーバーラップファクタＯＶＬに適切な値が設定されていれば正確に位相展開を実行することができ、（１）式により算出される位相θ'i,kは右辺の第２項により時間軸上の位相に関しては常に一貫性が保存される。ここでは、その時間軸上の位相の一貫性をＨＰＣ（Horizontal Phase Coherence）と呼ぶことにする。これに対し、チャンネル間、すなわち周波数成分間の位相関係はＶＰＣ（Vertical Phase Coherence）と呼ぶこととする。
【００２４】
従来の音声分析合成装置では、このＶＰＣが保存されないために位相ズレ感が発生する。
そのＶＰＣが保存されない原因は、（１）式右辺第１項が正確な値を保持できないことにある。位相展開ファクタをｎとすると、（１）式は（４）、（１０）式を用いて以下のように変形できる。
【００２５】
θ'i,k＝θ'i-1,k＋ρ（θi,k−θi-1,k＋２ｎπ）      ・・・  （１４）
今スケーリングファクタρの値が整数である場合を考えると、（１４）式の右辺にある位相展開項２ｎπは削除可能であることから、次式のように表現できる。
【００２６】
【数４】
2005208627.tif 000006
【００２７】
（１５）式は、初期位相θ'0,kがρθ0,kとなるように設定すると
θ'i,k＝ρθi,k            ・・・  （１６）
となり、（１）式の右辺第１項が消去される。このため、ＨＰＣと共にＶＰＣも保存され、位相ズレ感の無いスケーリングを行うことができる。しかし、スケーリングファクタρが整数以外の値であった場合には、その第１項は残ることになる。
【００２８】
（１）式の右辺第１項は、位相展開された位相差分の変換値（＝ρ・ΔΘi,k）が積算されたものである。その積算値を正確な値に維持し続けさせるには、次の点に適切に対応する必要がある。
【００２９】
１）  初期値の影響
２）  周波数成分のチャンネル間の遷移
３）  周波数成分の消滅／発生
１）の点に関しては、上述したように、初期位相θ'0,kをρθ0,kとなるように設定することで積算値を正確な値に維持させることができる。
【００３０】
２）の点に関しては、周波数振幅のピークピッキングなどの方法により周波数成分が存在するチャンネルをトラッキングし、周波数成分が別のチャンネルに遷移したことの検知により、チャンネル間をまたいで位相差の計算を実施するようにした場合には、積算値を正確な値に維持させることが可能となる。周波数成分（信号）がチャンネルｋからチャンネルｋ＋１に遷移した場合、（１４）式は
θ'i,k+1＝θ'i-1,k＋ρ（θi,k+1−θi-1,k＋２ｎπ）      ・・・  （１７）
と変形させることができる。位相展開ファクタｎも位相Ωi,k+1を用いて算出する。しかし、周波数成分の遷移のトラッキングに失敗したときは、その時点で積分値は不正確な値となってしまい、ＶＰＣは保存されなくなる。また、チャンネル間における周波数成分の遷移が発生した場合に、その遷移元のチャンネルに対応する直前のフレームのチャンネルが存在しないという事態が発生することがある。その場合には、チャンネルの不整合により正確な積分値は得られなくなる。
【００３１】
３）の点に関しては、波形が定常波のような特殊な音声を除き、通常の音声や楽音では不可避と考えられる。特に調波構造を持たないノイズでは周波数成分の発生／消滅はランダム且つ頻繁に発生するため、それを検知することはほぼ不可能である。従って、その回避も不可能と云える。
【００３２】
このようなことから、従来の音声分析合成装置では、スケーリングファクタρの値が整数の場合を除き、ＶＰＣを保存することは実質的に不可能となっている。このため、位相ズレ感を与える音声波形の合成を確実に回避することができなかった。それにより、位相ズレ感を与える音声波形の合成を確実に回避できるようにすることが望まれていた。
【００３３】
なお、特許文献１に記載の音声分析合成装置では、ピッチ変換された合成音声波形の位相を、フレームをオーバーラップする幅によって制御している。その制御は、上記合成過程で行われている。上記積算値（（１）式右辺第１項）に正確な値を保持できないことの説明は、その制御を行うのを前提としたものである。
【特許文献１】特許第２７５３７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【００３４】
本発明の課題は、位相ズレ感を与える音声波形の合成を確実に回避できる音声分析合成装置を提供することにある。
【課題を解決するための手段】
【００３５】
本発明の音声分析合成装置は、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行うことを前提とし、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する周波数分析手段と、第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、周波数チャンネルのなかの所定の周波数チャンネルを基準にして算出し、該位相較差量を用いる形で、現在のフレームにおける該第２の音声波形の位相を該周波数チャンネル毎に周波数分析手段が抽出した周波数成分を参照して算出する位相算出手段と、周波数分析手段が抽出した周波数成分を位相成分算出手段が算出した位相に応じて周波数チャンネル毎に変換し、該変換後の周波数成分を用いて、第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【００３６】
なお、上記位相算出手段は、その位相較差量の他に、所定数前のフレームから現在のフレームまでの間に生じる第１、及び第２の音声波形間の位相較差量、及び該現在のフレームにおける該第１の音声波形の位相を用いる形で、該現在のフレームにおける該第２の音声波形の位相を周波数チャンネル毎に算出する、ことが望ましい。
【００３７】
上記所定数前のフレームは直前のフレームであり、所定の周波数チャンネルは、周波数成分を有するもののなかで周波数が最低の周波数チャンネルである、ことが望ましい。また、音声合成手段については、周波数分析手段で用いられたオーバーラップファクタと異なるオーバーラップファクタで第２の音声波形を合成できる、ことが望ましい。或いは／及び、第１の音声波形のピッチをシフトした第２の音声波形を合成できる、ことが望ましい。
【００３８】
また、上記音声合成手段は、周波数分析手段が周波数チャンネル毎に抽出した周波数成分から第１の音声波形のフォルマントを抽出し、該周波数成分に対する操作により該抽出したフォルマントのシフトを行い、該操作を変換と併せて行った後の周波数成分を用いて第２の音声波形を合成できる、ことが望ましい。フォルマントの抽出は、周波数成分から周波数チャンネル毎に周波数振幅を求め、該周波数振幅を対象にしたフィルタリング処理により行うことが望ましい。フィルタリング処理で用いる次数は、周波数チャンネル毎に求めた周波数振幅の状態を基に、必要に応じて変更する、ことが望ましい。周波数成分に対する操作としては、該周波数成分から求められる周波数振幅の値が所定値以下となっている周波数振幅をより小さい値とさせる操作を併せて行う、ことが望ましい。更には、音声合成手段が合成した第２の音声波形は第１の音声波形と併せて出力することができる、ことが望ましい。
【００３９】
本発明のプログラムは、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置に実行させることを前提とし、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出する機能と、第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、周波数チャンネルのなかの所定の周波数チャンネルを基準にして算出し、該位相較差量を用いる形で、現在のフレームにおける該第２の音声波形の位相を該周波数チャンネル毎に抽出する機能により抽出した周波数成分を参照して算出する機能と、抽出する機能により抽出した周波数成分を算出する機能により算出した位相に応じて周波数チャンネル毎に変換し、該変換後の周波数成分を用いて、第２の音声波形をフレーム単位で合成する機能と、を実現させる。
【発明の効果】
【００４０】
本発明は、第１の音声波形をフレーム単位で周波数分析して周波数チャンネル毎に周波数成分を抽出し、第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、周波数チャンネルのなかの所定の周波数チャンネルを基準にして算出し、その位相較差量を用いる形で、現在のフレームにおける第２の音声波形の位相を周波数チャンネル毎に算出し、抽出した周波数成分を算出した位相に応じて周波数チャンネル毎に変換し、変換後の周波数成分を用いて、第２の音声波形をフレーム単位で合成する。
【００４１】
第１、及び第２の音声波形間の所定数前のフレームにおける位相較差量を、所定の周波数チャンネルを基準にして構築することにより、第２の音声波形の各周波数チャンネルの位相は、所定の周波数チャンネルを基準として相対的に表されるものとすることができる。このため、各周波数チャンネルの位相関係は常に適切に保存することができ、それによって位相ズレ感を与える第２の音声波形の合成は回避することができる。その位相較差量は所定数前のフレームであることから、それより前の時点で周波数チャンネルの何れかに発生したエラーによる悪影響は回避、或いは低減される。それにより、常に良好な第２の音声波形をより確実に合成することができることとなる。
【００４２】
周波数チャンネル毎に抽出した周波数成分から第１の音声波形のフォルマントを抽出し、抽出したフォルマントをシフトする操作を周波数成分に対して行い、その操作を上記変換と併せて行った後の周波数成分を用いて第２の音声波形を合成するようにした場合には、第２の音声波形におけるフォルマントを任意にシフトできるようになる。そのシフトによって第１の音声波形におけるフォルマントを保存させることができるようになる。このため、第１の音声波形におけるフォルマントを保存させたときには、位相ズレ感を与えず、且つ自然と感じられる第２の音声波形を合成することができる。
【発明を実施するための最良の形態】
【００４３】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態による音声分析合成装置を搭載した電子楽器の構成図である。
【００４４】
その電子楽器は、図１に示すように、楽器全体の制御を行うＣＰＵ１と、複数の鍵を備えた鍵盤２と、各種スイッチを備えたスイッチ部３と、ＣＰＵ１が実行するプログラムや各種制御用データ等を格納したＲＯＭ４と、ＣＰＵ１のワーク用のＲＡＭ５と、例えば液晶表示装置（ＬＣＤ）や複数のＬＥＤなどを備えた表示部６と、特には図示しない端子に接続されたマイク７から入力されるアナログの音声信号のＡ／Ｄ変換を行いその音声データを出力するＡ／Ｄ変換器８と、ＣＰＵ１の指示に従い楽音発音用の波形データを生成する楽音生成部９と、その生成部９が生成した波形データのＤ／Ａ変換を行い、アナログのオーディオ信号を出力するＤ／Ａ変換器１０と、そのオーディオ信号の増幅を行うアンプ１１と、そのアンプ１１が増幅を行った後のオーディオ信号を音声に変換するスピーカ１２と、を備えて構成されている。それらの構成において、ＣＰＵ１、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、表示部６、Ａ／Ｄ変換器８、及び楽音生成部９の間はバスによって接続されている。なお、上記スイッチ部３は、例えばユーザが操作の対象とする各種スイッチの他に、各種スイッチの状態変化を検出するための検出回路を備えたものである。
【００４５】
上記構成の電子楽器において、本実施の形態による音声分析合成装置は、マイク７から入力した音声に対し、そのピッチ（音高）を指定されたピッチに変換（シフト）する音響効果を付与できるものとして実現されている。音声の入力は、外部記憶装置を介して行っても良く、ＬＡＮ、或いは公衆網等の通信ネットワークを介して行っても良い。
【００４６】
図２は、第１の実施の形態による音声分析合成装置の機能構成図である。
音響効果を付加した音声波形、つまりピッチをシフトした音声波形は、元の音声波形を周波数分析して周波数チャンネル毎に周波数成分（スペクトル成分）を抽出し、抽出した周波数成分をシフトし、そのシフト後の周波数成分を用いて合成（生成）するようになっている。そのために、以下のような機能構成を備えている。
【００４７】
図２に示すＡ／Ｄ変換器（ＡＤＣ）８は、マイク７から出力されたアナログの音声信号をデジタルの音声データに変換するものである。例えばサンプリング周波数２２，０５０Ｈｚ、１６ｂｉｔでＡＤ変換を行う。以降、それがＡＤ変換して得られる音声データについては便宜的に「元音声データ」、或いは「元波形データ」と呼び、マイク７に入力された音声については「元音声」と呼ぶことにする。
【００４８】
入力バッファ２１は、Ａ／Ｄ変換器８が出力する元音声データを一時的に格納するバッファである。フレーム抽出部２２は、入力バッファ２１に格納された元音声データから予め定められたサイズ分の音声データであるフレームを切り出すことで抽出する。そのサイズ、つまり音声データ数は例えば１０２４である。正確な位相展開の実施にはフレームをオーバーラップさせて抽出する必要があることから、フレームの切り出しはオーバーラップファクタＯＶＬでオーバーラップさせて行う。そのファクタＯＶＬの値としては４を設定している。この場合、ホップサイズは２５６（１０２４／２５６＝４）である。
【００４９】
フレーム抽出部２２が抽出したフレームはローパスフィルタ（ＬＰＦ）２３に出力される。そのＬＰＦ２３は、ピッチのシフトにより周波数成分がナイキスト周波数を超えることを防止するために高周波成分の除去を行う。ピッチシフタ２４は、ピッチスケーリングファクタρの値に応じて、ＬＰＦ２３から入力したフレームに対して補間、或いは間引きを行い、そのピッチをシフトする。補間、間引きには一般的なラグランジュ関数やｓｉｎｃ関数などが使用できるが、本実施の形態ではＮｅｖｉｌｌｅ補間によりピッチシフト（ピッチスケーリング）を行っている。
【００５０】
ＦＦＴ部２５は、ピッチシフト後のフレームを対象にＦＦＴを実行する。タイムスケーリング部２６は、ＦＦＴの実行により得られた各周波数チャンネルの周波数成分を対象にして、合成音声のフレームの位相を算出するタイムスケーリングを行う。ＩＦＦＴ部２７は、タイムスケーリング実施後の各周波数チャンネルの周波数成分を、ＩＦＦＴ（逆ＦＦＴ）を行うことにより時間座標上のデータに戻し、１フレーム分の音声データを生成して出力する。その音声データについては以降「合成音声データ」と呼び、それによって発音される音声を「合成音声」と呼ぶことにする。ＦＦＴ部２５、タイムスケーリング部２６、及びＩＦＦＴ部２７はフェーズボコーダを構成している。
【００５１】
出力バッファ２９は、音声としてスピーカ１２から放音させる合成音声データを格納するバッファである。フレーム加算部２８は、ＩＦＦＴ部２７から入力した１フレーム分の合成音声データを、出力バッファ２９に格納された合成音声データにオーバーラップさせて加算する。出力バッファ２９に格納された合成音声データは、Ｄ／Ａ変換器（ＤＡＣ）１０に出力されてＤ／Ａ変換される。
【００５２】
スケーリングファクタρの値が２であった場合、つまりピッチを２倍にする場合、ピッチシフタ２４では間引きを行い、フレームサイズを１／２にする。このため、オーバーラップファクタＯＶＬの値が同じならば、出力バッファ２９に格納される合成音声波形のサイズは元の合成音声波形のサイズの約１／２となる。このことから、図６に示すように、合成音声波形はオーバーラップファクタＯＶＬの値を１／２にした値（ここでは２である）で直前フレームにオーバーラップ加算されることになる。
【００５３】
上記入力バッファ２１、及び出力バッファ２９は、例えばＲＡＭ５に確保された領域である。Ａ／Ｄ変換器８、Ｄ／Ａ変換器１０、入力バッファ２１、及び出力バッファ２９を除く各部２２〜２８は、例えばＲＡＭ５をワーク用にして、ＣＰＵ１がＲＯＭ４に格納されたプログラムを実行することで実現される。特に詳細な説明は省略するが、ピッチのシフト量は例えば鍵盤２への操作により指示し、タイムスケーリングの程度はスイッチ部３の所定のスイッチへの操作により指示するようになっている。
【００５４】
本実施の形態では、合成音声における各周波数チャンネルの位相θ'は下記の式により算出する。
θ'i,k＝（ΔΘi,k／ΔΘi,B）（θ'i-1,B−θi-1,B）
＋（ρ−１）ΔΘi,k＋θi,k                      ・・・  （１８）
（１８）式において、下添字として表記したＢは最も波長の長い、すなわち最も低い周波数成分が存在するチャンネルを示している。（１８）式右辺第１項は、チャンネルＢを基準にして、１フレーム前のフレームｉ−１までに生じた元音声と合成音声間の位相較差（変化）量を示している。その第２項は、その直前フレームｉ−１から現在のフレームｉに移行する間（以降、便宜的に「直前フレーム間」と呼ぶ）に発生する元音声と合成音声間の位相較差量を示している。このことから、（１８）式は、それら位相較差量を現フレームｉでの位相θに加算することで合成音声における各チャンネルの位相θ' を求めることを示している。
【００５５】
（１８）式右辺第１項はＶＰＣを保存するための項、その第２項はＨＰＣを保存するための項となっている。ここで、それらが保存されることを具体的に説明する。
位相θ［ｒａｄ］を角速度ω［ｒａｄ／ｓｅｃ］で除算すると、その単位は時間［ｓｅｃ］となる。さらに音速ν［ｍ／ｓｅｃ］を乗算すれば単位は距離［ｍ］となる。この距離を位相（位相差を含む）の表現に用いて説明することとする。
【００５６】
図３、及び図４は、ＶＰＣを説明する図である。図３、及び図４において、波形Ａ（基準音）は時刻Ｔ1〜Ｔ2間、時刻Ｔ2〜Ｔ3間にそれぞれ位相がπ変化する周波数の波形である。それにより、その間に対応する距離は、波形Ａの波長λの１／２（＝λ／２）となる。波形Ｂはその波形Ａの１．５倍の周波数の波形、波形Ｃはその波形Ａの２倍の周波数の波形である。それら時刻Ｔ1〜Ｔ3は、波形上の位置や位相変化などを説明するために便宜的に付したものである。
【００５７】
図３では、時刻Ｔ2を基準点にして、各波形Ａ〜Ｃの位相を距離で示している。波形Ａの位相は、基準点から正方向に距離ΨＡだけ離れた位置に存在し、同様に波形Ｂは基準点から負方向に距離ΨＢ、波形Ｃは基準点から正方向に距離ΨＣだけ離れた位置にそれぞれ存在していることを示している。それらの距離は、位相から求められる。その位相はａｒｃｔａｎにより求めるため、畳まれている。それにより、何れの距離も１波長を超えない長さとなっている。
【００５８】
図３中の「ΔΨＢＡ」「ΔΨＣＡ」はそれぞれ波長Ｂと波長Ａ間、波長Ｃと波長Ａ間における相対的な位相の距離（相対位相距離）を示している。従って、ΔΨＢＡ＝ΨＢ−ΨＡ、ΔΨＣＡ＝ΨＣ−ΨＡ、により求められる。
【００５９】
ＶＰＣは、そのような相対位相距離を適切に保存することに対応する。具体的には図４に示すように、時間の経過によって波形Ａの距離ΨＡが位置Ｐ０から位置Ｐ１に距離ΔＰだけ移動した場合、他の波形Ｂ、Ｃにおいても距離ΨＢ、ΨＣをそれに追随してそれぞれ距離ΔＰだけ同じ移動方向に移動させ、波形Ａとの相対位相距離を保存・維持することに対応する。
【００６０】
そのように相対位相距離を保存するように位相を算出することにより、ＶＰＣは保存される。その結果、ｐｈａｓｉｎｅｓｓ、ｒｅｖｅｒｂｒａｎｔなどによる位相ズレ感を与える合成音声データの合成は常に確実に回避することができる。
【００６１】
距離の移動では、位相はａｒｃｔａｎにより求めるため、その移動範囲は１波長内に収める必要がある。つまり、元音声の位相と合成音声の位相間の距離を計算する際にその位相は折り畳まれている必要がある。
【００６２】
今、図４において、波形Ａの距離が１波長λ分、移動してそのまま巡回せずに次の波長区間に移ったとする。１波長λ分の移動であるから、波形Ａの折り畳んだ位相は前と同じである。波形Ａの２倍音である波形Ｃにおいても同様である。しかしながら、１．５倍音である波形Ｂでは、前と同じ位相とはならない。角度で表現すると、１波長λ分の移動は波形Ａでは３６０度、波形Ｃでは７２０度の位相の変化にそれぞれ相当するから折り畳んだ位相は移動前と同じとなるが、波形Ｂでは５４０度の位相の変化に相当することから同じとはならない。
【００６３】
そのように、基準とする波形（基準波形）の整数音倍とそれ以外の波形とでは、異なる波長区間では異なる位相距離関係となることから、移動範囲を１波長内に収めないことで距離の移動を巡回させない場合、基準波形の整数倍音以外の波形では相対位相距離を常に正確に維持させることができなくなる。それにより、位相距離関係を適切に保存するためには基準波形の１波長内で位相の移動を巡回させることが必要となる。この制約を設けることにより、調波構造を持った波形だけでなく、ノイズや複数の音が混じった一般的な音声にも適用できることとなる。
【００６４】
同様の理由により、基準波形よりも波長の長い（周波数の低い）波形が存在していると、適切な位相距離関係を常に保存できなくなる。これは長波長の波形の距離が基準波形の１波長を越えた別の波長区間に存在することがありうるためである。このため、基準波形とするチャンネルは最低の周波数成分が存在するチャンネルに設定する必要がある。上記チャンネルＢは最低の周波数成分が存在するチャンネルである。
【００６５】
（１８）式右辺第１項を変形すると
【００６６】
【数５】
2005208627.tif 000007
【００６７】
となる。（１９）式中の括弧内は基準とするチャンネルであるチャンネルＢにおける位相の移動距離を示し、図４中の距離ΔＰに相当する。ＶＰＣを保存するためには、全てのチャンネルで位相をこの距離ΔＰ分、移動させれば良い。距離ΔＰからの位相の算出は、音速νで除算後、角速度ωを乗算することで行うことができる。（１９）式の括弧の前の項がその計算を実行するためのものである。
【００６８】
（１８）式右辺第１項は、単純に直前フレームにおける折り畳みされたチャンネルＢ（基準波形）での位相の変化量に、チャンネルＢと各チャンネルとの周波数比を乗算して各チャンネルの位相変化量を算出していると考えても良い。この項により、上述したように直前フレームまでのＶＰＣが保存される。
【００６９】
（１８）式右辺第２項は分解すると、（１６）式より
（ρ−１）ΔΘi,k＝ρΔΘi,k−ΔΘi,k＝ΔΘ'i,k−ΔΘi,k    ・・・  （２０）
と表すことができる。その第２項が示すのは直前フレーム間で発生する位相の変化量である。この項により、直前フレームから現フレームまでのＨＰＣが保存される。その項と第１項の加算値は元音声と合成音声の間における現フレームまでの位相の変化量である。従って、その加算値を現フレームの位相θに加算すれば合成音声の位相θ'が算出される。
【００７０】
（１８）式による位相θ'の算出は、現フレーム、及び直前のフレームで取得されるスケーリング前の値を基準にして行うことができる。このため、たとえ位相を求めるうえでのエラーが何れかのチャンネルで発生しても、そのエラーが以降のフレームにおける位相θ'の算出に及ぼす悪影響が回避、或いは低減される。その理由からも、常に良好な合成音声データをより確実に合成することができることとなる。
【００７１】
図５は、本実施の形態における周波数チャンネル間の位相関係を説明する図である。（１８）式により各チャンネルの位相θ'i,kを求める本実施の形態でのチャンネル間の位相関係は図５（ｃ）、（１）式によりその位相θ'i,kを求める従来例でのチャンネル間の位相関係は図５（ｂ）にそれぞれ示してある。そのチャンネル間の位相関係は、基準波形、その２倍音波形を例にとって、図５（ａ）の位相関係から変化した後のフレームにおける状態を示してある。
【００７２】
（１）式では、位相θ'i,kは個別に独立して求めることから、図５（ｂ）に示すように、基準波形のフレームにおける位相θ'αに対応する距離、及び方向は、２倍音波形のフレームにおける位相θ'βに対応する距離、及び方向と必ずしも一致しない。それにより、チャンネル間の位相ズレは各チャンネルで求める位相θ'に応じて不適切に蓄積されることになって、チャンネル間の位相関係であるＶＰＣは保存されない。
【００７３】
これに対し、本実施の形態では、図５（ｃ）に示すように、２倍音波形のフレームにおける位相θ'βは基準波形の直前フレームにおける位相θ'αに合わせて求められる。それにより、それらの位相に対応する距離、及び方向は一致させている。そのようにして、基準波形を基準にフレームにおける元音声と合成音声間の位相較差量を算出するため、各チャンネルで求める位相θ'は適切な位相関係を保存したものとなり、ＶＰＣは保存されることとなる。
【００７４】
本実施の形態による音声分析合成装置は、上述したようにして、ＶＰＣ、及びＨＰＣを常に保存することにより、位相ズレ感を与えない合成音声データを合成し、スピーカ１２から放音させるものとして実現されている。以降は、その音声分析合成装置を実現させる電子楽器の動作について、図７、及び図８に示す各種フローチャートを参照して詳細に説明する。
【００７５】
図７は、全体処理のフローチャートである。始めに図７を参照して、その全体処理について詳細に説明する。なお、その全体処理は、ＣＰＵ１が、ＲＯＭ４に格納されたプログラムを実行して電子楽器のリソースを使用することにより実現される。
【００７６】
先ず、ステップ７０１では、電源がオンされたことに伴い、初期化処理を実行する。続くステップ７０２では、スイッチ部３を構成するスイッチへのユーザの操作に対応するためのスイッチ処理を実行する。そのスイッチ処理は、例えばスイッチ部３を構成する検出回路に各種スイッチの状態を検出させてその検出結果を受け取り、その検出結果を解析して状態が変化したスイッチの種類、及びその変化を特定して行われる。
【００７７】
ステップ７０２に続くステップ７０３では、鍵盤２へのユーザの操作に対応するための鍵盤処理を実行する。その鍵盤処理を実行することにより、鍵盤２への演奏操作に応じて楽音がスピーカ１２から放音される。ステップ７０４にはその後に移行する。
【００７８】
ステップ７０４では、Ａ／Ｄ変換器８から元音声データが出力されるサンプリングタイミングか否か判定する。そのタイミングであった場合、判定はＹＥＳとなり、ステップ７０５でその元音声データをＲＡＭ５上の入力バッファ２１に書き込んだ後、ステップ７０６に移行する。そうでない場合には、判定はＮＯとなってステップ７１０に移行する。
【００７９】
ステップ７０６では、フレーム抽出タイミングか否か判定する。前回そのタイミングとなってからホップサイズ分の元音声データをサンプリングする時間が経過した場合、判定はＹＥＳとなってステップ７０７に移行する。そうでない場合には、判定はＮＯとなって上記ステップ７１０に移行する。
【００８０】
ステップ７０７では、入力バッファ２１に格納された元音声データを１フレーム分、抽出し、抽出したフレームに対して、高周波成分を除去するＬＰＦ処理、補間、或いは間引きによるピッチシフト、及びＦＦＴを順次、行う。次のステップ７０８では、ＦＦＴによって得られる各チャンネルの周波数成分を対象に、合成音声のフレームの位相を算出するためのタイムスケーリング処理を実行する。その実行後はステップ７０９に移行して、タイムスケーリング処理を実施した各チャンネルの周波数成分を対象にしたＩＦＦＴ、そのＩＦＦＴにより得られる１フレーム分の合成音声データをＲＡＭ５上の出力バッファ２９に格納された合成音声データにオーバーラップ加算を行う。ステップ７１０にはその後に移行する。
【００８１】
図２に示すフレーム抽出部２２、ＬＰＦ２３、ピッチシフタ２４、及びＦＦＴ部２５は、上記ステップ７０７の処理を実行することで実現される。タイムスケーリング部２６は、ステップ７０８の処理を実行することで実現される。ＩＦＦＴ部２７、及びフレーム加算部２８は、ステップ７０９の処理を実行することで実現される。
【００８２】
ステップ７１０では、１サンプリング分の合成音声データを出力すべきタイミングか否か判定する。そのタイミングであった場合、判定はＹＥＳとなり、次にステップ７１１で出力すべき合成音声データを出力バッファ２９から読み出して楽音生成部９を介しＤ／Ａ変換器１０に送出し、更にステップ７１２でその他処理を実行した後、上記ステップ７０２に戻る。そうでない場合には、判定はＮＯとなり、次にステップ７１２の処理を実行する。
【００８３】
合成された合成音声データは楽音生成部９を介してＤ／Ａ変換器１０に送られる。このことから、楽音生成部９には、自身が生成した楽音の波形データを他から入力したデータとミックスする機能が搭載されている。
【００８４】
図８は、上記ステップ７０８として実行されるタイムスケーリング処理のフローチャートである。次に図８を参照して、そのスケーリング処理について詳細に説明する。そのスケーリング処理には、ＦＦＴを行うことで得られた各周波数チャンネルの周波数成分が渡される。その周波数成分は、上述したように、実数部と虚数部からなる。図２に示すタイムスケーリング部２６は、このスケーリング処理を実行することで実現される。
【００８５】
先ず、ステップ８０１では、注目する周波数チャンネルを管理するための変数ｋに０を代入する。次のステップ８０２では、変数ｋの値で指定されるチャンネルの周波数成分から周波数振幅を計算する。その計算は、周波数成分の実数部をｒｅａｌ、虚数部をｉｍｇと表記すると、周波数振幅ｍａｇは
ｍａｇ＝（ｒｅａｌ2＋ｉｍｇ2）1/2      ・・・  （２１）
により計算される。
【００８６】
ステップ８０２に続くステップ８０３では、その周波数成分から位相を計算する。その位相をｐｈａｓｅ（＝θ）と表記すると
ｐｈａｓｅ＝ａｒｃｔａｎ（ｉｍｇ／ｒｅａｌ）      ・・・  （２２）
により計算される。この位相ｐｈａｓｅは折り畳まれたものである。それを計算した後はステップ８０４に移行する。
【００８７】
ステップ８０４では、周波数成分が存在するチャンネルをサーチするために周波数振幅ｍａｇのピーク（ｐｅａｋ）検出を実行する。より精細なピーク検出は別に実行することから、ここでは粗い検出を実行する。具体的には前後４チャンネルの周波数振幅ｍａｇより周波数振幅ｍａｇが大きいチャンネルをピークとして検出し登録する。
【００８８】
ステップ８０４の次に移行するステップ８０５では、直前フレーム間（現フレームと直前のフレーム間）の位相差分Δθを（４）式により算出する。続くステップ８０６では、折り畳まれている位相差分Δθを位相展開して位相差分ΔΘを求める。その位相展開は（１０）式により行う。その位相展開後はステップ８０７に移行する。
【００８９】
ステップ８０７では、変数ｋの値をインクリメントする。次のステップ８０８では、変数ｋの値がＦＦＴ点数Ｎより小さいか否か判定する。全ての周波数チャンネルで周波数振幅ｍａｇ等の計算を行った場合、その関係が満たされなくなることから、判定はＮＯとなってステップ８０９に移行し、そうでない場合には、判定はＹＥＳとなって上記ステップ８０２に戻る。それにより、全ての周波数チャンネルで周波数振幅ｍａｇ等の計算を行うまでの間、ステップ８０２〜８０８で形成される処理ループを繰り返し行う。
【００９０】
ステップ８０９では、ステップ８０４の処理より精細にピーク検出を実行し、ピークのチャンネルを絞り込む。これは例えば、ピークの前後で周波数振幅ｍａｇが最小となるチャンネルを抽出し、そのチャンネルの周波数振幅ｍａｇがピークチャンネルの周波数振幅ｍａｇの−１４ｄｂ以下となっているものを正式なピークとして特定することで行う。その判定の基準とする−１４ｄｂはハニング窓の振幅特性から設定したものである。
【００９１】
（１８）式は
θ'i,k＝ΔΘi,k（（θ'i-1,B−θi-1,B）／ΔΘi,B＋（ρ−１））
＋θi,k                                      ・・・  （２３）
と変形することができる。
【００９２】
（２３）式右辺にシンボルとして示す項は何れも、ステップ８０８の判定がＮＯとなった段階で全て用意されることになる。その判定となって移行するステップ８０９でのピーク検出は、チャンネルＢを選択するために実施している。このことから、ステップ８０９に続くステップ８１０では、そのステップ８０９で検出したピークのなかで最低の周波数のチャンネルをチャンネルＢとして採用し、チャンネル毎に（２３）式を用いて合成音声の位相θ'を算出する。
【００９３】
ステップ８０３、８１０での計算結果は、次のフレームまでは少なくとも保存される。それにより、ステップ８０８の判定がＮＯとなった段階で（２３）式右辺にシンボルとして示す項は全て用意されることになる。
【００９４】
上記タイムスケーリング処理の実行後に移行する図７のステップ７０９では、ステップ８１０で求めた位相θ'に従って各周波数チャンネルの周波数成分を操作した後、ＩＦＦＴを行う。その操作は、例えば周波数振幅ｍａｇを変更せずに、実数部ｒｅａｌ、虚数部ｉｍｇの値を変更して、それらから求められる位相がその位相θ'と一致するように行う。そのような操作を行うことにより、各周波数チャンネルはステップ８１０で求めた位相θ'を持つ合成波形が合成されることとなる。
【００９５】
なお、本実施の形態では、ピッチスケーリングと併せてタイムスケーリングを行うようになっているが、タイムスケーリングのみを行うようにしても良い。音声としては、合成音声データによる合成音声のみを放音させるようにしているが、その元である元音声を放音できるようにしても良い。或いはそれらを共に放音できるようにしても良い。そのようにした場合には、元音声のピッチをシフトして合成音声データの合成を行うことにより、ハーモニー効果を付加した音声を放音させることができる。シフト量の異なる合成音データを複数、合成したときには、コード構成音を付加したような音声を放音させることができるようになる。これらは、例えば出力バッファ２９に格納された合成音声データを、入力バッファ２１に格納された元音声データと加算してＤ／Ａ変換器１０に送出することで実現させることができる。
【００９６】
基準とするチャンネルＢの検出・決定は、ピークとして抽出されたチャンネルのなかで最低周波数のチャンネルを探すことで行うようにしているが、それ以外の方法を用いてチャンネルＢを決定するようにしても良い。
＜第２の実施の形態＞
ピッチスケーリングでピッチシフトを行うと、そのピッチシフトに伴って合成音声のフォルマントの位置（周波数）は元音声とは異なる位置に移動する。その移動は、合成音声を不自然なものとするのが普通である。このことから、第２の実施の形態は、元音声のフォルマントを保存する形でピッチスケーリング（ピッチシフト）を行うことにより、より自然と感じられる合成音声を生成できるようにしたものである。
【００９７】
第２の実施の形態による音声分析合成装置は、第１の実施の形態と同様に、電子楽器に搭載されたものである。その電子楽器の構成は、第１の実施の形態による音声分析合成装置が搭載されたものと基本的に同じである。第２の実施の形態による音声分析合成装置の機能構成は、第１の実施の形態におけるそれと大部分が基本的に同じである。このようなことから、第１の実施の形態と基本的に同じものにはその第１の実施の形態で付した符号をそのまま用いつつ、第１の実施の形態から異なる部分についてのみ説明する。
【００９８】
図９は、第２の実施の形態による音声分析合成装置の機能構成図である。
第２の実施の形態では、ＬＰＦ２３によって高周波成分が除去されたフレームはＦＦＴ部２５に入力される。それにより、タイムスケーリング部２６は、ピッチをシフトする前のフレームからＦＦＴの実行により得られる各周波数チャンネルの周波数成分を対象にタイムスケーリングを行う。
【００９９】
ピッチスケーリングファクタρの値がａであれば、ピッチシフトにより周波数はａ倍され、逆に１フレーム分の音声データ（フレームサイズ）は１／ａ倍となる。第２の実施の形態では、最終的に得られる１フレーム分の音声データ（合成音声データ）が元のままとなるように、１フレーム分の元音声データをａ倍にするためのタイムスケーリングをピッチシフトの前に行っている。タイムスケーリングを行った後の各周波数チャンネルの周波数成分はフォルマントシフト部９１に送られる。
【０１００】
フォルマントシフト部９１は、ピッチシフトに伴うフォルマントのシフトを補償するため、そのピッチシフトに伴うシフトを打ち消すようにフォルマントを予めシフトさせるものである。ピッチスケーリングファクタρの値がａであれば、フォルマントを１／ａだけシフトさせる。そのための操作を行った後の各周波数チャンネルの周波数成分がＩＦＦＴ部２７に送られ、逆ＦＦＴにより時間座標上のデータに戻される。
【０１０１】
そのようにして時間座標上のデータに戻された音声データは、タイムスケーリング部２６が行うタイムスケーリングにより、ピッチスケーリングファクタρの値に応じて１フレーム分のデータ数が元のそれとは異なっている。ピッチシフタ２４は、そのような音声データに対し、ピッチスケーリングファクタρの値に応じた補間、或いは間引きを行い、ピッチをシフトさせる。そのため、補間、或いは間引き後の１フレーム分の音声データは、最終的に元のまま、つまり元音声データのフレームサイズと同じとなる。補間、或いは間引き後の音声データが合成音声データとしてフレーム加算部２８に送られる。その合成音声データでは、元音声データのフォルマントが保存されているため、聴感上、位相ズレ感を与えないとともに、自然なものとなる。
【０１０２】
図１０は、第２の実施の形態における全体処理のフローチャートである。次に図１０を参照して、その全体処理について詳細に説明する。
その図１０では、第１の実施の形態（図７）と基本的に処理内容が同じ処理ステップには同一の符号を付してある。ここでは、第１の実施の形態から異なる部分にのみ着目する形で説明する。
【０１０３】
第２の実施の形態では、ステップ７０６の判定がＹＥＳとなるとステップ１００１に移行する。そのステップ１００１では、入力バッファ２１に格納された元音声データを１フレーム分、抽出し、抽出したフレームに対して、高周波成分を除去するＬＰＦ処理、及びＦＦＴを順次、行う。ＦＦＴを行った後はステップ７０８に移行して、図８に示すタイムスケーリング処理を実行する。その実行後にはステップ１００２に移行する。
【０１０４】
ステップ１００２では、元音声のフォルマントを保存させるためにそのフォルマントを移動させるフォルマント移動処理を実行する。続くステップ１００３では、フォルマント移動処理の実行により操作した後の各チャンネルの周波数成分を対象にしたＩＦＦＴ、そのＩＦＦＴにより得られる１フレーム分の音声データを対象にした補間、或いは間引きによるピッチシフトを行い、そのピッチシフトにより得られた１フレーム分の合成音声データを、ＲＡＭ５上の出力バッファ２９に格納された合成音声データにオーバーラップ加算する。その後はステップ７１０に移行する。
【０１０５】
第２の実施の形態では、ピッチシフタ２４はステップ１００３を実行することで実現される。フォルマントシフト部９１は、ステップ１００２を実行することで実現される。
図１１は、上記ステップ１００２として実行されるフォルマント移動処理のフローチャートである。次に図１１を参照して、その移動処理について詳細に説明する。
【０１０６】
先ず、ステップ１１０１では、各チャンネルの周波数振幅ｍａｇ（（２１）式）からｔｉｌｔ成分を除去する。
一般的に音声信号からフォルマントによる共振周波数の影響を取り除いて得られる残差信号、すなわち声帯音源信号の周波数特性は周波数が高くなるほどなだらかに減衰する傾きであることが知られている。その傾きがｔｉｌｔ成分と呼ばれる。それにより、音声信号の周波数特性はこのｔｉｌｔ成分とフォルマントによる共振周波数の特性が重畳されたものとなっている。このようなことから、フォルマント成分のみを抽出する場合は、ｔｉｌｔ成分を除去する必要がある。
【０１０７】
ｔｉｌｔ成分は、上述したように、声帯音源信号の周波数特性は周波数が高くなるほどなだらかに減衰する傾きであるのが普通である。このことから、音声データを一次程度の通過特性のハイパスフィルタ（ＨＰＦ）に通せば良い。ＦＦＴを行った後では、各チャンネルの周波数振幅ｍａｇに対する乗算として処理することができる。各チャンネルの周波数振幅ｍａｇに乗算する値としては、例えば１／４周期のｓｉｎ波を想定した値を採用することができる。
【０１０８】
フォルマントを移動させた場合、周波数成分が存在するチャンネルからの漏れ出し成分やノイズ成分をフォルマントの移動によって強調してしまう可能性がある。そのような強調を行うと、ノイズの多い音声、或いは不自然な音声を合成してしまうことになる。このことから、上記のようにしてｔｉｌｔ成分を除去した後に移行するステップ１１０２では、一定値以下の周波数振幅ｍａｇはノイズと見なし、その振幅ｍａｇをより小さくさせる操作を行う。
【０１０９】
本実施の形態では、周波数振幅ｍａｇの最大値に対し、−５８ｄｂ以下となっている周波数振幅ｍａｇを更に−２６ｄｂ減衰（低減）させる操作を行っている。それにより、一定値以下の周波数振幅ｍａｇを全て０．０５倍している。この操作を前処理として行うことにより、フォルマントをシフトしてもノイズ等を強調することは回避され、良好な結果を確実に得ることができる。そのように前処理を行うのは、つまり一定値以下の周波数振幅ｍａｇを全て０にしないのは、そのような周波数振幅ｍａｇを全て０にしてしまうと、逆に合成音声が不自然なものとなってしまうからである。このようなこともあって、強調すべきでないと考えられる周波数振幅ｍａｇはフォルマントによる強調をキャンセルするように減衰させている。
【０１１０】
減衰の対象とする周波数振幅ｍａｇは、その最大値を基準にして決定しているが、固定値としても良い。その対象とする周波数振幅ｍａｇの範囲は適宜、決定すれば良いものである。このことは、対象とする周波数振幅ｍａｇを減衰させる度合い（程度）についても同様である。
【０１１１】
ステップ１１０２に続くステップ１１０３では、上述の前処理を施した各チャンネルの周波数振幅ｍａｇからフォルマントを抽出する。その抽出は、移動平均フィルタリング処理によって行っている。対応するチャンネルを下添字で表す周波数振幅、フォルマントをそれぞれＡ、Ｆ、移動平均フィルタリング処理（で模擬する移動平均フィルタ）の次数をＭとすると、チャンネルｋのフォルマントＦkを求める移動平均フィルタリング処理は以下のように表現される。
【０１１２】
【数６】
2005208627.tif 000008
【０１１３】
移動平均フィルタリング処理を行うことにより、チャンネル毎にフォルマントの概形が抽出される。そのような概形を抽出してフォルマントを特定するのは、ノイズ等によって他より突出した周波数振幅ｍａｇをフォルマントとして抽出してしまうようなことをより回避するためである。つまり、フォルマントをより適切に抽出するためである。
【０１１４】
移動平均フィルタで用いる次数は留意する必要がある。元音声がピッチの高い音であった場合、チャンネル（スペクトル）間の周波数間隔は広くなる。そのため、低い次数Ｍではフォルマントの概形を適切に抽出できない。抽出する概形に元のスペクトルの影響が強く反映してしまう。従って、必要十分となるような高い次数Ｍとする必要がある。
【０１１５】
逆に元音声がピッチの低い音であった場合には、チャンネル（スペクトル）間の周波数間隔は狭く密となる。この場合には、高い次数Ｍではフォルマントの概形がつぶれた形となって、その概形を適切に抽出できなくなる。従って、次数Ｍは概形がつぶれない程度に低くする必要がある。
【０１１６】
元音声としては様々なピッチのものがマイク７により入力される。このことから、本実施の形態では、元音声に適切な次数Ｍを必要に応じて設定する必要があるとして、次数Ｍを随時、設定（更新）するようにしている。具体的には、直前のステップ７０８でタイムスケーリング処理を実行することで検出した周波数振幅ｍａｇのピークの状態により決定している。より具体的には、ステップ８１０で決定したベースチャンネルのインデクスをｋとすると、実験により良好な結果が得られた以下の式で求められる次数Ｍを設定している。ただしＭ＞３２のときはＭ＝３２、Ｍ＜８のときにはＭ＝８を設定している。その式中の「ＩＮＴ」は括弧内の演算結果は整数で算出することを表している。
【０１１７】
Ｍ＝ＩＮＴ（ｋ＋３）                    ・・・  （２５）
（２５）式による次数Ｍの算出（設定）は移動平均フィルタリング処理の前に行っている。それにより、元音声のピッチに応じた適切な次数Ｍで常に移動平均フィルタリング処理を行うようにしている。そのような次数Ｍで移動平均フィルタリング処理を行うため、フォルマントは常に適切に抽出することができる。次数Ｍの設定は、周波数振幅ｍａｇのピークの数に応じて、つまりその数が多いほど次数Ｍを低く、その数が少ないほど次数Ｍを高く設定する形で行っても良い。
【０１１８】
ステップ１１０４には、移動平均フィルタリング処理によってフォルマント（の概形）を抽出した後に移行する。そのステップ１１０４では、抽出したフォルマントで各チャンネルの周波数振幅ｍａｇを除算する。その除算結果は、線形予測分析における残差成分の周波数領域表現に相当する。
【０１１９】
ステップ１１０４に続くステップ１１０５では、抽出したフォルマントを移動させるためのＮｅｖｉｌｌｅ補間処理を実行する。その実行後はステップ１１０６に移行して、シフトしたフォルマント成分を各チャンネルの残差成分に乗算する。一連の処理はその後に終了する。
【０１２０】
上記乗算により、フォルマントを移動させる操作を行った後の各チャンネルの周波数成分が得られる。移動させたフォルマントは、ステップ１００３でのピッチシフトにより元の位置に戻される。それにより、フォルマントが保存されることとなる。
【０１２１】
図１２は、上記ステップ１１０５として実行されるＮｅｖｉｌｌｅ補間処理のフローチャートである。次にその補間処理について、図１２を参照して詳細に説明する。
上記ステップ１１０３で抽出されたフォルマントの各チャンネルの周波数振幅（フォルマント成分）は、例えばそのチャンネルに対応する周波数と共に配列変数ｙ、ｘにそれぞれ代入されて保存される。補間処理で用いられるフォルマント成分数（例えば４）は変数Ｎに代入される。フォルマントを移動させるべき周波数（チャンネル）は元の周波数とピッチスケーリングファクタρの値からフォルマント成分毎に算出される。算出された周波数でのフォルマント成分は、算出された周波数の周辺のＮ個の、配列変数ｙ、ｘの各要素に代入された値を参照して算出する。図１２に示すＮｅｖｉｌｌｅ補間処理は、一つのフォルマント成分に着目する形で、移動させるべき周波数でのフォルマント成分を求める部分の処理を抜粋したものである。移動させるべき周波数を示す値は変数ｔに代入されている。
【０１２２】
先ず、ステップ１２０１では、変数ｓ１に０を代入する。次のステップ１２０２では、配列変数ｗの変数ｓ１の値で指定される要素ｗ［ｓ１］に、配列変数ｙの変数ｓ１の値で指定される要素ｙ［ｓ１］の値を代入し、変数ｓ２に変数ｓ１の値から１を減算した値を代入する。その後はステップ１２０３に移行して、変数ｓ２の値が０以上か否か判定する。その値が０未満であった場合、判定はＮＯとなってステップ１２０６に移行する。そうでない場合には、判定はＹＥＳとなってステップ１２０４に移行する。
【０１２３】
ステップ１２０４では、要素ｗ［ｓ２］に、以下の式により算出される値を代入する。その代入後は、ステップ１２０５で変数ｓ２の値をデクリメントしてから上記ステップ１２０３に戻る。
【０１２４】
ｗ［ｓ２］＝ｗ［ｓ２＋１］＋（ｗ［ｓ２＋１］−ｗ［ｓ２］）×
（ｔ−ｘ［ｓ１］）／（ｘ［ｓ１］−ｘ［ｓ２］）    ・・・  （２６）
一方、ステップ１２０３の判定がＮＯとなって移行するステップ１２０６では、変数ｓ１の値をインクリメントする。その次に移行するステップ１２０７では、変数ｓ１の値が変数Ｎの値未満か否か判定する。変数ｓ１の値が変数Ｎの値未満であった場合、判定はＹＥＳとなって上記ステップ１２０２に戻る。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１２５】
このようにして、変数ｓ１の値を順次、インクリメントしながら、要素ｗ［ｓ１］への要素ｙ［ｓ１］の値の代入、及び代入した値の更新が行われる。その結果、変数ｔのときのフォルマント成分が要素ｗ［０］に最終的に代入される。ステップ１１０５では、フォルマント移動後にチャンネルに対応する周波数と一致する変数ｔを求め、その変数（周波数）ｔの周辺のＮ個のフォルマント成分を用いて、上述したような一連の処理を実行する。そして変数（周波数）ｔの値を各チャンネルに対応させて順次変更し、その都度、上述したような一連の処理を実行することにより、移動させるべき周波数でのフォルマント成分を全て求めるようになっている。
【０１２６】
移動させるべき周波数で求めるフォルマント成分は、基本的には抽出したフォルマントに対する補間、或いは間引きを行う形で求められるものである。そのフォルマント成分はそれほど精密に求める必要は無いので、直線補間を採用しても良い。Ｎｅｖｉｌｌｅ補間の代わりに、Ｌａｇｒａｎｇｅ補間やＮｅｗｔｏｎ補間などといった別の補間法を採用しても良い。
【０１２７】
なお、第２の実施の形態では、タイムスケーリングの後にピッチシフトを行うようにしているが、それらは逆の順序で行うようにしても良い。しかし、その場合には、タイムスケーリングを行う前に元音声の波形は変形させるため、その変形による影響は周波数振幅ｍａｇのピーク検出に及ぶことになる。このことから、フォルマントの保存をより良好に行うには、ピッチシフトはタイムスケーリングの後に行うことが望ましい。
【０１２８】
フォルマントの移動（シフト）は、ピッチシフトしてもフォルマントを保存させるために行っているが、例えば音質を変化させる目的でピッチシフトとは独立させてフォルマントの移動を行うようにしても良い。ピッチシフトした合成音声は、元音声と共に放音できるようにしても良い。
【０１２９】
上述したような音声分析合成装置、或いはその変形例を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた音声分析合成装置を実現させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【図面の簡単な説明】
【０１３０】
【図１】第１の実施の形態による音声分析合成装置を搭載した電子楽器の構成図である。
【図２】第１の実施の形態による音声分析合成装置の機能構成図である。
【図３】周波数成分間の位相関係を説明する図である（その１）。
【図４】周波数成分間の位相関係を説明する図である（その２）。
【図５】本実施の形態における周波数チャンネル間の位相関係を説明する図である。
【図６】合成音声波形に対して行われるオーバーラップ加算を説明する図である。
【図７】全体処理のフローチャートである。
【図８】タイムスケーリング処理のフローチャートである。
【図９】第２の実施の形態による音声分析合成装置の機能構成図である。
【図１０】全体処理のフローチャートである（第２の実施の形態）。
【図１１】フォルマント移動処理のフローチャートである。
【図１２】Ｎｅｖｉｌｌｅ補間処理のフローチャートである。
【符号の説明】
【０１３１】
１    ＣＰＵ
３    スイッチ部
４    ＲＯＭ
５    ＲＡＭ
７    マイク
８    Ａ／Ｄ変換器
９    楽音生成部
１０    Ｄ／Ａ変換器
１１    アンプ
１２    スピーカ
【図１】
2005208627.tif 000009
【図２】
2005208627.tif 000010
【図３】
2005208627.tif 000011
【図４】
2005208627.tif 000012
【図５】
2005208627.tif 000013
【図６】
2005208627.tif 000014
【図７】
2005208627.tif 000015
【図８】
2005208627.tif 000016
【図９】
2005208627.tif 000017
【図１０】
2005208627.tif 000018
【図１１】
2005208627.tif 000019
【図１２】
2005208627.tif 000020