(57)【要約】   【課題】  入力された音声と、実際に発するべき楽音の音高との一致、不一致を正確に判断する  【解決手段】  歌唱ガイド装置は、ユーザ入力の音声信号の基づく音声データから、所定のフレームごとのピッチを抽出するピッチ抽出部３２と、再生すべき楽曲データの発音タイミングに、楽音データに基づく音高の楽音を発生させ、消音タイミングに、楽曲を消音させる再生制御部３０と、発音タイミングから消音タイミングに至るまで、フレームごとに抽出されたピッチと、前記楽音データに基づく音高とを比較して、フレームごとの比較結果を、当該楽音データに関連付けて累算し、消音タイミングが経過後、比較結果に基づき、音声データから抽出されたピッチの正確さを判定する比較判定部３４とを備える。【選択図】  図２
2005128372.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ入力にかかる音声信号から抽出されたピッチと、本来発するべき楽音の音高とを比較して、比較結果を出力する楽音比較装置であって、
前記ユーザ入力にかかる音声信号をディジタル化した音声データに基づいて、所定のフレームごとのピッチを抽出するピッチ抽出手段と、
再生すべき楽曲データの発音タイミングに、当該楽音データに基づく音高の楽音を発生させるとともに、当該楽曲データの消音タイミングに、当該楽曲を消音させる再生手段と、
前記発音タイミングから前記消音タイミングに至るまで、前記フレームごとに抽出されたピッチと、前記楽音データに基づく音高とを比較して、フレームごとの比較結果を、当該楽音データに関連付けて累算する比較手段と、
前記消音タイミングが経過後、前記比較結果に基づき、前記音声データから抽出されたピッチの正確さを判定する判定手段と、
前記判定手段による判定結果を表示装置に表示する表示制御手段とを備えたことを特徴とする楽音比較装置。
【請求項２】
前記再生手段が、消音タイミングに前記楽音を消音させるのに応答して、前記判定手段が起動することを特徴とする請求項１に記載の楽音比較装置。
【請求項３】
前記比較手段が、前記フレームごとに、抽出されたピッチが、楽音データに基づく音高と一致することを示す第１のカウンタ、音高より高いことを示す第２のカウンタ、および、音高より低いことを示す第３のカウンタのいずれかの、カウント値をカウントアップし、
前記判定手段が、前記第１ないし第３のカウンタの前記カウンタ値を参照することを特徴とする請求項１または２に記載の楽音比較装置。
【請求項４】
前記比較手段が、前記フレームごとに、前記音声信号のレベルが所定の値に達していない場合に、入力がなかったことを示す第４のカウンタのカウンタ値をカウントアップし、
前記判定手段が、前記第１ないし第４のカウンタのカウンタ値を参照することを特徴とする請求項３に記載の楽音比較装置。
【請求項５】
前記比較手段が、フレームごとにピッチと音高が比較された回数をカウントする第５のカウンタを備え、
前記判定手段が、前記第１のカウンタのカウンタ値が他のカウンタのカウンタ値よりも大きかったときに、
前記第１のカウンタのカウンタ値／第５のカウンタのカウンタ値
に基づいて、前記ピッチと音高とが一致した割合を求め、前記割合が、所定の閾値より大きい場合に、当該音高について、正確であったと判定することを特徴とする請求項３または４に記載の楽音比較装置。
【請求項６】
前記閾値が、設定された難易度に応じて変化することを特徴とする請求項５に記載の楽音比較装置。
【請求項７】
前記表示制御手段が、Ｙ方向に音高、ｘ方向に時間をとった表示領域に、本来発するべき音高を示す印と実際のピッチを示す印とを表示することを特徴とする請求項１ないし６の何れか一項に記載の楽音比較装置。
【請求項８】
前記表示手段が、現在発音中の楽音のＸ方向の位置を固定し、画像をスクロールするように表示することを特徴とする請求項７に記載の楽音比較装置。
【請求項９】
前記表示手段が、所定の範囲の楽音の音高を示す印を先行表示することを特徴とする請求項８に記載の楽音比較装置。
【請求項１０】
前記比較手段が、フレーム中のスペクトルパワーを取得し、スペクトルパワー中の倍音を考慮して、前記ピッチを抽出することを特徴とする請求項１ないし９の何れか一向に記載の楽音比較装置。
【請求項１１】
前記ピッチ抽出手段が、ユーザ属性にしたがって、抽出する音声の最高音および最低音を変化させることを特徴とする請求項１ないし１０の何れか一項に記載の楽音比較装置。
【請求項１２】
前記再生手段が、ユーザによる設定に従って、前記発するべき楽音をミュートし、或いは、発するべき楽音を定められた音量で発音するように構成されたことを特徴とする請求項１ないし１１の何れか一項に記載の楽音比較装置。
【請求項１３】
ユーザ入力にかかる音声信号から抽出されたピッチと、本来発するべき楽音の音高とを比較して、比較結果を出力するためにコンピュータを動作させる、当該コンピュータにより読み出し可能な楽音比較プログラムであって、
前記ユーザ入力にかかる音声信号をディジタル化した音声データに基づいて、所定のフレームごとのピッチを抽出するピッチ抽出ステップと、
再生すべき楽曲データの発音タイミングに、当該楽音データに基づく音高の楽音を発生させるとともに、当該楽曲データの消音タイミングに、当該楽曲を消音させる再生ステップと、
前記発音タイミングから前記消音タイミングに至るまで、前記フレームごとに抽出されたピッチと、前記楽音データに基づく音高とを比較して、フレームごとの比較結果を、当該楽音データに関連付けて累算する比較ステップと、
前記消音タイミングが経過後、前記比較結果に基づき、前記音声データから抽出されたピッチの正確さを判定する判定ステップと、
前記判定手段による判定結果を表示装置に表示する表示制御ステップとを、前記コンピュータに実行させることを特徴とする楽音比較プログラム。
【請求項１４】
前記再生ステップにおいて、消音タイミングに前記楽音を消音させるのに応答して、前記判定ステップが実行させるように、前記コンピュータを動作させることを特徴とする請求項１３に記載の楽音比較プログラム。
【請求項１５】
前記比較ステップにおいて、
前記フレームごとに、抽出されたピッチが、楽音データに基づく音高と一致することを示す第１のカウンタ、音高より高いことを示す第２のカウンタ、および、音高より低いことを示す第３のカウンタのいずれかの、カウント値をカウントアップするステップを前記コンピュータに実行させ、かつ、
前記判定ステップにおいて、前記第１ないし第３のカウンタの前記カウンタ値を参照するステップを前記コンピュータに実行させることを特徴とする請求項１３または１４に記載の楽音比較プログラム。
【請求項１６】
前記比較ステップにおいて、前記フレームごとに、前記音声信号のレベルが所定の値に達していない場合に、入力がなかったことを示す第４のカウンタのカウンタ値をカウントアップするステップを、前記コンピュータに実行させ、かつ、
前記判定ステップにおいて、前記第１ないし第４のカウンタのカウンタ値を参照するステップを、前記コンピュータに実行させることを特徴とする請求項１５に記載の楽音比較プログラム。
【請求項１７】
前記比較ステップにおいて、フレームごとにピッチと音高が比較された回数を、第５のカウンタでカウントアップするステップを前記コンピュータに実行させ、かつ、
前記判定ステップにおいて、前記第１のカウンタのカウンタ値が他のカウンタのカウンタ値よりも大きかったときに、
前記第１のカウンタのカウンタ値／第５のカウンタのカウンタ値
に基づいて、前記ピッチと音高とが一致した割合を求めるステップと、
前記割合が、所定の閾値より大きい場合に、当該音高について、正確であったと判定するステップとを、前記コンピュータに実行させることを特徴とする請求項１５または１６に記載の楽音比較プログラム。
【請求項１８】
前記閾値が、設定された難易度に応じて変化することを特徴とする請求項１７に記載の楽音比較プログラム。
【請求項１９】
前記表示制御ステップにおいて、Ｙ方向に音高、Ｘ方向に時間をとった表示領域に、本来発するべき音高を示す印と実際のピッチを示す印とを表示するステップを、前記コンピュータに実行させることを特徴とする請求項１３ないし１８の何れか一項に記載の楽音比較プログラム。
【請求項２０】
前記表示ステップにおいて、現在発音中の楽音のＸ方向の位置を固定し、画像をスクロールするように表示するステップを、前記コンピュータに実行させることを特徴とする請求項１９に記載の楽音比較プログラム。
【請求項２１】
前記表示ステップにおいて、所定の範囲の楽音の音高を示す印を先行表示するステップを、前記コンピュータに実行させることを特徴とする請求項２０に記載の楽音比較プログラム。
【請求項２２】
前記比較ステップにおいて、フレーム中のスペクトルパワーを取得し、スペクトルパワー中の倍音を考慮して、前記ピッチを抽出するステップを、前記コンピュータに実行させることを特徴とする請求項１３ないし２１の何れか一向に記載の楽音比較プログラム。
【請求項２３】
前記ピッチ抽出ステップにおいて、ユーザ属性にしたがって、抽出する音声の最高音および最低音を変化させるステップを、前記コンピュータに実行させることを特徴とする請求項１３ないし２２の何れか一項に記載の楽音比較プログラム。
【請求項２４】
前記再生ステップにおいて、ユーザによる設定に従って、前記発するべき楽音をミュートし、或いは、発するべき楽音を定められた音量で発音するステップを、前記コンピュータに実行させることを特徴とする請求項１３ないし２３の何れか一項に記載の楽音比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ入力にかかる音声信号と、本来発するべき楽音の音高とを比較する装置に関する。
【背景技術】
【０００２】
ピッチ抽出技術により、ユーザの歌唱のピッチを抽出し、実際に発音すべき楽音との相違を比較する装置が提案されている。
【０００３】
たとえば、特許文献１には、歌唱音声信号に基づく音声データと、演奏データとを比較し、表示装置の画面上に表示された歌詞や楽譜に、音程外れなどを表示できるような演奏曲再生装置が開示されている。
【特許文献１】特開２０００−２９４７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
たとえば、上記特許文献１に記載された装置においては、音程外れやテンポ外れなどの不一致が生じた箇所の位置を求めているが、不一致を判断するタイミングにより、ユーザ歌唱にかかるピッチと実際の音高とが外れているか否かの判断結果が異なり、その結果、正確な判断ができないという問題点があった。たとえば、わずかな時間だけでも本来発声すべき音高から逸脱した場合にも、音程の不一致であると判断してしまうと、ユーザの歌唱にわずかなミスがあった場合にもその部分が間違っていると判断されてしまう。
【０００５】
本発明は、入力された音声と、実際に発するべき楽音の音高との一致、不一致を正確に判断することができる装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の目的は、ユーザ入力にかかる音声信号から抽出されたピッチと、本来発するべき楽音の音高とを比較して、比較結果を出力する楽音比較装置であって、前記ユーザ入力にかかる音声信号をディジタル化した音声データに基づいて、所定のフレームごとのピッチを抽出するピッチ抽出手段と、再生すべき楽曲データの発音タイミングに、当該楽音データに基づく音高の楽音を発生させるとともに、当該楽曲データの消音タイミングに、当該楽曲を消音させる再生手段と、前記発音タイミングから前記消音タイミングに至るまで、前記フレームごとに抽出されたピッチと、前記楽音データに基づく音高とを比較して、フレームごとの比較結果を、当該楽音データに関連付けて累算する比較手段と、前記消音タイミングが経過後、前記比較結果に基づき、前記音声データから抽出されたピッチの正確さを判定する判定手段と、前記判定手段による判定結果を表示装置に表示する表示制御手段とを備えたことを特徴とする楽音比較装置により達成される。
【０００７】
好ましい実施態様においては、前記再生手段が、消音タイミングに前記楽音を消音させるのに応答して、前記判定手段が起動する。
【０００８】
また、別の好ましい実施態様においては、前記比較手段が、前記フレームごとに、抽出されたピッチが、楽音データに基づく音高と一致することを示す第１のカウンタ、音高より高いことを示す第２のカウンタ、および、音高より低いことを示す第３のカウンタのいずれかの、カウント値をカウントアップし、前記判定手段が、前記第１ないし第３のカウンタの前記カウンタ値を参照する。
【０００９】
さらに、前記比較手段が、前記フレームごとに、前記音声信号のレベルが所定の値に達していない場合に、入力がなかったことを示す第４のカウンタのカウンタ値をカウントアップし、前記判定手段が、前記第１ないし第４のカウンタのカウンタ値を参照しても良い。
【００１０】
さらに別の好ましい実施態様においては、前記比較手段が、フレームごとにピッチと音高が比較された回数をカウントする第５のカウンタを備え、前記判定手段が、前記第１のカウンタのカウンタ値が他のカウンタのカウンタ値よりも大きかったときに、前記第１のカウンタのカウンタ値／第５のカウンタのカウンタ値に基づいて、前記ピッチと音高とが一致した割合を求め、前記割合が、所定の閾値より大きい場合に、当該音高について、正確であったと判定する。前記閾値を、設定された難易度に応じて変化させても良い。
【００１１】
また、別の好ましい実施態様においては、前記表示制御手段が、Ｙ方向に音高、ｘ方向に時間をとった表示領域に、本来発するべき音高を示す印と実際のピッチを示す印とを表示する。
たとえば、前記表示手段は、現在発音中の楽音のＸ方向の位置を固定し、画像をスクロールするように表示する。この場合に、前記表示手段が、所定の範囲の楽音の音高を示す印を先行表示するのがより望ましい。
【００１２】
別の好ましい実施態様においては、前記ピッチ比較手段が、フレーム中のスペクトルパワーを取得し、スペクトルパワー中の倍音を考慮して、前記ピッチを抽出する。
また、好ましい実施態様においては、前記ピッチ抽出手段が、ユーザ属性にしたがって、抽出する音声の最高音および最低音を変化させる。
【００１３】
また、前記再生手段が、ユーザによる設定に従って、前記発するべき楽音をミュートし、或いは、発するべき楽音を定められた音量で発音するように構成されていても良い。
【００１４】
また、本発明の目的は、ユーザ入力にかかる音声信号から抽出されたピッチと、本来発するべき楽音の音高とを比較して、比較結果を出力するためにコンピュータを動作させる、当該コンピュータにより読み出し可能な楽音比較プログラムであって、前記ユーザ入力にかかる音声信号をディジタル化した音声データに基づいて、所定のフレームごとのピッチを抽出するピッチ抽出ステップと、再生すべき楽曲データの発音タイミングに、当該楽音データに基づく音高の楽音を発生させるとともに、当該楽曲データの消音タイミングに、当該楽曲を消音させる再生ステップと、前記発音タイミングから前記消音タイミングに至るまで、前記フレームごとに抽出されたピッチと、前記楽音データに基づく音高とを比較して、フレームごとの比較結果を、当該楽音データに関連付けて累算する比較ステップと、前記消音タイミングが経過後、前記比較結果に基づき、前記音声データから抽出されたピッチの正確さを判定する判定ステップと、前記判定手段による判定結果を表示装置に表示する表示制御ステップとを、前記コンピュータに実行させることを特徴とする楽音比較プログラムによっても達成される。
【発明の効果】
【００１５】
本発明によれば、入力された音声と、実際に発するべき楽音の音高との一致、不一致を正確に判断することができる装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の第１の実施の形態にかかる歌唱ガイド装置のハードウェア構成を示すブロックダイヤグラムである。図１に示すように、歌唱ガイド装置１０は、ＣＰＵ１２、歌唱をガイドするための種々のプログラムや演奏する楽曲の楽曲データを記憶したＲＯＭ１４、歌唱者の歌唱にしたがったデータを一時的に記憶し、また、プログラムを実行する際のワークエリアとして用いられるＲＡＭ１６、キーボードやマウスなどの入力装置１６、ＣＲＴ表示装置やＬＣＤからなる表示装置１８、外部機器から楽曲データを受理し、或いは、外部機器に楽曲データを出力するＭＩＤＩ(Musical Instrument Digital Interface)インタフェース（Ｉ／Ｆ）２０、および、マイク２２を経て伝達された音声信号をディジタル信号に変換するＡＤ変換器（ＡＤＣ）２４を有している。
【００１７】
図２は、ＣＰＵ１２およびその周辺部材の機能ブロックダイヤグラムである。図２に示すように、ＣＰＵ１２は、楽曲データを受理して、受理した楽曲データに基づいて楽曲を再生する再生制御部３０と、ＡＤＣ２６からのディジタル信号に基づいて、歌唱者の音声のピッチを抽出するピッチ抽出部３２と、再生される楽曲の音高と抽出されたピッチとを比較する比較判定部３４と、再生される楽曲の楽譜表示を制御する楽譜表示制御部３６と，表示すべき楽譜のスクロールを制御するスクロール表示制御部３８とを有している。
【００１８】
楽曲データは、歌唱ガイド装置１０のＲＯＭ１４に記憶され、或いは、外部機器から、ＭＩＤＩ  Ｉ／Ｆ２２を介して、再生制御部３０に与えられる。図３は、楽曲データのデータ構成を示す図である。図３に示すように、楽曲データは、再生時に発音される楽音ごとに、Ｎｏｔｅ［０］，Ｎｏｔｅ［１］,・・・Ｎｏｔｅ［ｎ］に示すようなデータ群を有する。各楽音に相当するデータ群（たとえば、Ｎｏｔｅ［０］）には、当該楽音の発音開始ティック、すなわち、楽音の発音を開始するタイミングまでのクロック数を示すＩＴｉｍｅ、発音した楽音を伸ばす時間に相当するゲートタイムを示すＩＧａｔｅ、発音すべき楽音の音高（ノート番号）を示すＰｉｔ、発音すべき楽音のベロシティを示すＶｅｌ、当該楽音と音声のディジタル信号に基づき抽出されたピッチとの比較結果をそれぞれ示すｉＭａｔｃｈＣｎｔ、ｉＵｐＣｎｔ、ｉＤｏｗｎＣｎｔ、および、ｓＭａｔｃｈ、並びに、次の楽音のノート番号を示すノートポインタｉＮｐが含まれる。
【００１９】
第１のピッチ比較結果ｉＭａｔｃｈＣｎｔは、ピッチの一致回数を示し、第２のピッチ比較結果ｉＵｐＣｎｔは、歌唱の音高が楽音の音高より高い、つまり、上ずっていた回数を示し、その一方、第３のピッチ比較結果ｉＤｏｗｎＣｎｔは、歌唱の音高が楽音の音高より低い、つまり、いわゆるフラットした回数を示す。また、第４の比較結果Ｓｍａｔｃｈは、ピッチの最終的な比較結果を示す。Ｓｍａｔｃｈの値として、たとえば、ピッチが一致したことを示す「○（マル）」に対応する値、或いは、ピッチが不一致であることを示す「×（バツ）」に対応する値をとることができる。
【００２０】
本実施の形態では、楽音ごとに、上述したデータ群のうち、ＩＴｉｍｅ、ＩＧａｔｅ、Ｐｉｔ、ＶｅｌおよびｉＮＰが予め用意される。また、ピッチ比較結果は、後述する比較判定処理により必要な値が格納される。
【００２１】
図４は、本実施の形態にかかる歌唱ガイド装置にて実行される処理のメインフローチャートである。図４に示すように、歌唱ガイド装置１０は、電源がオンされると、まず、処理に使用される変数を初期化する（ステップ４０１）とともに、楽曲データに基づいて、楽譜を表示する（ステップ４０２）。
【００２２】
図５は、処理に使用される変数を示す図である。本実施の形態においては、再生制御のために用いられるパラメータ（図５（ａ）参照）と、ピッチ抽出のために用いられるパラメータ（図５（ｂ）参照）とがある。再生制御用パラメータには、４分音符の分解能を示すｉＲｅｓｏｌｕｔｉｏｎ、拍子の分子の部分を示すｌＢｅａｔ、分母の部分を示すｌＢｅａｔＤｅｎｏｍｉ、テンポ値（ＢＰＭ）を示すｌＢＰＭ、１小節の秒数を示すdoTimeOfMeas、楽譜表示の際に、発音すべきタイミングから先行させて表示させる楽譜のフレーム数を示すＩＯｆｆｓｅｔＸ、再生時の現在時間を示すＩＮｏｗＴｉｍｅ、再生開始時間を示すＩＢａｓｅＴｉｍｅ、再生時の現在再生位置をティックにて示すＩＮｏｗＴｉｃｋ、先行させて表示する際の先行時間を示すＩＯｆｆｓｅｔ、いまどのノートを再生しているかを示す再生用ノートポインタｎｐ、既に発音が終わったノートのうち、どのノートまでを残して表示するかを示す表示用ノートポインタｎｄ、および、先行して表示すべきノートを示す先行表示用ノートポインタｎａが含まれる。さらに、再生制御用パラメータには、発音すべき楽曲データＮｏｔｅ［Ｎ］、発音すべき楽曲でデータのバッファであるＯｎＢｕｆ［Ｎ］、および、再生、音声入力の状態変数であるｉＰｌａｙ、ｉＷａｖｅが含まれる。これらパラメータについては、再生処理に関連してより詳細に説明する。
【００２３】
また、図５（ｂ）に示すように、ピッチ抽出用パラメータには、ＦＦＴ実行のための変数（複素数）であるｃｍＤａｔａ［Ｎ］、スペクトルパワーを示すｄｏＤａｔａ［Ｎ］、サンプリング周波数を示すｄｏＦＳ、フレームサイズを示すｉＦｒａｍｅＳｉｚｅ、抽出するピッチの最低音のノート番号を示すｉＬｏｗｅｒＮＮ、抽出するピッチの最高音のノート番号を示すｉＵｐｐｅｒＮＮ、抽出されたピッチの整数部を示すｉＢＮｏｔｅＮ、抽出されたピッチの小数部を示すｉＢＮｏｔｅＤ、および、採点結果を示すｉＪｕｄｇｅが含まれる。
【００２４】
ステップ４０１およびステップ４０２の後、歌唱ガイド装置１０は、ユーザによる入力装置１８の入力を待つ（ステップ４０３）。より具体的には、ここでは、再生開始或いは停止指示のための、キー或いはマウスによる入力を待機する。入力装置１８の入力が、開始指示であった場合には（ステップ４０４でイエス(Yes)）、歌唱ガイド装置１０は、再生ルーチンを起動するとともに（ステップ４０５）、音声入力ルーチンも起動する（ステップ４０６）。その一方、終了指示であった場合には（ステップ４０７でイエス(Yes)）、再生ルーチンおよび音声入力ルーチンを停止させる（ステップ４０８、４０９）。
【００２５】
図６は、歌唱ガイド装置１０の再生制御部３０にて実行される再生ルーチンを示すフローチャートである。この再生ルーチンは、メインフローのステップ４０５において起動され、メインルーチンと平行して動作する。
【００２６】
再生ルーチンにおいては、まず、再生制御用パラメータ中、ノートポインタｎｐ、ｎｄおよびｎａが初期化される（ステップ６０１）。次いで、スクロール表示のための初期化が行われるとともに（ステップ６０２）、再生開始時間ＩＢａｓｅＴｉｍｅに、現在時刻が与えられる（ステップ６０３）。
【００２７】
次いで、状態変数ｉＰｌａｙが「０（ゼロ）」であるかどうかが判断される（ステップ６０４）。この状態変数ｉＰｌａｙは、再生中に「１」、再生終了時に「０」がセットされるため、ステップ６０４でイエス(Yes)と判断された場合には、採点処理が実行される（ステップ６０５）。
【００２８】
その一方、ステップ６０４でノー(No)と判断された場合には、再生時の現在時間ＩＮｏｗＴｉｍｅに現在時刻が与えられる（ステップ６０６）。次いで、再生制御部３０は、時間変数を更新する（ステップ６０７）。ここでは、以下の式を用いて、現在再生位置のティックを示すＩＮｏｗＴｉｃｋが更新される。
ＩＮｏｗＴｉｃｋ＝（ＩＮｏｗＴｉｍｅ−ＩＢａｓｅＴｉｍｅ）
＊ｉＲｅｓｏｌｕｔｉｏｎ＊ＩＢＰＭ／６０
【００２９】
つまり、再生開始時からの経過時刻が、曲の先頭からどの位置（ティック）に相当するのかを、テンポの変数（ＩＢＰＭ）と、４分音符のティックの定義（ｉＲｅｓｏｌｕｔｉｏｎ）とから算出される。なお、ＩＢＰＭは、１分間の拍数（Beat Per Minute）であるため、６０で除算している。
【００３０】
次いで、再生制御部３０は、算出されたＩＮｏｗＴｉｃｋを参照して、キーオフすべきタイミングであれば、後述するノートオフ処理（ステップ６０８）において、所定のノート（Ｎｏｔｅ［ｉ］）の楽曲データの楽音をノートオフするとともに、キーオンすべきタイミングであれば、後述するノートオン処理（ステップ６０９）において、所定のノートの楽曲データを発音させる。また、再生制御部３０は、現在時刻に対応するＩＮｏｗＴｉｃｋ、楽曲データ、および、各ノートの発音開始タイミングを比較して、表示すべきノート等を判定した上で（スクロール表示処理：ステップ６１０）、楽譜をスクロール表示させる（楽譜表示処理：ステップ６１１）。スクロール表示処理の詳細についても後述する。再生制御部３０は、停止指示がなされるまで、ステップ６０６〜６１１の処理を繰り返し実行する。
【００３１】
次に、図７を参照して、音声入力ルーチンについて説明する。この再生ルーチンは、メインフローのステップ４０６において起動され、所定間隔で、たとえば、ＲＡＭ１６の処理の領域に、ＡＤＣ２６を介してディジタル信号がセットされた状態で、メインルーチンと平行して動作する。図７に示すように、ＣＰＵ１２は、入力された音声データを、複素数のＦＦＴ演算用変数にコピーして、ＲＡＭ１６に一時的に記憶する（ステップ７０１）。次いで、変数に対して、ハニング窓などの窓関数が乗算される（ステップ７０２）。次いで、ＦＦＴが実行される（ステップ７０３）。その結果は、実数部と虚数部とに現れるので、そのパワー、つまり、それぞれの二乗和の平方根が求められる（ステップ７０４）。マイクで音声を入力する場合に、低周波ノイズや広域ノイズが混入する場合があるため、周波数領域となったデータに対してフィルタリングが施される（ステップ７０５）。これは、単に掛け算を行うことにより実現できる。次いで、後述する基本周波数同定処理（ステップ７０６）、比較判定処理（ステップ７０７）、および、ピッチ表示処理（ステップ７０８）が実行される。
【００３２】
図８は、基本周波数同定処理をより詳細に示すフローチャートである。この処理においては、パワースペクトルにより基本周波数を同定する。一般的に歌声には、基本周波数に対して倍音が存在する性質を利用して、本実施の形態では、倍音を含む声のスペクトル構造とのマッチングを行うことにより、基本周波数を同定する。また、マッチングのピッチ範囲を超えの一般的な範囲から制限することで、より高速に周波数同定が実現できる。まず、マッチング評価値変数ｄｐＶＭａｘが初期化されるとともに、同定される音高に対応するノート番号変数ｉＢＮｏｔｅＮが初期化される（ステップ８０１）。次に、ノート番号の変数ｉが、抽出するピッチ音最低音に相当するノート番号ｉＬｏｗｅｒＮＮにセットされる（ステップ８０２）。ステップ８０４以降の処理が、ノート番号「ｉ」が、抽出するピッチ音最高音「ｉＵｐｐｅｒＮＮ」に達するまで繰り返される（ステップ８０３参照）。
【００３３】
ＣＰＵ１２は、ノート番号より細かいピッチのための変数ｋを初期化する（ステップ８０４）。当該変数ｋが所定の最大数ｋＭＡＸに至るまで以下の処理が繰り返される（ステップ８０５参照）。
【００３４】
ＣＰＵ１２は、倍音カウンタｊを初期化するとともに、あるピッチにおける評価値変数ｄＰｉｔＶａｌを初期化する（ステップ８０６）。さらに、倍音の上限値ＪＭＡＸに至るまで（ステップ８０７）、ＣＰＵ１２は、検査対象の周波数を求め（ステップ８０８）、対象の周波数がどのパワースペクトルであるかを特定し、そのインデクスを算出し（ステップ８０９）、評価値としてパワースペクトルを加算し（ステップ８１０）、倍音カウンタｊをインクリメントする（ステップ８１１）。より詳細に、ステップ８０８において、ノート番号から周波数を求めるので、基準ピッチをＡ４＝４４０Ｈｚに設定し、Ａ４のノート番号＝６９とする。具体的には、
ｄＦｒ＝４４０＊ｐｏｗｅｒ（２，（ｉ−６９）＋ｋ／ＫＭＡＸ）／１２）＊ｊ
と求められる。
【００３５】
また、ステップ８０９において、インデックスｉＮは、
ｉＮ＝（ｄＦｒ＊ｉＦｒａｍｅＳｉｚｅ／ｄｏＦｓ）
で求めることができる。
【００３６】
さらに、ステップ８１０において、評価値ｄＰｉｔＶａｌは、
ｄＰｉｔＣａｌ＋ｄｏＤａｔａ［ｉＮ］＊（Ｊ−ＭＡＸ−Ｊ）／ＪＭＡＸ
となる。
【００３７】
倍音カウンタｊが倍音の上限値ＪＭＡＸに達すると（ステップ８０７でイエス(Yes)）、対象となる周波数についての評価値ｄＰｉｔＶａｌを、それまでの最大値ｄＰＶＭａｘと比較して、大きいほうを最大値ｄＰＶＭａｘとして記憶する（ステップ８１２、８１３）。また、ステップ８１３においては、ノート番号変数ＩＢＮｏｔｅＮとして、ノート番号ｉがセットされ、かつ、ノート番号より細かいピッチのステップをあらわす変数ｉＢＮｏｔｅＤに、ｋ＊１００／ＫＭＡＸがセットされる。つまり、最大値をあらわしたピッチが、整数部ＩＢＮｏｔｅＮおよび小数部ＩＢＮｏｔｅＤにより特定される。このような処理の後、変数ｋがインクリメントされる。
【００３８】
次に、図９を参照して、比較判定処理（図７のステップ７０７）をより詳細に説明する。この処理では、基本周波数同定処理によって抽出されたピッチを、現在発音中のノート番号と比較して、一致、不一致（大小）を調べる。
まず、発音中のノートのポインタｐが初期化される（ステップ９０１）。ＣＰＵ１２は、ポインタｐが所定数を超えるまで（ステップ９０２）、以下の処理を実行する。
【００３９】
ＣＰＵ１２は、発音中のデータについて（ステップ９０３でイエス(Yes)）、抽出されたピッチｉＢＮｏｔｅＮが発音中バッファＯｎＢｕｆ［ｐ］のピッチＰｉｔｃｈと等しい場合には（ステップ９０４でイエス(Yes)）、楽曲データ中、Ｎｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］のピッチ比較結果のうち一致回数を表すｉＭａｔｃｈＣｎｔをインクリメントする（ステップ９０５）。
【００４０】
また、ＣＰＵ１２は、発音中バッファＯｎＢｕｆ［ｐ］のピッチＰｉｔｃｈが、抽出されたピッチｉＢＮｏｔｅＮより大きい場合には（ステップ９０６でイエス(Yes)）、楽曲データ中、Ｎｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］のピッチ比較結果のうちうわずった回数を表すｉＵｐＣｎｔをインクリメントする（ステップ９０７）。
【００４１】
或いは、ＣＰＵ１２は、発音中バッファＯｎＢｕｆ［ｐ］のピッチＰｉｔｃｈが、抽出されたピッチｉＢＮｏｔｅＮより小さい場合には（ステップ９０８でイエス(Yes)）、楽曲データ中、Ｎｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］のピッチ比較結果のうちフラットした回数を表すｉＤｏｗｎＣｎｔをインクリメントする（ステップ９０９）。その後、ノートのポインタｐをインクリメントして（ステップ９１０）、ステップ９０２に戻る。このようにして、楽曲データ（図３参照）の楽音（Ｎｏｔｅ［ｉ］）ごとに、ピッチの比較結果を得ることができる。
【００４２】
次に、メインフロー（図６）におけるステップ６０５、６０８、６０９、６１０などについて以下に説明する。図１０は、ノートオン処理を示すフローチャートである。ノートオンは、現在時刻で発音すべき楽音があった場合に、その音高の楽音を発生させる。また、発音中バッファにデータをセットし、ノートオフ処理時に簡単に処理が実行できるよう準備をしておく。ＣＰＵ１２は、ノートポインタｐを初期化し（ステップ１００１）、全てのノート（楽音）について、ステップ１００３以降の処理を実行する。楽音データ中、Ｎｏｔｅ［ｐ］の発音開始ティックＩＴｉｍｅが、現在時刻ＩＮｏｗＴｉｃｋを過ぎていれば（ステップ１００３でイエス(Yes)）、ＣＰＵ１２はノートオンイベントをＭＩＤＩ  ＯＵＴする（ステップ１００４）。次いで、ＣＰＵ１２は、発音中のデータ記憶用のバッファＯｎＢｕｆのポインタｑを初期化し（ステップ１００５）、ＯｎＢｕｆ［ｑ］が空きであれば（ステップ１００６でイエス(Yes)）、ノートオフをＭＩＤＩ  ＯＵＴするためのデータを作成する（ステップ１００７）。より詳細には、ステップ１００７において、ＯｎＢｕｆ［ｑ］において、ＩＴｉｍｅとして、楽音データＮｏｔｅ［ｐ］のＩＴｉｍｅとＩＧａｔｅとの和をセットし、ＩＧａｔｅに「１」をセットし、Ｐｉｔに、Ｎｏｔｅ［ｐ］のＰｉｔをセットし、Ｓｔａｔに、Ｎｏｔｅ［ｐ］のＳｔａｔをセットし、かつ、Ｖｅｌに「０」をセットする。
【００４３】
また、ＣＰＵ１２は、ＯｎＢｕｆ「ｑ」において、ピッチ比較結果のカウンタをそれぞれ「０」に初期化するとともに、ピッチ比較結果ＳＭａｔｃｈに無効値「−１」を収容するとともに、ノートポインタｉＮＰに「ｐ」を与える（ステップ１００８）。その後、ノートのポインタｐをインクリメントして（ステップ１０１０）、ステップ１００２に戻る。これに対して、ステップ１００６でノー(No)の場合には、パラメータｑをインクリメントして、ＯｎＢｕｆ［ｑ］の空きを探す（ステップ１００９）。
【００４４】
次に、図１１を参照して、ノートオフ処理についてより詳細に説明する。ノートオフ処理においては、経過時間に伴い、消音すべき楽音を消音するとともに、比較判定処理（図９）により取得されたカウンタ値にしたがって、正しく歌えたか否かの判定を行う。ＣＰＵ１２は、ノートポインタｐを初期化し（ステップ１１０１）、すべての発音中バッファＯｎＢｕｆ［ｐ］について以下の処理を実行する。
【００４５】
ＣＰＵ１２は、発音中のデータであって、かつ、現在時刻が消音時間を越えたかどうかを判断する（ステップ１１０３）。ステップ１１０３でイエス(Yes)の場合には、ノートオフイベントをＭＩＤＩ  ＯＵＴする（ステップ１１０４）。次いで、発音中バッファＯｎＢｕｆ［ｐ］の元となった楽音データＮｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮＰ］中のｉＭａｔｃｈＣｎｔ、ｉＵｐＣｎｔおよびｉＤｏｗｎＣｎｔを基づいて、ピッチ比較結果であるｓＭａｔｃｈに、正しかった場合「ＣＯＲＲＥＣＴ」（ステップ１１０５、１１０６）、上ずっていた場合「ＵＰＰＩＴ」（ステップ１１０７、１１０８）、下がっていた（フラットしていた場合）「ＤＯＷＮＰＩＴ」（ステップ１１０９、１１１０）をセットする。このような処理の後、ノートポインタｐがインクリメントされる（ステップ１１１１）。
【００４６】
図１２は、採点処理（図６のステップ６０５）をより詳細に示すフローチャートである。採点処理は、再生した楽曲において、ピッチ比較結果で正しいと判断された、つまり、「ＣＯＲＲＥＣＴ」と判断された楽音の数をカウントする。より詳細には、ＣＰＵ１２は、ノートポインタｐを初期化するとともに、カウンタｉＯＫＣｎｔを初期化し（ステップ１２０１）、ポインタｐが楽曲の最後を指すまで以下の処理を実行する（ステップ１２０１）。
【００４７】
ＣＰＵ１２は、楽曲データＮｏｔｅ［ｐ］のピッチ比較結果ＳＭａｔｃｈが「ＣＯＲＲＥＣＴ」であれば、カウンタｉＯＫＣｎｔをインクリメントする処理を繰り返す（ステップ１２０３〜１２０５）。最終的に、得点ｉＪｕｄｇｅは、１００＊ｉＯＫＣｎｔ／ｐとして算出される（ステップ１２０６）。これは正しく歌えた割合をパーセンテージで表したものである。
【００４８】
次に、画像表示に関する処理について説明する。図１３は、スクロール表示初期化処理（図６のステップ６０２）をより詳細に示すフローチャートである。本実施の形態では、楽曲データに基づく楽譜のスクロール表示において、楽曲の演奏タイミングに先行して表示を開始し、音符と抽出されたピッチとを重ねあわせて表示できるようになっている。また、楽曲データに基づく楽譜は左方向にスクロールし、現在再生されている箇所の画面中の画像位置は一定となる。また、楽曲の再生は楽曲の時間単位であるティック（Ｔｉｃｋ）に基づいて表示されるが、入力音声のピッチは、切り出されたフレーム単位となる。そこで、１小節が、何フレーム分に相当するかを計算し、先行表示するＸ軸上の距離を算出しておく必要がある。
【００４９】
図１３に示すように、ＣＰＵ１２は、１小節に相当するＴｉｃｋ数を算出する（ステップ１３０１）。より具体的には、
ＩＯｆｆｓｅｔ＝ｉＲｅｓｏｌｕｔｉｏｎ＊ＩＢｅａｔ＊４
／ＩＢｅａｔＤｅｎｏｍｉ
となる。
【００５０】
次いで、ＣＰＵ１２は、１小節の実時間を算出する（ステップ１３０２）。より具体的には、
ｄｏＴｉｍｅＯｆＭｅａｓ＝（６０＊ＩＢｅａｔ＊４
／ＩＢｅａｔＤｅｎｏｍｉ）／ＩＢＰＭ
となる。ここに、１ＢＰＭ（Beat Per Minutes）は、テンポ値（すなわち、４分音符の１分間の個数）である。したがって、「６０」を掛けることで、単位を秒にしている。
【００５１】
また、１小節が、何フレームに対応するかが次に算出される（ステップステップ１３０３）。より具体的には、
ＩＯｆｆｓｅｔＸ＝ｄｏＴｉｍｅＯｆＭｅａｓ＊ｄｏＦｓ
／ｉＦｒａｍｅＳｉｚｅ
から求めることができる。
【００５２】
次に、スクロール表示処理（図６のステップ６１０）についてより詳細に説明する。スクロール表示においては、現在時刻に対応するティックであるＩＮｏｗＴｉｃｋと、楽曲データ、各楽音（ノート）の発音開始タイミングを考慮して表示の是非を判定する。ステップ１４０１〜１４０３は、先行表示のためのループであり、ステップ１４０４〜１４０６は、演奏すべきタイミングにおける表示のためのループである。
【００５３】
前半のループでは、ＣＰＵ１２は、先行表示用のノートポインタｎａについて、現在の演奏タイミングより後に演奏される楽音データＮｏｔｅ［ｎａ］のＩＴｉｍｅと、スクロール表示初期化（図１３）にて算出されたＩＯｆｆｓｅｔとの和が、ＩＮｏｗＴｉｃｋより小さい限り（ステップ１４０１でイエス(Yes)）、当該楽音を表示する（ステップ１４０２、１４０３）。また、後半のループでは、ＣＰＵ１２は、表示用のノートポインタｎｄについて、Ｎｏｔｅ［ｎｄ］のＩＴｉｍｅが、ＩＮｏｗＴｉｃｋより小さい限り（ステップ１４０４でノー(No)）、当該楽音を表示する（ステップ１４０５、１４０６）。このようにして、表示すべき楽音を表示させることができる。なお、Ｙ方向（縦方向）の表示位置は、当該Ｎｏｔｅ［ｎａまたはｎｄ］中のＰｉｔに基づいて決定される。
【００５４】
次に、ピッチ表示処理（図７のステップ７０８）について、図１５を参照して、より詳細に説明する。ピッチ表示処理においては、ピッチを表示するタイミングで画面全体を全体をスクロールし、基本周波数同定処理（図８参照）において抽出されたピッチに基づいて、楽音を示す音符の位置、或いは、そのＹ方向（縦方向）の上下に、ユーザの音声にかかるピッチを示す印を付加する。
まず、ＣＰＵ１２は、画面の矩形領域をコピーすることで、画面全体を左にスクロールさせる（ステップ１５０１）。次いで、ＣＰＵ１２は、表示画面の幅をｗとして、また、その高さをｈとしてセットする（ステップ１５０２）。
【００５５】
ＣＰＵ１２は、印を表示すべきｘ座標を算出する（ステップ１５０３）。ここでは、幅の所定割合の位置（本実施の形態では２／３の位置）をｘ座標として決定している。また、ＣＰＵ１２は、印を表示すべきｙ座標を算出する（ステップ１５０４）。ここでは、表示画面の高さの最上部をピッチの最大値（ｉＵｐｐｅｒＮＮ）に対応させ、最下部をピッチの最小値（ｉＬｏｗｅｒＮＮ）に対応させている。その後、算出されたｘ座標およびｙ座標で特定される位置に、所定の印が描画される（ステップ１５０５）。
【００５６】
図１６は、表示画像の例を示す図である。この例では、表示画面において、ピッチ表示の領域（符号１６０１）を設け、そこに、楽譜の本来の音高に対応する印（たとえば、符号１６０２）参照およびユーザの音声から抽出されたピッチを示す印（符号１６０３参照）が表示されている。なお、ここで、ピッチ表示領域１６０１の最上部は抽出するピッチの最高音（ピッチ＝７５；Ｅ♭５）であり、最下部は抽出するピッチの最低音（ピッチ
５６：Ａ♭３）となっている。また、画面のＸ方向２／３の位置が演奏タイミングであり、さらに、その前方（Ｘ方向左側）に先行表示タイミングが設けられる。
【００５７】
このように、本実施の形態においては、ユーザが楽曲を再生させつつ、マイクを通して歌を歌うと、表示画面において、楽音の音高の印とともに自分の歌った音声のピッチを示す印を見ることができる。本実施の形態によれば、楽曲データに基づく音高と、自分が歌った歌唱のピッチの変化とがグラフィカルに表示されるため、歌唱における得意な箇所や苦手な箇所が直感的にわかり、歌のトレーニングを効果的に進めることができる。また、ユーザは楽譜を持たなくても、画面を参照することで、遊び感覚で歌唱のトレーニングを進めることが可能となる。
【００５８】
本発明は、上記実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態においては、図１５に示すように、音の長さを反映せず等間隔で楽曲の音高を示す印が表示されているがこれに限定されるものではなく、楽曲を構成するノートの音の長さに比例させた間隔で、音高を示す印を表示させてもよい。
【００５９】
また、抽出されたピッチを示す印を不連続な点として表した（図１５の符号１６０３参照）。しかしながら、これに限定されず、隣接する印を結ぶことで連続した変化を表してもよい。
また、本実施の形態では楽曲データ中の現在位置の座標を固定させて表示しているがこれに限定されるものではなく、現在位置がＸ方向右側に移動するように構成してもよい。この場合には、現在位置のＸ座標を表すポインタが、表示領域中の右端に進んだときに画面全体を書き換えればよい。
【００６０】
また、ノートオフ処理（図１１）およびピッチ表示処理（図１５参照）を組み合わせて処理してもよい。図１７は、ノートオフ処理とピッチ表示処理とが組み合わされたフローチャートである。ここで、ステップ１７０１〜１７１０は図１１の処理と同様である。その後、判定対象となる楽音のゲートタイムＩＧａｔｅの実時間が求められる（ステップ１７１１）。次いで、求められた実時間のフレームが特定される（ステップ１７１２）。その後、表示領域中の表示すべきｘ座標が算出され（ステップ１７１３）、算出されたｘ座標および音高に対応するｙ座標の位置に、抽出されたピッチを示す印が付加される（ステップ１７１４）。その後、ノートポインタｐがインクリメントされ（ステップ１７１５）、ステップ１７０２に戻る。
【００６１】
さらに、前記実施の形態の表示（図１５参照）に加え、ピッチ比較結果を表示するように構成してもよい。たとえば、図１８の例では、ユーザの歌唱のピッチが、実際の音高より高い場合（符号１８０１）、低い場合（符号１８０２）、或いは、正しい場合（符号１８０３）のそれぞれについて、特有の符号を付与してもよい。無論、この符号は、矢印などに限定されず、丸印、バツ印であってもよいし、より漫画化した印（たとえば、風船の絵／風船が割れている絵、笑顔／泣き顔）であってもよい。
【００６２】
次に、本発明の第２の実施の形態について説明する。第２の実施の形態では、対象者、つまり、歌唱するユーザの属性（子供、大人女性、大人男性）の指定に基づいて、それぞれ音域変数を設定することにより、より正確なピッチ抽出を可能としている。また、ユーザが発するべき音高をガイド音として出すことにより、歌のトレーニングをより効果的に行うことができ、或いは、ガイド音を出さないこと、つまりミューとすることにより、楽譜の譜読みのトレーニングを行うことも可能となっている。
【００６３】
さらに、難易度を指定して、歌唱するユーザに応じて、難易度にしたがった判定を実現している。たとえば、初心者や子供には、比較的やさしく、熟練者や大人には厳しい判定を提示することが可能となる。
【００６４】
第２の実施の形態におけるハードウェア構成、機能ブロックダイヤグラム、メインフロー等は、先に説明した第１の実施の形態のものと同様であるため、ここでは、追加された処理フローのみを説明する。
【００６５】
図１９は、対象者指定処理を示すフローチャートである。ユーザは、あらかじめ入力装置を操作して、ユーザ属性として、「子供」、「大人女性」或いは「大人男性」のいずれかを指定しておく。これに応答して、ＣＰＵ１２は、ユーザ属性ｉＶＲａｎｇｅとしてＲＡＭ１６に記憶しておく。対象者指定処理において、ＣＰＵ１２は、抽出するピッチの最低音ｉＬｏｗｅｒＮＮおよび最高音ｉＵｐｐｅｒＮＮの初期値を、それぞれ設定する（ステップ１９０１）。
【００６６】
ＣＰＵ１２は、指定されたユーザ属性を参照して、以下のように、最低音および最高音を設定する（ステップ１９０２〜ステップ１９０６）。
子供：最低音＝５８、最高音＝７９
大人女性：最低音＝５５、最高音＝７９
大人男性：最低音＝４３、最高音＝６７
ユーザによるユーザ属性の指定がない場合には、初期値が維持される。
【００６７】
このように、ユーザ属性により、最低音および最高音の範囲を決めることにより、より正確でかつ高速なピッチ抽出が可能となる。
【００６８】
次に、第２の実施の形態にかかるガイド音の発音について説明する。図２０は第２の実施の形態にかかるノートオン処理を示すフローチャートである。この処理は、図１０のノートオン処理に、部分的に処理ステップが加えられたものであり、ステップ２００１〜２００３は、図１０のステップ１００１〜１００３に対応し、ステップ２００７〜２０１３は、図１０のステップ１００４〜１０１０に対応する。したがって、以下に加えられた処理ステップのみについて説明する。また、ユーザは、あらかじめ入力装置を操作して、ガイド音の出力の有無を指定しておく。これに応答して、ＣＰＵ１２は、ガイド音出力の有無を示す変数ｉＧｕｉｄｅＮｏｔｅの値（「１」：ガイド音あり、「０」：ガイド音なし）をＲＡＭ１６に記憶しておく。
【００６９】
ＣＰＵ１２は、楽音データ中のＮｏｔｅ［ｐ］を発音すべきタイミングである場合（ステップ２００３でイエス(Yes)）、当該Ｎｏｔｅ［ｐ］のベロシティＶｅｌを最低値「１」に設定しておく（ステップ２００４）。次いで、ｉＧｕｉｄｅＮｏｔｅの値を調べ、その値が「１」、つまり、ガイド音を出力すべき場合には（ステップ２００５でイエス(Yes)）、Ｎｏｔｅ［ｐ］のベロシティＶｅｌを所定の値ＧＶＥＬに設定する（ステップ２００６）。これにより、ガイド音なしの指定の場合、ユーザが歌うべき音が出力されず（つまりミュートされ）、その一方、ガイド音ありの指定の場合、ユーザが歌うべき音が所定の音量で出力される。
【００７０】
次に、第２の実施の形態にかかる比較判定処理について、図２１を参照して説明する。この比較判定処理は、第１の実施の形態にかかる比較判定処理（図９）に、ユーザが入力した音声の入力波形のレベルが所定値に達しなかったときに、これをカウントするように構成され、そのための処理ステップが付加されている。図２１において、ステップ２１０１〜２１０３は、図９のステップ９０１〜９０３に対応し、ステップ２１０７〜２１１３は、図９のステップ９０４〜９１０に対応する。したがって付加された処理ステップについてのみ説明する。
【００７１】
ＣＰＵ１２は、楽音データＮｏｔｅ［］中のピッチ比較結果として、カウンタｉＡｌｌＣｎｔおよびｉＮｏＩｎｐｕｔＣｎｔを設けている。発音中のデータであるとき（ステップ２１０３でイエス(Yes)）、ＣＰＵ１２は、Ｎｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］のカウンタｉＡｌｌＣｎｔをインクリメントする（ステップ２１０５）。また、入力なし、つまり、ユーザ入力にかかる音声の波形のレベルが所定値に達していない場合には（ステップ２１０６でイエス(Yes)）、Ｎｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］のカウンタｉＮｏＩｎｐｕｔＣｎｔをインクリメントする。これにより、楽音ごとに入力の総数（ｉＡｌｌＣｎｔ中の最終的なカウンタ値）と、音声入力がなかったときの総数（ｉＮｏＩｎｐｕｔＣｎｔの最終的なカウンタ値）とを知ることができる。
【００７２】
次に、第２の実施の形態にかかるノートオフ処理について、図２１を参照して説明する。ここでは、ユーザ入力により設定され、或いは、前述したユーザ属性に応じて設定された難易度ｉＤｆｆに対応する閾値を利用して、難易度に応じた正率判定が可能となる。
【００７３】
ＣＰＵ１２は、発音中バッファＯｎＢｕｆ［ｐ］中、ピッチ比較結果ｉＭａｔｃｈＣｎｔ、ｉＵｐＣｎｔ、ｉＤｏｗｎＣｎｔおよびｉＮｏＩｎｐｕｔＣｎｔのうち最大のものを見つける（ステップ２２０３）。ｉＭａｔｃｈＣｎｔ以外が最大であった場合（ステップ２２０４でノー(No)）、発音中の楽音に対応する楽音データＮｏｔｅ［ＯｎＢｕｆ［ｐ］．ｉＮｐ］の判定結果ｓＭａｔｃｈとして、ｉＵｐＣｎｔ、ｉＤｏｗｎＣｎｔ、ｉＮｏＩｎｐｕｔＣｎｔのうち、最大の値をとったものに対応する結果（ＵＰＰＩＴ、ＤＯＷＮＰＩＴ、ＮＧの何れか）が記憶される（ステップ２２０５）。
【００７４】
ステップ２２０６でイエス(Yes)と判断された場合、全ての判定回数ｉＡｌｌＣｎｔにおいて、正しく歌えた回数ｉＭａｔｃｈＣｎｔの割合ｒが求められる（ステップ２２０６）。次いで、ＣＰＵ１２は、難易度ｉＤｉｆｆに応じて設定された閾値ｉＣＲａｔｅ［ｉＤｉｆｆ］と上記ｒとを比較し、ｒが大きい場合には（ステップ２２０７でイエス(Yes)）、判定結果ｓＭａｔｃｈとして正解（ＣＯＲＲＥＣＴ）を記憶し（ステップ２２０８）、それ以外の場合には、ｓＭａｔｃｈとしてＮＧを記憶する（ステップ２２０９）。これにより、難易度にしたがって、正解（ＣＯＲＲＥＣＴ）となる程度を変化させることが可能となる。したがって、難易度を設定しておくことで、初心者から上級者まで種々のレベルのトレーニングを実現することが可能となる。
【００７５】
また、第２の実施の形態において、図２３に示すように、楽譜上にピッチ比較判定の結果を表示するように構成しても良い。ここでは、歌えなかった音符には「バツ印」を、上ずった部分の音符には上向きの矢印を、下がった（フラットした）部分の音符には下向きの矢印を付している。また、正しく歌えた音符には「丸印」を付している。このような表示にすることで、ユーザの苦手或いは得意な場所が、楽譜上速やかにわかるので、独習にも好適であり、また、生徒と教師とがいっしょにレッスンする場合にも適切な指導のための資料とすることができる。
【００７６】
なお、前記第１の実施の形態および第２の実施の形態においては、ユーザの歌唱をガイドする装置に本発明を適用したが、入力される音声は声に限定されず、楽器から発せられマイクにより取得されるものであっても良い。また、電子ギターのように当初から電気信号が出力される場合であっても本発明を適用できることはいうまでもない。
【図面の簡単な説明】
【００７７】
【図１】図１は、本発明の第１の実施の形態にかかる歌唱ガイド装置のハードウェア構成を示すブロックダイヤグラムである。
【図２】図２は、ＣＰＵおよびその周辺部材の機能ブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる楽曲データを説明する図である。
【図４】図４は、本実施の形態にかかる歌唱ガイド装置のメインフローを示すフローチャートである。
【図５】図５は、本実施の形態において使用される制御用の変数を説明するための図である。
【図６】図６は、本実施の形態にかかる再生ルーチンを示すフローチャートである。
【図７】図７は、本実施の形態にかかる音声入力ルーチンを示すフローチャートである。
【図８】図８は、本実施の形態にかかる周波数同定処理を示すフローチャートである。
【図９】図９は、本実施の形態にかかる比較判定処理を示すフローチャートである。
【図１０】図１０は、本実施の形態にかかるノートオン処理を示すフローチャートである。
【図１１】図１１は、本実施の形態にかかるノートオフ処理を示すフローチャートである。
【図１２】図１２は、本実施の形態にかかる採点処理を示すフローチャートである。
【図１３】図１３は、本実施の形態にかかるスクロール表示初期化処理を示すフローチャートである。
【図１４】図１４は、本実施の形態にかかるスクロール表示処理を示すフローチャートである。
【図１５】図１５は、本実施の形態にかかるピッチ表示処理を示すフローチャートである。
【図１６】図１６は、本実施の形態において表示装置の画面上に表示された画像例を示す図である。
【図１７】図１７は、本実施の形態にかかるノートオフ処理の他の例を示すフローチャートである。
【図１８】図１８は、本実施の形態において表示装置の画面上に表示された画像例を示す図である。
【図１９】図１９は、第２の実施の形態にかかる対象者指定処理を示すフローチャートである。
【図２０】図２０は、第２の実施の形態にかかるノートオン処理を示すフローチャートである。
【図２１】図２１は、第２の実施の形態にかかる比較判定処理を示すフローチャートである。
【図２２】図１２は、第２の実施の形態にかかるノートオフ処理を示すフローチャートである。
【図２３】図２３は、本実施の形態において表示装置の画面上に表示された画像例を示す図である。
【符号の説明】
【００７８】
１０    歌唱ガイド装置
１２    ＣＰＵ
１４    ＲＯＭ
１６    ＲＡＭ
１８    入力装置
２０    表示装置
２２    ＭＩＤＩ  Ｉ／Ｆ
２４    ＡＤＣ
３０    再生制御部
３２    ピッチ抽出部
３４    比較判定部
３６    楽譜表示制御部
３８    スクロール表示制御部
【図１】
2005128372.tif 000003
【図２】
2005128372.tif 000004
【図３】
2005128372.tif 000005
【図４】
2005128372.tif 000006
【図５】
2005128372.tif 000007
【図６】
2005128372.tif 000008
【図７】
2005128372.tif 000009
【図８】
2005128372.tif 000010
【図９】
2005128372.tif 000011
【図１０】
2005128372.tif 000012
【図１１】
2005128372.tif 000013
【図１２】
2005128372.tif 000014
【図１３】
2005128372.tif 000015
【図１４】
2005128372.tif 000016
【図１５】
2005128372.tif 000017
【図１６】
2005128372.tif 000018
【図１７】
2005128372.tif 000019
【図１８】
2005128372.tif 000020
【図１９】
2005128372.tif 000021
【図２０】
2005128372.tif 000022
【図２１】
2005128372.tif 000023
【図２２】
2005128372.tif 000024
【図２３】
2005128372.tif 000025