図面を参照しながら本発明の実施の形態を説明する。以下に示す各実施形態は、楽曲の歌唱音声を合成するために本発明を適用した態様である。
1.構成
図1は、本発明の実施形態に係るシステム1の構成の一例を示すブロック図である。このシステムは、サーバー100と音声合成装置200とがネットワーク300に接続されて構成される。音声合成装置200は、例えばパーソナルコンピューターや携帯通信端末等の装置であり、音声合成ソフトウェアをインストールして実行することにより、音声合成処理を行う装置である。サーバー100は、音声合成装置200が音声合成ソフトウェアをインストールする際に必要とする各種のデータを記憶するサーバーであり、音声合成装置200からのリクエストに応じて各種のデータを配信する。ネットワーク300は例えばインターネットやLAN(Local Area Network)等のネットワークであり、無線通信や有線通信によりサーバー100と音声合成装置200とを接続する。
図2は、サーバー100のハードウェア構成の一例を示すブロック図である。サーバー100は、制御部110、記憶部120、通信部130を有し、これら各部がバス140を介して接続されている。制御部110は、CPU(Central Processing Unit)等のプロセッサーや、RAM(Random Access Memory)、及びROM(Read Only Memory)等を有している。制御部110において、CPU等のプロセッサーが、ROMや記憶部120に記憶されているコンピュータプログラムを読み出してRAMにロードして実行することにより、サーバー100の各部が制御される。通信部130は、制御部110の制御に応じてネットワーク300を介して音声合成装置200と接続して各種データの送受信を行う。
記憶部120は、各種のデータを記憶するための記憶部である。記憶部120としては、磁気ディスクを内蔵したハードディスク装置や、CD−ROMに代表される可搬型の記録媒体を駆動する装置など各種の記憶装置が採用される。記憶部120は、図示のように、音声合成ソフトウェアプログラム記憶領域121と、音声素片データベース記憶領域122とを有している。音声合成ソフトウェアプログラム記憶領域121には、音声合成ソフトウェアプログラムや音声合成ソフトウェアをコンピュータ装置にインストールするためのインストーラプログラムが記憶されている。制御部110は、音声合成装置200からのリクエストに応じて音声合成ソフトウェアプログラム記憶領域121に記憶されたプログラムを音声合成装置200に配信する。
音声素片データベース記憶領域122には、単数又は複数の音素(phoneme)で構成される音声素片を表すデータ(以下「音声素片データ」という)の集合である音声素片データベースが記憶されている。音声素片データは音声合成装置200が合成音声を生成する際に用いるデータである。本実施形態において「音素」とは、言語上の意味の区別の最小単位(例えば母音や子音)に相当するものであり、ある言語の実際の調音と音韻体系全体を考慮して設定される、その言語の音韻論上の最小単位である。音声素片は、特定の発声者によって発声された入力音声のうち所望の音素や音素連鎖に相当する区間が切り出されたものである。本実施形態における音声素片データは、音声素片の周波数スペクトルを示すデータである。以下の説明では、「音声素片」の語は、単一の音素(例えばモノフォン)や、音素連鎖(例えばダイフォンやトライフォン)を含むものとして用いる。
具体的には、音声素片データベースには、[a]、[i]といったような単一の音素の音声素片データや、[a−i]、[a−p]といったような音素連鎖の音声素片データが記憶されている。この実施形態では、音素を表す発音記号としてSAMPA(Speech Assessment Methods Phonetic Alphabet)で規定された発音記号を用いる。なお、音素を表す記号はこれに限らず、例えばX−SAMPA(Extended SAM Phonetic Alphabet,拡張SAM音声記号)やIPA(国際音声記号)等の他の規格に沿ったものであってもよい。
図3は、音声素片の一例を示す図である。図3の(a1)は、子音の音素[s]とこれに続く母音の音素[a]とを組み合わせた音素連鎖[s−a]の波形を示す。図3の(a1)に示す波形は、時点Ta1が音素[s]の始点として指定されるとともに時点Ta3が音素[a]の終点として指定され、さらに時点Ta2が音素[s]と音素[a]との境界として指定された場合が想定されている。図3の(a1)に示されるように、音素[a]の波形は、その発声のために口を開いていく発声者の動作に対応するように時点Ta2から徐々に振幅が増大していき、発声者が口を開き切った時点Ta0を越えると振幅が略一定に維持される形状となる。音素[a]の終点Ta3としては、音素[a]の波形が定常的な状態に遷移した後の時点(すなわち図3の(a1)に示される時点Ta0以降の時点)が選定される。
一方、図3の(b1)は、母音の音素[a]を含む音声素片[a−Sil]の波形を示す。[Sil]は無音を表す。この音声素片[a−Sil]に含まれる音素[a]の波形は、発声者が口を開き切った状態にて発声してから徐々に口を閉じていって最後には完全に口が閉じられるという発声の動作に対応した形状となる。すなわち、音素[a]の波形は、初めに振幅が略一定に維持され、発声者が口を閉じる動作を開始する時点(定常点)Tb0から振幅が徐々に減少していく。このような音声素片の始点Tb1は、音素[a]の波形が定常的な状態に維持されている期間内の時点(すなわち定常点Tb0よりも前の時点)として選定される。
以上のようにして時間軸上における範囲が画定された音声素片は所定の時間長(例えば5msないし10ms)のフレームFに区分される。図3の(a1)に示されるように、各フレームFは時間軸上において相互に重なり合うように選定される。これらのフレームFは簡易的には同一の時間長の区間とされるが、例えば音声素片のピッチに応じて各フレームFの時間長を変化させてもよい。こうして区分された各フレームFの波形にFFT(Fast Fourier Transform)処理を含む周波数分析が実施されることによって周波数スペクトルが特定され、これらの周波数スペクトルを示すデータが音声素片データとして記憶部220に記憶される。したがって、図3の(a2)および(b2)に示されるように、各音声素片の音声素片データは、各々が別個のフレームFの周波数スペクトルを示す複数の単位データD(D1、D2、……)を含む。
図4は、音声素片データベース記憶領域122に記憶された音声素片データベース(以下「音声素片データベースDB1」という)の内容の一例を示す図である。図示のように、このデータベースには、音声素片データが音素又は音素連鎖毎に記憶されている。なお、ひとつの音素又はひとつの音素連鎖について、ピッチ毎、ゲイン毎、波長毎に複数の音声素片データが記憶されていてもよい。例えば、ピッチに関して、ひとつの音素(又はひとつの音素連鎖)について高音用の音声素片データ、中音用の音声素片データ、低音用の音声素片データ、の3つの音声素片データが記憶されていてもよい。属性毎に異なる音声素片データがデータベースに記録されている場合は、制御部110は、それらの複数の音声素片データのなかから、合成すべき音の属性に対応する音声素片データを選択するようにすると良い。例えばピッチに関して高音用・中音用、低音用の音声素片データがある場合、制御部110はその音符に最も近い音高の音声素片データを選択するようにすると良い。このようにすることで高品質な合成音を得ることが出来る。
この実施形態では、音声素片データベースDB1は、重母音に対応する音声素片データ群として、非分割管理音声素片データ群G1と、分割管理音声素片データ群G2との2種類の音声素片データ群を有している。重母音とは、連続した複数の母音を含むものであり、すなわち調音の開始時と終了時で音質を異にする母音のことをいう。調音している間に調音器官の位置が変化することによって生じる。始まりの音質と終わりの音質を比べれば確かに違うが、調音器官がなめらかに移動することによって、聴覚的にひとつの母音と認識される。二重母音は、始まりの音質のほうが聞こえ度の高いものを下降二重母音と、終わりの音色のほうが聞こえ度の高い上昇二重母音とに区別される。また上昇二重母音が途中で調音器官の移動方向を変えて下降することによって三重母音となることがある。
非分割管理音声素片データ群G1は、重母音をひとつの音素として扱った音声素片データ群である。非分割管理音声素片データ群は、従来の音声合成装置において用いられている音声素片データベースの構成と同様である。一方、分割管理音声素片データ群G2は、重母音を複数に分割して管理するものである。ここで、両者の相違点について図面を参照しつつ説明する。
図5は非分割管理音声素片データ群G1に含まれる音声素片データの内容を説明するための図であり、図6は、分割管理音声素片データ群G2に含まれる音声素片データの内容を説明するための図である。図5及び図6に示す例では、英語の「fight[faIt]」という単語に対応する合成音声を生成する場合に用いられる音声素片データを概略的に図示している。「fight」という単語の発音は、[f]という子音の音素と、[aI]という重母音の音素と、[t]という子音の音素とで構成される。
図5に示す例では、[faIt]の合成音声を生成する際に音声素片データD112〜D116が用いられる。音声素片データD112は、無音から子音[f]への遷移部分[Sil−f]に対応する音声波形を表すデータである。音声素片データD113は、子音[f]から重母音[aI]への遷移部分[f−aI]に対応する音声素片を表すデータ(第5の音声素片データ)である。音声素片データD114は、重母音[aI]に対応する音声素片を表すデータ(第6の音声素片データ)である。音声素片データD115は、重母音[aI]から子音[t]への遷移部分[aI−t]の音声波形を表すデータ(第7の音声素片データ)である。音声素片データD116は、子音[t]から無音への遷移部分[t−Sil]の音声波形を表すデータである。すなわち、非分割管理音声素片データ群G1では、[aI]の重母音に対応する音声素片データとして、[子音−aI]、[aI]、[aI−子音]のそれぞれの音声素片データが少なくとも登録されている。なお、[子音−aI]の音声素片データは、子音から重母音「aI」への遷移部分の音声波形を表す音声素片データであり、「aI−子音」の音声素片データは、重母音「aI」から子音への遷移部分の音声波形を表す音声素片データである。
一方、分割管理音声素片データ群G2では、重母音[aI]が重母音[aI]の前半部分に現れる母音[a]とこれに続く母音[_I]とに分割されて管理されている。この実施形態では、二重母音の後ろの母音については「_」を付して単母音と区別する。すなわち、「_I」は重母音の後ろの母音であることを示し、単母音「I」と異なるものとして扱われる。以下の説明では、説明の便宜上、二重母音において先に現れる母音を「先行母音」と呼び、後に現れる母音を「後続母音」と呼ぶ。図6に示す例では、[faIt]に対応する合成音声を生成する際に音声素片データD122〜D127が用いられる。音声素片データD122は、無音から子音[f]への遷移部分[Sil−f]に対応する音声波形を表すデータである。音声素片データD122は、図5に示した音声素片データD112と同様である。音声素片データD123は子音[f]から先行母音[a]への遷移部分[f−a]に対応する音声波形を表すデータである。音声素片データD124は先行母音[a]に対応する音声波形を表すデータである。音声素片データD125は先行母音[a]から後続母音[_I]への遷移部分[a−_I]の音声波形を表すデータである。音声素片データD126は後続母音[_I]から子音[t]への遷移分の音声波形を表すデータである。音声素片データD127は子音[t]から無音への遷移部分の音声波形を表すデータである。すなわち、分割管理音声素片データ群G2には、重母音[aI]に対応する音声素片データとして、[子音−a]、[a]、[a−_I]、[_I−子音]のそれぞれの音声素片データが登録されている。
音声素片データベースにおいて、重母音を分割して管理する場合には、重母音をひとまとまりとして管理する場合に比べてデータベースのデータ量が少なくなる。これは以下のような理由による。重母音を分割して管理する場合は、例えば、図5の音声素片データD113に示すような、[他の音素−重母音の音素]の音声素片データや、図5の音声素片データD115に示すような、[重母音の音素−他の音素]の音声素片データが不要である。また、[_I−t]に対応する音声素片データは、[aI]の重母音以外にも、[eI]や[oI]の後に[t]が続く場合の音声合成においても兼用される。このように、重母音を分割して管理する場合は、複数の異なる重母音について音声素片データを兼用することができ、これにより音声素片データベースのデータ量が削減される。
図7は、この実施形態における重母音の分割方式を概略的に示した図である。図7に示す例では、説明の便宜上、二重母音に含まれる2つの母音を[v1]、[v2]とし、二重母音の先行音韻を[x]、二重母音の後続音韻を[y]としている。音素201は、二重母音の先行音韻であり、無音、子音、母音のいずれかである。音素202は音素[v1]から音素[v2]へ発音が変化する二重母音である。音素203は二重母音内の先行母音である。音素204は二重母音内の後続母音である。音素205は、二重母音の後続音韻であり、無音、子音、母音のいずれかである。
音声素片データD211〜214は重母音を分割して管理する場合の音声素片データを表す。音声素片データD211は二重母音の先行音韻[x]から二重母音内の先行母音[v1]への遷移部分の音声波形を表す音声素片データ(第2の音声素片データ)である。音声素片データD212は、二重母音内の先行母音[v1]の部分の音声波形を表す音声素片データ(第1の音声素片データ)である。音声素片データD213は、二重母音内の先行母音[v1]から二重母音内の後続母音[v2]への遷移部分の音声波形を表す音声素片データ(第3の音声素片データ)である。音声素片データD214は、二重母音内の後続母音[v2]から二重母音の後続音韻[y]への遷移部分の音声波形を表す音声素片データ(第4の音声素片データ)である。分割管理音声素片データ群G2には、複数の重母音の各々について図7に示すような規則に沿って分割された音声素片データが含まれている。
次いで、音声合成装置200の構成について図面を参照しつつ説明する。図8は、音声合成装置200のハードウェア構成の一例を示すブロック図である。音声合成装置200は、制御部210、記憶部220、操作部230、表示部240、通信部250、音声処理部260、マイクロホン261、及びスピーカ262を有し、これら各部がバス270を介して接続されている。制御部210は、CPU等のプロセッサーや、RAM、及びROM等を有している。制御部210において、CPU等のプロセッサーが、ROMや記憶部220に記憶されているコンピュータプログラムを読み出しRAMにロードして実行することにより、音声合成装置200の各部を制御する。操作部230は、各種の操作子を備え、ユーザによる操作内容を表す操作信号を制御部210に出力する。表示部240は、例えば液晶パネルを備え、制御部210による制御の下、各種の画像を表示する。通信部250は制御部210の制御に応じてネットワーク300を介してサーバー100と接続して各種データの送受信を行う。
マイクロホン261は、収音した音声を表すアナログの音声信号を音声処理部260に出力する。音声処理部260は、A/D(Analog / Digital)コンバータを有し、マイクロホン261が出力したアナログの音声信号をデジタルの音声データに変換して制御部210に出力し、制御部210はこれを取得する。また、音声処理部260は、D/A(Digital / Analog)コンバータを有し、制御部210から受け取ったデジタルの音声データをアナログの音声信号に変換してスピーカ262に出力する。スピーカ262は、音声処理部260から受け取ったアナログの音声信号に基づく音を放音する。なお、この実施形態では、マイクロホン261とスピーカ262とが音声合成装置200に含まれている場合について説明するが、音声処理部260に入力端子及び出力端子を設け、オーディオケーブルを介してその入力端子に外部マイクロホンを接続する構成としても良く、同様に、オーディオケーブルを介してその出力端子に外部スピーカを接続するとしても良い。また、この実施形態では、マイクロホン261から入力されるオーディオ信号及びスピーカ262へ出力されるオーディオ信号がアナログオーディオ信号である場合について説明するが、デジタルオーディオデータを入出力するようにしても良い。このような場合には、音声処理部260にてA/D変換やD/A変換を行う必要はない。操作部230や表示部240についても同様であり、外部出力端子を設け、外部モニタ等を接続する構成としてもよい。記憶部220は、各種のデータを記憶するための記憶部である。記憶部220としては、磁気ディスクを内蔵したハードディスク装置や、CD−ROMに代表される可搬型の記録媒体を駆動する装置など各種の記憶装置が採用される。
次に、図9に示すブロック図を参照しながら、音声合成装置200の機能的構成の一例について説明する。図9において、インストール制御部10は、制御部210のプロセッサーが、ROMや記憶部220に記憶されているコンピュータプログラムを読み出しRAMにロードして実行することにより実現される。インストール制御部10は、操作部230から出力される情報に従って、サーバー100から音声合成ソフトウェアプログラムPG1をダウンロードして記憶部220の所定の領域に記憶する。
図9において、インストール実行部11と、データ取得部12と、素片取得部131と、音声合成部132と、出力部14は、制御部210のプロセッサーが、記憶部220に記憶された音声合成ソフトウェアプログラムを読み出しRAMにロードして実行することにより実現される。インストール実行部11は、音声合成ソフトウェアのインストール処理を実行する。インストール実行部11は、重母音分類部111と音声素片データベース記憶制御部112とを備える。重母音分類部111は、記憶部220の空き容量から音声素片データベースとして利用可能なデータ容量を特定し、特定したデータ容量に従って、複数の重母音を、分割管理する重母音とそれ以外の重母音とに分類する。この実施形態では、複数の重母音に予め優先順位を付与しておくとともに、サーバー100が各重母音に対応する音声素片データ群(非分割管理音声素片データ群と分割管理音声素片データ群)のデータ量を重母音毎に予め算出しておき、この優先順位と音声素片データ群毎のデータ量を表す情報を、音声合成装置200に送信する。重母音の優先順位は、音声素片データベースの管理者によって設定されたものであってもよく、また、例えば、サーバー100の制御部110が各重母音の利用頻度を統計し、統計結果に従って優先順位を設定するようにしてもよい。より具体的には、例えば、制御部110が利用頻度の高い重母音ほど優先順位が高くなるように設定してもよい。また、ユーザが操作部230を操作して重母音の優先順位を設定・変更できるようにしてもよい。この場合は、制御部110が、ユーザによる操作に応じた信号を出力する操作部230から出力される信号に応じて重母音の優先順位を設定・変更する。
重母音分類部111は、サーバー100から通知される各重母音の優先順位と各音声素片データ群のデータ量とから、分割管理する重母音を特定する。具体的には、重母音分類部111は、記憶部220に記憶される音声素片データベース(以下「音声素片データベースDB2」という)のデータ量が利用可能なデータ容量以下となり、かつ、分割管理する重母音の数が最小となるように、優先順位の低い順に分割管理する重母音を特定(分類)する。なお、重母音分類部111が行う重母音の分類の態様は上述したものに限らない。例えば、複数の重母音を複数のグループにグループ化しておき、各グループ毎に分割管理を行うか否かを重母音分類部111が特定するようにしてもよい。
このとき、記憶部220の空き容量が小さい場合には、全ての重母音を分割管理したとしても記憶容量が足りない場合があり得る。すなわち、全ての重母音を分割管理した場合の音声素片データベースのデータ量が、記憶部220の利用可能なデータ容量よりも大きい場合があり得る。このような場合は、重母音分類部111は、分割管理する重母音の数が最大となるように、優先順位の高い順に分割管理する重母音を特定してもよい。この場合は、優先順位が所定値よりも低い重母音については音声素片データを音声素片データベースDB2に登録せず、かつ、音声素片データベースDB2に登録された重母音に対応する音声素片データ群は全て分割管理された音声素片データ群となる。
音声素片データベース記憶制御部112は、分類結果に従って、分割管理すると特定した重母音については、分割管理音声素片データ群G2に含まれる音声素片データをサーバー100から取得する。一方、分割管理しないと特定した重母音については、音声素片データベース記憶制御部112は、非分割管理音声素片データ群G1に含まれる音声素片データをサーバー100から取得する。また、音声素片データベース記憶制御部112は、重母音以外の音素や音素連鎖の音声素片データもサーバー100から取得し、取得した音声素片データの集合を音声素片データベースDB2として記憶部220に記憶する。
具体的には、例えば、音声素片データベース記憶制御部112は、分割管理する重母音とそれ以外の重母音との区別を示す判別情報をサーバー100に送信する。この判別情報としては、例えば、分割管理する重母音を表す情報であってもよく、また、例えば、優先順位(例えば、「5番目まで」)を示す情報であってもよく、分割管理する重母音が特定可能な情報であればどのようなものであってもよい。サーバー100は、音声合成装置200から判別情報を受信すると、受信した判別情報に従って音声素片データ群を配信する。音声素片データベース記憶制御部112は、サーバー100から音声素片データ群をダウンロードすると、ダウンロードした音声素片データ群を音声素片データベースDB2として記憶部220に記憶する。以上のようにして音声合成ソフトウェアプログラムのインストール処理が行われる。
データ取得部12は、楽曲の演奏に関するデータを取得する。具体的には、データ取得部12は、歌詞データと音符データとを取得する。歌詞データは、楽曲の歌詞の文字列を指定するデータである。一方、音符データは、楽曲のうちメインメロディ(例えばボーカルパート)を構成する各楽音のピッチ(音高)と、その楽音の発音開始時刻とその継続されるべき時間長(以下「音符長」という)とを指定するデータである。なお、発音の開始時刻と発音終了時刻の指定によって音符長が指定されるものであってもよい。歌詞データおよび音符データは、例えばMIDI(Musical Instrument Digital Interface)規格に準拠したデータである。また、データ取得部12は、歌詞データと音符データに加えて、例えばビブラートなどの演奏表現とその演奏表現を付与する箇所を表す演奏表現データを取得してもよい。データ取得部12は、歌詞データや音符データを図示しない記憶装置から読み出すことによって歌詞データや音符データを取得してもよく、また、外部に設置されたMIDI機器から歌詞データや音符データを受信することによって歌詞データや音符データを取得してもよい。
データ取得部12によって取得された歌詞データは素片取得部131に供給され、同じくデータ取得部12によって取得された音符データは音声合成部132に供給される。素片取得部131は、音声素片データベースDB2から、複数の音声素片データのいずれかを歌詞データに基づいて順次に選択し、この選択した音声素片データを読み出して音声合成部132に出力する。より具体的には、素片取得部131は、歌詞データによって指定される文字に対応した音声素片データを記憶部220から読み出す。
このとき、素片取得部131は、指定される文字に対応する発音に重母音が含まれる場合には、その重母音が分割管理されているか否かで異なる処理を行う。素片取得部131は、含まれている重母音が分割管理されているか否かを判定する。この判定は、例えば、音声素片データベースDB2に登録された重母音について、分割管理されているか否かを示すフラグを重母音毎に記憶しておく構成とし、素片取得部131が、このフラグを参照して分割管理されているか否かを判定してもよい。素片取得部131は、分割管理されていない重母音については、重母音をひとまとまりとして扱う場合に用いられる音声素片データを音声素片データベースDB2から取得する。具体的には、例えば、重母音[aI]が分割管理されていない場合であって歌詞データによって「fight」という文字列が指定された場合には、素片取得部131は、音声素片データベースDB2から、音声素片[Sil−f]、[f−aI]、[aI]、[aI−t]、[t#]の各々に対応する音声素片データを読み出す。
一方、分割管理されている重母音については、重母音を分割した場合に用いられる音声素片データを音声素片データベースDB2から取得する。具体的には、例えば、重母音[aI]が分割管理されていると判定された場合であって歌詞データによって「fight」という文字列が指定された場合には、素片取得部131は、音声素片データベースDB2から、音声素片[Sil−f]、[f−a]、[a]、[a−_I]、[_I−t]、[t#]の各々に対応する音声素片データを読み出す。
また、読み出すべき音素の音声素片データが音声素片データベースDB2に登録されていない場合には、素片取得部131は、その音素に近い音素の音声素片データを読み出すようにしてもよい。この場合は、各重母音とその重母音の発音に似ている音素との対応関係を示す情報を音声素片データベースDB2に予め記憶しておく構成とし、素片取得部131が、この情報を参照して代替として読み出す音声素片データを特定してもよい。また、他の例として、例えば、素片取得部131は、その音素については発音を行わないように、音声素片データの読み出しを行わない(又は無音に対応する音声素片データを読み出す)ようにしてもよい。音声素片の中には使用頻度が低い、あるいはほとんど使用されないものがあり、このような構成をとることで、より効率的に管理できる。この頻度はこのシステムの使用用途やユーザ(の利用傾向)によっても変わるので、管理者やユーザが設定できるようにしても良い。
音声合成部132は、複数の音声素片を相互に連結する。音声合成部132は、素片取得部131によって順次に供給される各音声素片データ(単位データDの集合)を連結することによって音声を合成する。音声合成部132は、データ取得部12によって取得された音符データの示す音符長に応じて音声素片データの一部又は全部を用いて補間処理を行って音声を合成してもよい。また、データ取得部12によって演奏表現データを取得した場合には、音声合成部132は、演奏表現データの示す演奏表現が付与されるように音声素片データを加工して音声を合成してもよい。
出力部14は、音声合成部132から出力された音声合成データを構成するフレームFごとの単位データDに逆FFT処理を施して時間領域の信号を生成する。さらに、出力部14は、こうして生成されたフレームFごとの信号に時間窓関数を乗算し、これらを時間軸上において相互に重なり合うように接続して出力音声信号を生成する。出力部14は、生成した出力音声信号を音声処理部260に出力する。音声処理部260は、供給される出力音声信号をD/A変換し、変換したアナログオーディオ信号をスピーカ262に出力する。スピーカ262は、供給されるアナログオーディオ信号に応じて放音する。
2.動作
次に、本実施形態に係るシステム1の動作を説明する。
2−1.インストール動作
まず、音声合成装置200が行う音声合成ソフトウェアのインストール動作について説明する。インストール制御部10は、利用者の操作内容に応じた情報を出力する操作部230から出力される情報に応じて、サーバー100に対して音声合成ソフトウェアプログラムのダウンロードのリクエストを送信する。
サーバー100の制御部110は、音声合成装置200からリクエストを受信すると、受信したリクエストに従って記憶部120に記憶された音声合成ソフトウェアプログラムを配信する。このとき、制御部110は、重母音の優先順位と各重母音を分割管理した場合としない場合のデータ量を示す情報をあわせて送信する。以下、説明の便宜上、重母音の優先順位と各重母音を分割管理した場合としない場合のデータ量を示す情報を「重母音に関する情報」と称して説明する。
インストール制御部10は、サーバー100から配信される音声合成ソフトウェアを記憶部120の処理の記憶領域に格納し、インストール実行部11によるインストール処理を開始させる。インストール実行部11は、サーバー100から受信された重母音に関する情報に従って分割管理する重母音を選定し、選定結果示す選定情報をサーバー100に送信する。サーバー100の制御部110は、音声合成装置200から通知された選定情報に従って、重母音のそれぞれについて、分割管理音声素片データ群又は非分割管理音声素片データ群のいずれかから各重母音に対応する音声素片データ群を読み出し、音声合成装置200に配信する。
インストール実行部11は、サーバー100から配信されてくる音声素片データ群を受信し、受信した音声素片データ群を音声素片データベースDB2として記憶部220に記憶する。以上の処理により、記憶部220には、優先順位の低い重母音について分割管理されている一方、優先順位の高い重母音については分割管理されていない音声素片データ(又は、優先順位の高い重母音について分割管理されている音声素片データ)が記憶されることとなる。
2−2.音声合成動作
次いで、音声合成装置200が行う音声合成動作について説明する。素片取得部131は、データ取得部12から供給される歌詞データに対応した音声素片データを音声素片データベースDB2から順次に読み出して音声合成部132に出力する。
次に、音声合成部132は、以下の手順によって複数の音声素片を相互に連結して合成音声データを生成する。すなわち、音声合成部132は、まず、データ取得部12から供給された音声素片データを構成する各単位データDに所定の処理を施すことによって合成音声データを生成する。ここで実行される処理は、各単位データDが示す音声のピッチを、音符データによって指定されるピッチに調整するための処理を含む。このようにピッチを調整するための方法としては公知である各種の方法が採用される。例えば、各単位データDが示す周波数スペクトルを、音符データが示すピッチに応じた分だけ周波数軸上において移動させることによってピッチを調整することができる。また、音声合成部132が、合成音声データによって示される音声に対して各種の効果を付与するための処理を実行する構成としてもよい。例えば、音符長が長い場合には、音声合成部132が、音声合成データが示す音声に対して微小な揺らぎやビブラートを付加してもよい。また、音声合成部132が、音声合成データに対して音量の変化の効果を与えてもよい。以上の手順によって生成された合成音声データは出力部14に出力される。出力部14は、この合成音声データを時間領域の信号である出力音声信号に変換したうえで出力する。そして、この出力音声信号に応じた合成音声がスピーカ262から出力される。
以上に説明したように、本実施形態においては、重母音を分割管理することによって音声素片データベースDB2のデータ量が削減される。このとき、重母音を分割して管理した場合は、重母音をひとまとまりとして扱う場合よりも音声素片データベースDB2のデータ量を少なくすることができる一方、合成される音声の音質が低くなる場合があることが考えられる。これに対し本実施形態では、記憶部220の空き容量に応じて分割管理を行う重母音を選定するから、これにより、合成される音声の音質の低下を最小限に防ぎつつ、音声素片データベースDB2のデータ量を抑えることができる。
また、本実施形態に係る音声素片データベースは、重母音に含まれる母音のうち、2番目以降の母音については、単母音(例えば、[I])に対応する音声素片データと、重母音に含まれる後続母音(例えば、[_I])に対応する音声素片データとがそれぞれ個別に登録されている。すなわち、単純に重母音を短母音に分割するのではなく、重母音に含まれる場合とそれ以外の場合とで分けて管理することにより、合成される音声の音質の低下を軽減することができる。
3.変形例
以上の実施形態は次のように変形可能である。尚、以下の変形例は適宜組み合わせて実施しても良い。
3−1.変形例(1)
上述の実施形態では、インストール実行部11は、インストール処理を行う際に、記憶部220の空き容量に応じて分割管理する重母音を選定する構成としたが、必ずしも重母音を分類する必要はなく、分類しない構成としてもよい。この場合、制御部210は、全ての重母音について、分割管理された音声素片データを用いる構成としてもよい。重母音について分割管理された音声素片データを用いることで、上述の実施形態と同様に、音声素片データベースのデータ量を小さくすることができる。
また、上述の実施形態では、インストール実行部11は、記憶部220の空き容量に応じて重母音の分類処理を行ったが、重母音の分類処理の態様は上述したものに限らない。例えば、インストール実行部11は、音声合成装置200の装置の機種を判別し、判別結果に応じて、機種毎に予め設定された分類態様で重母音の分類を行うようにしてもよい。要は、インストール実行部11は、複数の重母音を、予め定められた分類基準に従って、データ量の小さい音声素片データ(すなわち分割管理音声素片データ群に含まれる音声素片データ)を用いる第1の重母音と、データ量の大きい音声素片データ(すなわち非分割管理音声素片データ群に含まれる音声素片データ)を用いる第2の重母音とに分類するものであればどのようなものであってもよい。
上述の実施形態では、音声合成装置200の制御部210がサーバー100から音声合成ソフトウェアプログラムをダウンロードしてインストールする構成としたが、インストールの態様はこれに限らない。例えば、制御部210が、CD−ROM等の記録媒体に記録された音声合成ソフトウェアプログラムを読み出してインストール処理を行う構成であってもよい。
3−2.変形例(2)
音声素片データの態様は上記実施形態に示したものに限られない。例えば、各音声素片のフレームFごとのスペクトル包絡(スペクトルエンベロープ)を示すデータを音声素片データとしてもよいし、各音声素片の時間軸上における波形を示すデータを音声素片データとしてもよい。また、音声素片の波形をSMS(Spectral Modeling Synthesis)技術によって調和成分(Deterministic Component)と非調和成分(Stochastic Component)とに区分し、この各成分を示すデータを音声素片データとしてもよい。この場合には、調和成分と非調和成分の双方について音声合成部132による処理が実行されるとともに、この処理後の調和成分と非調和成分とが音声合成部132の後段の加算部によって加算されることになる。また、各音声素片をフレームFに区分したうえで各フレームFのスペクトル包絡に関する複数の特徴量(例えばスペクトル包絡のピークの周波数やゲイン、またはスペクトル包絡の全体の傾きなど)を抽出しておき、これらの特徴量を表す複数のパラメータのセットを音声素片データとしてもよい。このように、本発明において音声素片を保持する形態の如何は不問である。
3−3.変形例(3)
上記実施形態においては、歌唱音声を合成するための装置に本発明を適用した場合を例示したが、これ以外の装置にも本発明を適用できることはもちろんである。例えば、各種の文書を示す文書データ(例えばテキストファイル)に基づいて当該文書の文字列を読み上げる装置にも本発明は適用される。すなわち、テキストファイルに含まれる文字コードに基づいて素片取得部131が音声素片データを音声素片データベースDB2から読み出し、この音声素片データに基づいて音声が合成される構成としてもよい。
また、音声合成処理の詳細は、実施形態で説明したものに限定されない。音符と発音記号(文字)とが与えられたときに、その音符および発音記号に応じた音声を合成するものであれば、どのような処理が用いられてもよい。また、音符に代えて、ピッチカーブのような音の並びを表すデータが与えられる構成とし、そのピッチカーブに応じた音声を合成する処理であってもよい。
3−4.変形例(4)
上述の実施形態では、重母音として二重母音を例に挙げて説明したが、重母音には、二重母音に限らず、例えば、中国語等で用いられる三重母音も含まれる。三重母音についても、上述の実施形態と同様の手法を用いて分割して管理することで、音声素片データベースDB2のデータ量を小さくすることができる。なお、三重母音は、上述の実施例のように三重母音に含まれる3つの母音を用いたものであっても良いし、また、1つの母音と1つの2重母音を用いたものであってもよい。
また、上述の実施形態では、図7に示すような分割方式によって二重母音を分割したが、分割の態様は上述したものに限らない。例えば、図11に示すような態様であってもよい。図11において、音素301は、二重母音の先行音韻であり、無音、子音、母音のいずれかである。音素302は音素[v1]から音素[v2]へ発音が変化する二重母音である。音素303は二重母音内の先行母音である。音素304は二重母音内の後続母音である。音素305は、二重母音の後続音韻であり、無音、子音、母音のいずれかである。
音声素片データD311〜314は重母音を分割して管理する場合の音声素片データを表す。音声素片データD311は二重母音の先行音韻[x]から二重母音内の先行母音[v1]への遷移部分[x−v1]の音声波形を表す音声素片データ(第2の音声素片データ)である。音声素片データD312は、二重母音内の先行母音[v1]から後続母音[_v2]への遷移部分[v1−_v2]の音声波形を表す音声素片データ(第3の音声素片データ)である。音声素片データD313は、二重母音内の後続母音[_v2]の部分の音声波形を表す音声素片データ(第1の音声素片データ)である。音声素片データD314は、二重母音内の後続母音[_v2]から二重母音の後続音韻[y]への遷移部分[_v2−y]の音声波形を表す音声素片データ(第4の音声素片データ)である。
また、他の例として、例えば、音素[v1]から音素[v2]へ発音が変化する二重母音に対応する音声素片データとして、[x−v1]の音声波形を表す音声素片データ(第2の音声素片データ)、[v1]の音声波形を表す音声素片データ(第1の音声素片データ)、[v1−_v2]の音声波形を表す音声素片データ(第3の音声素片データ)、[_v2]の音声波形を表す音声素片データ(第1の音声素片データ)、及び[_v2−y]の音声波形を表す音声素片データ(第4の音声素片データ)を用いる構成であってもよい。このように、本発明に係る第1の音声素片データは、上述した実施形態及び本変形例で例示したような、連続した複数の母音を含む重母音(二重母音、三重母音、等)において、この重母音に含まれる連続した複数の母音のうちの少なくとも1つの母音の音声波形を表す音声素片データである。また、本発明に係る第2の音声素片データは、他の音素から重母音に含まれる連続した複数の母音の最初の母音への遷移部分の音声波形を表す音声素片データである。また、本発明に係る第3の音声素片データは、連続した複数の母音の母音間の遷移部分の音声波形を表す音声素片データである。また、本発明に係る第4の音声素片データは、重母音に含まれる連続した複数の母音の最後の母音から他の音素への遷移部分の音声波形を表す音声素片データである。
また、重母音の分割の態様の他の例として、音素[v1]から音素[v2]へ発音が変化する二重母音に対応する音声素片データとして、[x−v1]の音声波形を表す音声素片データ(第2の音声素片データ)、[v1−_v2]の音声波形を表す音声素片データ(第3の音声素片データ)、及び[_v2−y]の音声波形を表す音声素片データ(第4の音声素片データ)を用いる構成であってもよい。
また、重母音が上述の実施形態のように分割管理されるのか、更に上記のように分割管理がどのような方法でされるのかを、重母音音素毎に変えてもよく、そのための情報フラグを保持する構成としてもよい。あるいはユーザが選択・変更可能にしてもよい。「分割管理がどのような方法でされるのか」を変える(設定や変更可能にする)利点としては、例えば、重母音を伸ばして発音する場合に重母音の何番目の母音をそれぞれどの位伸ばすかをユーザが設定しやすいという点がある。特に歌唱合成の場合はメロディーにうまく合わせるために伸ばす部分を選択したい場合がある。例えば重母音[e−_I]について、eの部分を伸ばす場合は図7の構成が好ましく、一方、_Iの部分を伸ばす場合は図11の構成が好ましいといえる。
3−5.変形例(5)
上述の実施形態では、重母音の分類処理を音声合成装置200の制御部210が行ったが、サーバー100の制御部110が重母音の分類処理を行ってもよい。この場合は、例えば、音声合成装置200の制御部210が、記憶部220における利用可能データ容量を特定し、特定したデータ容量を示す情報をサーバー100に送信する構成としてもよい。この場合、サーバー100の制御部110は、音声合成装置200から受信される情報に従って、上述の実施形態と同様の手法により重母音の分類処理を行う。この態様においても、上述の実施形態と同様に、合成される音声の音質の低下を最小限に抑えつつ、音声素片データベースDB2のデータ量を小さくすることができる。
3−6.変形例(6)
音声合成装置200のハードウェア構成は、図8で説明したものに限定されない。図9に示される機能を実装できるものであれば、音声合成装置200はどのようなハードウェア構成であってもよい。例えば、音声合成装置200は、図9に示される機能要素の各々に対応する専用のハードウェア(回路)を有していてもよい。また、例えば、図9に示す素片取得部131や音声合成部132が、DSPなどの音声処理に専用されるハードウェアによって実現されてもよい。
また、上述の実施形態において、複数の装置が、上記実施形態の音声合成装置200に係る機能を分担するようにしてもよい。例えば、図9のデータ取得部12、素片取得部131の機能を実現する第1の装置と、音声合成部132、出力部14の機能を実現する第2の装置とが別体となって構成されていてもよい。また、通信ネットワークで接続された2以上の装置が、上記実施形態の音声合成装置200に係る機能を分担するようにし、それら複数の装置を備えるシステムが同実施形態の音声合成装置200を実現するようにしてもよい。また、上述の実施形態では、音声合成装置200の出力部14は、出力音声信号を音声処理部260に出力したスピーカ262から音として出力させたが、これに限らず、出力部14が、音声合成装置200と通信ネットワークで接続された他の装置に出力音声信号を送信することによって出力する構成であってもよい。この場合、音声合成装置200と通信ネットワークを介して接続された他の装置が出力音声信号を受信し、受信した出力音声信号をスピーカ等に出力してもよい。
また、上述の実施形態では、音声合成装置200が音声素片データベースDB2を記憶する構成について説明したが、これに限らず、例えば、図10に示すように、音声素片データベース400が音声合成装置200と別体として構成されていてもよい。図10に示す例では、音声合成装置200、サーバー100、音声素片データベース400が、ネットワーク500により接続されている。
また、上述の実施形態では、図8に示す各部がバス270によって接続されている構成について説明したが、バス270に代えて通信ネットワークで各部が接続される構成であってもよい。また、上述の実施形態では、サーバー100と音声合成装置200とがネットワーク300によって接続されている構成について説明したが、これに限らず、サーバー100と音声合成装置200とが一体となった装置として構成されていてもよい。
3−7.変形例(7)
本発明は、音声合成装置以外にも、これらを実現するための方法や、コンピュータに音声合成機能を実現させるためのプログラムとしても把握される。かかるプログラムは、これを記憶させた光ディスク等の記録媒体の形態で提供されたり、インターネット等を介して、コンピュータにダウンロードさせ、これをインストールして利用させるなどの形態でも提供されたりする。