以下、本発明による歌データ入力プログラムの実施形態について図面を参照しながら説明する。図1は、本発明の実施形態に係る歌データ入力プログラムを含むプログラムを実行するコンピュータ装置(歌唱合成装置)をブロック図により示している。
コンピュータ装置は、互いにバス10で接続されたCPU11、フラッシュ・メモリ12、RAM13、補助記憶装置14、音源回路15、入出力インターフェース16及び表示制御回路17を備えている。
CPU11は、所定のプログラムを実行することにより、コンピュータ装置に種々の動作を実行させるようになっている。
フラッシュ・メモリ12は、電源が投入されている間だけでなく遮断されている間も、記憶されたプログラム及びデータを保持するようになっていて、コンピュータ装置の各構成部が有する基本的な機能(例えば、キーボードの操作によるデータの入力やディスプレイによるデータの出力等)を実現するためのシステムプログラム等を予め記憶している。
RAM13は、プログラム及び同プログラムの実行時に使用されるデータを一時的に記憶するようになっている。
補助記憶装置14は、図示しないハード・ディスク・ドライブ(HDD)及び記憶媒体ドライブを備える。
HDDは、ハード・ディスク(HD)を内蔵していて、同HDにプログラム及びデータを記憶させるとともに、同記憶させたプログラム及びデータを読み取ることができるようになっている。
記憶媒体ドライブは、着脱可能な記憶媒体を装着していて、同装着された記憶媒体にプログラム及びデータを記憶させるとともに、同記憶させたプログラム及びデータを読み取ることができるようになっている。着脱可能な記憶媒体は、例えば、デジタル・バーサタイル・ディスク(DVD)、コンパクト・ディスク(CD)又はフレキシブル・ディスク(FD)等である。
このように構成された補助記憶装置14は、音節毎分割データベースOBDB、音声素片データベースOSDB及び図2に示すプログラムを含む種々のプログラム等を記憶している。ここで、音節毎分割データベースOBDB及び音声素片データベースOSDBについて説明を加える。
音節毎分割データベースOBDBは、音節毎分割文字列データと、音節毎分割発音記号データと、からなる音節毎分割データの集合体である。
音節毎分割文字列データは、文字列(本例では、英語の単語)の音節の区切りを表す区切り記号(本例では、「−」)を含む文字列である音節毎分割文字列を表すデータである。例えば、文字列が3音節からなる「september」であるとき、音節毎分割文字列データは「sep−tem−ber」を表すデータ(「sep−tem−ber」に対応したデータ)であり、文字列が2音節からなる「baby」であるとき、音節毎分割文字列データは「ba−by」を表すデータであり、文字列が1音節(単音節)からなる「love」であるとき、音節毎分割文字列データは「love」を表すデータである。
音節毎分割発音記号データは、文字列の発音を表す発音記号(本例では、SAMPA(Speech Assessment Methods Phonetic Alphabet))と前述した区切り記号とを含む音節毎分割発音記号を表すデータである。
例えば、文字列が3音節からなる「september」であるとき、その発音記号は「septemb@r」であり、従って、音節毎分割発音記号データは「sep−tem−b@r」を表すデータとなる。文字列が2音節からなる「baby」であるとき、その発音記号は「bh eIb i:」であり、従って、音節毎分割発音記号データは「bh eI−b i:」を表すデータとなる。更に、文字列が1音節からなる「love」であるとき、その発音記号は「l0 V」であり、従って、音節毎分割発音記号データは「l0 V」を表すデータとなる。
この音節毎分割データベースOBDBは、文字列(即ち、音節毎分割文字列データが表す音節毎分割文字列(例えば、「sep−tem−ber」)から区切り記号を除去することにより取得される文字列(「september」))を表す文字列データにより検索可能に構築されている。以上のことから、補助記憶装置14は、文字列と、同文字列の音節の区切りを表す音節毎分割位置と、の文字列音節毎分割位置関係を記憶した記憶装置を構成していると言うことができる。
音声素片データベースOSDBは、発音された音声の音素又は音素の連なりである音素連鎖(音声素片)に対応する部分の音声を表す音声素片データの集合体である。
本例では、音声素片データは、歌声の各音声素片に対応する部分をそれぞれ表すデータであって、所定の微小な時間における歌声の周波数成分を表すデータを時系列的に複数含んだデータである。この音声素片データは、ある特定の人間の歌声から同歌声の各音声素片に対応する部分をそれぞれ抽出し、同抽出された歌声の各部分をそれぞれ所定の微小な時間毎の音に分割し、同分割された音のそれぞれをフーリエ変換することにより生成される。この音声素片データの基となった歌声は、ある特定の音の高さ、音の長さ及び音の大きさ(音の強さ又は音量)等の発音状態において発音されている。即ち、音声素片データは、音の高さ、音の長さ及び音の大きさ等の発音状態に起因するデータを含むデータである。
音声素片データベースOSDBは、音声素片の発音を表す音声素片発音記号(例えば、「s」、「se」又は「b@r」等)を表す音声素片発音記号データにより検索可能に構築されている。
音源回路15は、音を表す音データに基づいて音信号を生成するようになっている。音源回路15には、サウンドシステム15aが接続されている。サウンドシステム15aは、図示しない増幅器及びスピーカを備えていて、音源回路15にて生成された音信号に対応する音を出力するようになっている。
入出力インターフェース16は、信号を入力又は出力することが可能なインターフェースであり、例えば、ユニバーサル・シリアル・バス・インターフェース(USBインターフェース)である。入出力インターフェース16には、キーボード16a及びマウス16bが接続されている。キーボード16aは、改行を表す記号に対応するボタン式スイッチ(エンターキー)及び所定の空白を表す記号に対応するボタン式スイッチ(タブキー)を含む複数の文字又は記号にそれぞれ対応するボタン式スイッチ(キー)を備えている。キーボード16aは、ユーザの操作によりこれらのボタン式スイッチが押し込まれると、それぞれのボタン式スイッチに対応する信号を出力するようになっている。
マウス16bは、2つのボタン式スイッチ及び位置センサを備えている。マウス16bは、ユーザの操作によりこれらのボタン式スイッチが押し込まれると、それぞれのボタン式スイッチに対応する信号を出力するようになっている。マウス16bは、ユーザの操作により同マウス16bが置かれている平面上にて移動させられると、位置センサにより移動した方向及び距離を検出し、同検出された方向及び距離を表す信号を出力するようになっている。
入出力インターフェース16は、キーボード16a及びマウス16bから各種の信号を入力すると、同入力された信号をCPU11に供給するようになっている。CPU11は、供給された信号に基づいて、文字、符号及び図形等からなる画像を表す画像データを生成するようになっている。
このような構成により、例えば、ユーザがキーボード16aのボタン式スイッチを押し込む操作を行うと、同操作が行われる直前の時点にて生成されていた画像データが表す画像に、同押し込まれたボタン式スイッチに対応する文字又は記号が追加された画像を表す画像データがCPU11により生成される。また、ユーザがマウス16bを移動させる操作を行うと、同操作が行われる直前の時点にて生成されていた画像データが表す画像における位置を表し同マウス16bの実際の位置に対応する図形(マウスカーソル)が、同マウス16bが移動した方向及び距離に基づいて移動した画像を表す画像データがCPU11により生成される。
表示制御回路17は、CPU11により生成された画像データに基づいて画像信号を生成するようになっている。表示制御回路17には、液晶ディスプレイ、プラズマ・ディスプレイ又はブラウン管ディスプレイ等の表示器17aが接続されている。表示器17aは、表示制御回路17にて生成された画像信号に対応する画像を表示するようになっている。
次に、上記のように構成されたコンピュータ装置が実行する歌唱合成プログラムの手順について説明する。この歌唱合成プログラムの手順は、本発明による歌データ入力プログラムの手順を含んでいて、図2の機能ブロック図に示したように、歌データ入力部20及び歌声合成部30からなる手順である。
歌データ入力部20は、旋律データと、歌詞データと、ビブラート・データと、からなる歌データをユーザの操作に従って生成する動作をコンピュータ装置に実行させる手順である。
旋律データは、音の高さ及び音の長さを表す音符が複数連なることにより表現される旋律を同複数の音符のそれぞれを表す音符データを複数個用いて表すデータである。
歌詞データは、上記複数の音符データのそれぞれに関連付けられた1つの音節からなる文字列(一音節文字列)をそれぞれ表す一音節文字列データ及び同一音節文字列にそれぞれ対応する発音記号(一音節発音記号)を表す一音節発音記号データからなるデータである。
ビブラート・データは、音の高さ又は音の大きさを周期的に変化させる際の音の高さ又は音の大きさの変化のパターンを表すビブラート・パターンと、ビブラートを開始する時期(ビブラート開始時期)と、ビブラートを終了する時期(ビブラート終了時期)と、からなるビブラート情報を表すデータである。
歌データ入力部20は、旋律データ入力部21、歌詞データ入力部22、ビブラート設定部23及び関連付け変更禁止手順24からなる。歌詞データ入力部22は、文字列音符関係付け手順22a、音節毎分割文字列取得手順22b及び文字列割付け手順22cからなる。
以下、ユーザが、所望の旋律と、文字列「september」を含む所望の歌詞と、からなる歌の歌声を模擬した音を聴きたいと希望する例を用いて説明を続ける。
先ず、ユーザは、所望の旋律データを入力するために、キーボード16a又はマウス16bを操作する。これにより、上記コンピュータ装置のCPU11は、上記歌唱合成プログラムの実行を開始し、図示しない画像制御プログラムに基づいて図3に模式的に示した画像を表示器17aに表示させる。
この画像は、同画像の左部に模式的に示されたピアノの鍵盤と、同鍵盤の右側に配置され同鍵盤に対応する左右方向の点線により区画された音階領域と、同画像の上部に示された拍の区切りを表す目盛りである拍目盛りと、同拍目盛りのうちの長い目盛りであって小節の区切りを表す目盛りである小節目盛りと、同拍目盛り及び同小節目盛りの下側に配置され同拍及び小節を表す上下方向の実線により区画された拍領域と、により構成されている。この画像は、ユーザが旋律データを構成する複数の音符データと、歌詞データを構成する複数の文字列データと、を含む歌データを入力するための入力インターフェースを構成している。
次いで、ユーザは、この入力インターフェースを使用して、旋律データを構成する複数の音符データを上記コンピュータ装置に入力する。この入力手順について、以下、ユーザが複数の音符データの1つとして、音の高さがミ(e2)であり、音の発音開始時期が第1小節の2拍目の最初であり、音の発音終了時期が第1小節の3拍目の最後である音符を表す音符データを入力するときを一例として、より具体的に説明する。
このとき、ユーザは、マウス16bを移動させることにより、同マウス16bの実際の位置に対応し表示器17aに表示されている画像における位置を表す図形(マウスカーソル)を図3の符号Aが付された点に移動させる。そして、ユーザは、マウス16bのボタン式スイッチを押し込んだ後、同ボタン式スイッチが押し込まれた状態でマウスカーソルを図3の符号Bが付された点に移動させる。その後、ユーザは、同押し込まれたボタン式スイッチを離すことにより同ボタン式スイッチが押し込まれていない状態にする。
これにより、CPU11は、旋律データ入力部21の手順に従って、音の高さがミ(e2)であり、音の発音開始時期が第1小節の2拍目の最初であり、音の発音終了時期が第1小節の3拍目の最後である音を表す音符データをRAM13に記憶させる。更に、CPU11は、旋律データ入力部21の手順に従って、図4に示したように、同音符データが表す音の高さ、音の発音開始時期及び音の発音終了時期を示す音符を表す図形である音符図形N1を含む画像を表示器17aに表示させる。
このようにして、ユーザは、1つの音符データをコンピュータ装置に入力する。
ユーザは、このマウス16bの操作と同様の操作を繰り返し行うことにより、所望の旋律データを構成する他の複数の音符データをコンピュータ装置に入力する。これにより、所望の旋律データを構成する複数の音符データがRAM13に記憶されるとともに、図5に示したように、同複数の音符データの一部に対応する音符図形N1〜N4が表示器17aに表示される。
このように、旋律データ入力部21は、ユーザにより入力された複数の音符データを含む旋律データをRAM13に記憶させるとともに、同記憶された旋律データに基づいた画像を表示器17aに表示させる手順である。
次に、ユーザは、所望の歌詞データを構成する文字列データをコンピュータ装置に入力する。この例においては、ユーザは、音符図形N1〜N3が表す音符がそれぞれ表す音に合わせて文字列「september」を発音させる歌声を合成させるための操作を行う。即ち、ユーザは、マウス16bを移動させることによりマウスカーソルを音符図形N1上の位置に移動させ、マウス16bのボタン式スイッチを所定の短い時間(本例では、500ms)内に2回押し込む。
これにより、CPU11は、文字列音符関係付け手順22aに従って、音符図形N1の上部に配置された文字列データを入力するための入力カーソルを含む画像を表示器17aに表示させる。この状態において、ユーザは、キーボード16aにより文字列「september」を表す文字列データを入力する。これにより、CPU11は、文字列音符関係付け手順22aに従って、音符図形N1の上部に配置された文字列「september」を含む画像を表示器17aに表示させる(図6を参照。)。
そして、ユーザは、表示器17aに表示された画像により入力された文字列データが表す文字列が所望の文字列「september」であることを確認すると、キーボード16aのエンターキーを押し込む。これにより、CPU11は、文字列音符関係付け手順22aに従って、ユーザにより選択された所定の音符データとしての選択音符データである音符図形N1に対応する音符データと、同ユーザにより入力された文字列(入力文字列)「september」を表す文字列データと、を互いに関係付けてRAM13に記憶させる。
このように、文字列音符関係付け手順22aは、RAM13により記憶された旋律データが含む複数の音符データの中からユーザにより選択された所定の音符データとしての選択音符データ(上記例における音符図形N1に対応する音符データ)に対応付けて入力された文字列データと、同選択音符データと、を互いに関係付けてRAM13に記憶させる手順である。即ち、文字列音符関係付け手順22aは、文字列音符関係付け動作をコンピュータ装置に実行させる手順を構成している。
その後、CPU11は、音節毎分割文字列取得手順22bに従って、補助記憶装置14により予め記憶された音節毎分割データベースOBDBから、文字列「september」を表す文字列データに対応する音節毎分割データを検索し、検索して取得された音節毎分割データ(「sep−tem−ber」を表す音節毎分割文字列データ及び「sep−tem−b@r」を表す音節毎分割発音記号データ)をRAM13に記憶させる。
このように、音節毎分割文字列取得手順22bは、補助記憶装置14により予め記憶された音節毎分割データベースOBDBから、上記文字列音符関係付け手順22aによりRAM13に記憶された文字列データに対応する音節毎分割データを検索し、検索して取得された音節毎分割データをRAM13に記憶させる手順である。即ち、音節毎分割文字列取得手順22bは、音節毎分割位置取得動作をコンピュータ装置に実行させる手順を構成している。
次に、CPU11は、文字列割付け手順22cに従って、4つの関連付け中止条件のいずれかが満たされるか否かを判定する。
この関連付け中止条件が満たされる場合とは、第1に、入力された文字列データに対応する音節毎分割データが音節毎分割データベースOBDBから取得されていない場合である。第2に、選択音符データが表す音符と、同音符の後に連続する後続音符と、から構成される所定以降音符としての選択以降音符の数が入力文字列の音節の数である入力文字列音節数より少ない場合である。
第3に、割付け予定音符のうちの連続する2つの音符間に所定の期間より長い発音停止期間が存在する場合である。割付け予定音符は、入力文字列音節数の選択音符データが表す音符及び同音符の後に連続する後続音符から構成される。
第4に、割付け予定音符が関連付け変更禁止音符を含む場合である。関連付け変更禁止音符は、後述する関連付け変更禁止手順24により、一音節文字列データ及び一音節発音記号データと音符データとの関連付けの変更を禁止する関連付け変更禁止フラグと関連付けてRAM13に記憶されている音符データが表す音符である。
そこで、CPU11は、先ず、ユーザにより入力された文字列「september」を表す文字列データに対応する音節毎分割データが音節毎分割データベースOBDBから取得されていないか否かを判定する第1判定ステップの処理を行う。
この例において、音節毎分割データベースOBDBは、文字列「september」を表す文字列データに対応する音節毎分割データを含んでいるので、上記音節毎分割文字列取得手順22bにより同音節毎分割データが取得されている。
従って、CPU11は、上記第1判定ステップにて「No」と判定し、続いて、選択以降音符の数が、入力文字列音節数より少ないか否かを判定する第2判定ステップの処理を行う。なお、CPU11によるこの動作は、所定以降音符数判定動作を構成している。
この例において、文字列「september」の音節の数は、3つである。一方、選択以降音符は、音符図形N1〜N4がそれぞれ表す4つの音符を含んでいる。
従って、CPU11は、上記第2判定ステップにて「No」と判定し、続いて、割付け予定音符のうちの連続する2つの音符間に所定の期間(本例では、2拍)より長い発音停止期間が存在するか否かを判定する第3判定ステップの処理を行う。なお、CPU11によるこの動作は、発音停止期間判定動作を構成している。
この例において、文字列「september」の音節の数は、3つである。従って、割付け予定音符は、音符図形N1〜N3にそれぞれ対応する音符である。更に、これらの音符は、発音停止期間を含んでいない。
従って、CPU11は、上記第3判定ステップにて「No」と判定し、続いて、割付け予定音符が、関連付け変更禁止音符を含むか否かを判定する第4判定ステップの処理を行う。なお、CPU11によるこの動作は、関連付け変更禁止判定動作を構成している。
この例において、割付け予定音符を表す音符データとしての音符図形N1〜N3にそれぞれ対応する音符データは、いずれも関連付け変更禁止フラグと関連付けてRAM13に記憶されていない。従って、CPU11は、上記第4判定ステップにて「No」と判定する。
以上のように、所定の関連付け中止条件のいずれもが満たされない場合、CPU11は、文字列割付け手順22cに従って、RAM13により記憶された音節毎分割データに基づいて、一音節文字列「sep−」、「tem−」及び「ber」をそれぞれ表す一音節文字列データと、同一音節文字列にそれぞれ対応する一音節発音記号「sep−」、「tem−」及び「b@r」をそれぞれ表す一音節発音記号データと、を生成する。
このように、文字列割付け手順22cは、RAM13により記憶された音節毎分割文字列データが表す音節毎分割文字列を区切り記号に従って分割することにより一音節文字列データを生成する手順を含んでいる。従って、生成された一音節文字列データの数は、ユーザにより入力された文字列データが表す文字列の音節の数である入力文字列音節数と等しい。更に、文字列割付け手順22cは、音節毎分割発音記号データが表す音節毎分割発音記号を区切り記号に従って分割することにより一音節発音記号データを生成する手順を含んでいる。
次に、CPU11は、文字列割付け手順22cに従って、音符図形N1に対応する音符データと、一音節文字列「sep−」を表す一音節文字列データ及び一音節発音記号「sep−」を表す一音節発音記号データと、を関連付けてRAM13に記憶させ、音符図形N2に対応する音符データと、一音節文字列「tem−」を表す一音節文字列データ及び一音節発音記号「tem−」を表す一音節発音記号データと、を関連付けてRAM13に記憶させ、音符図形N3に対応する音符データと、一音節文字列「ber」を表す一音節文字列データ及び一音節発音記号「b@r」を表す一音節発音記号データと、を関連付けてRAM13に記憶させる。
これにより、ユーザが文字列「september」を表す文字列データを、同ユーザが選択した1つの音符データ(音符図形N1に対応する音符データ)に対応付けて入力するだけで、同入力された文字列データが表す文字列「september」を音節毎に分割することにより生成される一音節文字列「sep−」、「tem−」及び「ber」をそれぞれ表す一音節文字列データが、音符図形N1〜N3にそれぞれ対応する音符データに、順に1つずつ関連付けられてRAM13に記憶される。
このように、文字列割付け手順22cは、入力文字列音節数が複数であるとき、生成された入力文字列音節数の一音節文字列データの各々を、同一音節文字列データに対応する一音節発音記号データとともに、入力文字列における同各一音節文字列データが表す一音節文字列の発音順序を維持しながら、入力文字列音節数の上記選択音符データが表す音符及び同音符の後に連続する後続音符から構成される割付け予定音符をそれぞれ表す音符データである割付け予定音符データの各々に1つずつ関連付けて歌詞データの一部としてRAM13に記憶させる手順を含んでいる。
なお、文字列割付け手順22cは、入力文字列が、例えば、「love」のように1音節からなるとき、即ち、入力文字列音節数が1つであるとき、生成された一音節文字列データ及び一音節発音記号データと、ユーザにより入力された文字列データと関係付けてRAM13により記憶された選択音符データと、を関連付けて歌詞データの一部としてRAM13に記憶させる手順を含んでいる。
従って、ユーザは、文字列の音節の区切りを意識することなく歌詞データとしての文字列データの入力を行うことができる。この結果、ユーザは歌詞データを迅速に入力することができる。
更に、CPU11は、文字列割付け手順22cに従って、音符図形N1〜N3にそれぞれ対応する音符データと関連付けてRAM13に記憶された上記一音節文字列データ及び一音節発音記号データがそれぞれ表す一音節文字列C1〜C3及び一音節発音記号P1〜P3が、同一音節文字列データ及び一音節発音記号データがそれぞれ関連付けられた音符データに対応する音符図形の近傍に配置された画像を表示器17aに表示させる(図7を参照。)。
このように、文字列割付け手順22cは、RAM13に記憶された一音節文字列データ及び一音節発音記号データがそれぞれ表す一音節文字列及び一音節発音記号を同一音節文字列データ及び一音節発音記号データがそれぞれ関連付けられた音符データに対応付けて表示器17aに表示させる手順を含んでいる。
加えて、CPU11は、音符図形N3の上部に配置された文字列「ber」の末尾に配置された入力カーソルを含む画像を表示器17aに表示させる。なお、ユーザが文字列データを入力した後、エンターキーの代わりにタブキーを押し込んだとき、この画像の代わりに音符図形N4の上部に配置された入力カーソルを含む画像が表示器17aに表示されるように上記歌唱合成プログラムを構成してもよい。
このようにして、ユーザは、1つの文字列データをコンピュータ装置に入力する。
ユーザは、このキーボード16a及びマウス16bの操作と同様の操作を繰り返し行うことにより、所望の歌詞データを構成する他の複数の文字列データをコンピュータ装置に入力する。これにより、所望の歌詞データを構成する複数の一音節文字列データ及び同複数の一音節文字列データにそれぞれ対応する一音節発音記号データが、音符データと1つずつ関連付けられてRAM13に記憶される。
以上、説明したように、文字列割付け手順22cは、所定の関連付け中止条件のいずれもが満足されない場合、一音節文字列データ及び一音節発音記号データと、音符データと、を関連付けてRAM13に記憶させる手順を含んでいる。
一方、文字列割付け手順22cは、所定の関連付け中止条件のいずれかが満足される場合、入力された文字列データを音符データに関連付けて歌詞データの一部としてRAM13に記憶させることなく、入力された文字列データと、音符データと、が関連付けられなかったことをユーザに通知する画像を表示器17aに表示させる。
このように、文字列割付け手順22cは、文字列割付け動作をコンピュータ装置に実行させる手順を構成していると言うことができる。
次に、ユーザは、所望の音符データが表す音符に対応する歌の部分をビブラートをかけて歌う(音の高さ又は音の大きさを周期的に変化させて歌う)歌声を合成させるために、ビブラート・データをコンピュータ装置に入力する。
この例においては、ユーザは、音符図形N3が表す音符が表す音の発音期間の後半においてこの音の高さを振幅が半音である正弦波状に変化させるパターンに従ってビブラートをかけて歌う歌声を合成させるための操作を行う。即ち、ユーザは、キーボード16a及びマウス16bを操作することにより、音符図形N3を選択状態にする。更に、ユーザは、図示しない入力インターフェースを介して、所望のビブラート情報を表すビブラート・データを入力する。
これにより、CPU11は、ビブラート設定部23の手順に従って、選択状態にされた音符図形N3に対応する音符データと、同入力されたビブラート・データと、を関連付けてRAM13に記憶させる。
このように、ビブラート設定部23は、ユーザの操作に従って、音符データが表す音符に対応する歌の部分をビブラートをかけて歌う歌声を合成させるためのビブラート・データを同音符データに関連付けてRAM13に記憶させる手順を含んでいる。
そして、CPU11は、ビブラート設定部23の手順に従って、ビブラート・データが表すビブラート情報を示し音符図形N3の下方に配置された図形であるビブラート図形V1を含む画像を表示器17aに表示させる(図8を参照。)。
このように、ビブラート設定部23は、ビブラート・データと関連付けて記憶された音符データが表す音符を示す音符図形の下方に配置されたビブラート情報を表す図形であるビブラート図形を含む画像を表示器17aに表示させる手順を含んでいる。
以上説明したように、ユーザが所望する旋律データ、歌詞データ及びビブラート・データからなる歌データが同ユーザによりコンピュータ装置に入力される。
次に、ユーザは、所望の歌データがコンピュータ装置に入力されたことを表示器17aに表示されている画像等により確認すると、入力した歌データに基づいて歌声を模擬した音を出力させるために、キーボード16a及びマウス16bを操作する。これにより、CPU11は、以下に述べる歌声合成部30の手順に従って、RAM13に記憶された歌データに基づいて歌声を模擬した音を表す歌声データを生成し、生成された歌声データが表す音をサウンドシステム15aに出力させる。これにより、ユーザは、所望の歌データに基づく歌声を模擬した音を聴くことができる。
ここで、再び図2を参照しながら、歌声合成部30の手順について説明する。歌声合成部30の手順の詳細はよく知られていて、例えば、特開2002−202790号公報又は特開2004−258563号公報に記載されている。従って、本明細書においては歌声合成部30の手順の詳細な説明を省略し、概要についてのみ述べる。
歌声合成部30は、上記歌データ入力部20により生成されRAM13に記憶された歌データに基づいて歌声を模擬した音を表す歌声データを生成し、生成された歌声データが表す音をサウンドシステム15aに出力させる手順である。歌声合成部30は、補助記憶装置14により予め記憶された音声素片データベースOSDBを参照する。歌声合成部30は、音声素片データ取得手順31、音高調整手順32、発音期間調整手順33、音量調整手順34、音声素片接続手順35及びビブラート付与手順36からなる。
音声素片データ取得手順31は、上記歌データ入力部20により生成されRAM13に記憶された歌詞データの一部である一音節発音記号データに基づいて音声素片発音記号データを生成し、同生成された音声素片発音記号データに対応する音声素片データを、補助記憶装置14により予め記憶された音声素片データベースOSDBから検索して取得する動作をコンピュータ装置に実行させる手順である。
音高調整手順32は、上記音声素片データ取得手順31により検索して取得された音声素片データと、上記歌データ入力部20によりRAM13に記憶され同音声素片データの基となった一音節発音記号データが関連付けられた音符データと、に基づいて同音声素片データが表す音の高さが同音符データが表す音の高さと一致するように同音声素片データを調整する動作をコンピュータ装置に実行させる手順である。
発音期間調整手順33は、上記音高調整手順32により調整された音声素片データと、上記歌データ入力部20によりRAM13に記憶され同音声素片データの基となった一音節発音記号データが関連付けられた音符データと、に基づいて各音声素片データが表す音声素片の発音が開始する時期(発音開始時期)と、同発音が終了する時期(発音終了時期)と、を決定する動作をコンピュータ装置に実行させる手順である。
発音期間調整手順33は、音声素片データの基となった一音節発音記号データが含む母音である音声素片の発音開始時期と、この一音節発音記号データが関連付けられた音符データが表す音の発音開始時期と、が一致するように、各音声素片データが表す音声素片が発音される期間をそれぞれ調整する。
上述したように、音声素片データは、歌声の各音声素片に対応する部分をそれぞれ表すデータであって、所定の微小な時間における歌声の周波数成分を表すデータを時系列的に複数含んだデータである。従って、発音期間調整手順33は、音声素片データの一部を、適宜、削除したり複製したりすることにより、同音声素片データを調整し、以って、同音声素片データが表す音声素片が発音される期間を変更する。
音量調整手順34は、上記発音期間調整手順33により調整された音声素片データと、上記歌データ入力部20によりRAM13に記憶され同音声素片データの基となった一音節発音記号データが関連付けられた音符データと、に基づいて同音声素片データが表す音の大きさが所定の大きさと一致するように同音声素片データを調整する動作をコンピュータ装置に実行させる手順である。
音声素片接続手順35は、上記音量調整手順34により調整された複数の音声素片データを接続することにより、基本歌声データを生成する動作をコンピュータ装置に実行させる手順である。
ビブラート付与手順36は、上記ビブラート設定部23により音符データに関連付けてRAM13に記憶されたビブラート・データに従って、上記音声素片接続手順35により生成された基本歌声データが表す音の高さ又は音の大きさを周期的に変化させることにより歌声データを生成する動作をコンピュータ装置に実行させる手順である。ビブラート付与手順36は、生成された歌声データが表す音をサウンドシステム15aに出力させる。
以上説明したように、歌唱合成プログラムは、上記コンピュータ装置に実行されることにより、ユーザが所望する歌データに基づいて合成された歌声を模擬した音を同ユーザに聴かせることができるようになっている。
(第1の関連付け中止条件が満足される場合)
一方、ユーザが、文字列データの入力を誤り、文字列「septenber」を表す文字列データを入力した後、エンターキーを押し込んだ場合について説明する。この場合、音節毎分割データベースOBDBが、文字列「septenber」を表す文字列データに対応する音節毎分割データを含んでいないので、CPU11は、上記音節毎分割文字列取得手順22bにより同音節毎分割データを取得することができない。
従って、CPU11が、上記第1判定ステップの処理を行うと、CPU11は、同第1判定ステップにて「Yes」と判定する。
そして、CPU11は、文字列割付け手順22cに従って、入力された文字列データを音符データに関連付けて歌詞データの一部としてRAM13に記憶させることなく、入力された文字列データと、音符データと、が関連付けられなかったことをユーザに通知する図示しない画像を表示器17aに表示させる。これにより、入力文字列が誤った音節の区切りにて分割されることを防止することができる。
(第2の関連付け中止条件が満足される場合)
また、ユーザが、図9に示したように、音符図形N1及び音符図形N2にそれぞれ対応する音符データを入力し、同音符データが表す音符の後に連続する音符を表す音符データを入力せずに、音符図形N1に対応する音符データ(選択音符データ)に対応付けて文字列「september」を表す文字列データを入力した後、エンターキーを押し込んだ場合について説明する。
この場合、文字列「september」の音節の数は3つであり、一方、所定以降音符としての選択以降音符は、音符図形N1及び音符図形N2がそれぞれ表す2つの音符のみである。従って、CPU11が、上記第2判定ステップの処理を行うと、CPU11は、同第2判定ステップにて「Yes」と判定する。
そして、CPU11は、入力された文字列データを音符データに関連付けて歌詞データの一部としてRAM13に記憶させることなく、入力された文字列データと、音符データと、が関連付けられなかったことをユーザに通知する図示しない画像を表示器17aに表示させる。これにより、選択以降音符の数が、入力文字列音節数より少ないとき、入力された文字列データと音符データとが不適切に関連付けられることを防止することができる。
(第3の関連付け中止条件が満足される場合)
一方、ユーザが、図10に示したように、音符図形N1〜N3にそれぞれ対応する音符データを入力し、音符図形N1に対応する音符データ(選択音符データ)に対応付けて文字列「september」を表す文字列データを入力した後、エンターキーを押し込んだ場合について説明する。
この場合、文字列「september」の音節数は、3つである。従って、割付け予定音符は、音符図形N1〜N3がそれぞれ表す音符である。これらの割付け予定音符のうち、音符図形N2が表す音符と音符図形N3が表す音符との間(連続する2つの音符の間)には、所定の期間である2拍より長い3拍の発音停止期間が存在している。従って、CPU11が、上記第3判定ステップの処理を行うと、CPU11は、同第3判定ステップにて「Yes」と判定する。
そして、CPU11は、入力された文字列データを音符データに関連付けて歌詞データの一部としてRAM13に記憶させることなく、入力された文字列データと、音符データと、が関連付けられなかったことをユーザに通知する図示しない画像を表示器17aに表示させる。これにより、割付け予定音符のうちの連続する2つの音符間に所定の期間より長い発音停止期間が存在するとき、入力された文字列データと音符データとが不適切に関連付けられることを防止することができる。
(関連付け変更禁止操作)
一方、ユーザが、図11に示したように、音符図形N1〜N4にそれぞれ対応する音符データを入力するとともに、音符図形N3及び音符図形N4にそれぞれ対応する音に合わせて文字列「baby」を発音させる歌声を合成させるために音符図形N3に対応する音符データに対応付けて文字列「baby」を表す文字列データを入力し、その結果、一音節文字列C3及び一音節文字列C4をそれぞれ表す一音節文字列データ並びに一音節発音記号P3及び一音節発音記号P4をそれぞれ表す一音節発音記号データが、音符図形N3及び音符図形N4にそれぞれ対応する音符データと関連付けてRAM13に記憶されている場合において、同ユーザが、同関連付けが変更されることを希望しない場合について説明する。
この場合、ユーザは、キーボード16a及びマウス16bを操作することにより、音符図形N3及び音符図形N4を選択状態にする。更に、ユーザは、関連付け変更禁止フラグを、選択状態にされた音符図形N3及び音符図形N4にそれぞれ対応する音符データに関連付けるための所定の操作を行う。関連付け変更禁止フラグは、音符データと同音符データに関連付けて記憶された一音節文字列データ及び一音節発音記号データとの関連付けの変更を禁止することを表すフラグである。
これにより、CPU11は、関連付け変更禁止手順24に従って、選択状態にされた音符図形N3及び音符図形N4にそれぞれ対応する音符データと、関連付け変更禁止フラグと、を関連付けてRAM13に記憶させる。
このように、関連付け変更禁止手順24は、ユーザの操作に従って、上記文字列割付け手順22cにより関連付けてRAM13に記憶された一音節文字列データ及び一音節発音記号データと音符データとの関連付けの変更を禁止する関連付け変更禁止フラグを、同音符データに関連付けてRAM13に記憶させる手順を含んでいる。即ち、関連付け変更禁止手順24は、関連付け変更禁止動作をコンピュータ装置に実行させる手順を構成している。
そして、CPU11は、関連付け変更禁止手順24に従って、関連付け変更禁止フラグと関連付けて記憶されていない音符データに対応する音符図形(音符図形N1及び音符図形N2)と、同音符図形を描く線より太い線にて描かれた関連付け変更禁止フラグと関連付けて記憶された音符データに対応する音符図形(音符図形N3及び音符図形N4)と、を含む画像を表示器17aに表示させる(図12を参照。)。
このように、関連付け変更禁止手順24は、関連付け変更禁止フラグと関連付けて記憶された音符データ(関連付け変更禁止音符データ)が表す音符を、「関連付け変更禁止フラグと関連付けて記憶されていない音符データ(通常音符データ)が表す音符を示す通常音符図形とは異なる態様の図形(関連付け変更禁止音符図形)」にて表現した画像を表示器17aに表示させる手順を含んでいる。本例では、関連付け変更禁止音符図形は、通常音符図形の外郭線をより太い線にて描いた図形である。
(第4の関連付け中止条件が満足される場合)
この状態において、ユーザが、図12に示したように、音符図形N1に対応する音符データ(選択音符データ)に対応付けて文字列「september」を表す文字列データを入力した後、エンターキーを押し込んだ場合について説明する。
この場合、割付け予定音符を表す音符データとしての音符図形N1〜N3にそれぞれ対応する音符データのうち、音符図形N3に対応する音符データは、関連付け変更禁止フラグと関連付けてRAM13に記憶されている。従って、CPU11が、上記第4判定ステップ(割付け予定音符が、関連付け変更禁止音符を含むか否かを判定するステップ)の処理を行うと、CPU11は、同第4判定ステップにて「Yes」と判定する。
その結果、CPU11は、入力された文字列データを音符データに関連付けて歌詞データの一部としてRAM13に記憶させることなく、入力された文字列データと、音符データと、が関連付けられなかったことをユーザに通知する図示しない画像を表示器17aに表示させる。これにより、ユーザが、既に記憶されている関連付けの変更を希望しないとき、上記文字列割付け手順22cの手順により、同関連付けが変更されることを防止することができる。
以上説明したように、本発明による歌データ入力プログラムの実施形態によれば、ユーザが入力する歌詞としての文字列を表す文字列データを1つの音節からなる一音節文字列を表す一音節文字列データに分割して入力しなくとも、同入力された文字列データが表す文字列である入力文字列が音節毎に分割されることにより一音節文字列データが自動的に生成される。従って、ユーザは、文字列の音節の区切りを意識することなく歌詞データとしての文字列データの入力を行うことができる。
更に、上記実施形態によれば、前記生成された複数の一音節文字列データが、選択された所定の音符データとしての選択音符データ及び同選択音符データが表す音符の後に連続する後続音符を表す音符データに、それぞれ1つずつ自動的に関連付けて記憶される。これにより、ユーザは、1つの音符データに対応付けて複数の音節からなる文字列を表す文字列データを入力するだけで、複数の音符データと、複数の一音節文字列データと、をそれぞれ1つずつ互いに関連付けて記憶させることができる。これらの結果、ユーザは歌詞データを迅速に入力することができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、所定の音符データは、ユーザにより選択された選択音符データであったが、入力された旋律データを表す音符データのうちの最初に発音される音符に対応する音符データ等の予め定められた音符データであってもよい。
また、上記実施形態においては、音節毎分割データベースOBDBは、英語の単語に関する音節毎分割データを格納していたが、英語の他、フランス語又はスペイン語等のヨーロッパ系諸言語や、日本語或いは韓国語等の他の言語の単語に関する音節毎分割データを格納していてもよい。
また、音節毎分割データベースOBDBは、複数の言語の単語に関する音節毎分割データを言語毎にそれぞれ格納する複数のデータベースを備えていてもよい。この場合、歌唱合成プログラムは、音節毎分割データベースOBDBが備える複数のデータベースのうち、ユーザにより選択された言語に対応するデータベースを検索する動作をコンピュータ装置に実行させるように構成されていることが好適である。
更に、上記実施形態においては、音節毎分割データは、音節毎分割文字列データと音節毎分割発音記号データとからなっていたが、更に、音節毎分割文字列データが表す音節毎分割文字列から区切り記号を除去することにより取得されるデータベース検索用文字列を表す検索文字列データを含んでいてもよい。これにより、所望の文字列データに対応する音節毎分割データを音節毎分割データベースOBDBから迅速に検索することができる。
また、音節毎分割文字列においては、音節の区切りは、区切り記号により表されていたが、文字列の先頭から音節の区切りまでの文字数により表されていてもよい。即ち、音節毎分割データは、音節毎分割文字列「sep−tem−ber」を表す音節毎分割文字列データに代えて、文字列「september」を表す文字列データと音節区切り情報「3、6」を表す音節区切りデータとを含んでいてもよい。
加えて、歌唱合成プログラムは、複数の単語が単語毎に空白により区切られた文字列を表す文字列データがコンピュータ装置に入力されたとき、入力された文字列データが表す文字列を空白により分割することにより、1つの単語からなる一単語文字列を表す一単語文字列データを複数生成し、上記音節毎分割文字列取得手順22b及び上記文字列割付け手順22cに従って、同生成された複数の一単語文字列データのそれぞれに基づいて得られる一音節文字列データと音符データとを1つずつ関連付けて記憶する動作をコンピュータ装置に実行させるように構成されていてもよい。これにより、ユーザは、複数の単語からなる文字列を表す文字列データを一括してコンピュータ装置に入力することができるので、歌詞データを極めて迅速に入力することができる。
また、上記実施形態においては、コンピュータ装置は、ユーザがマウス16bを操作することにより音符データが入力されるように構成されていたが、相互に通信可能に接続された電子楽器を備え、ユーザが同電子楽器を演奏することにより音符データが入力されるように構成されていてもよい。また、コンピュータ装置は、相互に通信可能に接続されたサーバにより音符データ又は文字列データが配信されることにより、同配信された音符データ又は文字列データが入力されるように構成されていてもよい。
10…バス、11…CPU、12…フラッシュ・メモリ、13…RAM、14…補助記憶装置、15…音源回路、15a…サウンドシステム、16…入出力インターフェース、16a…キーボード、16b…マウス、17…表示制御回路、17a…表示器、20…歌データ入力部、21…旋律データ入力部、22…歌詞データ入力部、22a…文字列音符関係付け手順、22b…音節毎分割文字列取得手順、22c…文字列割付け手順、23…ビブラート設定部、24…関連付け変更禁止手順、30…歌声合成部、31…音声素片データ取得手順、32…音高調整手順、33…発音期間調整手順、34…音量調整手順、35…音声素片接続手順、36…ビブラート付与手順、OBDB…音節毎分割データベース、OSDB…音声素片データベース。