(57)【要約】【課題】 膨大な数の評価値を記憶するためのメモリや、曲が終了した後に膨大な数の評価値の平均を算出する演算処理を必要とすることなく、迅速且つ正確に歌唱力をローコストで評価する。【解決手段】ＣＰＵ１は、評価すべき歌唱力が１００点となる基準値の許容範囲を規定するパラメータｔ、および、１００点から０点の範囲で許容範囲外の歌唱力の度合いを規定するパラメータａを設定して、入力される音声信号の評価値をパラメータｔおよびパラメータａに基づいて算出する。【選択図】 図１
2010134475.tif 000002
【特許請求の範囲】
【請求項１】
評価すべき歌唱力が最大評価値となる基準値の許容範囲を規定する第１のパラメータおよび最大評価値から最低評価値の範囲で許容範囲外の歌唱力の度合いを規定する第２のパラメータを設定するパラメータ設定手段と、
入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析する信号分析手段と、
前記信号分析手段によって分析されたエラー数が１フレームの２分の１を超えたときは当該フレームを最低評価値とし、分析されたエラー数が１フレームの２分の１を超えないときは１フレームの２分の１に相当するエラー以外のサンプル数によって当該フレームの評価値を前記パラメータ設定手段によって設定された第１のパラメータおよび第２のパラメータに基づいて算出する評価演算手段と、
を備えた歌唱採点装置。
【請求項２】
前記信号分析手段は、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、
前記評価演算手段は、前記信号分析手段によって検出された基音のピッチの評価値を算出することを特徴とする請求項１に記載の歌唱採点装置。
【請求項３】
前記信号分析手段は、入力される音声信号の周波数成分から位相を算出し、当該算出した位相を用いて当該音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出することを特徴とする請求項２に記載の歌唱採点装置。
【請求項４】
評価すべき歌唱力が最大評価値となる基準値の許容範囲を規定する第１のパラメータおよび最大評価値から最低評価値の範囲で許容範囲外の歌唱力の度合いを規定する第２のパラメータを設定するステップＡと、
入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析するステップＢと、
前記ステップＢによって分析されたエラー数が１フレームの２分の１を超えたときは当該フレームを最低評価値とし、分析されたエラー数が１フレームの２分の１を超えないときは１フレームの２分の１に相当するエラー以外のサンプル数によって当該フレームの評価値を前記ステップＡによって設定された第１のパラメータおよび第２のパラメータに基づいて算出するステップＣと、
をコンピュータに実行させる歌唱採点処理のプログラム。
【請求項５】
前記ステップＢは、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、前記ステップＣは、前記ステップＢによって検出された基音のピッチの評価値を算出することを特徴とする請求項４に記載の歌唱採点処理のプログラム。
【請求項６】
前記ステップＢは、入力される音声信号の周波数成分から位相を算出し、当該算出した位相を用いて当該音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出することを特徴とする請求項５に記載の歌唱採点処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力される音声信号の歌唱力を採点する歌唱採点装置および歌唱採点処理のプログラムに関するものである。
【背景技術】
【０００２】
入力される音声信号の歌唱力を採点する装置として、カラオケ採点装置が知られている。
例えば、ある特許文献のカラオケ採点装置は、ＭＩＤＩメッセージで与えられたメロディ情報に対する歌唱者の歌い方を評価するために、第１の検出手段が歌唱者の音声に基づいてそのピッチデータおよびレベルデータを検出し、第２の検出手段がＭＩＤＩメッセージの中の歌唱者の発音すべき歌唱メロディに対応するノートオン／オフデータ、ピッチデータおよびレベルデータを検出する。そして、それぞれ検出されたピッチデータおよびレベルデータを個々にピッチ比較手段およびレベル比較手段で比較し、その比較結果とノートオン／オフデータとに基づいて、歌唱法の評価のためのデータを作成する。（特許文献１参照）
また、別の特許文献のカラオケ採点装置は、模範となる音声とマイクから入力される歌唱者の音声との近似度を、より精度よく自動的に判定するために、この特許文献における図１の構成に示されているように、レーザディスク１０１において再生された模範歌唱の音声信号は、レベル検出部Ａ１０３およびピッチ検出部Ａ１０４に供給され、レベル検出部Ａ１０３において検出された信号レベルデータおよびピッチ検出部Ａ１０４において検出されたピッチデータがバッファＡ１０２に格納される。また、利用者の音声はマイク２０１から入力されて、音声信号がレベル検出部Ｂ２０３およびピッチ検出部Ｂ２０４に供給され、レベル検出部Ｂ２０３において検出された信号レベルデータおよびピッチ検出部Ｂ２０４において検出されたピッチデータはバッファＢ２０２に格納される。そして、比較判定部３００は、それぞれの系統において格納されたデータを読み出し、レベル信号から歌うタイミングを、ピッチデータからピッチずれの判定を行い、比較結果を採点データとして出力する。（特許文献２参照）
【０００３】
一方、マイクなどから入力された音声信号を分析する際に、デジタル信号に変換した時間領域の音声信号を高速フーリエ変換（ＦＦＴ）などによって周波数領域のスペクトル信号に変換して、変換したスペクトル信号を分析することが従来行われている。
例えば、ある特許文献の音声変換装置は、簡単な位相制御処理により高品質にピッチ周波数を変換して音声信号を分析するために、デジタル変換された第１の音声信号を受け、フーリエ変換によりスペクトル信号に変換するフーリエ変換手段と、フーリエ変換手段からスペクトル信号を受け、スペクトル信号の中から音源情報信号を選択的に出力する選択手段と、選択手段から音源情報信号を受け、音源情報信号のピッチ周波数を変換し、周波数変換された信号を出力する周波数変換手段と、フーリエ変換手段からのスペクトル信号に含まれるスペクトル包絡信号と周波数変換手段から出力された信号とに応答して、ピッチ周波数が変換されたスペクトル信号を分析フレーム毎に受け、これを逆フーリエ変換により第２の音声信号に変換する逆フーリエ変換手段と、逆フーリエ変換手段から第２の音声信号を受け、ピッチ周波数の変換倍率に応答して、第２の音声信号の位相を分析フレームのシフト幅によって制御する位相制御手段を含む構成になっている。（特許文献３参照）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−４９１８３号公報
【特許文献２】特開平１１−２２４０９４号公報
【特許文献３】特許第２７５３７１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１および特許文献２においては、基準値（メロディ情報、模範となる音声）と入力される歌唱者の音声とを単純に比較して歌唱力を評価しているので、曲の開始から終了までの間で評価値が細かく変動することになり、膨大な数の評価値を一時的に記憶するメモリが必要となるためコストアップを招くとともに、曲の途中や曲が終了した後に膨大な数の評価値の平均を算出する演算処理、特に除算処理のためにＣＰＵ等の制御手段に大きな負荷がかかるという課題があった。
また、上記特許文献１および特許文献２においては、上級の歌唱者がビブラート唱法によってピッチに揺らぎが発生した場合には、それをピッチずれと誤って判断して歌唱力を低く評価するという課題があった。
また、上記特許文献１および特許文献２においては、入力される音声信号のピッチおよびレベルを２系統の比較手段によって比較し、ピッチずれおよび発音タイミングずれを検出して歌唱力を評価しているので、装置が複雑な構成になるという課題があった。
一方、上記特許文献３においては、フーリエ変換したスペクトル信号の中から音源情報信号、すなわち、基本周波数の音である基音のピッチを直接的に検出して選択するようになっているが、基音のレベルよりも倍音のレベルのほうが高い場合があるので、マイクから入力される音声信号の基音のピッチを確実に検出することができないという課題があった。
【０００６】
また、本発明は、入力される歌唱者の音声信号の基音のピッチを確実に検出し、且つ上級の歌唱者がビブラート唱法によってピッチに揺らぎが発生した場合でも、正当に歌唱力を評価することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に記載の歌唱採点装置は、評価すべき歌唱力が最大評価値となる基準値の許容範囲を規定する第１のパラメータおよび最大評価値から最低評価値の範囲で許容範囲外の歌唱力の度合いを規定する第２のパラメータを設定するパラメータ設定手段と、入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析する信号分析手段と、前記信号分析手段によって分析されたエラー数が１フレームの２分の１を超えたときは当該フレームを最低評価値とし、分析されたエラー数が１フレームの２分の１を超えないときは１フレームの２分の１に相当するエラー以外のサンプル数によって当該フレームの評価値を前記パラメータ設定手段によって設定された第１のパラメータおよび第２のパラメータに基づいて算出する評価演算手段と、を備えた構成になっている。
【０００８】
請求項１の歌唱採点装置において、請求項２に記載したように、信号分析手段は、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、評価演算手段は、信号分析手段によって検出された基音のピッチの評価値を算出するような構成にしてもよい。
【０００９】
請求項２の歌唱採点装置において、請求項３に記載したように、信号分析手段は、入力される音声信号の周波数成分から位相を算出し、当該算出した位相を用いて当該音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出するような構成にしてもよい。
【００１０】
請求項４に記載の歌唱採点処理のプログラムは、評価すべき歌唱力が最大評価値となる基準値の許容範囲を規定する第１のパラメータおよび最大評価値から最低評価値の範囲で許容範囲外の歌唱力の度合いを規定する第２のパラメータを設定するステップＡと、入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析するステップＢと、前記ステップＢによって分析されたエラー数が１フレームの２分の１を超えたときは当該フレームを最低評価値とし、分析されたエラー数が１フレームの２分の１を超えないときは１フレームの２分の１に相当するエラー以外のサンプル数によって当該フレームの評価値を前記ステップＡによって設定された第１のパラメータおよび第２のパラメータに基づいて算出するステップＣと、をコンピュータに実行させる構成になっている。
【００１１】
請求項４の歌唱採点処理のプログラムにおいて、請求項５に記載したように、ステップＢは、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、前記ステップＣは、前記ステップＢによって検出された基音のピッチの評価値を算出するような構成にしてもよい。
【００１２】
請求項５の歌唱採点処理のプログラムにおいて、請求項６に記載したように、ステップＢは、入力される音声信号の周波数成分から位相を算出し、当該算出した位相を用いて当該音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出するような構成にしてもよい。
【発明の効果】
【００１３】
本発明によれば、入力される歌唱者の音声信号の基音のピッチを確実に検出し、且つ上級の歌唱者がビブラート唱法によってピッチに揺らぎが発生した場合でも、正当に歌唱力を評価するという効果が得られる。
【図面の簡単な説明】
【００１４】
【図１】本発明の歌唱採点装置を適用した実施形態におけるカラオケ装置の構成を示すブロック図。
【図２】図１のＣＰＵの信号処理機能をハードウェアとして表した機能構成図。
【図３】歌唱採点処理のために図１のＣＰＵ内部のカウンタの構成を示す図。
【図４】ＣＰＵのメインルーチンのフローチャート。
【図５】図４のメインルーチンにおけるスイッチ処理のフローチャート。
【図６】ＣＰＵのタイマインタラプトのフローチャート。
【図７】図４のメインルーチンにおけるカラオケ処理のフローチャート。
【図８】図７におけるピッチ差分算出処理のフローチャート。
【図９】図８におけるピッチ比算出処理のフローチャート。
【図１０】図９における位相補償処理のフローチャート。
【図１１】図７における差分平均算出処理のフローチャート。
【図１２】図７における区間得点算出処理のフローチャート。
【図１３】初級、中級、上級の各レベルにおけるパラメータの具体例を示す図。
【図１４】区間得点の演算式の特性を示す図。
【図１５】区間得点およびピッチずれを表示する画面を示す図。
【図１６】入力される音声信号の発声区間と評価対象の歌唱区間との関係を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明の歌唱採点装置の実施の形態について、カラオケ装置を例に採って、図面を参照しながら詳細に説明する。
図１は、実施の形態におけるカラオケ装置の構成図である。図１において、ＣＰＵ１は、装置全体の制御を行うとともに、少容量のＲＯＭ・ＲＡＭおよびＤＳＰ（デジタル信号プロセッサ）機能を有する。ＣＰＵ１のシステムバスには、曲メモリ２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、表示部６、Ａ／Ｄ変換器８、及び楽音生成部９が相互に接続され、ＣＰＵ１と各部との間でデータやコマンドの授受を行う。
【００１６】
曲メモリ２は、カラオケ用の複数の伴奏曲および歌詞を記憶している。スイッチ部３は、曲セレクトスイッチ、スタート／ストップスイッチ、およびその他の各種スイッチを備えている。ＲＯＭ４は、ＣＰＵ１が実行する歌唱採点処理のプログラムや各種制御用データ等を格納している。ＲＡＭ５は、ＣＰＵ１のワークエリアであり、各種のレジスタを有する。表示部６は、例えば液晶表示装置（ＬＣＤ）や複数のＬＥＤなどを備えている。Ａ／Ｄ変換器８には無線又は有線によってマイク７が接続され、マイク７から入力されるアナログの音声信号のＡ／Ｄ変換を行いその音声データを出力する。例えば、サンプリング周波数８０２１Ｈｚ、１６ｂｉｔでＡＤ変換を行う。以降、それがＡＤ変換して得られる音声データについては便宜的に「元音声データ」、或いは「元波形データ」と呼び、マイク７に入力された音声については「元音声」と呼ぶことにする。楽音生成部９は、ＣＰＵ１の指示に従い楽音発音用の波形データを生成する。Ｄ／Ａ変換器１０は、楽音生成部９が生成した波形データのＤ／Ａ変換を行い、アナログのオーディオ信号を出力する。サウンドシステム１１は、そのオーディオ信号を放音する。
【００１７】
図２は、図１のマイク７からＡ／Ｄ変換器８に入力された音声信号に対して、ＣＰＵ１の信号処理が行われて、Ｄ／Ａ変換器１０から出力されるまでの機能をハードウェアとして表した機能構成図である。図２において、入力バッファ２１は、Ａ／Ｄ変換器８が出力する元音声データを一時的に格納するバッファである。フレーム抽出部２２は、入力バッファ２１に格納された元音声データから予め定められたサイズ分の音声データであるフレームを切り出すことで抽出する。そのサイズ、つまり音声データ（サンプル）数は例えば２５６である。正確な位相展開の実施にはフレームをオーバーラップさせて抽出する必要があることから、フレームの切り出しはオーバーラップファクタＯＶＬでオーバーラップさせて行う。そのファクタＯＶＬの値としては４を設定している。この場合、ホップサイズは６４（２５６／６４＝４）である。また、元音声データのピッチ（以降「元ピッチ」と呼ぶ）から目標ピッチへのピッチスケーリング値の範囲は０．５〜２．０の範囲を前提としている。
【００１８】
フレーム抽出部２２が抽出したフレームは、ローパスフィルタ（ＬＰＦ）２３に出力される。そのＬＰＦ２３は、ピッチのシフトにより周波数成分がナイキスト周波数を超えることを防止するために高周波成分の除去を行う。ＦＦＴ部２４は、ＬＰＦ２３が出力するフレームを対象に高速フーリエ変換（ＦＦＴ）を実行する。そのＦＦＴは、ＦＦＴサイズ（点数）をフレームサイズの２倍（２５６×２＝５１２）にして実行する。
【００１９】
位相補償部２５は、ＦＦＴの実行により得られた各周波数チャンネルの周波数成分を対象にして、ピッチシフトによるフレームの伸縮を補償するようにそのサイズを伸縮させる。例えばピッチスケーリング値が前提とする範囲の最大値である２とすれば、ピッチシフトによりフレームサイズは１／２に縮小するから、そのサイズを補償（維持）するためにフレームを２倍に引き伸ばす。このことから、ＦＦＴサイズはフレームサイズの２倍としている。ピッチスケーリング値の算出方法についての詳細は後述する。
【００２０】
ＦＦＴ部２４は、ＬＰＦ２３から２５６サンプルのフレームを入力し、ＦＦＴサイズのフレームの前半部分にセットする。後半部分には全て０をセットする。後半部分に０をセットするのは、ＦＦＴを実行した後、周波数領域における補間効果をもたらすためである。その補間効果をもたらすために周波数の分解能が向上する。ＦＦＴ部２４は、そのようなセットを行ったフレームを対象にＦＦＴを実行する。
【００２１】
ＩＦＦＴ部２６は、位相補償部２５がサイズを伸縮させた後の各周波数チャンネルの周波数成分を、ＩＦＦＴ（逆ＦＦＴ）を行うことにより時間領域上のデータに戻し、１フレーム分の音声データを生成して出力する。ピッチシフタ２７は、位相補償部２５から入力するピッチスケーリング値に応じて、ＩＦＦＴ部２６が生成したフレームに対する補間、或いは間引きを行い、そのピッチをシフトする。補間、間引きには一般的なラグランジュ関数やｓｉｎｃ関数などが使用できるが、本実施の形態ではＮｅｖｉｌｌｅ補間によりピッチシフト（ピッチスケーリング）を行っている。上記補間、或いは間引きにより、フレームサイズは元のサイズ（２５６サンプル）となる。そのフレームの音声データについては以降「合成音声データ」と呼び、それによって発音される音声を「合成音声」と呼ぶことにする。
【００２２】
出力バッファ２９は、音声としてサウンドシステム１１から放音させる合成音声データを格納するバッファである。フレーム加算部２８は、ピッチシフタ２７から入力した１フレーム分の合成音声データを、出力バッファ２９に格納された合成音声データにオーバーラップファクタＯＶＬでオーバーラップさせて加算する。出力バッファ２９に格納された合成音声データは、Ｄ／Ａ変換器１０に出力されてＤ／Ａ変換される。
【００２３】
上記入力バッファ２１、及び出力バッファ２９は、例えばＲＡＭ５に確保された領域である。Ａ／Ｄ変換器８、Ｄ／Ａ変換器１０、入力バッファ２１、及び出力バッファ２９を除く各部２２〜２８は、例えばＲＡＭ５をワーク用にして、ＣＰＵ１がＲＯＭ４に格納されたプログラムを実行することで実現される。特に詳細な説明は省略するが、目標ピッチは例えば鍵盤２への操作により指示するようになっている。その目標ピッチは、スタンダードＭＩＤＩファイル等の演奏データ、或いは通信ネットワークを介して受信されるデータなどにより指定してもよい。
【００２４】
次に、上記位相補償部２５によるピッチスケーリング値の算出方法について詳細に説明する。以降、そのスケーリング値はρと表記する。
ＦＦＴの実行により、周波数が異なる周波数チャンネル毎に、実数成分と虚数成分を持つ周波数成分が抽出される。実数成分をｒｅａｌ、虚数成分をｉｍｇと表記すると、各周波数チャンネルの周波数振幅ｍａｇ、及び位相ｐｈａｓｅは以下のように算出することができる。
【００２５】
ｍａｇ＝（ｒｅａｌ2＋ｉｍｇ2）1/2 ・・・ （１）
ｐｈａｓｅ＝ａｒｃｔａｎ（ｉｍｇ／ｒｅａｌ） ・・・ （２）
ａｒｃｔａｎを用いて算出される位相ｐｈａｓｅは、−π〜πの間に制限される。しかし、位相ｐｈａｓｅは角速度の積分値であるから展開する必要がある。展開の有無の区別を容易にするために、折り畳まれている位相を小文字のθ、展開されている位相を大文字のΘで表記すると、本来は
Θk,t＝θk,t＋２ｎπ       ｎ＝０，１，２，・・・ ・・・ （３）
となる。このことから、位相ｐｈａｓｅ（＝θ）はｎを求めて展開する必要がある。ここで式（３）中のΘに下添字として付したｋ、ｔはそれぞれ、周波数チャンネルのインデクス、時刻を表している。
【００２６】
その展開は、以下のような手順で行うことができる。
先ず、フレーム間の位相差Δθを次のようにして算出する。
Δθi,k＝θｉ,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・Δｔは、式（５）、（７）より下記のように変形できる。
【００３０】
Ωi,k・Δｔ＝｛（２π・ｆｓ）／Ｎ｝・ｋ・｛Ｎ／（ｆｓ・ＯＶＬ）｝
＝（２π／ＯＶＬ）・ｋ ・・・ （１１）
ＦＦＴを含む離散フーリエ変換（ＤＦＴ）では、音声データ（信号）に含まれる周波数成分の周波数がＤＦＴ点数の整数倍となる特別な場合を除き、すべての周波数チャンネルに周波数成分が漏れ出して（遷移して）しまう。そのため、信号の調波構造等を分析する場合は、ＤＦＴの結果から実際に周波数成分が存在する周波数チャンネルを検出する作業が必要になる。
【００３１】
その検出には、周波数振幅のピークを検出し、そのピークを周波数成分の存在するチャンネルと見なす方法を採用するのが一般的である。そのための最も手順が単純な方法としては、前後２つのチャンネルの周波数振幅より大きい周波数振幅を持つチャンネルをピークとして見なすというものが挙げられる。しかし、そのような方法では、窓関数のサイドローブによるピークを間違ってピークと認識する場合がある。このため、探し出したピーク間のチャンネルで周波数振幅が最小となるチャンネルを抽出し、その周波数振幅がピークの周波数振幅の所定値（例えばピークの周波数振幅の−１４ｄｂ）以下であれば正しいピークと見なすことも行われている。
【００３２】
そのようなピーク検出ではピークをより高精度に検出できるが、２段階の探索が必要で処理的に煩雑である。このことから、本実施の形態では、処理の負荷を軽減するために、ピーク検出は行わず、以下のように位相を考慮して、元音声の倍音の周波数成分が存在する周波数チャンネルを検出する。
【００３３】
展開した位相差と周波数の関係は直線のグラフで表される。この場合において、グラフの縦軸は位相差、横軸は周波数であり、各チャンネルの中心周波数から計算される位相差、すなわち式（６）により計算されるΔＺi,kが直線で表される。その直線に沿う形でプロットした線は、調波構造を持った音声、すなわち有声音の式（１０）により計算される位相差ΔΘi,kを表すことになる。その位相差ΔΘi,kはＦＦＴ点数５１２点の前半１２８点分である。
【００３４】
調波構造を持った音声では、その音声の倍音の周波数成分を持つ周波数チャンネル付近で線が階段状（平坦）となる。これは、その周波数チャンネルの周波数成分が近傍のチャンネルに漏れ出すためである。このようなことから、線の階段状となっている部分と直線が交差する個所を含む周波数チャンネルに倍音の周波数成分が存在していると考えられる。その交差する個所の周波数チャンネル（以下「倍音チャンネル」と呼ぶ）は、式（１０）と式（６）から算出することができるが、処理的には多少煩雑となる。そこで本実施の形態では、式（９）の実位相差δを使って倍音チャンネルの検出を行う。
【００３５】
上述したように、実位相差δは式（４）のΔθi,kと式（８）のΔζi,kとの差である。このδは実際に周波数成分が存在するチャンネルから離れるほど大きくなり、そのチャンネルに近づくほど小さくなる。チャンネルを超える際に０と交差し、周波数が大きくなる方向に越えた場合には、そのチャンネルを離れるにしたがって負側に絶対値が大きくなっていく。
【００３６】
実位相差δがゼロクロスする点を検出することにより、倍音チャンネルを探し出すことができる。隣接する倍音同士が交錯する部分でも正から負へのゼロクロスが発生する。このことから、本実施の形態では、下記の条件（以降「ゼロクロス判定条件」と呼ぶ）に合致するインデクスｋの周波数チャンネルを倍音の周波数成分が存在する倍音チャンネルとして採用する。インデクスｋの周波数チャンネルはゼロクロス点に最も近い周波数チャンネルである。
δ［ｋ−２］＞δ［ｋ−１］＞δ［ｋ］＞δ［ｋ＋１］＞δ［ｋ＋２］
このようなゼロクロス判定条件を満たす周波数チャンネルｋを探すことにより、正から負に大きくゼロクロスする点に最も近い周波数チャンネルを倍音チャンネルとして高精度に抽出することができる。その抽出は、ＦＦＴ点数が十分でなく、周波数振幅による倍音チャンネルの抽出が困難であっても確実に行うことができる。より高精度な抽出を行う必要がある場合には、ピーク検出を併せて行うようにしてもよい。
【００３７】
本実施の形態では、この判定条件を満たす周波数（倍音）チャンネルｋを周波数の小さい方から２つ検出する。これは、周波数が高くなるほど、誤差による影響が大きくなり、精度が低下する傾向があるためである。そのようにして検出した倍音チャンネルのインデクスを周波数の小さい方からｈｍ１、ｈｍ２と表記する。以降、ｈｍ１は基準インデクスとも呼び、その基準インデクスｈｍ１を持つ倍音チャンネルは基準チャンネルとも呼ぶことにする。各倍音チャンネルの位相差ΔΘi,k（ｋ＝ｈｍ１、ｈｍ２）は式（１０）、つまりそのチャンネルの実位相差δに式（１１）により算出されるΩi,k・Δｔを加算することで計算される。
【００３８】
ピッチスケーリング値ρは、倍音チャンネルの検出結果から以下のように算出する。
先ず、検出した２つの倍音チャンネルのインデクスｈｍ１、ｈｍ２に対応する周波数の最大公約数を求める。その最大公約数は、ユークリッドの互除法を使って算出することができる。負でない２つの整数ｘ、ｙの最大公約数ｇｃｄ（ｘ、ｙ）は
2010134475.tif 000003
を再帰的に繰り返すことで算出することができる。式（１２）中の「ｘ ｍｏｄ ｙ」はｘをｙで割った余りを表している。最大公約数ｇｃｄ（ｘ、ｙ）は別の方法で算出してもよい。
【００３９】
本実施の形態では、元音声として人の音声を想定している。このことから、元音声の取りえる周波数の下限を８０Ｈｚとし、インデクス値の下限はその周波数に相当する６としている。それに合わせ、式（１２）中のｙ＝０の条件はｙ＜６としている。算出した最大公約数はｘと表記する。
最大公約数ｘは、ピッチ（基音）に相当する周波数チャンネルを倍音チャンネルとして抽出できたか否かに係わらずに求めることができる。このため、ミッシング・ファンダメンタルと呼ばれる基本周波数が欠落、或いは他の周波数と比較して非常に小さいような楽音でも確実に求めることができる。
最大公約数ｘを算出した後は、基準インデクスｈｍ１に対応する周波数とがその公約数ｘの比である倍数ｈｍｘを計算する。その倍数ｈｍｘは
ｈｍｘ＝ｈｍ１／ｘ ・・・ （１３）
により求められる。このようにして求める倍数ｈｍｘは、基準チャンネルに相当する周波数を基本周波数（基音（ピッチ）の周波数）で割った値に相当する。
【００４０】
目標ピッチの展開した位相差ΔΘdは、式（１３）により求めた倍数ｈｍｘを乗算して算出する。目標ピッチの基本周波数をｆｄ［Ｈｚ］とすると、それらの乗算は
ΔΘd・ｈｍｘ＝２πｆｄ・Δｔ・ｈｍｘ
＝（２πｆｄ・ｈｍｘ・Ｎ）／（ｆｓ・ＯＶＬ） ・・・（１４）
により行うことができる。元音声のピッチを目標ピッチに変換するためのピッチスケーリング値ρは
ρ＝ΔΘd・ｈｍｘ／ΔΘi,hm1 ・・・ （１５）
で算出できる。図２の位相補償部２５は、このようにしてスケーリング値ρを算出してピッチシフタ２７に出力する。それにより、ピッチシフタ２７はそのスケーリング値ρでピッチスケーリングを行い、ピッチをシフトさせる。
【００４１】
また、位相補償部２５は、下式により位相のスケーリングを行う。
θ'i,k＝ΔΘi,k（（θ'i-1,hm1−θi-1,hm1）／ΔΘi,hm1＋（ρ−１））
＋θi,k                                        ・・・（１６）
式（１６）では、スケーリングを行って得られる位相差には「’」を付して示している。その式（１６）によるスケーリングを行うことにより、時間軸上の位相の一貫性（ＨＰＣ：Horizontal Phase Coherence）およびチャンネル間、すなわち周波数成分間の位相関係（ＶＰＣ：Vertical Phase Coherence）は共に保存される（特願２００４−３７４０９０参照）。
【００４２】
位相補償部２５は、式（１６）によりスケーリングを行った後の位相ｐｈａｓｅ’、及び式（１）から算出した周波数振幅ｍａｇから、以下のオイラーの公式により実数成分ｒｅａｌ’、虚数成分ｉｍｇ’を算出し、複素数の周波数成分に変換する。
ｒｅａｌ’＝ｍａｇ・ｃｏｓ（ｐｈａｓｅ’） ・・・ （１７）
ｉｍｇ’  ＝ｍａｇ・ｓｉｎ（ｐｈａｓｅ’） ・・・ （１８）
【００４３】
ＩＦＦＴ部２６は、このようにして変換された周波数成分を周波数チャンネル毎に位相補償部２５から入力し、ＩＦＦＴを実行して時間領域上のデータに戻す。ピッチシフタ２７は、位相補償部２５から入力するピッチスケーリング値ρに応じて、ＩＦＦＴ部２６が生成したフレームに対する補間、或いは間引きによるピッチスケーリングを行う。それにより、データ量は１／ρに伸縮するが、位相補償部２５はρ倍の位相スケーリング（式（１６））を行っているため、その伸縮は打ち消され、データ量は元の大きさを維持することになる。そのようにして得られたフレームをフレーム加算部２８がオーバーラップ加算するため、目標ピッチを持つ合成音声がサウンドシステム１１により放音されることになる。
【００４４】
次に、図１のカラオケ装置の動作について、図３に示す各種カウンタ、図４ないし図１２に示すＣＰＵ１による歌唱採点処理のプログラムのフローチャート、および、図１３ないし図１６を参照して詳細に説明する。
歌唱採点処理のプログラムの実行においては、２のべき乗である２５６（＝２８）個のサンプルを１フレームとして、伴奏曲のノートオンのピッチとマイク７からの歌唱者の音声信号のピッチとのピッチ差を検出しながら歌唱力の採点を行う。具体的には、カラオケが開始すると８ｍｓｅｃごとに歌唱者の音声信号のピッチと歌唱されるべきピッチ（基準値）との差分を検出し、検出したピッチ差分のデータを図２の入力バッファ２１に積算する。積算されたピッチ差分のデータは、２５６ｍｓｅｃごと、すなわち３２回のピッチ差分のデータの積算値の平均値である平均ピッチ差分が計算される。次に、積算された平均ピッチ差分のデータが約４ｓｅｃ（４０９６ｍｓｅｃ）の区間ごとに採点される。
【００４５】
このため、図３に示すように、歌唱採点処理のためにＣＰＵ１内部のＲＡＭに用意された７個のカウンタＣＮＴＡ〜ＣＮＴＧを用いる。ＣＮＴＡは、ピッチ差分を積算した回数を表すカウンタである。ＣＮＴＢは、ピッチ差分のエラーを積算した回数を表すカウンタである。ＣＮＴＣは、ピッチ差分の算出の回数を表すカウンタである。ＣＮＴＤは、平均ピッチ差分を積算した回数を表すカウンタである。ＣＮＴＥは、平均ピッチ差分エラーを積算した回数を表すカウンタである。ＣＮＴＦは、平均ピッチ差分の算出の回数を表すカウンタである。ＣＮＴＧは、区間採点を積算した回数を表すカウンタである。
【００４６】
図４は、ＣＰＵ１のメインルーチンのフローチャートである。
先ず、電源がオンされたことに伴い、初期化処理を実行する（ステップＳＡ１）。ステップＳＡ１の後は、ステップＳＡ２からステップＳＡ４のループ処理を繰り返す。すなわち、スイッチ部３を構成するスイッチへのユーザの操作に対応するためのスイッチ処理を実行し（ステップＳＡ２）、カラオケ処理を実行し（ステップＳＡ３）、発音処理、エフェクト処理、音量調整処理などのその他の処理を実行する（ステップＳＡ４）。
【００４７】
図５は、メインルーチンにおけるステップＳＡ２のスイッチ処理のフローチャートである。曲セレクトスイッチがオンされたか否かを判別し（ステップＳＢ１）、このスイッチがオンされたときは、セレクトされたカラオケ曲の曲番号をレジスタＳＯＮＧにストアする（ステップＳＢ２）。そして、その曲番号の伴奏曲を曲メモリ２から検索して（ステップＳＢ３）、歌詞が始まる歌唱区間を検出して時間を設定する（ステップＳＢ４）。具体的には、伴奏曲がスタートしてから歌唱区間が開始するまでの時間、すなわちイントロの時間をレジスタにストアして設定する。そして、図４のメインルーチンに戻る。伴奏曲がスタートすると、後述するタイマインタラプトごとに設定された時間がデクリメントされる。
【００４８】
ステップＳＢ１において曲セレクトスイッチがオンでない場合には、スタート／ストップスイッチがオンされたか否かを判別し（ステップＳＢ５）、このスイッチがオンされたときは、フラグＳＴＦを反転する（ステップＳＢ６）。そして、ＳＴＦが１（曲開始）に反転したか又は０（曲停止）に反転したかを判別する（ステップＳＢ７）。ＳＴＦが１に反転したときは、タイマインタラプトの禁止を解除する（ステップＳＢ８）。一方、ＳＴＦが０に反転したときは、タイマインタラプトを禁止する（ステップＳＢ９）。タイマインタラプトを解除又は禁止した後は、図４のメインルーチンに戻る。
【００４９】
ステップＳＢ５において、スタート／ストップスイッチがオンでない場合には、他のスイッチがオンされたか否かを判別する（ステップＳＢ１０）。例えば、エコーやリバーブの効果音を付加するエフェクトスイッチ、音量を調整するボリュームスイッチなどの、他のスイッチがオンされたか否かを判別する。他のスイッチがオンされたときは、そのスイッチに対応する処理を行って（ステップＳＢ１１）、図４のメインルーチンに戻る。
【００５０】
図６は、タイマインタラプトのフローチャートである。発声すべき歌唱区間であるか否かを判別し（ステップＳＤ１）、歌唱区間であるときは、フラグＫＦが０であるか否かを判別する（ステップＳＤ２）。ＫＦが０である場合には、ＫＦを１にセットする（ステップＳＤ３）。図５のステップＳＢ８において、タイマインタラプトの禁止が解除された後は、一定時間ごとのタイマ割り込みを受け付ける。この結果、曲が開始した後は、上記したように、タイマインタラプトごとにレジスタにストアしたイントロの時間がデクリメントされる。したがって、最初の歌唱区間になったときは、ＫＦを１にセットする。ステップＳＤ１において歌唱区間でない場合には、ＫＦが１であるか否かを判別する（ステップＳＤ４）。ＫＦが１であるときは、歌唱区間が終了したので、ＫＦを０にリセットする（ステップＳＤ５）。そして、図４のメインルーチンに戻る。この後は、歌唱区間になるたびにＫＦを１にセットする。ステップＳＤ４においてＫＦが０である場合には、まだイントロの時間が経過していない場合であるので、メインルーチンに戻る。
【００５１】
ステップＳＤ３においてＫＦを１にセットした後、又は、ステップＳＤ２においてＫＦが１であるときは、タイマレジスタＴの値（初期値は０）をインクリメントする（ステップＳＤ６）。そして、Ｔの値が８ｍｓｅｃに達したか否かを判別し（ステップＳＤ７）、Ｔの値が８ｍｓｅｃに達したときは、フラグＴＦを１にセットする（ステップＳＤ８）。ＴＦを１にセットした後、又は、ステップＳＤ７においてＴの値が８ｍｓｅｃに達していない場合には、図４のメインルーチンに戻る。
【００５２】
図７は、メインルーチンにおけるステップＳＡ３のカラオケ処理のフローチャートである。まず、ＫＦが１（歌唱区間）であるか否かを判別し（ステップＳＣ１）、ＫＦが０の場合はメインルーチンに戻るが、ＫＦが１の場合には、ピッチ差分を算出する処理を実行する（ステップＳＣ２）。
図８は、ピッチ差分を算出する処理のフローチャートである。８ｍｓｅｃの経過時間を示すフラグＴＦが１であるか否かを判別し（ステップＳＥ１）、ＴＦが０の場合はこのフローチャートを終了するが、ＴＦが１の場合には、８ｍｓｅｃごとのピッチ比算出処理を実行する（ステップＳＥ２）。
【００５３】
図９は、ピッチ比算出処理のフローチャートである。まず、Ａ／Ｄ変換器８から元音声データが出力されるサンプリングタイミングか否か判定する（ステップＳＦ１）。そのタイミングであった場合、判定はＹＥＳとなり、その元音声データをＲＡＭ５上の入力バッファ２１に書き込み（ステップＳＦ２）、フレーム抽出タイミングか否か判定する（ステップＳＦ３）。前回そのタイミングとなってからホップサイズ分の元音声データをサンプリングする時間が経過した場合には、判定はＹＥＳとなって、入力バッファ２１に格納された元音声データを１フレーム分、抽出し、抽出したフレームに対して、高周波成分を除去するＬＰＦ（ローパスフィルタ）処理、及びＦＦＴ（高速フーリエ変換）を順次、行う（ステップＳＦ４）。
【００５４】
次に、ＦＦＴによって得られる各チャンネルの周波数成分を対象に位相補償処理を実行する（ステップＳＦ５）。位相補償処理の後は、位相補償処理を実施した各チャンネルの周波数成分を対象にしたＩＦＦＴ（高速逆フーリエ変換）、そのＩＦＦＴにより得られる１フレーム分の音声データへのタイムスケーリング処理の実行によるピッチシフトを行い、そのピッチシフトによって得られた合成音声データをＲＡＭ５上の出力バッファ２９に格納された合成音声データにオーバーラップ加算する（ステップＳＦ６）。
なお、図２に示すフレーム抽出部２２、ＬＰＦ２３、及びＦＦＴ部２４の機能は、ハードウェアとしても実現できるが、この実施形態においては上記ステップＳＦ４の処理を実行することで実現される。同様に、位相補償部２５の機能は、ステップＳＦ５の位相補償処理を実行することで実現される。また、ＩＦＦＴ部２６、ピッチシフタ２７及びフレーム加算部２８の機能は、ステップＳＦ６の処理を実行することで実現される。
【００５５】
次に、１サンプリング分の合成音声データを出力すべきタイミングか否か判定する（ステップＳＦ７）。そのタイミングであった場合、判定はＹＥＳとなり、出力すべき合成音声データを出力バッファ２９から読み出して、楽音生成部９を介して、Ｄ／Ａ変換器１０に送出する（ステップＳＦ８）。そして、このフローチャートを終了する。なお、楽音生成部９は、内部で生成した楽音の波形データと入力したデータとをミックスする機能を有する。
【００５６】
図１０は、図９のピッチ比算出処理におけるステップＳＦ５の位相補償処理のフローチャートである。先ず、各周波数チャンネルの周波数成分から式（１）、（２）より周波数振幅ｍａｇ、位相ｐｈａｓｅ（＝θ）を算出する（ステップＳＧ１）。次に、式（４）〜（１０）による、展開した位相差ΔΘi,kの算出を開始し（ステップＳＧ２）、実位相差δが算出された時点である式（１０）の手前で、実位相差δから倍音チャンネルを２つ検出する（ステップＳＧ３）。次に、倍音チャンネルは２以上であるか否かを判別し（ステップＳＧ４）、２以上である場合には、式（１０）により各周波数チャンネルの位相差ΔΘi,kを算出して、位相展開を完了する（ステップＳＧ５）。次に、検出した２つの倍音チャンネルに対して、式（１２）〜（１５）により、スケーリング値ρを算出するスケーリング値算出処理を実行する（ステップＳＧ６）。
【００５７】
点線の枠で示すステップＳＧ６のスケーリング値算出処理においては、検出した２つの倍音チャンネルのインデクス値ｈｍ１、ｈｍ２に対応する周波数をそれぞれ変数ｈ１、ｈ２に代入する（ステップＳＧ１０）。ここで変数ｈ１、ｈ２はそれぞれ、式（１２）のｘ、ｙに対応する。そして、変数ｈ２の値に対応するインデクス値が６未満であるか否か判定する（ステップＳＧ１１）。そのインデクス値が６以上であった場合には、変数ｈ１の値を変数ｈ２の値で割って得られる剰余を変数ｔに代入し、変数ｈ１に変数ｈ２の値を代入し、更に変数ｈ２に変数ｔの値を代入する（ステップＳＧ１２）。そして、ステップＳＧ１１において再度インデクス値が６未満であるか否かの判定を行う。すなわち、変数ｈ２の値に対応するインデクス値が６未満になるまで、式（１２）によりインデクス値ｈｍ１、ｈｍ２に対応する周波数間の最大公約数が変数ｈ１に代入される。変数ｈ２の値に対応するインデクス値が６未満になったときは、式（１３）により変数ｈｍｘに、インデクス値ｈｍ１に対応する周波数を変数ｈ１の値（最大公約数）で割った値を代入する（ステップＳＧ１３）。次に、式（１４）により、位相差ΔΘdに変数ｈｍｘの値を乗算し、その乗算結果を用いて式（１５）によりスケーリング値ρを算出する（ステップＳＧ１４）。
【００５８】
なお、この場合において、倍音チャンネルを２つ抽出しているが、３つ以上の倍音チャンネルを抽出するようにしてもよい。ピーク検出を併せて行うようにした場合には、実位相差に注目して抽出した倍音チャンネルの中から、周波数振幅の大きさを考慮して２つ以上の倍音チャンネルを抽出するようにしてもよい。
ピッチシフトによりフォルマントも移動する。そのため、シフト量（スケーリング値ρ）が大きくなるほど、合成音声は不自然なものとなる。それを回避するために、フォルマントの補償を併せて行うようにしてもよい。
【００５９】
また、元音声の基音周波数を抽出しなくとも目標ピッチへのピッチシフトを実現できることから、その基本周波数は抽出していない。しかし、その基本周波数は、倍数ｈｍｘを用いて抽出することができる。その抽出（算出）は、基本周波数をｆｉと表記すると、式（７）を用いて、
ｆｉ＝ΔΘi,hm1／（２π・Δｔ・ｈｍｘ）
＝（ΔΘi,hm1・ｆｓ・ＯＶＬ）／（２π・Ｎ・ｈｍｘ） ・・・ （１９）
により行うことができる。目標ピッチが周波数で指定されているような場合には、基本周波数ｆｉを算出してから、その目標ピッチの周波数との比をとることにより、スケーリング値ρを求めてもよい。また、算出した基本周波数ｆｉは表示部６等によりユーザに知らせるようにしてもよい。合成音声波形の生成については、別の方法を採用してもよい。
【００６０】
ステップＳＧ６のスケーリング値算出の後は、位相差ΔΘi,kを用いて、式（１６）による位相スケーリング処理を行う（ステップＳＧ７）。次に、位相ｐｈａｓｅ’、及び式（１）から算出した周波数振幅ｍａｇから、実数成分ｒｅａｌ’（式（１７））、虚数成分ｉｍｇ’（式（１８））を算出し、複素数の周波数成分に変換する（ステップＳＧ８）。ステップＳＧ４において、倍音チャンネルが２以上でない場合には、エラーと判断してエラーフラグをアクティブにする（ステップＳＧ９）。ステップＳＧ８において複素数変換を行った後、又は、ステップＳＧ９においてエラーと判断した後は、位相補償処理を終了する。
【００６１】
図９のピッチ比算出処理の後は、図８のピッチ差分算出処理のステップＳＥ３に移行して、図１０のステップＳＧ４において倍音チャンネルが２以上か否かの判別結果を参照し、倍音チャンネルが２以上でエラーと判断しなかったか、又は、倍音チャンネルが２以上でなくエラーと判断したかによって、処理を分岐する。基音が存在するチャンネルが２以上でエラーと判断しなかったときは、算出したピッチ比から「１．０」を減算した値をピッチ差分としてストアする（ステップＳＥ４）。
【００６２】
算出したピッチ比は、マイク７から入力された音声信号のピッチ（入力音声ピッチ）に対する基準値のピッチ（基準ピッチ）の比であるので、両者のピッチが一致したときは、ピッチ比である（入力音声ピッチ）／（基準ピッチ）は「１．０」の値になる。したがって、ピッチ比から「１．０」を減算した値は、入力音声ピッチが基準ピッチより高いときはプラス、入力音声ピッチが基準ピッチより低いときはマイナスとなり、ピッチ差分は正負の符号を含むことになる。
【００６３】
ステップＳＥ４においてピッチ差分を算出した後は、ピッチ差分の積算回数であるＣＮＴＡのカウント値が１６未満であるか、又は、１６以上であるかを判別する（ステップＳＥ５）。ＣＮＴＡのカウント値が１６未満である場合には、ピッチ差分をバッファにストアして積算する（ステップＳＥ６）。そして、ＣＮＴＡのカウント値をインクリメントする（ステップＳＥ７）。本来ならば、ピッチ差分のデータは、２５６ｍｓｅｃごとに平均値を計算する。すなわち、３２回のピッチ差分のデータを積算するごとに平均値を計算する。しかし、この実施形態においては、ＣＰＵ１の負荷を軽減するために、フレーム数を２のべき乗として、フレーム数の半数までの１６回のピッチ差分のデータを積算するごとに平均値を計算する。
【００６４】
ステップＳＥ３において、基音が存在するチャンネルが１以下でエラーであると判断したときは、ピッチ差分エラーの積算回数のカウンタＣＮＴＢの値をインクリメントする（ステップＳＥ８）。ＣＮＴＢの値をインクリメントした後、又は、ステップＳＥ７においてＣＮＴＡの値をインクリメントした後は、ピッチ差分の算出回数のカウンタＣＮＴＣの値をインクリメントする（ステップＳＥ９）。ステップＳＥ５においてＣＮＴＡの値が１６になった後は、ＣＮＴＡの値はインクリメントせず、ピッチ差分の算出回数のカウンタＣＮＴＣの値をインクリメントする（ステップＳＥ９）。この結果、エラー以外のピッチ差分のデータのうち、最大で半数のピッチ差分のデータが捨てられることになるが、８ｍｓｅｃという極めて短い時間においては、半数のピッチ差分のデータが失われても大勢に影響はない。次に、フラグＴＦを０にリセットして（ステップＳＥ１０）、図７のステップＳＣ３の差分平均算出処理に移行する。
【００６５】
図１１は、２５６ｍｓｅｃごとに実行される差分平均算出処理のフローチャートである。
まず、８ｍｓｅｃごとのピッチ差分の算出回数のカウンタＣＮＴＣの値がフレーム数である３２に達したか否かを判別し（ステップＳＨ１）、ＣＮＴＣの値が３２に達した後は、ＣＮＴＢが１６より大きいか否かを判別する（ステップＳＨ２）。すなわち、ピッチ差分エラーがフレーム数の半分より多いか否かを判別する。ＣＮＴＢが１６以下である場合には、積算値を右シフトしてビット差分の平均値を算出する（ステップＳＨ３）。フレーム数は２のべき乗の３２であるので、フレーム数の半分も２のべき乗の１６である。したがって、積算された１６個のビット差分の平均値は、積算値を除算する代わりに４ビットの右シフトによって算出する。これによって、ＣＰＵ１の平均値算出の演算処理を軽減し、「演奏のコケ」と称される音切れのような発音処理のネックを回避できる。
【００６６】
ステップＳＨ３のシフト処理の後は、平均ピッチ差分の積算回数のカウンタＣＮＴＤの値が８未満であるか否かを判別する（ステップＳＨ４）。上記したように、積算された２５６ｍｓｅｃごとの平均ピッチ差分のデータは、４０９６ｍｓｅｃの区間ごとに採点されるので、１区間の平均ピッチ差分は１６（＝４０９６／２５６）個のデータである。しかし、この場合にも、ＣＰＵ１の負荷を軽減するために、８個の平均ピッチ差分のデータによって採点を行う。ＣＮＴＤの値が８未満であるときは、平均ピッチ差分を積算し（ステップＳＨ５）、ＣＮＴＤの値をインクリメントする（ステップＳＨ６）。
ステップＳＨ２において、ＣＮＴＢの値が１６より多い場合、すなわち、ピッチ差分エラーの数がフレーム数である３２の半分を超えた場合には、平均ピッチ差分エラーの積算回数のカウンタＣＮＴＥの値をインクリメントする（ステップＳＨ７）。そして、エラー値を区間の平均値とする（ステップＳＨ８）。
【００６７】
ステップＳＨ６においてＣＮＴＤの値をインクリメントした後、ステップＳＨ８においてＣＮＴＥの値をインクリメントした後、又は、ステップＳＨ４においてＣＮＴＤの値が８になった後は、平均ピッチ差分の算出回数のカウンタＣＮＴＦの値をインクリメントする（ステップＳＨ９）。そして、図７のカラオケ処理のステップＳＣ４に移行して、ピッチずれを表示し、次のステップＳＣ５に移行して区間得点計算処理を実行する。
【００６８】
図１２は、約４ｓｅｃごとに実行される区間得点計算処理のフローチャートである。
まず、２５６ｍｓｅｃごとの平均ピッチ差分の算出回数であるＣＮＴＦの値が１６になったか否かを判別する（ステップＳＪ１）。すなわち、平均ピッチ差分の算出回数が１区間である約４ｓｅｃ（４０９６ｍｓｅｃ）の最大回数になったか否かを判別する。ＣＮＴＦの値が１６未満の場合にはこのフローチャートを終了するが、ＣＮＴＦの値が１６になったときは、平均ピッチ差分エラーの積算回数のカウンタＣＮＴＥの値が平均ピッチ差分の算出回数の半分（許容エラー数）である８より多いか否かを判別する（ステップＳＪ２）。ＣＮＴＥの値が８以下である場合には、平均ピッチ差分の積算値を右シフトして平均値を算出する（ステップＳＪ３）。図１１のステップＳＨ４に示したように、ＣＮＴＤの値である積算回数は８であるので、３ビットの右シフトにより８個の平均ピッチ差分の平均値を算出する。
【００６９】
次に、歌唱者の初級、中級、上級のレベルごとにパラメータをセットする（ステップＳＪ４）。セットするパラメータは、歌唱力を最大評価値の１００点とする基準値の許容範囲を規定するパラメータｔ、および、１００点から０点までの範囲で許容範囲外の歌唱力の度合いを規定するパラメータａである。パラメータをセットした後、区間得点を計算する（ステップＳＪ５）。ステップＳＪ２において、ＣＮＴＥの値が８より多くなり許容エラー数を超えたときは、区間得点を０とする（ステップＳＪ６）。ステップＳＪ５において区間得点を計算した後、又は、ステップＳＪ６において区間得点を０点にした後は、区間得点を積算する（ステップＳＪ７）。そして、区間採点の積算回数のカウンタＣＮＴＧの値をインクリメントして（ステップＳＪ８）、ピッチずれを表示し（ステップＳＪ９）、図７のカラオケ処理に戻る。
【００７０】
ステップＳＪ５における区間得点の計算において、基準値からの平均ピッチ差分をｘとし、区間得点をｇｒａｄｅとすると、区間得点の演算式は、下記の式（２０）で表される。
2010134475.tif 000004
最初にｘの絶対値をとるのは、図８のステップＳＥ５で求めた平均ピッチ差分が正負の符号を含んでいるので、正の値の領域だけで計算を行うためである。
また、ピッチの最小単位である半音のピッチが１００セントであり、１オクターブが１２００セントであるので、得点が１００点となるピッチ範囲をdiff_t[セント]とすると、パラメータｔは、下記の式（２１）で表される。
2010134475.tif 000005
得点が０点となるピッチ差分値をdiff_a[セント]とすると、パラメータａは、下記の式（２２）で表される。
2010134475.tif 000006
【００７１】
図１３は、初級、中級、上級の各レベルにおけるパラメータｔおよびパラメータａの具体例を示す図である。図１３に示すように、初級の歌唱者の場合には、基準値からのピッチ差分が４０セントでも１００点になる。一方、上級の歌唱者の場合には、基準値からのピッチ差分が２０セント以内でなければ１００点にはならない。また、初級の歌唱者の場合には、基準値からのピッチ差分が２４０セントで０点になるが、上級の歌唱者の場合には、基準値からのピッチ差分が１２０セントで０点になる。中級の歌唱者の場合には、１００点になるパラメータｔおよび０点になるパラメータａは、初級と上級のほぼ中間になる。
【００７２】
図１４は、区間得点の演算式である式（２０）〜（２２）の特性を示す図である。図１４において、横軸はピッチ差分を表し、縦軸は区間得点を表している。図１４に示すように、ピッチ差分に対する区間得点の特性は台形の形状になっている。そして、台形の上辺は歌唱力を１００点とするピッチ差分の許容範囲を規定し、台形の傾斜は１００点から０点までの範囲で許容範囲外の歌唱力の度合いを規定する。初級の歌唱者の場合には、台形の上辺が長くなり、傾斜が緩やかになる。一方、上級の歌唱者の場合には、台形の上辺が短くなり、傾斜が急峻になる。中級の歌唱者の場合には、台形は初級と上級との中間の形状になる。
【００７３】
図７のカラオケ処理において、ステップＳＣ５の区間得点の計算を行った後は、その区間得点を表示する（ステップＳＣ６）。図１５は、区間得点およびピッチずれを表示する画面を示す図である。ピッチずれの表示は、図１５に示すように、発光色の異なる３つのＬＥＤによって、ピッチが高い状態、ピッチが合っている状態、ピッチが低い状態を対応するＬＥＤの点灯によって表示する。ステップＳＣ６において、区間得点を表示した後は、カラオケが停止したか否かを判別し（ステップＳＣ７）、カラオケが停止していない場合には、ステップＳＣ２に移行して、ステップＳＣ６までの処理を繰り返す。
【００７４】
カラオケ曲が終了するか、又は、スタート／ストップスイッチがオンされて、ステップＳＣ７においてカラオケの停止であると判別したときは、総合得点を計算する（ステップＳＣ８）。総合得点の計算は、図１２のステップＳＪ７において計算した区間得点の積算値をステップＳＪ８でインクリメントした最終のＣＮＴＧの値、すなわち、区間得点の積算回数で除算することによって算出される。総合得点の計算のときには、カラオケ演奏は停止しており、ＣＰＵ１は発音処理から解放されているので、シフト処理でなく除算処理によって総合得点を算出する。総合得点を算出した後は、その総合得点を表示し（ステップＳＣ９）、フラグＫＦを０にリセットし（ステップＳＣ１０）、フラグＳＴＦを０にリセットして（ステップＳＣ１１）、図４のメインルーチンに戻る。
【００７５】
図１６は、マイク７から入力される音声信号の発声区間と、評価対象の歌唱区間との関係を示す図である。図１６に示すように、伴奏曲において歌唱区間に達するまえに発声が行われた場合には、その発声については無判定として得点には加味しない。一方、歌唱区間であるにもかかわらず、発声が行われない場合には、得点を０点とする。
【００７６】
以上のように、上記実施形態によれば、ＣＰＵ１は、評価すべき歌唱力が１００点となる基準値の許容範囲を規定するパラメータｔ、および、１００点から０点の範囲で許容範囲外の歌唱力の度合いを規定するパラメータａを設定して、入力される音声信号の評価値をパラメータｔおよびパラメータａに基づいて算出する。この場合において、ＣＰＵ１は、音声信号のピッチおよび発声タイミングの評価値を算出する構成にしたが、いずれか一方の評価値を算出する構成にしてもよい。
したがって、膨大な数の評価値を記憶するためのメモリや、曲が終了した後に膨大な数の評価値の平均を算出する演算処理を必要とすることなく、迅速且つ正確に歌唱力をローコストで評価するができる。
【００７７】
また、上記実施形態によれば、ＣＰＵ１は、入力される音声信号のピッチと基準値との差分を算出し、符号を含む差分を積算して音声信号のピッチの評価値をパラメータｔおよびパラメータａに基づいて算出する。
したがって、上級の歌唱者がビブラート唱法によってピッチに揺らぎが発生した場合でも、ピッチの揺らぎをピッチずれと見なさず、正当に歌唱力を評価することができる。
【００７８】
また、上記実施形態によれば、ＣＰＵ１は、入力される伴奏曲の歌唱区間を検索して、歌唱対象区間内に入力される音声信号の評価値を算出し、歌唱区間外に入力される音声信号については評価の対象外とする。
したがって、歌唱力を正確に採点することができる。
【００７９】
また、上記実施形態によれば、ＣＰＵ１は、入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析し、分析したエラー数が１フレームの２分の１を超えたときは、そのフレームを０点とし、分析したエラー数が１フレームの２分の１を超えないときは、１フレームの２分の１に相当するエラー以外のサンプル数によってそのフレームの評価値を算出する。
したがって、除算処理の代わりにシフト処理によってピッチ差分の平均値を算出することで、ＣＰＵ１に大きな負荷がかからないようにすることができる。その結果、音切れのような発音処理のネックを回避できる。
【００８０】
また、上記実施形態によれば、ＣＰＵ１は、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、検出した基音のピッチの評価値を算出する。この場合において、ＣＰＵ１は、入力される音声信号の周波数成分から位相を算出し、その算出した位相を用いて音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出する。
したがって、入力される歌唱者の音声信号の基音のピッチを確実に検出することができる。
【００８１】
さらに、倍音は基音（ピッチ）の周波数の整数倍の周波数を持っている。それにより、倍音の周波数成分が存在する２つ以上の周波数チャンネル（倍音チャンネル）に対応する周波数間の最大公約数は、基音の周波数を表す情報として扱うことができる。このため、図１０のスケーリング値の算出処理に示したように、２つ以上の周波数チャンネルの最大公約数を用いて、第１の音声波形であるｈｍ１の基音を目標とする基音に高精度に変換（シフト）した第２の音声波形であるｈｍ２を生成することができる。第１の音声波形の基音を抽出（検出）する必要性は回避されることから、ミッシング・ファンダメンタルと呼ばれる基本周波数が欠落、或いは他の周波数と比較して非常に小さいような第１の音声波形でも、目標とする基音を持つ第２の音声波形を確実に生成することができる。また、その最大公約数を用いることにより、第１の音声波形の基音の周波数も確実に抽出（検出）することができる。
【００８２】
次に、上記実施形態の変形例について説明する。
上記実施形態においては、１２００セントの１オクターブについた採点を行い、オクターブ違いの同音名については考慮していないが、オクターブ違いを検出して、差分をオクターブ以内の範囲になるように、折り返して採点するような構成にしてもよい。
また、総合得点の計算時に、初級や中級の歌唱者の場合には、ボーナス点を加算して採点するような構成にしてもよい。例えば、区間得点の最高点を保持しておき、総合得点の算出の際に、保持した最高点に、初級や中級のレベルに応じた係数を乗算して、総合点に加算する。
また、上記実施形態においては、平均ピッチ差分および区間採点のときに積算されるデータ数をフレーム数の半分にしたが、平均値を算出する演算を除算の代わりにシフト処理で行うことが可能なように、２のべき乗分の１であればフレーム数の半分でなくてもよい。４分の１、８分の１でもよい。分母が大きくなるほど廃棄するデータ数が多くなるが、採点の信頼性が得られる比率であればよい。一般に、４ｓｅｃのような短い区間においては、歌唱者のレベルにかかわらず歌唱力の変動は極めて少ないので、８分の１やそれより少ないデータ数によっても採点の信頼性は得られる。
また、上記実施形態においては、ピッチ差分を算出して歌唱力を採点する構成にしたが、発音のタイミングの差分を算出して歌唱力を採点する構成にしてもよい。
【００８３】
なお、上記実施形態においては、ＲＯＭ４にあらかじめ記憶されている歌唱採点処理のプログラムをＣＰＵ１が実行する装置の発明について説明したが、フレキシブルディスク（ＦＤ）、ＣＤ、メモリカードなどの外部記憶媒体に記憶された歌唱採点処理のプログラム、又は、インターネットなどのネットワークからダウンロードした歌唱採点処理のプログラムをＲＡＭ５あるいは別途設けたフラッシュＲＯＭなどの不揮発性メモリにインストールして、ＣＰＵ１がそのプログラムを実行する構成も可能である。この場合には、プログラムの発明および記憶媒体の発明を実現できる。
【００８４】
すなわち、本発明の歌唱採点処理のプログラムは、
評価すべき歌唱力が最大評価値となる基準値の許容範囲を規定する第１のパラメータおよび最大評価値から最低評価値の範囲で許容範囲外の歌唱力の度合いを規定する第２のパラメータを設定するステップＡと、入力される音声信号の評価値を前記ステップＡによって設定された第１のパラメータおよび第２のパラメータに基づいて算出するステップＢと、をコンピュータに実行させる。
【００８５】
前記ステップＢは、入力される音声信号のピッチおよび発声タイミングのうち少なくとも１つの評価値を算出することを特徴とする。
この場合において、前記ステップＢは、入力される音声信号のピッチと前記基準値との差分を算出し、符号を含む差分を積算して当該音声信号のピッチの評価値を前記設定された第１のパラメータおよび第２のパラメータに基づいて算出することを特徴とする。
【００８６】
入力される伴奏曲の歌唱区間を検索するステップＣをさらに有し、前記ステップＢは、当該ステップＣによって検索された歌唱対象区間内に入力される音声信号の評価値を算出し、当該歌唱区間外に入力される音声信号については評価の対象外とすることを特徴とする。
【００８７】
入力される音声信号における２のべき乗のサンプル数を１フレームとして各フレームのエラー数を分析するステップＤをさらに有し、前記ステップＢは、前記ステップＤによって分析されたエラー数が１フレームの２分の１を超えたときは当該フレームを最低評価値とし、分析されたエラー数が１フレームの２分の１を超えないときは１フレームの２分の１に相当するエラー以外のサンプル数によって当該フレームの評価値を算出することを特徴とする。
【００８８】
前記ステップＤは、入力される音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出して基音のピッチを分析し、前記ステップＢは、前記ステップＤによって検出された基音のピッチの評価値を算出することを特徴とする。
【００８９】
前記ステップＤは、入力される音声信号の周波数成分から位相を算出し、当該算出した位相を用いて当該音声信号の中から少なくとも２つ以上のピッチの最大公約数を検出することを特徴とする。
【符号の説明】
【００９０】
１  ＣＰＵ
２  曲メモリ
３  スイッチ部
４  ＲＯＭ
５  ＲＡＭ
６  表示部
７  マイク
８  Ａ／Ｄ変換器
９  楽音生成部
１０  Ｄ／Ａ変換器
１１  サウンドシステム
【図１】
2010134475.tif 000007
【図２】
2010134475.tif 000008
【図３】
2010134475.tif 000009
【図４】
2010134475.tif 000010
【図５】
2010134475.tif 000011
【図６】
2010134475.tif 000012
【図７】
2010134475.tif 000013
【図８】
2010134475.tif 000014
【図９】
2010134475.tif 000015
【図１０】
2010134475.tif 000016
【図１１】
2010134475.tif 000017
【図１２】
2010134475.tif 000018
【図１３】
2010134475.tif 000019
【図１４】
2010134475.tif 000020
【図１５】
2010134475.tif 000021
【図１６】
2010134475.tif 000022