(1.本発明における音節と音素の基本概念)
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。最初に、本発明における音節と音素の基本概念について説明する。なお、この音節と音素の基本概念については特許文献6と共通である。日本語の母音は、2つの特徴的な音声フォルマント成分を含む4つ以上の重音による和音で近似できることが知られている。子音は母音成分に加えて、摩擦音など雑音を表現する和音と母音への経過音を表現する和音の3種の連結された和音が理論上必要であるが、経過音は人間の聴覚上の補間現象(音脈分凝)に委ねれば、最初の雑音と母音の2つの和音に近似できる。そこで、出願人は、日本語の母音は単一の4和音、子音は2連の4和音を基本にして全音素を表現し、これらを時間軸上につなぎ合わせれば音声合成を実現できると考えた。
しかしながら、様々な要因により、MIDI音源で種々の楽器音色を設定して再生しても音声の明瞭性に欠けるという問題があった。本発明では、母音、子音等の音節の構成を従来とは根本的に異なるものとした。具体的には、71音節それぞれ固有の音節符号とするのではなく、日本語5母音と15子音に対応する20の音素符号より1つまたは2つの音素符号を選択し組み合わせることにより、71音節を表現することとした。
まず、母音音節と子音音節の違いについて説明する。本実施形態では、母音音節は第1音素だけの単独音素とする。子音音節は第1音素と第2音素の2音素構成で第1音素は第2音素に比べ短めにする。なお、本実施形態では、母音音節の第1音素、子音音節の第1音素、第2音素は、いずれも8和音となっている。
子音音節の第1音素は、「K、S、T、N、H、M、R、G、Z、D、B、P、Y、W」の14音素のいずれか1つが選択され、子音音節第2音素の、母音音節の第1音素は、「A、I、U、E、O、n」の6音素のいずれか1つが選択される。子音音節には、濁音(「バ」など)、半濁音(「パ」など)を含み、撥音(はつおん「ン」)は第1音素は音素「N」、第2音素は音素「n」とする。
本発明では、上述のような構成の子音音節と母音音節を用いて、音声の特徴に応じてさらに多種の態様で合成することを特徴とする。音声の特徴に応じた合成態様の分類については、様々なものが考えられるが、本実施形態では、母音、子音(濁音、半濁音、撥音含む)、長音の母音、長音の子音、促音、拗音の6通りに分類している。
図1、図2は、本実施形態における音節と音素の基本概念を示す図である。図1(a)〜(d)、図2(a)(b)は、上記各分類に対応したものとなっている。図1、図2において、各矩形は、音節または音素を示しており、矩形と矩形の間の空白は無音部分を示している。また、左右方向は時間軸であり、矩形の横幅は、音節の発音時間に対応している。音節の発音時間は、基本的な母音、子音の発音時間を基本区間として設定し、他の分類の音節についても、この基本区間を基準にして定められている。基本区間の具体的な長さは適宜設定することが可能であるが、本実施形態では0.25秒としている。また、詳しくは後述するが、本実施形態では、音節は、2つのパターンで符号化され、1つの音素で構成される音節と、2つの連続する音素(以下、2連音素という)で構成される音節がある。
図1(a)は、母音の場合の合成パターンを示す例である。母音の場合、音節は1つの音素(第1音素)で構成される。図1(a)に示すように、第1音素を基本区間分発音した後、基本区間分無音とし、その後、他の音節が続く。図1(b)は、子音の場合の合成パターンを示す例である。子音の場合、音節は第1音素と第2音素の2つの音素で構成される。図1(b)に示すように、基本区間の1/4だけ第1音素を発音し、続いて、基本区間の3/4だけ第2音素を発音する。すなわち、第1音素の発音終了と同時に第2音素の発音を開始し、第1音素の発音開始から第2音素の発音終了までがちょうど基本区間となる。その後、基本区間分無音とし、その後、他の音節が続く。
図1(c)は、長音の母音の場合の合成パターンを示す例である。長音の母音の場合、1つの音素で構成されるが、図1(c)に示すように、通常の母音に比べ、基本区間分発音時間を延ばす。すなわち、第1音素を2基本区間分発音する。その後、基本区間分無音とし、その後、他の音節が続く。図1(d)は、長音の子音の場合の合成パターンを示す例である。長音の子音の場合、2つの音素で構成されるが、図1(d)に示すように、通常の子音に比べ、第2音素の発音時間を基本区間分だけ延ばす。第1音素の発音時間は、通常の子音の場合と同じく、基本区間の1/4である。すなわち、第1音素の発音終了と同時に第2音素の発音を開始し、第1音素の発音開始から第2音素の発音終了までが2基本区間分となる。その後、基本区間分無音とし、その後、他の音節が続く。
図2(a)は、促音の場合の合成パターンを示す例である。促音の場合、図2(a)に示すように、後続音節である子音の第1音素を、後続音節の直前に発音する。例えば、“ッタ”における“ッ”を合成する場合、後続音節“タ”の第1音素を、“タ”の第1音素の直前に配置する。このとき、促音の発音開始は、先行音素の発音終了から基本区間の3/4だけ経過した時点とする。すなわち、先行音素の発音終了から基本区間の3/4だけ経過した時点から、後続音節の第1音素が基本区間の1/4だけ2回繰り返して発音され、その後、後続音節の第2音素が基本区間の3/4だけ発音されることになる。
図2(b)は、拗音の場合の合成パターンを示す例である。拗音の場合、図2(b)に示すように、直前の子音音節を第1音素のみとする。そして、直前の子音音節の第1音素の発音終了時刻を、拗音に対応する子音の発音開始時刻として、その拗音に対応する子音の第1音素と第2音素を連続して発音する。例えば、“キャ”における“ャ”を合成する場合、先行音節“キ”の第1音素の直後に、拗音“ャ”に対応する子音“ヤ”の第1音素を配置する。このとき、直前の子音音節の第1音素の発音時間は基本区間の1/4とし、拗音に対応する子音の発音時間は、通常の子音の場合と同様、第1音素が基本区間の1/4、第2音素が基本区間の3/4となる。
図1(a)〜図1(d)、図2(b)においては、先行音節を省略し、図2(a)、(b)においては、後続音節を省略したが、基本的に全ての音素の間には基本区間分の無音区間が設定される。この基本区間の具体的長さは前述の通り0.25秒を標準として設定しているが、適宜変更可能である。また、図1、2に示したものは、基本様式であるため、各音節における各音素の発音時間の比率、発音時間や無音時間の長さは適宜変更することが可能である。例えば、隣接音節との間隔を変動させれば話速を変更できる。
(2.前準備)
次に、従来技術を利用した前準備について説明する。前準備として、人間の声を音節単位でデジタル化する。具体的には、各音節を人間が実際に発声し、これを録音したものをPCM等の手法によりデジタル化して音節録音データを得る。このとき、話者はネイティブの日本人男性または女性とし、同一人が71の音節に対してできる限り、ピッチ(音高)と発声区間を揃えて、発声することが望まれる。一般人の話者ではこのように発声を揃えるのは困難であるため、専門のボイストレーニングを受けたアナウンサー・声楽家などに発声してもらうことが望ましい。更に、男性または女性を含む複数の話者により複数のセットの71音節の録音信号を収集することが望ましい。前準備により、日本語71音節の音節録音データが得られる。この日本語71音節とは、いわゆる五十音に加え、撥音、濁音、半濁音を含む計71音である。この音節録音データは、所定のサンプリング周波数でサンプリングされることにより、値をもつサンプルの集合として表現される。サンプルの各値をプロットし、各値を線分で結ぶことにより波形状となるため、後述する符号化されたデータと区別できるように、音節録音データを“音節波形データ”と呼ぶことにする。
(3.音素符号への変換)
次に、音節ごとの音節波形データから音素符号への変換について説明する。図3は、本発明に係る音素符号変換装置の一実施形態を示す構成図である。記憶手段10は、音節波形データ記憶部11、音節符号記憶部12、音素符号記憶部13を有しており、コンピュータに接続されたハードディスク等の外部記憶装置により実現される。音節波形データ記憶部11には、上述の前準備により作成された音節波形データが音節を特定する音節識別情報と対応付けて記憶されている。音節符号記憶部12には、音節と音素の対応関係を示した変換テーブルが記憶されており、符号化された音節符号が音節識別情報と対応付けて記憶される。音素符号記憶部13には、符号化された音素符号が音素符号識別情報と対応付けて記憶される。
処理制御手段20は、音素符号変換装置全体の処理を統括するものであり、音節波形拡大手段21、符号コード群作成手段22、音節符号作成手段23、音高別エネルギー算出手段24、音高別エネルギー統合手段25、符号変換手段26を有している。処理制御手段20は、CPU、メモリを含むコンピュータ本体であり、音節波形拡大手段21、符号コード群作成手段22、音節符号作成手段23、音高別エネルギー算出手段24、音高別エネルギー統合手段25、符号変換手段26は、専用のプログラムをCPUが実行することにより実現される。符号表示手段30は、処理制御手段20により処理される音節符号、音素符号を表示するものであり、液晶ディスプレイ等の表示装置により実現される。
続いて、本実施形態に係る音素符号変換装置の処理動作について説明する。図4は、本実施形態に係る音素符号変換装置において、音節符号を生成するまでの処理概要を示すフローチャートである。
まず、処理制御手段20は、処理対象である音節波形データを、音節波形データ記憶部11から読み込む。音節波形データは、アナログの録音信号を所定のサンプリング周波数、量子化ビット数でサンプリングしたものであり、本実施形態では、サンプリング周波数44.1kHz、量子化ビット数16ビットでサンプリングした場合を例にとって以下説明していく。サンプリング周波数44.1kHzでサンプリングした場合、音節波形データは、1秒間に44100個のサンプルを有するサンプル列(サンプルの配列)として構成されることになる。
音節波形データを読み込んだら、音節波形拡大手段21が、音節波形データを時間軸方向に所定の倍率Q(Qは整数)だけ拡大する(S1)。具体的には、音節波形データを構成するサンプルの数をQ倍にする。そして、Q個ごとに、元のサンプルと同じ値のものを配置し、その間の(Q−1)個のサンプルの値としては、両側に位置する元のサンプルの値を用いて線形補間したものを与える。原音節録音信号の各サンプルj(j=0・・・J−1)についてのサンプル値をx(j)とすると、コンピュータは、以下の〔数式1〕に従った処理を実行することにより、拡大後の音節録音信号の各サンプルj・Q+k(0≦k≦Q−1)についてのサンプル値x´(j・Q+k)を算出する。以下の〔数式1〕において、wはk/(Q−1)で与えられる0≦w≦1の値をとる実数値とする。
〔数式1〕
x´(j・Q+k)=(1−w)・x(j)+w・x(j+1)
S1における処理の結果、音節波形データを構成するJ個のサンプルは、J×Q個に拡大される。図5(a)にS1における拡大処理による波形の変化を示す。図5(a)における波形は、サンプルの値をプロットしたものを線分で結んだものであるが、サンプル数が多いため、曲線状に表現されるものである。上記〔数式1〕に従った処理を実行することにより、左側に示したような波形が右側に示したような波形に変化することになる。なお、図5の例では、説明の便宜上Q=2の場合を示している。
次に、符号コード群作成手段22が、時間軸方向に拡大されたサンプル上に単位区間を設定する(S2)。単位区間の長さ(サンプル数T)は、サンプリング周波数との関係で設定されるが、サンプリング周波数が44.1kHzの場合、低域部まで忠実に解析するためには、4096サンプル以上必要である。そこで、本実施形態では、1単位区間のサンプル数T=4096として単位区間を設定している。
単位区間の設定は、特許文献1〜5に開示されているように、デジタル音響信号の先頭から順次サンプルを抽出することにより行われる。単位区間は、全てのサンプルを漏らさず設定し、好ましくは、連続する単位区間においてサンプルが重複するように設定する。この場合、各単位区間の先頭の間隔(シフト幅という)は、様々な規則で設定することができる。最も単純なのは、シフト幅を固定、すなわち重複させるサンプル数を一定として設定する手法である。例えば、T=4096の場合、先頭の単位区間をj=0〜4095、2番目の単位区間をj=2048〜6143、2番目の単位区間をj=4096〜8191というように、2048(=T/2)個のサンプルを重複させながら、設定することになる。しかし、時間分解能を向上させるためには、シフト幅を小さくしたいという要望があり、一方、シフト幅を小さくするほど、計算時間が増大するという問題がある。また、シフト幅を必要以上に小さくすると、後述するS4の単音成分の連結処理において連結条件が満足されなくなり連結処理が適切に機能しなくなる。そこで、音節波形データの状態に合わせて最適なシフト幅を設定するため、本実施形態では、特許文献5に開示したような、ゼロ交差点間隔の粗密または自己相関解析により周波数変化が顕著なゼロ交差点を選別し、このゼロ交差点に位置するサンプルを先頭とする。
ゼロ交差点とは、正負両極性の音節波形データ(音響信号)と、信号の0レベルとの交差点のことであり、ここでは、音節波形データの信号強度値(振幅)が0となる時刻を示す。ただし、デジタル化した音節波形データは、アナログ信号におけるゼロ交差点をサンプルするとは限らない。そのため、実際には、強度値が丁度0になる場合に加え、サンプリング点の強度値が正から負、または負から正に変化した場合に、その前後のサンプリング点のどちらかをゼロ交差点とみなす処理を行う。なお、ゼロ交差点検出のためには、解析対象となる音節波形データが正負両極性となっている必要がある。そのため、直流成分を含む音節波形データについては、直流成分を除去しておく必要がある。直流成分の除去については、周知の種々の手法を適用することができるので、ここでは詳細な説明は省略する。基本的には、ゼロ交差点に位置するサンプルを先頭として単位区間を設定するが、連続する単位区間のシフト幅が一定の範囲に収まるように、ゼロ交差点以外の位置を先頭として単位区間を設定する場合もある。具体的には、最大シフト幅(例えばT/2)を上回る場合は、ゼロ交差点以外の位置でも最大シフト幅となる位置を先頭にして単位区間を設定する。逆に、最小シフト幅(例えばT/8)を下回る場合は、最小シフト幅を上回るように幾つかのゼロ交差点を飛ばした位置を先頭にして単位区間を設定し、最小シフト幅を上回りかつ最大シフト幅の範囲で該当するゼロ交差点が存在しない場合は、上記と同様に最大シフト幅となる位置を先頭にして単位区間を設定するような補正を行う。
符号コード群作成手段22は、続いて、設定された各単位区間を対象として周波数解析を実行し、各単位区間のスペクトルを算出する(S3)。各単位区間のスペクトルの算出は、特許文献1〜5に開示されているように、MIDIのノートナンバーnに対応する128種の解析周波数f(n)=440・2(n-69)/12の要素信号(要素関数)を基本にした一般化調和解析により、128個の成分を抽出することにより行う。“128種”“128個”というのは一例であり、一般にPo種類の解析周波数を用いてPo個の成分を抽出することになる。実際には、Po種類の解析周波数に対応した全てを必要とするものではなく、そのうち必要なP(P≦Po)個の成分を抽出する。例えば、MIDI規格の場合、ノートナンバーn=0〜127の範囲に対応するが、グランドピアノを再現するための規格音域は、ノートナンバーn=21〜108の範囲である。したがって、この場合、128種類の解析周波数を用いて88個の成分を抽出することになる。
本実施形態では、音節波形データを時間軸方向にQ倍に拡大したことに伴い、nの上限、下限をそれぞれαだけ下方に移動させる。αは、α=12・log2Q(例えばQ=4の場合α=24)で定義される整数である。したがって、特許文献1〜5では、0≦n≦127であるが、本実施形態では、−α≦n≦127−αである。これにより各調和信号の周波数は、1/Q倍に設定されることになる。ここで、本実施形態における解析周波数の論理的/物理的範囲の関係を図6に示す。図6に示すように、グランドピアノの規格音域は、n=21〜108の範囲であるため、通常の解析を行う場合は、n=21〜108の範囲で行うことになる。ところが、本発明では、時間軸拡大することにより周波数を低音側にシフトして解析処理を行う。また、ノートナンバーn=21以下については、対応する調和信号の1周期が単位区間より長くなるため、時間軸延長(後述)による長周期解析を行う。この結果、n=−3〜84について周波数成分が得られるが、最終的に補正処理を行うことにより、n=21〜108の範囲周波数成分が得られる。
ノートナンバーnに対応して解析周波数を設定した場合、周波数が高くなるにつれ、ノートナンバー間の周波数間隔が広くなるため、特に、nが60を超えると解析精度が低下してしまう。そこで、本実施形態では、特許文献3に開示したように、ノートナンバー間をM個の微分音に分割した128M個の要素信号f(n,m)=440・2(n-69+m/M)/12を用いて解析を行い、128M個の成分を抽出する。後述するS4においてピッチベンド符号の付加など特殊な符号化を行わない限り、各ノートナンバーにおけるM個の微分音の情報は不要であるため、M個の微分音の成分の合算値を当該ノートナンバーにおける成分として代表させ、結果的に128個の成分を抽出する。
符号コード群作成手段22による具体的な処理手順としては、まず、ノートナンバー分の強度配列E(n)(−α≦n≦127−α)と副周波数配列S(n)を設定し、初期値を全て0とする。続いて、−α≦n≦127−αおよび0≦m≦M−1に対して以下の〔数式2〕に従った処理を実行し、E(n,m)を最大にする(nmax,mmax)を求める。
〔数式2〕
A(n,m)=(1/T(n))・Σi=0,T(n)-1x(i) sin(2πf(n,m)i/fs)
B(n,m)=(1/T(n))・Σi=0,T(n)-1x(i) cos (2πf(n,m)i/fs)
{E(n,m)}2={A(n,m)}2+{B(n,m)}2
上記〔数式2〕においてT(n)は解析フレーム長であり、調和信号(調和関数)の1周期が単位区間長T以下の場合、単位区間長Tを超えない範囲で調和信号の周期の最大の整数倍になるように設定する。ただし、本実施形態では、時間軸拡大することにより周波数を低音側にシフトして解析処理を行うため、調和信号(調和関数)の1周期が単位区間長Tを超える場合が発生する。具体的には、調和信号の1周期が単位区間長Tより大きい場合、T(n)/fs=1/f(n,m)で与え、T<T(n)におけるx(i)の値については、後述する時間軸延長処理に基づき設定する。そして、E(n,m)を最大にする(nmax,mmax)を用いたf(nmax,mmax)が調和信号として選出されることになる。なお、fsはサンプリング周波数(例えば、44.1kHz)である。(nmax,mmax)が求められたら、コンピュータは、A(nmax,mmax)およびB(nmax,mmax)を用いて、以下の〔数式3〕に従った処理を実行し、サンプル配列x(i)のT(n)サンプル個の要素(0≦i≦T(nmax)−1)を更新する。この際、T<T(n)の場合、T≦i≦T(nmax)−1に対応するx(i)の要素に対しては、後述する時間軸延長処理に基づき、一部の同一サンプルx(i)が以下の〔数式3〕に基づいて複数回更新される場合がある。
〔数式3〕
x(i)←x(i)−A(nmax,mmax)・sin(2πf(nmax,mmax)i/fs)−B(nmax,mmax)・cos (2πf(nmax,mmax)i/fs)
上記〔数式3〕においては、x(i)から含有信号を減じる処理を行っている。さらに、以下の〔数式4〕に従った処理を実行し、強度配列E(n)、副周波数配列S(n)を更新する。
〔数式4〕
E(nmax)←E(nmax)+E(nmax,mmax)
S(nmax)←mmax
符号コード群作成手段22は、上記〔数式2〕〜〔数式4〕の処理を全てのn(−α≦n≦127−α)に対して実行し、全てのE(n)およびS(n)の値を決定する。
本実施形態では、処理負荷を軽減するため、Mの値については、ノートナンバーに基づいて可変に設定し、例えば解析する周波数間隔が100Hz程度になるようにしている。そして、ノートナンバー60以下は分割せずM=1にする。また、精度は若干落ちるが、初回の〔数式2〕の処理でS(n)を決定し、2回目以降の〔数式2〕の処理は、m=S(n)に固定して行い、微分音解析を省略するようにしても良い。また、〔数式2〕の処理で、既に同一ノートナンバーに対して副周波数が異なる信号成分が複数回に渡って解析される可能性があるが、E(n)とS(n)に既に値がセットされている場合は、E(n,m)の最大値の選定候補から除外するようにしても良い。
ここで、単位区間における解析フレームの設定について説明する。図7は、時間軸拡大処理後の音節波形データから抽出した単位区間におけるサンプル列と、調和信号の対応関係を示す図である。このうち、図7(a)は、時間軸拡大処理後の音節波形データから抽出した単位区間におけるサンプル列である。各サンプルにおけるサンプル値(4096個)を結ぶことにより、図7(a)に示すような波形状で示される。128個の調和信号のうち、図7(b)に示すような1周期が単位区間長T以下の高音部の解析調和信号と相関演算を行う際、および単位区間Tより選出された調和信号である含有信号を減算する際には、調和信号の1周期が単位区間長Tを超えない範囲まで周期を整数倍した長さを解析フレーム長T(n)とし、単位区間Tの先頭からサンプルT(n)個を抽出して、解析フレームとする。
調和信号の1周期が単位区間長Tより大きい場合、相関計算区間である解析フレーム長T(n)を調和信号の1周期分とするため、単位区間長TにT(n)−T個のサンプル数を追加することにより時間軸延長処理を行う。この場合、調和信号の1周期を4つの分割区間K1−K4として設定する。そして、図7(d)に示すように、単位区間長Tが、調和信号の3/4周期に相当する場合は、調和信号の分割区間K3(1/2周期から3/4周期の区間)に対応する単位区間のサンプルを、調和信号の3/4周期(270度:分割区間K3と分割区間K4の境界)の時点において時間軸方向に反転させたサンプルを追加する。270度の時点において時間軸方向に反転させるのは、調和信号の1周期が正弦波であると仮定すると、分割区間K3と分割区間K4(3/4周期から1周期の区間)は270度を軸に時間軸方向に左右対称である特徴を利用したものである。このようにして時間軸延長が行われ、図7(c)に示すような波形の解析フレーム(5461サンプル)が得られる。図7(c)(d)の例では、単位区間長Tが、調和信号の3/4周期に相当する場合を示したが、単位区間長Tが、調和信号の3/4周期以上である場合は、同様に処理が行われ、解析フレーム長T(n)は最大5461サンプルとなる。この場合、調和信号の3/4周期を超えた部分の単位区間のサンプルは、単位区間内のいずれかのサンプルが重複して使用されることになる。
また、図8(b)に示すように、単位区間長Tが、調和信号の1/2周期以上で3/4周期未満に相当する場合(単位区間の最終サンプルが分割区間K3に属する場合)は、分割区間K4全体と分割区間K3の一部が欠損しているため、分割区間K2(1/4周期から1/2周期の区間)に対応する単位区間のサンプルを、調和信号の1/2周期(180度:分割区間K2と分割区間K3の境界)の時点において時間軸および振幅軸方向に反転させたサンプルを分割区間K3に追加し、さらに追加された分割区間K3のサンプルを、調和信号の3/4周期(270度)の時点において反転させたサンプルを追加する。180度の時点において時間軸および振幅軸方向に反転させるのは、調和信号の1周期が正弦波であると仮定すると、分割区間K2と分割区間K3は180度を軸に時間軸および振幅軸方向に180度回転させた対称形である特徴を利用したものである。このようにして時間軸延長が行われ、図8(a)に示すような波形の解析フレーム(最大8192サンプル)が得られる。この場合、調和信号の1/2周期を超えた部分の単位区間のサンプルは、単位区間内のいずれかのサンプルが重複して使用されることになる。
また、図9(b)に示すように、単位区間長Tが、調和信号の1/4周期以上で1/2周期未満に相当する場合(単位区間の最終サンプルが分割区間K2に属する場合)は、分割区間K3・K4全体と分割区間K2の一部が欠損しているため、K1区間(先頭から1/4周期の区間)に対応する単位区間のサンプルを、調和信号の1/4周期(90度:分割区間K1と分割区間K2の境界)の時点において時間軸方向に反転させたサンプルを分割区間K2に追加し、さらに追加された分割区間K2のサンプルを、調和信号の1/2周期(180度)の時点において時間軸および振幅軸方向に反転させたサンプルを分割区間K3に追加し、さらに追加された分割区間K3のサンプルを、調和信号の3/4周期(270度)の時点において時間軸方向に反転させたサンプルを追加する。90度の時点において時間軸方向に反転させるのは、調和信号の1周期が正弦波であると仮定すると、分割区間K1と分割区間K2は90度を軸に時間軸方向に左右対称である特徴を利用したものである。このようにして時間軸延長が行われ、図9(a)に示すような波形の解析フレーム(最大16384サンプル)が得られる。この場合、調和信号の1/4周期を超えた部分の単位区間のサンプルは、単位区間内のいずれかのサンプルが重複して使用されることになる。尚、単位区間長Tが、調和信号の1/4周期未満に相当する場合(単位区間の最終サンプルが分割区間K1に属する場合)も起こり得るが、これをもとに時間軸延長を行って相関計算を行っても、ソースとなる情報量が少なすぎて、有意な相関値が得られないため、単位区間長Tが、調和信号の1/4周期未満に相当する周波数に対しては解析対象としないものとする。
各単位区間について解析フレームを変化させながら周波数解析を行い、スペクトル(128個の周波数成分)が算出されたら、符号コード群作成手段22が、周波数情報と、各周波数に対応するスペクトル強度、および単位区間の開始と終了を特定可能な時間情報で構成される符号コードを作成する(S4)。符号コードの作成にあたり、まず、算出したスペクトルに、各ノートナンバーnの時刻、時間長の情報を追加し、[開始時刻,時間長,主周波数n,副周波数S(n),強度E(n)]で構成される単音成分を作成する。「開始時刻」としては単位区間の先頭の時刻を、音節波形データ全体において特定できる情報であれば良く、本実施形態では、単位区間の先頭サンプル(i=0)に付された音節波形データ全体におけるサンプル番号(絶対サンプルアドレス:jに対応)を記録している。この絶対サンプルアドレスをサンプリング周波数(44100)で除算することにより、音節波形データ先頭からの時刻が得られる。時間長は、本実施形態では単位区間ごとに可変で与えられることを特徴とし、直後に後続する単位区間の開始時刻までの差分(後続する単位区間の開始時刻−当該単位区間の開始時刻)で与えられる。
S2で設定された単位区間ごとに、128個の単音成分が作成されるが、さらに、S4においては、連続する単位区間において単音成分を連結する処理を行う。具体的には、連続する単位区間における同一ノートナンバーの単音成分が、所定の連結条件を満たす場合、2つの単音成分を連結する。連結条件としては、同一の音として連続性を有する状態を適宜設定することができるが、本実施形態では、副周波数を考慮した周波数(主周波数+副周波数)の差が所定の閾値Ndif未満で、双方の強度が所定の閾値Lmin以上で、かつ双方の強度の差が所定の閾値Ldif未満である場合に、連続性を有するとして、後続の単音成分を前方の単音成分に連結する。ただし、連結後の主周波数、副周波数、強度は大きい方の単音成分の各値を採用し、時間長は双方の和で与える。連結条件としての具体的な閾値は、本実施形態では、Ndif=8/25[単位:ノートナンバー換算]、Lmin=1[単位:128段階ベロシティ換算]、Ldif=10[単位:128段階ベロシティ換算]としている。連結処理は、符号コードへの変換前に行うものであるため、各閾値は、ノートナンバー、ベロシティに換算したものである。
同一ノートナンバーの単音成分の連結は、連結条件を満たす限り、後続する単位区間の単音成分に対して繰り返し行い、最終的に得られた[開始時刻,時間長,主周波数n,副周波数S(n),強度E(n)]の単音成分を、符号コードに変換する。符号コードの形式としては、周波数情報と、各周波数に対応するスペクトル強度、および単位区間の開始と終了を特定可能な時間情報を有するものであれば、どのような形式のものであっても良いが、本実施形態では、MIDI形式に変換する。MIDIでは、発音開始と、発音終了を別のイベントとして発生するため、したがって、本実施形態では、1つの単音成分を2つのMIDIノートイベントに変換する。具体的には、「開始時刻」で、ノートナンバーnのノートオンイベントを発行し、ベロシティ値は強度E(n)の最大値をEmaxとして、128・{E(n)/Emax}1/4で与える。時刻については、Standard MIDI Fileでは、直前イベントとの相対時刻(デルタタイム)で与える必要があり、その時刻単位は任意の整数値で定義でき、例えば、1/1536[秒]の単位に変換して与える。そして、「開始時刻」+「時間長」で特定される終了時刻で、ノートナンバーnのノートオフイベントを発行する。この際、時間長には、0以上1以下の実数を乗じる。これは、使用するMIDI音源の音色にも依存するが、MIDI音源の余韻を考慮して早めにノートオフ指示をするためである。時間長をそのまま用いてもMIDI音源の処理上問題はないが、発音の際、後続音と部分的に重なる場合がある。
MIDI符号に変換する際、MIDI音源で処理可能な同時発音数についても考慮するため、同時発音数の調整を行う必要がある。MIDI音源で処理可能な同時発音数が32である場合、時間軸方向に発音期間中(ノートオン状態)のノートイベントの個数を連続的にカウントし、同時に32個のノートイベントが存在する箇所が見つかった場合は、各々対になるノートオフイベントを近傍区間内で探索し、各ノートイベント対のベロシティ値とデュレーション値(ノートオフ時刻−ノートオン時刻)の積(エネルギー値)で優先度を評価し、指定和音数(この場合“32”)以下になるように優先度の低い(エネルギー値の小さい)ノートイベント対を局所的に削除する処理を行う。“局所的に”とは、32を超えるノートイベントが存在する部分に限りという意味である。この際、ベロシティ値またはデュレーション値のいずれかが所定の下限値より低い場合、優先度に関係なく削除する処理も行う。
さらに、MIDI符号に変換する際、MIDI音源で処理可能なビットレートについても考慮するため、ビットレートの調整を行う必要がある。時間軸方向に、1秒間隔にノートオンまたはノートオフイベントの個数をカウントし、各々の符号長を平均5バイト(40ビット)とし、MIDI音源で処理可能な最大ビットレートを9000[bps(ビット/秒)]とすると、1秒間あたりイベント数が9000/40=225個を超えている区間が見つかった場合は、その区間に存在するノートオンまたはノートオフイベントと各々対になるノートオフまたはノートオンイベントを近傍区間内で探索し、各ノートイベント対のベロシティ値とデュレーション値(ノートオフ時刻−ノートオン時刻)の積(エネルギー値)で優先度を評価し、指定イベント個数(この場合“225”)以下になるように優先度の低い(エネルギー値の小さい)ノートイベント対を局所的に削除する処理を行う。この際、ベロシティ値またはデュレーション値のいずれかが所定の下限値より低い場合、優先度に関係なく削除する処理も行う。
符号コードの作成が行われたら、音節符号作成手段23が、時間軸方向に拡大して処理されたことによる変動を是正するため、各符号コードを補正する処理を行う(S5)。具体的には、まず、全てのノートイベント(ノートオンイベントまたはノートオフイベント)のノートナンバー値に12・log2Qだけ加算する処理を行う。例えば、Q=4の場合、24半音(2オクターブ)だけ全体的に音高を上げる。この処理は、S1においてサンプル数をQ倍したことにより周波数が1/Qになっているため、周波数をQ倍にして元の状態に戻すために行う。この補正によりノートナンバーが規格値上限の127を超えるノートナンバーをもつ符号コードは削除する。具体的には補正前のノートナンバーが128−12・log2Q以上の符号コードが削除される。
続いて、全てのノートイベントの時刻(ノートオン時刻またはノートオフ時刻)に1/Qを乗算する。これにより、MIDI符号全体の演奏時間、および各ノートイベントの発音時間が1/Qに縮小される。この処理は、S1においてサンプル数をQ倍したことにより全体の演奏時間がQ倍になっているため、時刻を1/Qにして元の状態に戻すために行う。この処理を行うと、時間あたりのノートイベント数がQ倍に増大するため、上記S4で実行したビットレートの調整を再度実行する。
S5における処理の結果、周波数(音高)はQ倍になるとともに、時間情報は1/Qになる。S5の補正処理によるMIDIイベント(MIDI符号のノートイベント)の変化の様子を図5(b)に示す。図5(b)においては、Q=2の場合のMIDIイベントの変化を、音符により示している。S5の補正処理により左側の“ミ”の音符は、右側では1オクターブ高い(周波数が2倍)“ミ”の音符に変化している。一方、左側の四分音符が、右側では時間的に1/2の八分音符に変化している。このようにして得られた音節符号は、音節識別情報と対応付けられて音節符号記憶部12に記憶される。
また、上記の例では、ビットレートの調整をS4、S5の2回行っているが、これらについては、最終的に少なくとも1回ずつ行われていれば良い。また、上記実施形態では、S2〜S4の処理について好ましい処理例について具体的に説明したが、これらの処理については、本発明の趣旨を逸脱しない範囲で、公知の特許文献1〜5に開示した技術を用いることができる。
音節符号が得られたら、71の音節単位で構成される音節符号を基に、20の音素符号に変換する。図10は、本実施形態に係る音素符号変換装置において、音節符号から音素符号への変換の処理概要を示すフローチャートである。ここで、音節と音素の対応関係を示した変換テーブルを図11に示す。この変換テーブルは、音節符号記憶部12に記憶されている。図11において、カタカナで示す「ア」「イ」・・・の71音は音節であり、アルファベットで示す「A」「I」は音素である。母音音素「A」・・・「O」は水平方向の13音節のAND演算で決定され、子音音素「K」・・・「P」は垂直方向の5音節のAND演算で決定される。図11に示した横長の枠は、母音音素「A」が13個の音節「ア」・・・「パ」で決定されることを示しており、縦長の枠は、子音音素「K」が5個の音節「カ」・・・「コ」で決定されることを示している。なお、子音音素「Y」は3個の音節「ヤ」「ユ」「ヨ」で決定され、子音音素「W」は2個の音節「ワ」「ヲ」で決定され、音素「n」は1個の音節「ン」で決定される。
本発明では、音節符号に部分時間区間を設定し、この部分時間区間に含まれる符号コード群を抽出し、演算を行う。部分時間区間としては、母音成分、子音成分を有する箇所を設定することになるが、本実施形態では、音節符号全体において前部を子音音素符号抽出時の部分時間区間、後部を母音音素符号抽出時の部分時間区間としている。これは、一連の日本語子音の音節は各区間の時間配分はバラバラであるが、子音区間−遷移区間−母音区間という時間的な変位順位が共通なためである。したがって、音節符号の前部を利用すれば、子音音素が抽出でき、音節符号の後部を利用すれば、母音音素が抽出できることになる。
まず、処理制御手段20が、図11に示した変換テーブルを参照し、関連する複数の音節符号の前部または後部の符号コード群を読み込む(S11)。前部と後部のどちらを読み込むかは、子音音素符号を得る場合か、母音音素符号を得る場合かにより異なる。子音音素符号を得る場合は、前部の符号コード群を読み込み、母音音素符号を得る場合は、後部の符号コード群を読み込む。例えば、子音の音素符号「K」を得る場合、音節符号記憶部12から「カ」「キ」「ク」「ケ」「コ」の5個の各音節符号について、前部だけを抽出して読み込む。抽出するための全部と後部の分断の位置は適宜設定しておくことが可能であるが、本実施形態では、前部については、音節符号を構成する全ての符号コードにおける最小の発音開始時刻と最大の発音終了時刻との中間時刻を分断位置とする。したがって、前部は最小の発音開始時刻から中間時刻までの区間、後部は中間時刻から最大の発音終了時刻までの間となる。前部と後部に跨る符号コードについては、中間時刻を発音開始時刻とする符号コードと、中間時刻を発音終了時刻とする符号コードに分断され、ぞれぞれ前部、後部として読み込まれる。
子音の音素符号「K」を得る場合、処理制御手段20が、5個の音節符号前部を読み込んだら、音高別エネルギー算出手段24は、各音節符号前部単位で、構成する全ての符号コードを対象にして、音高(MIDIの場合、ノートナンバー)別に、エネルギー総和値を算出する。エネルギー総和値は、各音高における音の強度(MIDIの場合、ベロシティ)×発音時間(MIDIの場合、デュレーション:ノートオフ時刻−ノートオン時刻)により算出する。ここで、エネルギー総和値の“総和”とは、1つの音節符号前部内において、同一音高で2つ以上の符号コードが存在する場合、各符号コードについて総和をとることを意味している。
各音節符号前部単位で、全音高についてエネルギー総和値が算出されたら、次に、音高別エネルギー統合手段25が、5個の音節符号前部間において、同一の音高別にエネルギー総和値を乗算し、統合エネルギー値を得る。乗算であるため、5個の音節符号前部のうち、いずれか1つの音節符号前部に存在しない音高成分については、“0”となる。したがって、統合エネルギー値を求めることにより、5個の音節符号前部に共通の成分のみが残ることになる。例えば、音素符号「K」の前部を構成する音高成分は、音節符号「カ」「キ」「ク」「ケ」「コ」の前部に共通に含まれている音高成分でなければならない。
音高別に統合エネルギー値が算出されたら、符号変換手段26が、統合エネルギー値が上位の音高を指定和音数(例:8個)を超えないように選出する。指定和音数は、事前に設定されるものであり、自由に設定することができるが、本実施形態では、上述のように“8”としている。したがって、本実施形態では、32個の符号コードから8個の符号コードが、符号変換手段26により抽出されることになる。さらに、符号変換手段26は、元の各音節符号を構成する複数の符号コードのうち、最も早い発音開始時刻(最小)、最も遅い発音終了時刻(最大)を、それぞれ選出された全ての音高の発音開始時刻、発音終了時刻として設定する。ただし、子音の場合、前部の符号コードのみを抽出しているため、最も遅い発音終了時刻が中間時刻となっているため、これを本来の発音終了時刻に変更する処理を行う。そして、選出された音高のベロシティを規定値に設定する。ベロシティの規定値については、ベロシティが“0”〜“127”の値を取り得るため、本実施形態では、その最大の“127”としている。
一方、「A」等の母音の音素符号を得る場合、音節符号記憶部12から「ア」「カ」「サ」「タ」「ナ」「ハ」「マ」「ラ」「ガ」「ザ」「ダ」「バ」「パ」の13個の各音節符号について、後部だけを抽出して読み込む。そして、子音の音素符号の場合と同様、音高別エネルギー算出手段24が、各音節符号後部単位で、構成する全ての符号コードを対象にして、音高別に、エネルギー総和値を算出する。各音節符号後部単位で、全音高についてエネルギー総和値が算出されたら、次に、音高別エネルギー統合手段25が、13個の音節符号後部間において、同一の音高別にエネルギー総和値を乗算し、統合エネルギー値を得る。乗算であるため、13個の音節符号後部のうち、いずれか1つの音節符号後部に存在しない音高成分については、“0”となる。したがって、統合エネルギー値を求めることにより、5個の音節符号後部に共通の成分のみが残ることになる。例えば、音素符号「A」の後部を構成する音高成分は、音節符号「ア」「カ」「サ」「タ」「ナ」「ハ」「マ」「ラ」「ガ」「ザ」「ダ」「バ」「パ」の後部に共通に含まれている音高成分でなければならない。
母音の場合も、音高別に統合エネルギー値が算出されたら、符号変換手段26が、統合エネルギー値が上位の音高を指定和音数を超えないように選出し、符号化を行うが、時刻については、最も早い発音開始時刻(最小)、最も遅い発音終了時刻(最大)を、それぞれ選出された全ての音高の発音開始時刻、発音終了時刻として設定した後、最も早い発音開始時刻が中間時刻となっていることを考慮し、これを本来の発音開始時刻に変更する処理を行う。なお、本実施形態では、前部、後部を部分時間区間として設定したが、部分時間区間としては、前部、後部に限定されず、母音、子音を特定可能な箇所を設定することができる。
音高別エネルギー算出手段24、音高別エネルギー統合手段25、符号変換手段26による母音の音素符号を作成する際の符号コード群の変化の様子を図12に示す。図12において、横軸は時間、縦軸は周波数(ノートナンバー)に対応している。グラフ内に配置された矩形は符号コードを示しており、横方向の長さは横軸に従って時間的長さを示しているが、縦方向の長さは縦軸とは異なり、周波数ではなく強度(ベロシティ)を示している。
実際には、図11に示したように、1つの母音音素は、13個の音節により得られるが、図12の例では、説明の便宜上2つの音節符号α1、β1を用いて、母音音素符号γ1を抽出する場合を示している。図12(a)、(b)は、それぞれ音高別エネルギー算出手段24による処理前の音節符号α1、β1を構成する符号コード群を示したものである。上述のように、本実施形態では、同一時刻において32個の符号コードで音節符号を構成し、指定和音数は8に設定するのが一般的であるが、図12(a)では、説明の都合上、同一時刻において符号コードは最大7個となっており、指定和音数は4に設定している場合を示している。また、説明の便宜上、各符号コードを示す矩形の横方向の長さで表現した各符号コードの再生時間(発音終了時刻−発音開始時刻)は異なっているが、各符号コードを示す矩形の縦方向の長さで表現した各符号コードの強度は同一である。図12(c)、(d)は、音節符号α1、β1を構成する符号コード群を前部と後部に分断した状態を示したものである。
音高別エネルギー算出手段24、音高別エネルギー統合手段25による処理後は、全ての音高についての統合エネルギー値が得られる。統合エネルギー値は、図12(c)(d)に示されるような、音高別エネルギー算出手段24により音高ごとに算出される発音開始時刻と発音終了時刻との時間差と符号コードの強さ(ベロシティ)との積の同一音高における総和値であるエネルギー総和値に対して、音節符号α1とβ1との間で対応する音高におけるエネルギー総和値同士を乗算したものであるので、図で表現するのは難しいが、イメージ的には、図12(e)に示すように、音高に対応して、その統合エネルギー値(図12(e)では、図面上下方向の幅で表現)が得られる。そして、符号変換手段26により、図12(f)に示すように、統合エネルギー値が大きい音高が後部において4つ選出される。さらに、この後、符号変換手段26により、各音高に対応する符号コードの強度値は、上述のような規定値に設定される。
音高別エネルギー算出手段24、音高別エネルギー統合手段25、符号変換手段26による子音の音素符号を作成する際の符号コード群の変化の様子を図13に示す。図13においても、図12と同様、横軸は時間、縦軸は周波数(ノートナンバー)に対応している。グラフ内に配置された矩形は符号コードを示しており、横方向の長さは横軸に従って時間的長さを示しているが、縦方向の長さは縦軸とは異なり、周波数ではなく強度(ベロシティ)を示している。
実際には、図11に示したように、1つの子音音素は、5個の音節により得られる(例外として、音素Yは3個の音節、音素Wは2個の音節、音素nは1個の音節)が、図13の例では、説明の便宜上2つの音節符号α2、β2を用いて、音素γを抽出する場合を示している。図13(a)、(b)は、それぞれ音高別エネルギー算出手段21による処理前の音節符号α2、β2を構成する符号コード群を示したものであるが、説明の便宜上、図12と同じ符号コード群としている。図13(c)、(d)は、音節符号α2、β2を構成する符号コード群を前部と後部に分断した状態を示したものである。
音高別エネルギー算出手段24、音高別エネルギー統合手段25による処理後は、全ての音高についての統合エネルギー値が得られる。統合エネルギー値は、図13(c)(d)に示されるような、音高別エネルギー算出手段24により音高ごとに算出される発音開始時刻と発音終了時刻との時間差と符号コードの強さとの積の同一音高における総和値であるエネルギー総和値に対して、音節符号α2とβ2との間で対応する音高におけるエネルギー総和値同士を乗算したものであり、イメージ的には、図12(e)に示すように、音高に対応して、その統合エネルギー値が得られる。そして、符号変換手段26により、図12(f)に示すように、統合エネルギー値が大きい音高が前部において4つ選出される。さらに、この後、符号変換手段26により、各音高に対応する符号コードの強度値は、上述のような規定値に設定される。
ここで、「カ」「キ」「ク」「ケ」「コ」の5個の音節符号(最大32の音高)と、「A」「I」「U」「E」「O」「K」の6個の音素符号(最大8の音高)の構成例を図14に示しておく。
図11に示したように、1つの母音の音素符号は、13個の音節符号後部の各音高におけるエネルギー総和値同士を乗算することにより決定される。また、1つの子音の音素符号は一部の例外を除き、5個の音節符号の前部の各音高におけるエネルギー総和値同士を乗算することにより決定される。この場合、基本的にはこれら20種の音素符号を決定する順位は問わない。そうすると、母音の音素符号と子音の音素符号との間で、ある音高が重複して選出される場合が生じる。即ち、8音など限られた音高で構成される子音の音素と母音の音素が音声合成時に時間的に連続して同一音高が再生される場合が生じ、明瞭性の点で好ましくない。そこで、本願では、子音の音素と母音の音素の符号間で、できるだけ同一の音高が重複して含まれないようにする方法を提案する。そのためには、先に、13個の音節符号の各音高におけるエネルギー総和値同士を乗算することにより5種類の母音の音素符号を決定する。続いて、5個の母音「ア」「イ」「ウ」「エ」「オ」のいずれかを含む5個の子音の音節符号(例えば、「カ」「キ」「ク」「ケ」「コ」)の各音高におけるエネルギー総和値同士を乗算する前に、各音節符号に含まれる母音の既に決定された音素符号の全ての音高に対応するエネルギー総和値を一定の割合で縮小させる。例えば、エネルギー総和値に1/1000を乗算させて他の音高のエネルギー総和値に対して相対的に小さな値に改変する。乗算する値は、必ずしも1/1000とする必要はなく、1未満であれば良い。ただし、1/1000程度が最も好ましく、1に近付くにつれ、母音音素と重複する成分が残ることになる。その後、5個の音節符号の各音高における改変されたエネルギー総和値同士を乗算することにより5種類の母音の音素符号を決定する。このような補正処理を施すことにより、子音の音素と母音の音素の符号間で、同一の音高が重複して選択される確率が低くなる。(ただし、エネルギー総和値の高い音高の種類が元来少ない場合、多少重複して選択されることもある。)
音高別エネルギー算出手段24、音高別エネルギー統合手段25、符号変換手段26は、音節符号記憶部12に記憶されている各音節符号について処理を行い、得られた各音素符号を音素符号記憶部13に格納する。音素符号記憶部13に格納された音素符号の例を図15〜図18に示す。このうち、図15、図16は男声を符号化したものであり、図17、図18は女声を符号化したものである。図15〜図18中、“C,C#,D,D#、E、F、F#、G、G#、A、A#、B”は、“ド、ド#、レ、レ#、ミ、ファ、ファ#、ソ、ソ#、ラ、ラ#、シ”の音名の英語表記で、列記されている数字はオクターブ番号を示し、音名とオクターブ番号の対記号でMIDI規格のノートナンバーを特定でき、本願ではMIDI規格ノートナンバーの69をA3と表記する(国際的にはA4をMIDI規格ノートナンバーの69を示す表記も多数存在する)。音素符号を構成する符号コードが、MIDI規格で定義されている場合、市販の楽譜編集ツールにより五線譜に変換することができる。図15、図16の男声の音素符号を五線譜化した例を図19に、図17、図18の女声の音素符号を五線譜化した例を図20にそれぞれ示す。音素符号が記憶された音素符号記憶部13は、音素符号データベース13aとして機能する。この音素符号データベース13aは、所定の種類以下の音高を同時にもち、音の強さおよび音の長さが均一の複数の符号コードで構成される音素符号を記録し、これらの音素符号を単独または2つを組み合わせることにより全ての音節を表現するようにしたので、音節符号より少ない数の音素符号で、全ての音節を表現することが可能となる。
(4.音声の合成)
次に、得られた音素符号を利用した音声の合成について説明する。図21は、本発明に係る音声合成装置の一実施形態を示す構成図である。図21において、音素符号データベース13aは、得られた音素符号を、音素符号識別情報と対応付けて記録したものである。音素符号データベース13aに格納されている音素符号は、上述の音素符号変換装置により変換され、音素符号記憶部13に格納されたものと同じである。したがって、上述の音素符号変換装置は、この音素符号データベース13aを作成するためのものであるとも言える。また、音素符号データベース13aには、各音素符号識別情報と、音節を特定する音節識別情報との対応関係を示した変換テーブルが記録されている。この変換テーブルは、図11に示したものと同じである。合成音声データ記憶手段14は、音素編集処理手段50により合成された合成音声データを記憶するものであり、ハードディスク等の記憶装置により実現される。
音素編集処理手段50は、合成指示データの内容に従って、音素符号データベース13aから対応する音素符号を抽出し、所定の加工を施して合成音声データを生成し、所定の出力先に出力する処理を行う。生成された合成音声データは、設定に従って合成音声データ記憶手段14、音声出力手段60、印刷手段70のうち、1つ以上に出力される。音声出力手段60は、音素編集処理手段50から受け取った合成音声データを実際の音声として発音するものであり、MIDI音源を備えたMIDI再生装置により実現される。印刷手段70は、音素編集処理手段50から受け取った合成音声データを五線譜に変換し、印刷するものであり、五線譜への変換は、公知の変換ソフトウェアを実行することにより実現され、印刷機能は、公知のプリンタ等により実現される。図21に示した音声合成装置は、現実には、入力機器、外部記憶装置を備え、MIDI再生装置を接続したコンピュータに専用のプログラムを組み込むことにより実現される。
音声合成装置に入力される合成指示データは、音節識別情報を所定の順序で配置したものであり、この音節識別情報は、音節を識別することができるものであれば、どのような形式であっても良い。本実施形態では、音節識別情報として、音節に対応する文字コードを記録したテキストデータを用いている。この場合、音素符号データベース13a内の変換テーブルには、音節識別情報に対応する文字コードと音素符号識別情報が対応付けて記録されている必要がある。
続いて、図21に示した音声合成装置の処理動作について説明する。まず、合成指示データを音声合成装置に入力する。音声合成装置は、合成指示データを読み込むと、音素編集処理手段50が合成指示データ内を先頭の音節識別情報から順に合成処理していく。具体的には、音素編集処理手段50は、合成指示データ内の音節識別情報で音素符号データベース13a内の変換テーブルを参照して、音素符号識別情報を取得し、その音素符号識別情報に対応する音素符号を抽出する。
そして、抽出した音素符号が母音音素1つだけである場合は、母音音節であるので、先行する音節のノートオフ時刻の0.25秒後をノートオン時刻として設定し、その0.25秒後をノートオフ時刻とし、ノートナンバー、ベロシティは音素符号データベース12aに記録されていた値そのものとするMIDIイベントを作成する。ただし、ノートナンバーについてはオプション的に別途ユーザにより指示される音高オフセットパラメータに基づいて適宜上下され、ピッチ変換を行えるようにしてある。
抽出した音素符号が2つであり、それが子音音素と母音音素である場合は、子音音節であるので、先の子音音素符号について、前の音節のノートオフ時刻の0.25秒後をノートオン時刻として設定し、基本区間の1/4、すなわち0.0625秒後をノートオフ時刻とする。そして、後の母音音素符号について、先の子音音素符号のノートオフ時刻をノートオン時刻として設定し、基本区間の3/4、すなわち0.1875秒後をノートオフ時刻とする。子音音節の場合も、母音音節の場合と同様、ノートナンバー、ベロシティは音素符号データベース12aに記録されていた値そのものとするが、ノートナンバーについてはオプション的に別途ユーザにより指示される音高オフセットパラメータを加算することにより適宜上下され、ピッチ変換を実現することができる。また、上記の0.25秒、0.0625秒、0.1875秒という時間数値はあくまで基準値であり、別途ユーザにより指示される時間伸縮パラメータを乗算することにより適宜伸縮され、話速変換を実現することができる。
音節識別情報が長音を示すものであった場合(音節識別情報を文字コードで記録したときは、“ー”に対応する文字コードであった場合)、その直前の音節識別情報とともに2つの音節識別情報で1つの長音の音節を特定する。例えば、例えば、音節識別情報が“ア”と“ー”が連続した場合、2つの音節識別情報“アー”により、長音の母音音節であると判断する。音節識別情報が“カ”と“ー”が連続した場合、2つの音節識別情報“カー”により、長音の子音音節であると判断する。長音の場合、長音の母音音節と長音の子音音節で若干異なる。長音の母音音節の場合、ノートオン時刻からノートオフ時刻の間隔を0.5秒に増加して設定する。長音の子音音節の場合、先の子音音素符号については、長音でない通常の場合と同様、ノートオン時刻からノートオフ時刻の間隔を0.0625秒にして設定し、後の母音音素符号についてノートオン時刻からノートオフ時刻の間隔を0.4375秒にして設定する。したがって、長音の場合、音節全体の発音時間は、母音音節、子音音節ともに同じ0.5秒となる。子音音節については、第1音素の発音時間は、長音でない通常の場合と同じ0.0625秒であるが、第2音素の発音時間が、長音でない通常の場合と比べて長くなる。尚、上記の0.5秒、0.25秒、0.4375秒、0.5秒、0.0625という時間数値も同様にあくまで基準値であり、別途ユーザにより指示される時間伸縮パラメータを乗算することにより適宜伸縮され、話速変換を実現することができる。
促音の場合、その直後の音節の第1音素と同じものを、直後の音節の第1音素の直前に加える。第1音素の発音時間は0.0625秒であるため、先行する音節の発音終了時刻から0.1875秒後に促音のノートオン時刻を設定することになり、促音のノートオフ時刻と、直後の音節の第1音素のノートオン時刻が同一となる。尚、上記の0.0625秒、0.1875秒という時間数値も同様にあくまで基準値であり、別途ユーザにより指示される時間伸縮パラメータを乗算することにより適宜伸縮され、話速変換を実現することができる。
拗音の場合、直前の子音の第1音素の直後に加える。したがって、直前の子音の第1音素のノートオフ時刻と、拗音のノートオン時刻が同一となるように設定する。拗音の音節の構成自体は子音と同じであるので、拗音の第1音素のノートオフ時刻および第2音素のノートオン時刻は、第1音素のノートオン時刻の0.0625秒後であり、拗音の第2音素のノートオフ時刻は、そのノートオン時刻の0.1875秒後となる。尚、上記の0.0625秒、0.1875秒という時間数値も同様にあくまで基準値であり、別途ユーザにより指示される時間伸縮パラメータを乗算することにより適宜伸縮され、話速変換を実現することができる。
音素編集処理手段50は、読み込んだ合成指示データ内の音節識別情報単位で音素の合成処理を行っていき、処理が終わった音節単位で順に、合成音声データ(MIDIデータ)を、音声出力手段60に渡していく。音声出力手段60は、音素編集処理手段50から受け取ったMIDIデータを順に再生していく。以上のようにして、音声合成装置は、読み込んだ合成指示データに従って音声の再生が可能となる。
五線譜として出力する場合は、合成音声データを印刷手段70により五線譜データに変換した後、印刷出力する。また、上記の例のように、合成指示データに従って音声合成をリアルタイムで行い、音声再生したり、五線譜出力することも可能であるが、この音声合成装置では、音素編集処理手段50による処理結果であるMIDIデータを合成音声データ記憶手段13に蓄積し、別途このMIDIデータをMIDI再生装置により音声再生するようにしても良い。MIDIデータを記憶装置に蓄積する方法としては、SMF(Standard MIDI File)形式ファイルを用いると、市販の種々の音楽関係ソフトウェアに渡すことができ、作成されたMIDIデータからは、市販の楽譜作成ツールを用いて、楽譜を作成することができる。この場合、楽譜は、SMF形式に記録されていた音素符号を基にして作成される。そして、作成された楽譜を印刷装置から出力すれば、読みやすい楽譜として、楽器演奏の際に利用することができる。
上述の通り、音素編集処理手段50は、合成指示データ内の音節識別情報で音素符号データベース13aから対応する音素符号を抽出し、MIDIイベントを作成する際、そのノートナンバーについては音素符号データベース13aに収録されている当該音素符号を構成する各音符のノートナンバーに対して、オプション的に別途ユーザにより指示される音高オフセットパラメータを加算し適宜上下させ、ピッチ変換を行えるようにしてある。この場合は、合成音声データ全体のピッチを上下させるのではなく、母音音素に限定して上下させるようにする。また、合成指示データ内の音節識別情報とともに音高オフセットパラメータを音節ごとに定義すれば、各音節ごとに構成される母音音素のピッチを個別に上下させることもできる。すなわち、あらかじめ作成した旋律の隣接音符間での音高変化(音程情報)を、合成指示データ内の音節識別情報とともに定義される音高オフセットパラメータとして与えれば、歌声合成を実現することができる。
本発明の音声合成装置によれば、日本語カナ文字の各音節を構成する音素を音素符号として記録した音素符号データベースを有し、与えられた合成指示データに記載されている音節情報をもとに、対応する音素符号を音素符号データベースから抽出し、音節情報に従って、発音の開始および終了を特定する時刻を設定し、母音音素に対応する音素の発音の終了を特定する時刻より所定の無音区間を加えた時刻を後続する音節の発音の開始を特定する時刻として設定するようにしたので、音声合成を行うことにより作成される符号コード群は玩具などに搭載されている性能の低いMIDI音源で再生可能であるとともに、既存の楽譜編集ツールにより演奏者が楽器演奏で再生可能な判読性のある五線譜に変換することが可能となる。
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、S2〜S4の処理について好ましい処理例について具体的に説明したが、これらの処理については、本発明の趣旨を逸脱しない範囲で、公知の特許文献1〜5に開示した技術を用いることができる。