(57)【特許請求の範囲】
【請求項１】
所定のサンプリングクロックでディジタル化された音声信号を入力する入力手段と、
該音声信号の周期を前記サンプリングクロックのカウント値で測定するカウント手段と、
所定期間内に前記カウント手段を繰り返し実行し、これによって得られた複数のカウント値を加重平均することによって前記音声信号の周波数を確定する加重平均手段と、
を備えた周波数検出装置において、
前記加重平均手段は、前記複数のカウント値の変動が小さいとき古いカウント値から新しいカウント値への重み付け係数の変化率を小さくし、前記複数のカウント値の変動が大きいとき前記重み付け係数の変化率を大きくすることを特徴とする周波数検出装置。
【請求項２】
前記加重平均手段は、前記所定期間内に音声信号の入力がない期間があったとき、加重平均を行わずに前記カウント手段の最新のカウント値から周波数を算出する請求項１に記載の周波数検出装置。
【請求項３】
前記加重平均手段は、前記所定期間内に音声信号の入力がない期間があったとき、音声信号が入力された期間のみで加重平均を行う手段である請求項１に記載の周波数検出装置。
【請求項４】
前記加重平均手段は、前記複数のカウント値における最大値と最小値との比を計算し、この比を用いて前記複数のカウント値の変動の大きさを判断することを特徴とする請求項１〜３の何れかに記載の周波数検出装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、入力された音声信号の周波数（周期）を検出する周波数検出装置に関する。
【０００２】
【従来の技術】
現在実用化されているカラオケ装置などでは、歌唱を盛り上げるため、または、歌唱を上手く聞かせるために歌唱者の歌唱音声信号に対して３度や５度上のハーモニー音声信号を生成して出力する機能を備えたものがある。このハーモニー音声信号の付加機能においては、歌唱者の歌唱音声とよく似た音色で且つ同じテンポのハーモニー音声を作るため、マイクから入力された歌唱音声信号を周波数シフトしてハーモニー音声信号を形成するものが一般的である。
【０００３】
このハーモニー音声信号の付加機能を実現するためには、歌唱音声信号の周波数（周期）を検出し、この周波数をハーモニー旋律の周波数にシフトするという作業が必要である。歌唱音声信号の周波数を検出する方式としては、図１１に示す手法が従来より用いられていた。この方式は、入力信号が０レベル線を通過して負の値から正の値に反転するタイミングをゼロクロスタイミングとして監視し、直前のゼロクロスタイミングから今回のゼロクロスタイミングまでの間隔（ゼロクロス間隔）を１周期として測定する方式である。実際には、ディジタル化処理によりサンプリング周期で離散化された信号が入力されるため、各サンプリングタイミングに得られるサンプリング値を監視し、このサンプリング値が負の値から正の値に転じたときをゼロクロスタイミングとしてサンプリング周期単位（整数値）で計測している。
【０００４】
【発明が解決しようとする課題】
しかし、この周波数検出方式では、精度がサンプリング周期によって制限されてしまうという問題点がある。すなわち、図１１においてサンプリング周波数をＦｓ Hz ，サンプリング周期Ｔｓはその逆数でＴｓ＝１／Ｆｓ  sec とし、入力信号の真の周期をＴin  sec とすると、真のゼロクロス間隔Ｐ0  samples  は、
Ｐ0 ＝Ｔin／Ｔｓ
である。しかし、実際に計測される値Ｐはサンプリング周波数のカウント値（整数値）であり、
Ｐ1 ＝（Ｔin／Ｔｓの小数点以下を切り捨てた値）
または
Ｐ2 ＝（Ｔin／Ｔｓの小数点以下を切り上げた値）＝Ｐ1 ＋１
になる。
【０００５】
ゼロクロスが計測される毎に、Ｐ1 またはＰ2 が得られるが、この検出される周波数（周期）にはＰ2 ／Ｐ1 ＝１＋１／Ｐ1 の変動が生じる。例えば、
Ｆｓ＝４４．１ｋＨｚ
で、信号周波数が５００  Hz  の場合は、
Ｐ0 ＝８８．２
Ｐ1 ＝８８
Ｐ2 ＝８９
であり、検出される周波数の変動は、周波数比で８９／８８、セントに換算すると１９．５６  セント  という大きな値になる。これをもとにハーモニー音声信号を生成すると、ハーモニー音声信号のピッチが１９．５６セントもずれるため主旋律とうなりを生じ、このために音質が劣化する。入力される音声信号の周波数が高いほどＰ1 が小さく、このピッチ変動１＋１／Ｐ1 が大きくなる。
【０００６】
この発明は、サンプリングクロックのカウント値で音声信号の周期をカウントしつつ、その精度を向上した周波数検出装置を提供することを目的とする。
【０００７】
この出願の請求項１の発明は、所定のサンプリングクロックでディジタル化された音声信号を入力する入力手段と、該音声信号の周期（ゼロクロス間隔）を前記サンプリングクロックのカウント値で測定するカウント手段と、所定期間内に前記カウント手段を繰り返し実行し、これによって得られた複数のカウント値を加重平均することによって前記音声信号の周波数を確定する加重平均手段と、を備えた周波数検出装置において、前記加重平均手段は、前記複数のカウント値の変動が小さいとき古いカウント値から新しいカウント値への重み付け係数の変化率を小さくし、前記複数のカウント値の変動が大きいとき前記重み付け係数の変化率を大きくすることを特徴とする。
【０００８】
この出願の請求項２の発明は、上記発明において、前記加重平均手段は、前記所定期間内に音声信号の入力がない期間があったとき、加重平均を行わずに前記カウント手段の最新のカウント値から周波数を算出することを特徴とする。
【０００９】
この出願の請求項３の発明は、前記加重平均手段を、前記所定期間内に音声信号の入力がない期間があったとき、音声信号が入力された期間のみで加重平均を行う手段としたことを特徴とする。
【００１０】
この出願の請求項４の発明では、加重平均手段は、前記複数のカウント値における最大値と最小値との比を計算し、この比を用いて前記複数のカウント値の変動の大きさを判断することを特徴とする。
【００１１】
【発明の実施の形態】
図面を参照してこの発明の実施形態である周波数検出装置を備えたカラオケ装置について説明する。このカラオケ装置は、カラオケ歌唱者の歌唱音声信号に対するハーモニー音声信号を付加するハーモニー付加機能を備えている。このハーモニー付加機能は、マイク２７から入力されるカラオケ歌唱者の歌唱音声信号をＡ／Ｄコンバータ２９でディジタル変換し、音声処理用ＤＳＰ３０でこの周波数を検出して、主旋律（もとの歌唱音声信号）から３度または５度の音程のハーモニー音声信号に変換する。そして、これをもとの歌唱音声信号と一緒に出力することによって、ハーモニーが付加されたカラオケ歌唱を行うことを可能にした機能である。
【００１２】
図１は同カラオケ装置のブロック図である。装置全体の動作を制御するＣＰＵ１０には、バスを介してＲＯＭ１１，ＲＡＭ１２，ハードディスク記憶装置（ＨＤＤ）１７，ＩＳＤＮコントローラ１６，リモコン受信機１３，表示パネル１４，パネルスイッチ１５，音源装置１８，音声データ処理部１９，効果用ＤＳＰ２０，文字表示部２３，ＬＤチェンジャ２４，表示制御部２５および音声処理用ＤＳＰ３０が接続されている。
【００１３】
ＲＯＭ１１には、システムプログラム，アプリケーションプログラム，ローダおよびフォントデータが記憶されている。システムプログラムは、この装置の基本動作や周辺機器とのデータ送受を制御するプログラムである。アプリケーションプログラムは周辺機器制御プログラム，シーケンスプログラムなどである。カラオケ演奏時にはシーケンスプログラムがＣＰＵ１０によって実行され、楽曲データに基づいた楽音の発生，映像の再生が行われる。ローダは、ホストステーションから楽曲データをダウンロードするためのプログラムである。フォントデータは、歌詞や曲名などを表示するためのものであり、明朝体やゴジック体などの複数種類の文字種のフォントが記憶されている。また、ＲＡＭ１２には、ワークエリアが設定される。ＨＤＤ１７には楽曲データファイルが設定される。
【００１４】
ＩＳＤＮコントローラ１６は、ＩＳＤＮ回線を介してホストステーションと交信するためのコントローラである。ＩＳＤＮコントローラ１６はホストステーションから楽曲データなどをダウンロードする。また、ＩＳＤＮコントローラ１６はＤＭＡ回路を内蔵しており、ダウンロードされた楽曲データやアプリケーションプログラムをＣＰＵ１０を介さずに直接ＨＤＤ１７に書き込む。
【００１５】
リモコン受信機１３はリモコン３１から送られてくる赤外線信号を受信してデータを復元する。リモコン３１は選曲スイッチなどのコマンドスイッチやテンキースイッチなどを備えており、利用者がこれらのスイッチを操作するとその操作に応じたコードで変調された赤外線信号を送信する。表示パネル１４はこのカラオケ装置の前面に設けられており、現在演奏中の曲コードや予約曲数などを表示するものである。パネルスイッチ１５はカラオケ装置の前面操作部に設けられており、曲コード入力スイッチやキーチェンジスイッチなどを含んでいる。
【００１６】
音源装置１８は、カラオケ演奏時にＣＰＵ１０から入力されるイベントデータに基づいて楽音信号を形成する。イベントデータは楽曲データの楽音トラックに記憶されている。楽音トラックは図７に示すように複数設定されているため、イベントデータも複数系統が並行して入力される。音源装置１８は、これらのデータを受信して複数の楽音信号を同時に形成する。音声データ処理部１９は、楽曲データに含まれるＡＤＰＣＭデータである音声データに基づき、指定された長さ，指定された音高の音声信号を形成する。音声データは、バックコーラスや模範歌唱音などの音源装置１８で電子的に発生しにくい信号波形をそのままディジタル化して記憶したものである。
【００１７】
一方、歌唱用のマイク２７から入力された歌唱の音声信号はプリアンプ２８で増幅されＡ／Ｄコンバータ２９でディジタル信号に変換されたのち効果用ＤＳＰ２０および音声処理用ＤＳＰ３０に入力される。音声処理用ＤＳＰ３０には、このほかＣＰＵ１０からハーモニー情報が入力される。音声処理用ＤＳＰ３０は、歌唱音声信号の周波数（周期）を検出して波形要素データを切り出し、この波形要素データをハーモニー情報の周波数で合成することによってハーモニー音声信号を形成する。このハーモニー音声信号は効果用ＤＳＰ２０に出力される。
【００１８】
効果用ＤＳＰ２０には、音源装置１８が形成した楽音信号、音声データ処理部１９が形成した音声信号、Ａ／Ｄコンバータがディジタル変換した歌唱音声信号および音声処理用ＤＳＰ３０が形成したハーモニー音声信号が入力される。効果用ＤＳＰ２０は、これら入力された音声信号や楽音信号に対してリバーブやエコーなどの効果を付与する。効果用ＤＳＰ２０が付与する効果の種類や程度は、楽曲データの効果トラックのイベントデータ（ＤＳＰコントロールデータ）に基づいて制御される。ＤＳＰコントロールデータはＤＳＰコントロール用シーケンスプログラムに基づき、ＣＰＵ１０が所定のタイミングに効果用ＤＳＰ２０に入力する。効果が付与された楽音信号，音声信号はＤ／Ａコンバータ２１でアナログ信号に変換されたのちアンプ・スピーカ２２に出力される。アンプ・スピーカ２２はこの信号を増幅したのち放音する。
【００１９】
文字表示部２３は入力される文字データに基づいて、曲名や歌詞などの文字パターンを生成する。また、ＬＤチェンジャ２４は入力された映像選択データ（チャプタナンバ）に基づき、対応するＬＤの背景映像を再生する。映像選択データは当該カラオケ曲のジャンルデータなどに基づいて決定される。ジャンルデータは楽曲データのヘッダに書き込まれており、カラオケ演奏スタート時にＣＰＵ１０によって読み出される。ＣＰＵ１０はジャンルデータに基づいてどの背景映像を再生するかを決定し、その背景映像を指定する映像選択データをＬＤチェンジャ２４に対して出力する。ＬＤチェンジャ２４には、５枚（１２０シーン）程度のレーザディスクが内蔵されており約１２０シーンの背景映像を再生することができる。映像選択データによってこのなかから１つの背景映像が選択され、映像データとして出力される。文字パターン，映像データは表示制御部２５に入力される。表示制御部２５ではこれらのデータをスーパーインポーズで合成してモニタ２６に表示する。
【００２０】
ここで、図６〜図８を参照して同カラオケ装置においてカラオケ演奏に用いられる楽曲データの構成について説明する。図６は楽曲データの構成を示す図である。また、図７，図８は楽曲データの詳細な構成を示す図である。
【００２１】
図６において、１つの楽曲データは、ヘッダ，楽音トラック，主旋律トラック，ハーモニートラック，歌詞トラック，音声トラック，効果トラックおよび音声データ部からなっている。
【００２２】
ヘッダは、この楽曲データに関する種々のデータが書き込まれる部分であり、曲名，ジャンル，発売日，曲の演奏時間（長さ）などのデータが書き込まれている。ＣＰＵ１０は、メインシーケンスプログラムの実行時にジャンルデータに基づいてモニタ２６に表示する背景映像を決定し、ＬＤチェンジャ２４に対してその映像のチャプタナンバを送信する。背景映像の決定方式は、冬をテーマにした演歌の場合には雪国の映像を選択し、ポップスの場合には外国の映像を選択するなどである。
【００２３】
楽音トラック〜効果トラックの各トラックは図７，図８に示すように複数のイベントデータと各イベントデータ間の時間間隔を示すデュレーションデータΔｔからなるシーケンスデータで構成されている。各トラックのイベントデータはカラオケ演奏中にシーケンスプログラムに基づきＣＰＵ１０によって読み出される。シーケンスプログラムは、所定のテンポクロックでΔｔをカウントし、Δｔをカウントアップしたときこれに続くイベントデータの読出タイミングであるとして、これを読み出して所定の処理部へ出力するプログラムである。
【００２４】
楽音トラックには、メロディトラック，リズムトラックを初めとして種々のパートのトラックが形成されている。ＣＰＵ１０は、楽音シーケンスプログラムによって読み出したイベントデータを音源装置１８に出力する。音源装置１８はそのイベントデータに含まれているチャンネル指定データに基づいて発音チャンネルを選択し、その発音チャンネルについてそのイベントを実行する。
【００２５】
主旋律トラックには、このカラオケ曲の主旋律すなわち歌唱者が歌うべき旋律のシーケンスデータが書き込まれている。カラオケ装置はこの主旋律データに基づいてガイドメロディを発音する。また、ハーモニートラックの構成も主旋律トラックと同様であり、このカラオケ曲のハーモニー旋律のシーケンスデータが書き込まれている。このデータもＣＰＵ１０から音声処理用ＤＳＰ３０に入力される。音声処理用ＤＳＰ３０はこのデータに基づいてハーモニー音声信号の周波数（音高）を決定する。
【００２６】
歌詞トラックは、モニタ２６上に歌詞を表示するためのシーケンスデータを記憶したトラックである。このシーケンスデータは楽音データではないが、インプリメンテーションの統一をとり、作業工程を容易にするためこのトラックもＭＩＤＩデータ形式で記述されている。データ種類は、システム・エクスクルーシブ・メッセージである。歌詞トラックのデータ記述において、通常は１行の歌詞を１つの歌詞表示データとして扱っている。歌詞表示データは１行の歌詞の文字データ（文字コードおよびその文字の表示座標）、この歌詞の表示時間（通常は３０秒前後）、および、ワイプシーケンスデータからなっている。ワイプシーケンスデータとは、曲の進行に合わせて歌詞の表示色を変更してゆくためのシーケンスデータであり、表示色を変更するタイミング（この歌詞が表示されてからの時間）と変更位置（座標）が１行分の長さにわたって順次記録されているデータである。
【００２７】
音声トラックは、音声データ部に記憶されている音声データｎ（ｎ＝１，２，３，‥‥）の発生タイミングなどを指定するシーケンストラックである。音声データ部には、音源装置１８で合成しにくいバックコーラスやハーモニー歌唱などの人声が記憶されている。音声トラックには、音声指定データと、音声指定データの読み出し間隔、すなわち、音声データを音声データ処理部１９に出力して音声信号形成するタイミングを指定するデュレーションデータΔｔが書き込まれている。音声指定データは、音声データ番号，音程データおよび音量データからなっている。音声データ番号は、音声データ部に記録されている各音声データの識別番号ｎである。音程データ，音量データは、形成すべき音声データの音程や音量を指示するデータである。すなわち、言葉を伴わない「アー」や「ワワワワッ」などのバックコーラスは、音程や音量を変化させれば何度も利用できるため、基本的な音程，音量で１つ記憶しておき、このデータに基づいて音程や音量をシフトして繰り返し使用する。音声データ処理部１９は音量データに基づいて出力レベルを設定し、音程データに基づいて音声データの読出間隔を変えることによって音声信号の音程を設定する。
【００２８】
効果トラックには、効果用ＤＳＰ２０を制御するためのＤＳＰコントロールデータが書き込まれている。効果用ＤＳＰ２０は音源装置１８，音声データ処理部１９，音声処理用ＤＳＰ３０から入力される信号に対してリバーブなどの残響系の効果を付与する。ＤＳＰコントロールデータは、このような効果の種類を指定するデータおよびその変化量データなどからなっている。
【００２９】
図２は前記音声処理用ＤＳＰ３０の機能を説明する図である。音声処理用ＤＳＰ３０は内蔵されているマイクロプログラムに基づき入力された歌唱音声信号に対するハーモニー音声信号を形成するが、このマイクロプログラムをブロック化するとこの図のように表すことができる。
【００３０】
マイク２７から入力されアンプ２８で増幅されＡ／Ｄコンバータ２９でディジタル信号に変換された歌唱音声信号は、この音声処理用ＤＳＰ３０の周期検出部４０，ピーク検出部４１，音素検出部４２，平均音量検出部４３および乗算器４５に入力される。
【００３１】
周期検出部４０は入力された歌唱音声信号の波形に基づきその周期Ｔを検出する（図９（Ａ）参照）。周期検出部４０は検出した周期情報をピーク検出部４１および窓関数発生部４４に出力する。この周期検出部４０の機能の詳細は、後で図３〜図５を参照しながら詳述する。
【００３２】
ピーク検出部４１は入力された歌唱音声信号の１つの周期内におけるローカルピークを検出する（図９（Ａ）参照）。周期検出部４０から入力される周期情報によって１周期の間隔が決定される。ピーク検出部４１は検出したピークタイミング情報を窓関数発生部４４に出力する。
【００３３】
音素検出部４２は、入力された歌唱音声信号のレベルの切れ目や周波数成分の変化によって音素の切れ目を検出する。ここで音素とは発音を個別の子音と母音に分割した区間をいうものとする。図９（Ｂ）において、歌詞「あかしやの」は、それぞれ「あ」「か」「し」「や」「の」の５個の音節からなっており、これらの音節は「ａ」「ｋ」「ａ」「ｓｈ」「ｉ」「ｙ」「ａ」「ｎ」「ｏ」の９個の音素に分割することができる。各音節間にはレベルが低下する切れ目があり、子音がホワイトノイズ的な非周期波形であるのに対し、母音が周期波形であることなどに基づいて音素の分割を行う。音素検出部４２は音素の切れ目を検出すると、切れ目である旨を表示する情報を窓関数発生部４４に出力する。
【００３４】
平均音量検出部４３は入力された歌唱音声信号の振幅レベルを平滑して平均音量を検出する。平均音量検出部４３は検出した平均音量情報を音量制御部５０に出力する。
【００３５】
窓関数発生部４４は図９（Ｃ）に示すような窓関数を出力する。この窓関数は乗算器４５に出力される。乗算器４５には上述したように歌唱音声信号が入力されているため、歌唱音声信号がこの窓関数の部分のみ切り取られることになる（図９（Ｃ）参照）。窓関数としては、開始から終了まで微分的に連続な関数を使用することが望ましい。微分的に連続な関数を使用すると、歌唱音声信号の一部（１周期）のみを切り出しても、切り出しの境界でノイズを発生することがない。このため、このＤＳＰ３０では、ｓｉｎ2 （ωｔ／２）（ｔ＝０〜Ｔ：Ｔは歌唱音声信号の１周期）を使用している。この式からも明らかなように、窓関数の長さは歌唱音声信号の１周期である。１周期の長さは周期検出部４０から入力される周期情報によって与えられる。また、窓関数発生部４４は、数十ｍｓ〜１００ｍｓの適当な間隔で繰り返し窓関数を発生する。このようにある程度時間をあけて窓関数を発生するのは、同じ波形要素データをある程度継続しないと、その波形要素データの音色が聴取者に認識されないからである。一方、音素検出部４２から音素の切れ目を表示する情報が入力されたときには必ず窓関数を発生して新たな音素の波形要素データの切り出しを行う。これは、音素が切り換わると音色が全く変わるため、これに追従するためである。また、窓関数の開始タイミングは、ピーク検出部４１から入力されたピークが窓関数の中央に来るように、ピークと次のピークの中間点すなわち最もレベルの低い点となるように制御される。上記のような窓関数で切り出された波形要素データは、歌唱音声信号の音色すなわちフォルマント（倍音成分）をほぼそのまま保存したものとなる。
【００３６】
窓関数発生部４４は、窓関数を発生すると同時に、窓関数を発生する旨およびその長さに関する情報を書込制御部４７に出力する。書込制御部４７は、この情報に対応して窓関数の開始から終了までの間、サンプリングクロック（４４．１ｋＨｚ）に同期して歩進する書込アドレスをメモリ４６に入力する。この書込アドレスの入力により、乗算器４５で切り出された波形要素データはメモリ４６に記憶される。
【００３７】
以上の構成により、メモリ４６には、そのときの歌唱音声信号の１周期分の波形要素データが記憶される。この波形要素データを任意の周期で繰り返し読み出すことにより、その任意の周期の基本周波数を有し、波形要素データすなわち歌唱音声信号の音色（倍音構成）を備えた音声信号を合成することができる。そこで、この波形要素データを歌唱音声信号から３度，５度など協和する周波数関係にあるハーモニー周波数の周期で繰り返し読み出すことにより、その周波数で且つ歌唱音声信号と同じ音色のハーモニー音声信号を形成することができる。
【００３８】
このメモリ４６の読出制御は読出制御部４８が行う。読出制御部４８にはＣＰＵ１０からハーモニーデータが入力されている。このハーモニーデータは、楽音データのハーモニートラックから読み出されたイベントデータである。読出制御部４８はこのハーモニーデータの周波数でメモリ４６を繰り返しアクセスする。すなわち、１秒間にハーモニーデータの周波数回だけ波形要素データを繰り返して読み出す。このハーモニーの旋律が主旋律よりも周波数が低い場合には、ハーモニー音声信号は、図１０（Ａ）に示すように波形要素データがデータ長Ｔよりも長いＴ１の間隔をおいて配列された波形となる。このハーモニー旋律が主旋律よりも周波数が高い場合には、ハーモニー音声信号は、図１０（Ｂ）に示すように波形要素データがデータ長Ｔよりも短いＴ２の間隔で互いに重なりあって配列された波形となる。これにより、ハーモニー音声信号の基本周波数は１／Ｔ１および１／Ｔ２となるが各波形要素データ中の倍音成分はそのまま保存されているため、歌唱音声信号と同様のフォルマントが形成される。また、窓関数が微分的に連続であるためノイズが発生することはない。
【００３９】
上記のようにメモリ４６から波形要素データを繰り返し読み出すことによって形成されたハーモニー音声信号は切換器４９を経て乗算器５１に入力される。乗算器５１は音量制御部５０から音量制御データが入力される。音量制御部５０は前記平均音量検出部４３から歌唱音声信号の平均音量情報を入力しており、この平均音量情報に基づいて音量制御データを発生する。音量制御データは、たとえば平均音量情報の８０パーセントの値に設定される。乗算器５１で音量制御をされたハーモニー音声信号は効果用ＤＳＰ２０に出力される。なお、切換器４９はフレーズの切れ目などで強制的に出力を０にするとき使用される。
【００４０】
図３は前記周期検出部４０の構成を示す図である。ここで、この周期検出部４０は入力された歌唱音声信号の周期を検出するが、周期と周波数とは逆数関係で同値のものであるため、この周期検出部は周波数検出部と同等のものである。すなわち、検出された周期を逆数にすれば容易に周波数を検出することができる。周期検出部４０はノイズ性判断部６０，ローパスフィルタ（ＬＰＦ）６１およびカウント演算部６２からなっている。ノイズ性判断部６０は歌唱音声信号のゼロクロスの周期性を判断し、あまり短時間・不定期にゼロクロスを繰り返すようであればノイズ信号であると判断する。ＬＰＦ６１はノイズ信号や高調波成分を除去して歌唱音声信号の基本周波数をカウント演算部６２に供給するものである。カウント演算部６２は、入力された歌唱音声信号のゼロクロス間隔をサンプリングクロックの周期でカウントし、複数のゼロクロス間隔を加重平均する機能部である。平均するゼロクロス間隔の数は一定ではなく、直前の一定時間に発生したゼロクロスの時間的間隔を全て平均するようにしている。これにより、高い周波数の場合には１つのゼロクロス間隔が短いため多くのゼロクロス間隔を平均し、低い周波数の場合には１つのゼロクロス間隔が長いため少ないゼロクロス間隔を平均することになる。このことは、高い周波数の場合にはゼロクロス間隔に占めるサンプリングクロックの離散化誤差が大きいため多数の平均が必要であり、低い周波数の場合にはゼロクロス間隔に占めるサンプリングクロックの離散化誤差が小さいため多数の平均をとる必要がないことと一致している。音声信号の周波数（周期）を検出する場合、加重平均の期間としては２０ｍｓ程度が適当である。
【００４１】
そして、このカウント演算部６２は図４に示すようなレジスタを備えている。ｖｆｌａｇは周期（周波数）を検出していることを示すフラグである。また、ｚｃｏｌｄは前回のゼロクロスのタイミング（サンプリングクロックのフリーランカウント値）を記憶するレジスタである。また、Ｐ（０）〜Ｐ（Ｎ−１）はＮ個までゼロクロス間隔のカウント値を記憶することができるレジスタである。このＮは加重平均に必要になりうるデータ数より大きい値とする。
【００４２】
図５は周期検出部４０の動作を示すフローチャートである。まず、入力信号がピッチのある周期的信号であるかノイズ性の信号であるかを判断する（ｓ１）。ノイズ性の信号の場合は短時間に多くのゼロクロスがあるため、これを利用してノイズ性の信号を判断することができる。例えば、１０ｍｓ以内に１００回以上のゼロクロスがあった場合、ノイズ性の信号と判断する。入力信号がノイズ性の信号だった場合は、周期的信号の入力があることを示すｖｆｌａｇをクリアし、アドレスｎのレジスタＰ（ｎ）に０を書き込んでリターンする（ｓ１２）。以上の処理はノイズ性判断部６０が行う。
【００４３】
ノイズ性の信号でない場合には、ローパスフィルタ（ＬＰＦ）６１を通過しノイズ成分や高調波成分を除去した入力信号に対して以下の処理を行う。以下の処理はカウント演算部６２によって実行される。まず、ＬＰＦ６１を通過した定常的な信号があるかを判断する（ｓ２）。これは入力信号の振幅レベルがある値より大きいかどうかで判断することができる。振幅レベルが閾値よりも大きい場合は信号ありと判断し、小さい場合は信号なしと判断する。入力信号がなかった場合は、ノイズ性信号が入力された場合と同様、ｖｆｌａｇをクリアし、Ｐ（ｎ）に０を書き込んでリターンする（ｓ１２）。
【００４４】
一方、信号ありの場合、ゼロクロスが新たに生じたかどうかを判断する（ｓ３）。このゼロクロスは負→正のゼロクロスであり、サンプリング値が負値から正値へ移行したことで判断することができる（図１０参照）。ゼロクロスがなかった場合は何もせずにリターンする。ゼロクロスが生じた場合は、現在のｖｆｌａｇの値を調べる（ｓ４）。ｖｆｌａｇが０（リセット）の場合は、入力信号ありと判断されたのち始めてのゼロクロスであり、これより前のゼロクロスがないためゼロクロス間隔を計測できない。この場合には、ｖｆｌａｇをセットして現在時刻をｚｃｏｌｄに書き込む。この現在時刻はフリーランでカウントしているサンプリングクロックのカウント値が用いられる。そして確定周波数情報Ｐａｖｅとして無効な値０を返す（ｓ５）。このＰａｖｅが周期情報Ｔとして窓関数発生部４４に出力されるが、その値が０の場合には窓関数発生部４４は周期未検出であるとして窓関数を発生しない。すなわち、ハーモニー音声信号の形成を行わない。
【００４５】
ｓ４でｖｆｌａｇが既にセットされていた場合、ゼロクロス間隔のカウント値を記憶するレジスタＰ（ｎ）のアドレスｎを１つカウントアップする。カウントアップの結果アドレスがＮになった場合はアドレスを０にする。現在時刻と前回ゼロクロス時刻ｚｃｏｌｄとの差を計算し、それをゼロクロス間隔としてレジスタＰ（ｎ）に書き込む。こののち、現在時刻をｚｏｌｄに書き込む（ｓ６）。
【００４６】
次に加重平均を行なう。まず初期値として、Ｐｓｕｍ＝０，Ａｓｕｍ＝０，ｃ＝０，ｉ＝ｎをセットする（ｓ７）。ここで、Ｐｓｕｍはゼロクロス間隔の和、Ａｓｕｍは加重平均をするための重み付け係数の和、c は加算したゼロクロス間隔の個数、i はメモリアドレスを示す。まず、Ｐ（ｉ）＝０かどうか調べる。０であった場合は、加重平均算出期間内に信号がない期間またはノイズ性信号が入力されていた期間があることを示している。このような場合には、加重平均をとっても精度の高い周期情報Ｐａｖｅを求めることができないとして最新のゼロクロス間隔のカウント値Ｐ（ｎ）を確定周波数情報Ｐａｖｅ（周期Ｔ）として出力して（ｓ１３）リターンする。
【００４７】
Ｐ（ｉ）が０でなければ、次の計算を行なう。
【００４８】
Ｐｓｕｍ＝Ｐｓｕｍ＋ａ（ｃ）×Ｐ（ｉ）
Ａｓｕｍ＝Ａｓｕｍ＋ａ（ｃ）
ｃ＝ｃ＋１
ｉ＝ｉ−１  ただしｉ＜０になったらｉ＝Ｎ−１
以上の動作はＰｓｕｍが加重平均の期間Ｌ（２０ｍｓのサンプリングクロックカウント値）を超えるまで繰り返し実行する（ｓ１０）。この期間内に１回でもＰ（ｉ）＝０があればｓ８の判断でｓ１３に進む。Ｐ（ｉ）＝０が一度もない場合には、加重平均期間における重み付けされたゼロクロス間隔の総和Ｐｓｕｍと重み付け係数の総和Ａｓｕｍが算出される。すなわち、
Ｐsum ＝ａ(0) ×Ｐ(n) ＋ａ(1) ×Ｐ(n-1) ＋ａ(2) ×Ｐ(n-2) ＋……
となる。なお、加重平均の期間をＴＬ（＝２０ｍｓ）とすると、
Ｌ＝ＴＬ×ＴＳ
である。ここで、ＴＳはサンプリングクロック周波数である。最後に
Ｐａｖｅ＝Ｐｓｕｍ／Ａｓｕｍ
を行なえば、ゼロクロス間隔の加重平均値である周期情報Ｐａｖｅを算出することができる（ｓ１１）。この確定周波数情報Ｐａｖｅを周期情報Ｔとして窓関数発生部４４に出力して歌唱音声信号のピッチ変換に用いる。
【００４９】
なお、信号の立ち上がりのときなど、加重平均期間内に信号がない期間がある場合、この例では加重平均をやめて最新のゼロクロス間隔のカウント値Ｐ（ｎ）を出力するようにしているが、加重平均期間内の周期的信号がある期間のみを抽出して加重平均を行ってもよい。
【００５０】
重み付け係数ａ（ｃ）は、
ａ(0) ＞ａ(1) ＞ａ(2) ＞  …
というように、現在に近い信号ほど重みを大きくし、過去になるほど重みを小さくして、入力信号の周波数が変化に対する追従性を高めるようにすればよい。、また入力信号の性質を利用して、それにより動的に変更しても良い。すなわち、ａ(k) ＝α**ｋとすると、入力信号の周波数がが安定しているときは、αを大きな値（１に近い値）にして単純平均に近づけ、入力信号の周波数が変動しているときには、その変化に応じて自動的にαを小さな値に変更するようにすればよい。
【００５１】
具体的には、加重平均を行うまえに、加重平均を行うのと同じ期間で計測されたゼロクロス間隔Ｐ（ｎ）の最大値と最小値の比を計算し、この比が小さいときは入力信号の周波数が安定していて、比が大きいときは入力信号の周波数が変化している、または、安定していないと判断し、これによってαの値を決定するようにすればよい。
【００５２】
たとえば、Ｒ（＝Ｐｍａｘ／Ｐｍｉｎ）とすると、
Ｒ≦１．０３  ならば  α＝１．０
１．０３＜Ｒ≦１．０６  ならば  α＝０．９５
１．０６＜Ｒ≦１．０９  ならば  α＝０．９０
１．０９＜Ｒ≦１．１２  ならば  α＝０．８５
１．１２＜Ｒ            ならば  α＝０．８０
のように決定する。このようにＲに応じて重み付け係数を決定することにより、入力信号の周波数が安定しているときには、単純平均に近くなり周波数（周期）の計算精度を高くすることができる。また、入力信号の周波数が変動しているときは検出精度よりも周波数追従性が要求されるため、現在に近いデータの重み大きくなって変化によく追従できるようになる。なお、α＝１．０の場合には全ての重み付け係数が等しくなり、単純平均と同じになる。
【００５３】
なお、上記実施形態では歌唱音声信号の周波数（周期）の検出について説明したが、楽器など他の音声周波数信号の周波数検出にこれを用いてもよい。
【００５４】
【発明の効果】
請求項１の発明によれば、複数のカウント値を平均化することにより、入力された音声信号の真の周波数（周期）から端数を切り捨てて求められたカウント値と端数を切り上げて求められたカウント値とが相殺されるため、誤差が少なくなり精度の高い周波数（周期）の検出を行うことができる。また、複数のカウント値を加重平均する場合に、古いカウント値に対して新しいカウント値の重みを大きくすることにより、入力音声信号の周波数が変動している場合の追従性を良くすることができる。また、請求項１の発明によれば、複数のカウント値の変動が小さいときすなわち入力信号の周波数変動が小さいときには、重み付け係数の変化率を小さくして単純平均に近づけてゆくことにより平均の精度を高くする。また、入力信号の周波数変動が大きい場合には、重み付け係数の変化率を大きくして新しいカウント値の重みを大きくする。これにより、確定される周波数値の入力信号に対する追従性が良くなる。
【００５５】
請求項２の発明によれば、発音開始時や発音の中断などによって信号が入力しなくなったとき、このような場面ではもとより周波数が不安定であるため、平均値ではなく１回のカウント値を用いることにより無駄な演算をなくすことができる。
【００５６】
請求項３の発明によれば、何らかの事情で信号が入力されなかった場合でも、入力された信号によるカウント値のみで平均をとることにより、確定周波数情報の出力を継続することができる。
【図面の簡単な説明】
【図１】この発明の実施形態であるカラオケ装置のブロック図
【図２】同カラオケ装置の音声処理用ＤＳＰの構成を示す図
【図３】同音声処理用ＤＳＰの一部である周期検出部の構成を示す図
【図４】同周期検出部に設けられるレジスタの構成を示す図
【図５】同周期検出部の動作を示すフローチャート
【図６】前記カラオケ装置に用いられる楽曲データの構成を示す図
【図７】同カラオケ装置に用いられる楽曲データの構成を示す図
【図８】同カラオケ装置に用いられる楽曲データの構成を示す図
【図９】歌唱音声信号から波形要素データの切り出し方式を説明する図
【図１０】ハーモニー音声信号の形成方式を説明する図
【図１１】周期検出の原理を示す図
【符号の説明】
３０…音声処理用ＤＳＰ、４０…周期検出部、４４…窓関数発生部、
６０…ノイズ性判断部、６１…ローパスフィルタ、６２…カウント演算部
【図１】
0003645364.tif 000002
【図２】
0003645364.tif 000003
【図３】
0003645364.tif 000004
【図４】
0003645364.tif 000005
【図５】
0003645364.tif 000006
【図６】
0003645364.tif 000007
【図７】
0003645364.tif 000008
【図８】
0003645364.tif 000009
【図９】
0003645364.tif 000010
【図１０】
0003645364.tif 000011
【図１１】
0003645364.tif 000012