以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の信号処理装置は、ステレオ信号である音声信号から、左右の中央に定位する音声の成分であるセンタ成分を除去する除去手段(例えば、図1のセンタ除去部22)と、前記センタ成分が除去された前記音声信号から、所定の範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す第1の特徴量を抽出する抽出手段(例えば、図1のビート毎特徴量抽出部23)と、前記第1の特徴量を用いて前記範囲の和音を判別する判別手段(例えば、図1のコード判別部24)とを備える。
前記音声信号から、拍のそれぞれの位置を検出する検出手段(例えば、図1のビート検出部21)をさらに設け、前記抽出手段には、前記範囲である、拍のそれぞれの範囲における、前記第1の特徴量を抽出させ、前記判別手段には、前記第1の特徴量を用いて、拍の範囲の和音を判別させることができる。
前記判別手段には、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す前記第1の特徴量から、前記基準音がルートであるかを判別するルート判別手段(例えば、図11のルート判別部62)と、前記第1の特徴量から、少なくともメジャーの和音であるかマイナーの和音であるかを判別するコード種別判別手段(例えば、図11のメジャーマイナー判別部63)とを設けることができる。
前記判別手段には、前記ルート判別手段から出力された、前記基準音がルートであるかの判別の結果を示す第1の判別関数から、前記基準音がルートである確率を計算すると共に、前記コード種別判別手段から出力された、メジャーの和音であるかマイナーの和音であるかの判別の結果を示す第2の判別関数から、メジャーの和音である確率とマイナーの和音である確率を計算する確率計算手段(例えば、図11の確率計算部66)をさらに設けることができる。
前記判別手段には、所定の高さの音である第1の基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す前記第1の特徴量から、前記第1の基準音がルートであるかを判別する第1のルート判別手段(例えば、図11のルート判別部62)と、所定の高さの音である第2の基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す前記第2の特徴量から、前記第2の基準音がルートであるかを判別する第2のルート判別手段(例えば、図11のルート判別部64)と、前記第1の特徴量から、少なくともメジャーの和音であるかマイナーの和音であるかを判別する第1のコード種別判別手段(例えば、図11のメジャーマイナー判別部63)と、前記第2の特徴量から、少なくともメジャーの和音であるかマイナーの和音であるかを判別する第2のコード種別判別手段(例えば、図11のメジャーマイナー判別部65)とを設けることができる。
前記判別手段には、前記第1のルート判別手段から出力された、前記第1の基準音がルートであるかの判別の結果を示す第1の判別関数から、前記第1の基準音がルートである確率を計算し、前記第2のルート判別手段から出力された、前記第2の基準音がルートであるかの判別の結果を示す第2の判別関数から、前記第2の基準音がルートである確率を計算し、前記第1のコード種別判別手段から出力された、メジャーの和音であるかマイナーの和音であるかの判別の結果を示す第3の判別関数から、メジャーの和音である確率とマイナーの和音である確率を計算し、前記第2のコード種別判別手段から出力された、メジャーの和音であるかマイナーの和音であるかの判別の結果を示す第4の判別関数から、メジャーの和音である確率とマイナーの和音である確率を計算する確率計算手段(例えば、図11の確率計算部66)をさらに設けることができる。
本発明の一側面の信号処理方法およびプログラムは、ステレオ信号である音声信号から、左右の中央に定位する音声の成分であるセンタ成分を除去し(例えば、図12のステップS12)、前記センタ成分が除去された前記音声信号から、所定の範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出し(例えば、図12のステップS14)、前記特徴量を用いて前記範囲の和音を判別する例えば、図12のステップS15)ステップを含む。
図1は、本発明の一実施の形態の信号処理装置11の構成を示すブロック図である。信号処理装置11は、ビート検出部21、センタ除去部22、ビート毎特徴量抽出部23、およびコード判別部24から構成される。
信号処理装置11に入力された楽曲の信号であってステレオ信号である音声信号は、ビート検出部21、センタ除去部22、およびビート毎特徴量抽出部23に供給される。
ビート検出部21は、楽曲の信号である音声信号から、ビートを検出する。
ビートとは、打点または拍のことであり、楽曲において基本の単位として聞こえる基準をいう。ビートは、一般に複数の意味で使われるが、以下、楽曲における基本的な時間の単位の始まりである時刻の意味で用いる。
楽曲における基本的な時間の単位の始まりである時刻を、拍の位置と称し、楽曲における基本的な時間の単位の範囲を、拍の範囲と称する。なお、拍の長さは、いわゆるテンポである。
すなわち、ビート検出部21は、楽曲の信号である音声信号から、音声信号における拍の位置を検出する。ビート検出部21は、音声信号における拍のそれぞれの位置を示すビート情報をビート毎特徴量抽出部23に供給する。
なお、音声信号における拍の位置から次の拍の位置までが、拍の範囲なので、音声信号における拍の位置がわかれば、拍の範囲がわかる。
センタ除去部22は、ステレオ信号である音声信号から、左右の中央に定位する音声の成分であるセンタ成分を除去する。センタ除去部22は、センタ成分を除去した音声信号(以下、センタ除去済み音声信号と称する)をビート毎特徴量抽出部23に供給する。
ビート毎特徴量抽出部23は、音声信号から、所定の範囲の音声の特徴量を抽出する。例えば、ビート毎特徴量抽出部23は、音声信号から、ビート毎の音声の特徴量(以下、ビート毎のコード判別用特徴量と称する)を抽出する。すなわち、ビート毎特徴量抽出部23は、ビート情報を基に、音声信号の拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出する。
より詳細には、ビート毎特徴量抽出部23は、ビート情報を基に、センタ除去済み音声信号から、所定の範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出するとともに、センタ成分を除去していない元の音声信号から、所定の範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出する。例えば、ビート毎特徴量抽出部23は、ビート情報を基に、センタ除去済み音声信号から、音声信号の拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出するとともに、センタ成分を除去していない元の音声信号から、音声信号の拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出する。
ビート毎特徴量抽出部23は、センタ除去済み音声信号から抽出された特徴量とセンタ成分を除去していない元の音声信号から抽出された特徴量とからなるビート毎のコード判別用特徴量をコード判別部24に供給する。
コード判別部24は、ビート毎特徴量抽出部23から供給された、ビート毎のコード判別用特徴量から、ビート毎のコードを判別して、出力する。すなわち、コード判別部24は、ビート毎のコード判別用特徴量から拍の範囲の和音を判別する。
なお、後述するように、コード判別部24は、特徴量による学習によって予め作成される。
このように、信号処理装置11は、楽曲の音声信号から、その楽曲のビート毎のコードを判別する。
例えば、図2に示されるように、信号処理装置11は、楽曲の音声信号から、Cであるコード、Bフラットであるコード、Aマイナーであるコード、Gシャープであるコード、Gであるコード、Cであるコード、Fであるコード、Dマイナーであるコード、Dであるコード、およびGであるコードなどをビート毎に判別する。例えば、信号処理装置11は、ビート毎のコードのコードネームを判別して、ビート毎のコードのコードネームを出力する。
まず、図3に示されるように、音声信号から、ビート、すなわち拍のそれぞれの位置を検出するビート検出部21について説明する。図3において、”123412341234”のそれぞれの数に対する縦線は、音声信号における拍のそれぞれの位置を示す。図3において、”123412341234”のそれぞれの数に対する縦線で示される位置からその次の縦線の位置までの範囲は、音声信号における拍の範囲を示す。
なお、隣接する2つの縦線の間で示される長さは、例えば、4分音符の長さを示し、テンポに相当する。また、”1”である数に対する縦線で示される位置は、小節の先頭を示す。
図4は、ビート検出部21の構成の一例を示すブロック図である。ビート検出部21は、アタック情報抽出部41、基本ビート周期検出部42、テンポ決定部43、楽曲特徴量抽出部44、およびテンポ修正部45から構成される。
アタック情報抽出部41は、楽曲の波形を示す音声信号から時系列のアタック情報を抽出する。ここで、時系列のアタック情報とは、人間にビートを感じさせる音量の変化を時間に沿ってデータ化したものである。図5で示されるように、アタック情報は、時間に対する、人間の感じる音量を示す音量感で表される。
例えば、アタック情報抽出部41は、それぞれの時刻における、音声信号による音声のレベルを示すアタック情報を音声信号から抽出する。
また、例えば、図6で示されるように、アタック情報抽出部41は、音声信号による音声を複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギを求めることで、オクターブ毎の12の音のそれぞれのエネルギを示す12音解析による時間−音程データを求める。アタック情報抽出部41は、各時刻における、12の音と複数のオクターブとについて音のエネルギを積算し、その結果をアタック情報とする。
また、例えば、アタック情報抽出部41は、音声信号による音声を複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音の鳴り始めのタイミングを検出する。例えば、アタック情報抽出部41は、それぞれの音のエネルギの時間方向の差分が予め定めた閾値より大きい場合、その音の鳴り始めであるとする。
そして、アタック情報抽出部41は、音の鳴り始めを1とし、それ以外を0として、その値を複数のオクターブのそれぞれの12の音について積算し、その結果をアタック情報とする。
図6において、丸は、音の鳴り始めの位置を示す。音の鳴り始めを1とし、それ以外を0として、これを積算してアタック情報を求めた場合、アタック情報は、複数のオクターブのそれぞれの12の音において、鳴り始めが多い場合には、大きい値となり、鳴り始めが少ない場合には、小さい値となる。
さらに、例えば、アタック情報抽出部41は、音声信号による音声を複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギの変化を求める。例えば、音のエネルギの変化は、音のエネルギの時間方向の差分として計算される。アタック情報抽出部41は、各時刻における、音のエネルギの変化を、複数のオクターブのそれぞれの12の音について積算し、その結果をアタック情報とする。
アタック情報抽出部41は、このようなアタック情報を基本ビート周期検出部42およびテンポ修正部45に供給する。
基本ビート周期検出部42は、コードの検出の対象となっている楽曲において、最も基本となっている音の長さを検出する。例えば、楽曲において最も基本となっている音は、4分音符、8分音符、または16分音符で表される音である。
以下、楽曲において、最も基本となる音の長さを基本ビート周期と称する。
基本ビート周期検出部42において、時系列の情報であるアタック情報を通常の波形と見立てて基本ピッチ(音程)抽出を行うことで基本ビート周期が求められる。
例えば、図7で示されるように、基本ビート周期検出部42は、時系列の情報であるアタック情報をショートタイムフーリエ変換する。アタック情報をショートタイムフーリエ変換することにより、周波数におけるエネルギの強さを時系列に示す結果が得られる。
すなわち、基本ビート周期検出部42において、アタック情報の時間的な長さに対して十分に短い期間である窓の位置をアタック情報に対してずらしながら、その窓におけるアタック情報の部分をフーリエ変換し、そのフーリエ変換の結果を時系列に配置することで、それぞれの周波数におけるエネルギの強さを時系列に示す結果が求められる。
ショートタイムフーリエ変換の結果、他の周波数のエネルギに比較して強いエネルギの周波数が、基本ビート周期の候補である周期として検出される。図7の下側において、濃度は、エネルギの強さを示す。
基本ビート周期検出部42は、アタック情報のショートタイムフーリエ変換の結果検出された周期のうち最も優位のものを基本ビート周期とする。
すなわち、基本ビート周期検出部42は、アタック情報のショートタイムフーリエ変換の結果検出された周期のうちから、予め用意した重みである基本ビートらしさと、アタック情報のショートタイムフーリエ変換の結果とを照らし合わせて、基本ビートらしさの高い周期を基本ビート周期とする。
より具体的には、基本ビート周期検出部42は、予め定めた周波数方向の重みである基本ビートらしさで、アタック情報のショートタイムフーリエ変換の結果得られた周波数毎のエネルギを重み付けして、重み付けにより得られた値のうち最も大きい値が得られた周期を基本ビート周期とする。
周波数方向の重みである基本ビートらしさを用いることにより、基本ビート周期とはなり得ない極めて低い周波数の周期や極めて高い周波数の周期が、基本ビート周期とされることを防止することができる。
基本ビート周期検出部42は、このように抽出した基本ビート周期をテンポ決定部43に供給する。
楽曲特徴量抽出部44は、音声信号に所定の信号処理を適用することにより、楽曲から所定の数の特徴量(以下、楽曲特徴量と称する)を抽出する。例えば、楽曲特徴量抽出部44は、音声信号を複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音の信号を求めて、それぞれのオクターブにおけるそれぞれの12の音の信号に所定の信号処理を適用することにより、楽曲特徴量を抽出する。
例えば、楽曲特徴量抽出部44は、楽曲特徴量として、それぞれのオクターブにおけるそれぞれの12の音の信号の、単位時間当たりのピークの数を求める。
また、例えば、楽曲特徴量抽出部44は、楽曲特徴量として、それぞれのオクターブにおけるそれぞれの12の音の信号の、音程方向のエネルギの分散を求める。
さらにまた、例えば、楽曲特徴量抽出部44は、楽曲特徴量として、それぞれのオクターブにおけるそれぞれの12の音の信号から、低域、中域、および高域のエネルギのバランスを求める。
また、例えば、楽曲特徴量抽出部44は、楽曲特徴量として、それぞれのオクターブにおけるそれぞれの12の音の信号から、ステレオである音声信号の左右のチャンネルの信号の相関の大きさなどを求める。
楽曲特徴量抽出部44は、このように抽出した楽曲特徴量をテンポ決定部43に供給する。
テンポ決定部43は、楽曲特徴量とテンポとによる学習によって予め構成され、楽曲特徴量抽出部44から供給された楽曲特徴量から、テンポを推定する。以下、推定されたテンポを推定テンポと称する。
テンポ決定部43は、推定テンポと、基本ビート周期検出部42から供給された基本ビート周期とから、基本ビート周期の2のX乗倍(・・・1/8倍、1/4倍、1/2倍、1倍、2倍、4倍、8倍・・・)の中からテンポを決定する。例えば、楽曲の特徴量から回帰解析で推定された推定テンポに対して、推定テンポ×21/2と推定テンポ÷21/2との範囲に収まるように、基本ビート周期を2倍するかまたは1/2倍して得られた値がテンポとされる。
例えば、図8で示されるように、テンポ決定部43は、基本ビート周期検出部42から供給された基本ビート周期と、推定テンポ÷21/2で求められる周期とを比較して、推定テンポ÷21/2で求められる周期より基本ビート周期(図8の上側の白丸で示される基本ビート周期)が長い場合、基本ビート周期を1/2倍する。
テンポ決定部43は、基本ビート周期検出部42から供給された基本ビート周期と、推定テンポ×21/2で求められる周期とを比較して、推定テンポ×21/2で求められる周期より基本ビート周期(図8の下側の白丸で示される基本ビート周期)が短い場合、基本ビート周期を2倍する。
テンポ決定部43は、推定テンポ×21/2と推定テンポ÷21/2との範囲に収まるように、1/2倍したか若しくは2倍したか、または繰り返し1/2倍したか若しくは繰り返し2倍した基本ビート周期(図8の黒丸で示される基本ビート周期)をテンポとする。
なお、テンポ決定部43は、基本ビート周期が推定テンポ×21/2と推定テンポ÷21/2との範囲に収まる場合、そのままの基本ビート周期をテンポとする。
テンポ決定部43は、このように決定したテンポをテンポ修正部45に供給する。
テンポ修正部45は、アタック情報により、テンポ決定部43において決定されたテンポをより細かく修正する。
まず、テンポ修正部45は、ビートの位相を修正する。
すなわち、図9で示されるように、テンポ修正部45は、アタック情報に対して決定されたテンポの周期で、拍の範囲毎に、楽曲全体にわたりアタック情報を足し合わせる。
例えば、テンポ修正部45は、楽曲全体にわたり、テンポの周期で決められる拍の範囲について、最初の拍の範囲乃至最後の拍の範囲のそれぞれにおける、最初のアタック情報のサンプルを足し合わせて、その結果を、拍の範囲の最初の合計値とする。次に、テンポ修正部45は、楽曲全体にわたり、テンポの周期で決められる拍の範囲について、最初の拍の範囲乃至最後の拍の範囲のそれぞれにおける、2番目のアタック情報のサンプルを足し合わせて、その結果を、拍の範囲の2番目の合計値とする。
同様に、テンポ修正部45は、楽曲全体にわたり、テンポの周期で決められる拍の範囲について、最初の拍の範囲乃至最後の拍の範囲のそれぞれにおける、3番目乃至最後のアタック情報のサンプルを、拍の範囲における順毎に足し合わせて、その結果のそれぞれを、拍の範囲の3番目乃至最後の合計値とする。
そして、テンポ修正部45は、アタック情報に対するテンポの周期の位相をずらして、同様に、拍の範囲毎に、楽曲全体にわたりアタック情報を足し合わせる。
テンポ修正部45は、アタック情報に対するテンポの周期の位相を、アタック情報に対するテンポの周期の位相をずらして得られた合計値のうち、最も大きい合計値の得られた位相に修正する。すなわち、テンポ修正部45は、拍の位置を、最も大きい合計値の得られた、アタック情報に対するテンポの周期の位置に修正する。
また、テンポ修正部45は、テンポを修正する。
すなわち、図10で示されるように、テンポ修正部45は、テンポの周期を、その周期に対して十分短い所定の長さだけ縮めるか、または伸ばして、その縮められるかまたは伸ばされたテンポの周期で、テンポの周期毎に、楽曲全体にわたりアタック情報を足し合わせる。
この場合も、テンポ修正部45は、楽曲全体にわたり、テンポの周期で決められる拍の範囲について、最初の拍の範囲乃至最後の拍の範囲のそれぞれにおける、最初乃至最後のアタック情報のサンプルを、拍の範囲における順毎に足し合わせて、その結果のそれぞれを、拍の範囲の最初乃至最後の合計値とする。
テンポ修正部45は、テンポの周期を所定の長さだけ縮めるか、または伸ばして、その縮められるかまたは伸ばされたテンポの周期毎に、楽曲全体にわたりアタック情報を足し合わせて、拍の範囲の最初乃至最後の合計値を求める。
テンポ修正部45は、元の長さか、縮められるか、または伸ばされたテンポの周期のうち、最も大きい合計値の得られた長さにテンポの周期を修正する。
テンポ修正部45は、このようなビートの位相の修正とテンポの修正とを必要に応じて繰り返して、最終的なテンポを決定する。例えば、テンポ修正部45は、ビートの位相の修正と、テンポの修正とを、それぞれ2回など、予め決められた回数だけ繰り返して、最終的なテンポを決定する。
テンポ修正部45は、最終的に決定されたテンポを示すビート情報を出力する。
このように、ビート検出部21は、音声信号から、拍のそれぞれの位置を検出し、音声信号における拍の位置を示すビート情報を出力する。
次に、コード判別部24の構成について説明する。
図11は、コード判別部24の構成の一例を示すブロック図である。コード判別部24は、シフトレジスタ61、ルート判別部62、メジャーマイナー判別部63、ルート判別部64、メジャーマイナー判別部65、および確率計算部66から構成される。
シフトレジスタ61は、ビート毎特徴量抽出部23から供給されるビート毎のコード判別用特徴量が、センタ除去済み音声信号から抽出された特徴量とセンタ成分を除去していない元の音声信号から抽出された特徴量とからなり、センタ除去済み音声信号から抽出された特徴量およびセンタ成分を除去していない元の音声信号から抽出された特徴量が、それぞれ、音声信号の拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音について、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示すので、それぞれの特徴量の基準音を他の音とするようにそれぞれの特徴量をシフトする。
シフトレジスタ61は、特徴量の基準音を他の音とするようにシフトした特徴量を、ルート判別部62、メジャーマイナー判別部63、ルート判別部64、およびメジャーマイナー判別部65に供給する。
ルート判別部62は、ビート毎のコード判別用特徴量のうちの、センタ除去済み音声信号から抽出された特徴量から、基準音がルートであるかを判別する。より詳細には、ルート判別部62は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済み音声信号から抽出された特徴量から、その特徴量における基準音がルートであるかを判別するとともに、シフトレジスタ61によって、基準音を他の音とするようにシフトされた、センタ除去済み音声信号から抽出された特徴量から、シフトされた特徴量における基準音がルートであるかを判別する。
例えば、ルート判別部62は、基準音がルートであるかを判別する判別関数を出力する。
メジャーマイナー判別部63は、ビート毎のコード判別用特徴量のうちの、センタ除去済み音声信号から抽出された特徴量から、メジャーの和音であるかマイナーの和音であるかを判別する。より詳細には、メジャーマイナー判別部63は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済み音声信号から抽出された特徴量から、その特徴量が抽出された拍の範囲の和音がメジャーの和音であるかマイナーの和音であるかを判別するとともに、シフトレジスタ61によって、基準音を他の音とするようにシフトされた、センタ除去済み音声信号から抽出された特徴量から、シフトする前の特徴量が抽出された拍の範囲の和音がメジャーの和音であるかマイナーの和音であるかを判別する。
例えば、メジャーマイナー判別部63は、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を出力する。
ルート判別部64は、ビート毎のコード判別用特徴量のうちの、センタ成分を除去していない元の音声信号から抽出された特徴量から、基準音がルートであるかを判別する。より詳細には、ルート判別部64は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ成分を除去していない元の音声信号から抽出された特徴量から、その特徴量における基準音がルートであるかを判別するとともに、シフトレジスタ61によって、基準音を他の音とするようにシフトされた、センタ成分を除去していない元の音声信号から抽出された特徴量から、シフトされた特徴量における基準音がルートであるかを判別する。
例えば、ルート判別部64は、基準音がルートであるかを判別する判別関数を出力する。
メジャーマイナー判別部65は、ビート毎のコード判別用特徴量のうちの、センタ成分を除去していない元の音声信号から抽出された特徴量から、メジャーの和音であるかマイナーの和音であるかを判別する。より詳細には、メジャーマイナー判別部65は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ成分を除去していない元の音声信号から抽出された特徴量から、その特徴量が抽出された拍の範囲の和音がメジャーの和音であるかマイナーの和音であるかを判別するとともに、シフトレジスタ61によって、基準音を他の音とするようにシフトされた、センタ成分を除去していない元の音声信号から抽出された特徴量から、シフトする前の特徴量が抽出された拍の範囲の和音がメジャーの和音であるかマイナーの和音であるかを判別する。
例えば、メジャーマイナー判別部65は、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を出力する。
確率計算部66は、ルート判別部62から出力された判別関数またはルート判別部64から出力された判別関数から、基準音がルートである確率を計算すると共に、メジャーマイナー判別部63から出力された判別関数またはメジャーマイナー判別部65から出力された判別関数から、メジャーの和音である確率とマイナーの和音である確率とを計算する。
コード判別部24は、基準音がルートである確率、およびメジャーの和音である確率とマイナーの和音である確率から、最終的にコードを判別して、出力する。
次に、図12のフローチャートを参照して、信号処理装置11によるコード判別の処理を説明する。ステップS11において、ビート検出部21は、ビートを検出する。すなわち、ステップS11において、ビート検出部21は、図3乃至図10を参照して説明した処理によって、楽曲の信号である音声信号から、音声信号における拍の位置を検出して、音声信号における拍のそれぞれの位置を示すビート情報をビート毎特徴量抽出部23に供給する。
ステップS12において、センタ除去部22は、ステレオ信号である音声信号から、左右の中央に定位する音声の成分であるセンタ成分を除去し、センタ除去済み音声信号をビート毎特徴量抽出部23に供給する。
例えば、図13で示されるように、ステップS12において、センタ除去部22は、ステレオ信号である音声信号のうちの一方のチャンネルの信号と他方のチャンネルの信号との差分を求めることにより、音声信号からセンタ成分を除去する。より具体的には、センタ除去部22は、音声信号のうちの、左側に定位する音声の成分であるレフト成分Lと左右の中央に定位する音声の成分であるセンタ成分Cとからなる左チャンネルの信号から、右側に定位する音声の成分であるライト成分Rと左右の中央に定位する音声の成分であるセンタ成分Cとからなる右チャンネルの信号を引き算する。センタ除去部22は、その結果得られた、センタ成分Cが除去され、レフト成分Lからライト成分Rを引き算した結果からなるセンタ除去済み音声信号を生成する。
また、例えば、ステップS12において、センタ除去部22は、ステレオ信号である音声信号を所定の数の周波数の帯域に分割し、周波数の帯域のいずれかにおいて、一方のチャンネルの信号の位相と他方のチャンネルの信号の位相との差が予め定めた閾値より小さい場合、その帯域の音声信号をマスクすることにより、音声信号からセンタ成分を除去する。
この場合、図14で示されるように、センタ除去部22は、DFT(Discrete Fourier Transform)フィルタバンク81、DFTフィルタバンク82、マスク部83、DFTフィルタバンク84、およびDFTフィルタバンク85から構成される。
DFTフィルタバンク81は、音声信号のうちの、左側に定位する音声の成分であるレフト成分Lと左右の中央に定位する音声の成分であるセンタ成分Cとからなる左チャンネルの信号に、離散フーリエ変換の処理を適用して、所定の数の周波数の帯域のスペクトルを示すマルチバンド信号を生成する。DFTフィルタバンク81は、生成したマルチバンド信号をマスク部83に供給する。
DFTフィルタバンク82は、音声信号のうちの、右側に定位する音声の成分であるライト成分Rと左右の中央に定位する音声の成分であるセンタ成分Cとからなる右チャンネルの信号に、離散フーリエ変換の処理を適用して、DFTフィルタバンク81により生成されるマルチバンド信号における周波数の帯域のそれぞれと同じ周波数の帯域のスペクトルを示すマルチバンド信号を生成する。DFTフィルタバンク82は、生成したマルチバンド信号をマスク部83に供給する。
マスク部83は、DFTフィルタバンク81から供給されたマルチバンド信号の位相と、DFTフィルタバンク82から供給されたマルチバンド信号の位相とを、周波数の帯域毎に比較して、DFTフィルタバンク81から供給されたマルチバンド信号の位相と、DFTフィルタバンク82から供給されたマルチバンド信号の位相との差が予め定めた閾値より小さい場合、DFTフィルタバンク81から供給されたマルチバンド信号のうちのその帯域の信号とDFTフィルタバンク82から供給されたマルチバンド信号のうちのその帯域の信号とをマスクする。
マスク部83は、マスクされた帯域の信号を含む、DFTフィルタバンク81から供給されたマルチバンド信号をDFTフィルタバンク84に供給する。また、マスク部83は、マスクされた帯域の信号を含む、DFTフィルタバンク82から供給されたマルチバンド信号をDFTフィルタバンク85に供給する。
DFTフィルタバンク84は、マスク部83から供給された、マスクされた帯域の信号を含むマルチバンド信号に、逆離散フーリエ変換の処理を適用して、左右の中央に定位する音声の成分であるセンタ成分Cが除去され、左側に定位する音声の成分であるレフト成分Lだけからなる信号を生成する。DFTフィルタバンク84は、レフト成分Lだけからなる信号を出力する。
DFTフィルタバンク85は、マスク部83から供給された、マスクされた帯域の信号を含むマルチバンド信号に、逆離散フーリエ変換の処理を適用して、左右の中央に定位する音声の成分であるセンタ成分Cが除去され、右側に定位する音声の成分であるライト成分Rだけからなる信号を生成する。DFTフィルタバンク85は、ライト成分Rだけからなる信号を出力する。
また、例えば、図15で示されるように、音声信号についての、複数のオクターブのそれぞれにおける12平均率のそれぞれの高さの12の音のエネルギから、センタ除去済み音声信号を求めるようにしてもよい。
すなわち、図16で示されるように、ステップS12において、センタ除去部22は、音声信号の右チャンネルの信号および左チャンネルの信号のそれぞれについて、複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギを求めて、それぞれのオクターブのそれぞれの音毎に、左チャンネルの信号から求めたエネルギから右チャンネルの信号から求めたエネルギを引き算する。さらに、センタ除去部22は、引き算の結果の絶対値からなる信号を求めて、この信号をセンタ除去済み音声信号とするようにしてもよい。
なお、この場合、ベースの信号は、コードの抽出について重要なので、ベースの含まれる帯域のみ、左チャンネルの信号と右チャンネルの信号とについての差分を取らないなどとするようにしてもよい。
音声信号には、センタ成分としてボーカルラインやエネルギの大きい打楽器の音の成分が含まれていることが多く、この成分がコード判別の妨げになることがある。
そこで、より正確にコードを判別できるようにするため、ステレオ信号である音声信号から、センタ成分が除去される。
以下、左チャンネルの信号と右チャンネルの信号との、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギの差の絶対値を示すセンタ除去済み音声信号を例に説明する。
図12に戻り、ステップS13において、ビート毎特徴量抽出部23は、元の音声信号からビート毎にコード判別用特徴量を抽出する。すなわち、ステップS13において、ビート毎特徴量抽出部23は、センタ成分が除去されていない音声信号から、拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出する。
ステップS14において、ビート毎特徴量抽出部23は、センタ成分を除去した音声信号であるセンタ除去済み音声信号からビート毎にコード判別用特徴量を抽出する。すなわち、ステップS14において、ビート毎特徴量抽出部23は、センタ成分が除去された音声信号から、拍のそれぞれの範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出する。
ステップS13およびステップS14において、ビート毎特徴量抽出部23は、ビート検出部21において検出された拍の位置を示すビート情報を基に、センタ成分を除去した音声信号およびセンタ成分が除去されていない音声信号のそれぞれの、拍の範囲のそれぞれから特徴量を抽出する。
図17で示されるように、後述するステップS15のビート毎のコード判別の処理において、拍の範囲の特徴量のそれぞれから、それぞれにコードが判別される。ステップS13およびステップS14において、音声信号の拍の範囲のコードの判別に用いられる、音声信号の拍の範囲の特徴量が抽出される。
ここで、図18および図19を参照して、センタ成分を除去した音声信号またはセンタ成分が除去されていない音声信号のいずれかである音声信号の拍の範囲からの特徴量の抽出の詳細について説明する。
まず、ビート毎特徴量抽出部23は、センタ成分が除去されていない音声信号の右チャンネルの信号および左チャンネルの信号のそれぞれについて、複数のオクターブの成分に分けて、さらにそれぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギを求める。例えば、ビート毎特徴量抽出部23は、それぞれのオクターブのそれぞれの音毎に、左チャンネルの信号から求めたエネルギと右チャンネルの信号から求めたエネルギとを加算する。
このようにすることで、センタ成分が除去されていない音声信号は、左チャンネルの信号と右チャンネルの信号との、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギの差の絶対値を示すセンタ除去済み音声信号の方式に対応して、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギを示す方式とされる。
そして、図18で示されるように、ビート毎特徴量抽出部23は、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音のエネルギを示す方式とされた、センタ成分を除去した音声信号またはセンタ成分が除去されていない音声信号のいずれかである音声信号から、ビート情報で示される拍の位置を基に、所定の拍の位置から次の拍の位置までの拍の範囲の信号のみを切り出す。
ビート毎特徴量抽出部23は、切り出された拍の範囲の信号で示されるエネルギを、時間で平均する。これにより、図18の右側に示されるように、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音毎のエネルギが求められる。
さらに、図19で示されるように、ビート毎特徴量抽出部23は、例えば、7オクターブの、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音毎のエネルギに重み付けする。この場合、それぞれのオクターブにおける12平均率のそれぞれの高さの12の音毎に予め定めた重みで、それぞれの音のエネルギが重み付けされる。
そして、例えば、ビート毎特徴量抽出部23は、7オクターブのそれぞれのオクターブにおいて、同じ音名の音のエネルギを加算して、音名で特定される12の音のそれぞれのエネルギを求める。ビート毎特徴量抽出部23は、12の音のそれぞれのエネルギを音名の音階の順に配置して、音階の順の音のエネルギを示す特徴量を生成する。
すなわち、例えば、ビート毎特徴量抽出部23は、重み付けされたエネルギのうち、C1,C2,C3,C4,C5,C6、およびC7のエネルギを加算して、Cである音名の音のエネルギを求める。ビート毎特徴量抽出部23は、重み付けされたエネルギのうち、C#1,C#2,C#3,C#4,C#5,C#6、およびC#7のエネルギを加算して、C#である音名の音のエネルギを求める。
同様に、ビート毎特徴量抽出部23は、重み付けされたエネルギのうち、オクターブO1乃至オクターブO7のD,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれのエネルギを加算して、D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギをそれぞれ求める。
ビート毎特徴量抽出部23は、音階の順に、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが配置されてなる特徴量を生成する。
このように、ビート毎特徴量抽出部23は、センタ成分を除去した音声信号またはセンタ成分が除去されていない音声信号のいずれかである音声信号の拍の範囲から特徴量を生成する。
なお、ビート毎特徴量抽出部23は、センタ成分が除去されていない音声信号の拍の範囲からのビート毎のコード判別用特徴量として、ルートを判別するために用いられる特徴量(以下、元信号ルート判別用特徴量と称する)とメジャーの和音であるかマイナーの和音であるかを判別するために用いられる特徴量(以下、元信号メジャーマイナー判別用特徴量と称する)とを生成する。
元信号ルート判別用特徴量を生成する場合に用いられる、音のエネルギに重み付けするための重みと、元信号メジャーマイナー判別用特徴量を生成する場合に用いられる、音のエネルギに重み付けするための重みとは、異なっている。
また、ビート毎特徴量抽出部23は、センタ成分を除去した音声信号の拍の範囲からのビート毎のコード判別用特徴量として、ルートを判別するために用いる特徴量(以下、センタ除去済みルート判別用特徴量と称する)とメジャーの和音であるかマイナーの和音であるかを判別するために用いる特徴量(以下、センタ除去済みメジャーマイナー判別用特徴量と称する)とを生成する。
センタ除去済みルート判別用特徴量を生成する場合に用いられる、音のエネルギに重み付けするための重みと、センタ除去済みメジャーマイナー判別用特徴量を生成する場合に用いられる、音のエネルギに重み付けするための重みとは、異なっている。
このように、図20に示されるように、ステップS13およびステップS14において、ビート毎特徴量抽出部23は、ビート毎のコード判別用特徴量として、元信号ルート判別用特徴量、元信号メジャーマイナー判別用特徴量、センタ除去済みルート判別用特徴量、およびセンタ除去済みメジャーマイナー判別用特徴量を生成する。
図12に戻り、ステップS15において、コード判別部24は、ビート毎のコード判別の処理を実行して、コード判別の処理は終了する。
図21は、ビート毎のコード判別の処理の例の詳細を説明するフローチャートである。
ステップS31において、コード判別部24は、元の音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、コード判別部24は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量を取得する。
ステップS32において、ルート判別部64は、元信号ルート判別用特徴量によりルート判別する。例えば、ステップS32において、ルート判別部64は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す元信号ルート判別用特徴量から、基準音がルートであるかを判別する。この場合、ルート判別部64は、基準音がルートであるかを判別する判別関数を出力する。
より具体的には、例えば、ステップS32において、ルート判別部64は、元信号ルート判別用特徴量から、元信号ルート判別用特徴量の最初のデータの音である基準音がルートであるかを判別し、判別関数を出力する。
ステップS33において、確率計算部66は、ルート判別部64からの出力値を確率に変換する。すなわち、ステップS33において、確率計算部66は、ルート判別部64からの、基準音がルートであるかを判別する判別関数を確率に変換する。
ステップS34において、メジャーマイナー判別部65は、元信号メジャーマイナー判別用特徴量により和音のメジャーまたはマイナーを判別する。例えば、ステップS34において、メジャーマイナー判別部65は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す元信号メジャーマイナー判別用特徴量から、メジャーの和音であるかマイナーの和音であるかを判別する。この場合、メジャーマイナー判別部65は、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を出力する。
ステップS35において、確率計算部66は、メジャーマイナー判別部65からの出力値を確率に変換する。すなわち、ステップS35において、確率計算部66は、メジャーマイナー判別部65からの、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を確率に変換する。
ステップS36において、コード判別部24は、ステップS33で求められた確率およびステップS35で求められた確率から、現在のルートのメジャーまたはマイナーである確率をそれぞれ求める。
ステップS37において、シフトレジスタ61は、ビート毎のコード判別用特徴量をシフトする。
ステップS38において、コード判別部24は、ステップS32乃至ステップS38の処理を12回繰り返したか否かを判定し、12回繰り返していないと判定された場合、ステップS32に戻り、シフトされたビート毎のコード判別用特徴量を用いた、ステップS32乃至ステップS38の処理を繰り返す。
図22に示されるように、コード判別部24は、ルートをC乃至Bであると順に仮定し、仮定されたルートのデータが最初に来るようにコード判別用特徴量をシフトして、仮定したルートのメジャーコードである確率およびマイナーコードである確率をそれぞれ求めていく。
すなわち、コード判別部24は、音階の順に、12のそれぞれの音名の音のエネルギを示すデータが配置されてなる元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおいて、例えば、図22の斜線で示される位置である、予め決められた位置に配置されているエネルギの音がルートのメジャーコードである確率と、その位置に配置されているエネルギの音がルートのマイナーコードである確率とを求める。
例えば、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおいて、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが順に配置されている場合、コード判別部24は、図22の斜線で示されるコード判別用特徴量の最初に配置されているエネルギの音であるCのメジャーコードである確率と、Cのマイナーコードである確率とを求める。
シフトレジスタ61は、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおける、音階の順の、12のそれぞれの音名の音のエネルギを示すデータの配置を、それぞれ、循環的にシフト、いわゆるローテートシフトする。例えば、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおいて、図22の斜線で示される最初に配置されているエネルギの音がCとされ、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが順に配置されている場合、シフトレジスタ61は、C#,D,D#,E,F,F#,G,G#,A,A#,B、およびCのそれぞれの音名の音のエネルギを示すデータが順に配置されるように、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおける音のエネルギを示すデータの配置をシフトする。この場合、図22の斜線で示されるコード判別用特徴量の最初に配置されるエネルギの音は、C#となる。
C#,D,D#,E,F,F#,G,G#,A,A#,B、およびCの順でそれぞれの音名の音のエネルギを示すデータが配置されるように、シフトされた元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とから、コード判別部24は、C#のメジャーコードである確率と、C#のマイナーコードである確率とを求める。
元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とにおける音のエネルギを示すデータの配置をシフトして、例えば、コード判別用特徴量の最初などの、予め決められた位置に配置されているエネルギの音である基準音がルートのメジャーコードである確率と、その基準音がルートのマイナーコードである確率とを求める処理が繰り返されることにより、コード判別部24は、Dのメジャーコードである確率およびDのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率を求める。
この処理をより詳細に説明すると、図23で示されるように、ステップS32において、ルート判別部64は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す元信号ルート判別用特徴量から、基準音がルートであるかを判別し、基準音がルートであるかを判別する判別関数を出力する。
ステップS33において、確率計算部66は、ルート判別部64からの、基準音がルートであるかを判別する判別関数を確率に変換し、基準音がルートである確率Rを求める。
また、ステップS34において、メジャーマイナー判別部65は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示す元信号メジャーマイナー判別用特徴量から、メジャーの和音であるかマイナーの和音であるかを判別し、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を出力する。
ステップS35において、確率計算部66は、メジャーマイナー判別部65からの、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を確率に変換し、メジャーである確率Majおよびマイナーである確率Minを求める。
コード判別部24は、基準音がルートのメジャーコードである確率を、確率Rと確率Majとを掛け算することにより計算する。また、コード判別部24は、基準音がルートのマイナーコードである確率を、確率Rと確率Minとを掛け算することにより計算する。
なお、図24にメジャーの和音であるかマイナーの和音であるかを判別する判別関数の出力値の例を示すように、判別関数の出力値は、確率ではない連続値なので、判別関数の出力値を確率に変換する場合、確率計算部66は、正規分布またはGMM(Gaussian Mixture Model)を用いて、判別関数の出力値に対する各状態である確率を推定する。
このように、図25で示されるように、コード判別部24は、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とから、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率をそれぞれ求める。すなわち、コード判別部24によって、元信号ルート判別用特徴量と元信号メジャーマイナー判別用特徴量とから、Cのメジャーコードである確率、Cのマイナーコードである確率、C#のメジャーコードである確率、C#のマイナーコードである確率、Dのメジャーコードである確率、Dのマイナーコードである確率、D#のメジャーコードである確率、D#のマイナーコードである確率、Eのメジャーコードである確率、Eのマイナーコードである確率、Fのメジャーコードである確率、Fのマイナーコードである確率、F#のメジャーコードである確率、F#のマイナーコードである確率、Gのメジャーコードである確率、Gのマイナーコードである確率、G#のメジャーコードである確率、G#のマイナーコードである確率、Aのメジャーコードである確率、Aのマイナーコードである確率、A#のメジャーコードである確率、A#のマイナーコードである確率、Bのメジャーコードである確率、およびBのマイナーコードである確率がそれぞれ求められる。
図21に戻り、ステップS38において、12回繰り返したと判定された場合、手続きは、ステップS39に進む。
ステップS39において、コード判別部24は、センタ成分を除去した音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、コード判別部24は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量を取得する。
ステップS40において、ルート判別部62は、センタ除去済みルート判別用特徴量によりルート判別する。例えば、ステップS40において、ルート判別部62は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示すセンタ除去済みルート判別用特徴量から、基準音がルートであるかを判別する。この場合、ルート判別部62は、基準音がルートであるかを判別する判別関数を出力する。
ステップS41において、確率計算部66は、ルート判別部62からの出力値を確率に変換する。すなわち、ステップS41において、確率計算部66は、ルート判別部62からの、基準音がルートであるかを判別する判別関数を確率に変換する。
ステップS42において、メジャーマイナー判別部63は、センタ除去済みメジャーマイナー判別用特徴量により和音のメジャーまたはマイナーを判別する。例えば、ステップS42において、メジャーマイナー判別部63は、所定の高さの音である基準音を基準に音階の順のそれぞれの高さの音のそれぞれのエネルギを示すセンタ除去済みメジャーマイナー判別用特徴量から、メジャーの和音であるかマイナーの和音であるかを判別する。この場合、メジャーマイナー判別部63は、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を出力する。
ステップS43において、確率計算部66は、メジャーマイナー判別部63からの出力値を確率に変換する。すなわち、ステップS43において、確率計算部66は、メジャーマイナー判別部63からの、メジャーの和音であるかマイナーの和音であるかを判別する判別関数を確率に変換する。
ステップS44において、コード判別部24は、ステップS41で求められた確率およびステップS43で求められた確率から、現在のルートのメジャーまたはマイナーである確率をそれぞれ求める。
ステップS45において、シフトレジスタ61は、ビート毎のコード判別用特徴量をシフトする。
ステップS46において、コード判別部24は、ステップS40乃至ステップS45の処理を12回繰り返したか否かを判定し、12回繰り返していないと判定された場合、ステップS40に戻り、シフトされたビート毎のコード判別用特徴量を用いた、ステップS40乃至ステップS45の処理を繰り返す。
図26で示されるように、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量から求められた、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率とは別個に、ステップS31乃至ステップS46の処理により、センタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率とがそれぞれ求められる。
このように、様々な特徴量から求めたコードの確率から総合的に判断されて、それぞれの拍の範囲のコードが決定される。
ステップS46において、12回繰り返したと判定された場合、手続きは、ステップS47に進む。
ステップS47において、コード判別部24は、最も確率の高いコードを正解コードとする。すなわち、コード判別部24は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量から求められた、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から求められた、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率のうち、最も高い確率のコードを正解コードとする。
また、コード判別部24は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量から求められた、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から求められた、拍の範囲の和音がCのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率の平均確率の最も高いコードを正解コードとする。例えば、コード判別部24は、Cのメジャーコードである確率およびCのマイナーコードである確率乃至Bのメジャーコードである確率およびBのマイナーコードである確率のそれぞれについて、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量から求められた確率とセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から求められた確率との平均値を求めて、この平均値である平均確率のうち最も高い確率のコードを正解コードとする。
ステップS48において、コード判別部24は、正解コードをビート毎のコードとして出力して、処理は終了する。なお、この場合、例えば、コード判別部24は、ビート毎のコードとして、そのコードのコードネームを出力する。
このように、音声信号から、その楽曲の和音をより正確に判別することができるようになる。
また、コード判別部24は、確率を求めることなく、音階の順のそれぞれの高さの音のそれぞれのエネルギを示す特徴量から、ルートを判別するとともに、メジャーの和音であるかマイナーの和音であるかを判別するように構成することもできる。
図27は、確率を求めることなく、音階の順のそれぞれの高さの音のそれぞれのエネルギを示す特徴量から、ルートを判別するとともに、メジャーの和音であるかマイナーの和音であるかを判別する場合の、コード判別部24の構成の他の例を示すブロック図である。
コード判別部24は、正解コード判別部91から構成される。
正解コード判別部91は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から、ルートを判別するとともに、メジャーの和音であるかマイナーの和音であるかを判別する。例えば、正解コード判別部91は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から、直接、正解コードを示すインデックスを出力する。
図28は、正解コード判別部91から構成されるコード判別部24による、ビート毎のコード判別の処理の他の例の詳細を説明するフローチャートである。
ステップS61において、コード判別部24は、ビート毎特徴量抽出部23から、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量を含むビート毎のコード判別用特徴量を取得する。
ステップS62において、コード判別部24の正解コード判別部91は、正解コードを判別する。例えば、ステップS62において、正解コード判別部91は、Cのメジャーコード、Cのマイナーコード、C#のメジャーコード、C#のマイナーコード、Dのメジャーコード、Dのマイナーコード、D#のメジャーコード、D#のマイナーコード、Eのメジャーコード、Eのマイナーコード、Fのメジャーコード、Fのマイナーコード、F#のメジャーコード、F#のマイナーコード、Gのメジャーコード、Gのマイナーコード、G#のメジャーコード、G#のマイナーコード、Aのメジャーコード、Aのマイナーコード、A#のメジャーコード、A#のマイナーコード、Bのメジャーコード、およびBのマイナーコードのうちの、拍の範囲の正しい和音を示す正解コードを判別する。
ステップS63において、コード判別部24は、正解コードをビート毎のコードとして出力して、処理は終了する。なお、この場合も、コード判別部24は、ビート毎のコードとして、そのコードのコードネームを出力することができる。
次に、コード判別部24を作成するための、特徴量による学習について説明する。
図29は、コード判別部24を作成するための、特徴量による学習を行う信号処理装置101の構成の例を示すブロック図である。図29において、図1に示す場合と同様の部分には同一の符号を付してあり、その説明は省略する。
信号処理装置101は、ビート検出部21、センタ除去部22、ビート毎特徴量抽出部23、およびコード判別学習部121から構成される。
コード判別学習部121は、ビート毎特徴量抽出部23から供給されるビート毎のコード判別用特徴量と、ビート毎のコード判別用特徴量で示される拍の範囲のビート毎のコードから、音声信号の拍の範囲の和音の判別を学習する。すなわち、コード判別学習部121は、特徴量からの特徴量で示される音声信号の拍の範囲の和音の判別を、特徴量と特徴量で示される音声信号の拍の範囲の正しい和音とにより学習する。
コード判別学習部121に供給されるビート毎のコードは、図30で示されるように、ビート毎のコード判別用特徴量で示される拍の範囲の正しいコードを示す。すなわち、この場合、12の拍の範囲についてのビート毎のコード判別用特徴量に対応するビート毎のコードは、その12の拍の範囲のそれぞれの、C,C,C,C,Am,Am,Am,Am,Em,Em,Em、およびEmである正しいコードを示す。
次に、図31のフローチャートを参照して、コード判別学習の処理を説明する。ステップS101乃至ステップS104のそれぞれは、図12のステップS11乃至ステップS14のそれぞれと同様なので、その説明は省略する。
ステップS105において、コード判別学習部121は、ビート毎のコード判別の学習の処理を実行して、処理は終了する。
ステップS105のビート毎のコード判別の学習の処理は、例えば、ルートであるかの判別を学習するための処理とメジャーかマイナーかの判別を学習するための処理からなる。
図32は、ルートであるかの判別を学習するためのビート毎のコード判別学習の処理を説明するフローチャートである。ステップS121において、コード判別学習部121は、元の音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、元信号ルート判別用特徴量を取得する。
ステップS122において、コード判別学習部121は、正解ルートのデータが最初に来るように、元信号ルート判別用特徴量である、取得したビート毎のコード判別用特徴量をシフトする。
例えば、図33で示されるように、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量の元信号ルート判別用特徴量において、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが順に配置され、ビート毎のコード判別用特徴量に対応するビート毎のコードで示される正しいコード(正解コード)が、Dである場合、コード判別学習部121は、元信号ルート判別用特徴量を、Dの音名の音のエネルギを示すデータが元信号ルート判別用特徴量の最初に配置されるように、元信号ルート判別用特徴量を2回シフトする。
すなわち、コード判別学習部121は、C#,D,D#,E,F,F#,G,G#,A,A#,B、およびCのそれぞれの音名の音のエネルギを示すデータが順に配置されるように、元信号ルート判別用特徴量における音のエネルギを示すデータの配置をシフトし、さらに、D,D#,E,F,F#,G,G#,A,A#,B,C、およびC#,のそれぞれの音名の音のエネルギを示すデータが順に配置されるように、元信号ルート判別用特徴量における音のエネルギを示すデータの配置をシフトする。
ステップS123において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトした、元信号ルート判別用特徴量であるビート毎のコード判別用特徴量を正解データに追加する。
ステップS124において、コード判別学習部121は、シフトしたビート毎のコード判別用特徴量を1音分さらにシフトし、元信号ルート判別用特徴量である、そのビート毎のコード判別用特徴量を不正解データに追加する。
ステップS125において、コード判別学習部121は、ステップS124を11回繰り返したか否かを判定し、ステップS124が11回繰り返されるまで、手続きは、ステップS124に戻る。
ステップS125において、ステップS124を11回繰り返したと判定された場合、手続きはステップS126に進み、コード判別学習部121は、全てのビートについて処理したか否かを判定し、全てのビートを処理していないと判定された場合、手続きはステップS121に戻り、次のビートについて上述した処理が繰り返される。
ステップS126において、全てのビートについて処理したと判定された場合、手続きは、ステップS127に進み、コード判別学習部121は、元信号ルート判別用特徴量によって作成した正解データおよび不正解データから、ビート毎のコード判別用特徴量の最初のデータの音がルートであるかどうかを判別する判別部を機械学習で作成する。
例えば、図34に示されるように、コード判別学習部121は、GP(Genetic Programming)または各種回帰解析などにより、元信号ルート判別用特徴量によって作成された正解データである、最初のデータの音がルートとされているビート毎のコード判別用特徴量の入力に対してTrueを出力し、元信号ルート判別用特徴量によって作成された不正解データである、最初のデータの音がルート以外の音とされているビート毎のコード判別用特徴量の入力に対してFalseを出力するように、ルート判別機64の学習を行う。
ステップS128において、コード判別学習部121は、センタ成分を除去した音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済みルート判別用特徴量を取得する。
ステップS129において、コード判別学習部121は、正解ルートのデータが最初に来るように、センタ除去済みルート判別用特徴量である、取得したビート毎のコード判別用特徴量をシフトする。
例えば、センタ除去済みルート判別用特徴量において、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが順に配置され、ビート毎のコード判別用特徴量に対応するビート毎の正解コードが、Eである場合、コード判別学習部121は、センタ除去済みルート判別用特徴量を、Eの音名の音のエネルギを示すデータがセンタ除去済みルート判別用特徴量の最初に配置されるように、センタ除去済みルート判別用特徴量を4回シフトする。
ステップS130において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトした、センタ除去済みルート判別用特徴量であるビート毎のコード判別用特徴量を正解データに追加する。
ステップS131において、コード判別学習部121は、シフトしたビート毎のコード判別用特徴量を1音分さらにシフトし、センタ除去済みルート判別用特徴量である、そのビート毎のコード判別用特徴量を不正解データに追加する。
ステップS132において、コード判別学習部121は、ステップS131を11回繰り返したか否かを判定し、ステップS131が11回繰り返されるまで、手続きは、ステップS131に戻る。
ステップS132において、ステップS131を11回繰り返したと判定された場合、ステップS133に進み、コード判別学習部121は、全てのビートについて処理したか否かを判定し、全てのビートを処理していないと判定された場合、手続きはステップS128に戻り、次のビートについて上述した処理が繰り返される。
ステップS133において、全てのビートについて処理したと判定された場合、ステップS134に進み、コード判別学習部121は、センタ除去済みルート判別用特徴量によって作成した正解データおよび不正解データから、ビート毎のコード判別用特徴量の最初のデータの音がルートであるかどうかを判別する判別部を機械学習で作成して、処理は終了する。
例えば、コード判別学習部121は、GPまたは各種回帰解析などにより、センタ除去済みルート判別用特徴量によって作成された正解データである、最初のデータの音がルートとされているビート毎のコード判別用特徴量の入力に対してTrueを出力し、センタ除去済みルート判別用特徴量によって作成された不正解データである、最初のデータの音がルート以外の音とされているビート毎のコード判別用特徴量の入力に対してFalseを出力するように、ルート判別機62の学習を行う。
次に、図35を参照して、メジャーかマイナーかの判別を学習するためのビート毎のコード判別学習の処理を説明する。ステップS151において、コード判別学習部121は、元の音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、元信号メジャーマイナー判別用特徴量を取得する。
ステップS152において、コード判別学習部121は、正解ルートのデータが最初に来るように、元信号メジャーマイナー判別用特徴量である、取得したビート毎のコード判別用特徴量をシフトする。
ステップS153において、コード判別学習部121は、ビート毎のコード判別用特徴量に対応するビートの正しいコードがメジャーであるか否かを判定し、メジャーであると判定された場合、手続きは、ステップS154に進む。ステップS154において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトされた、元信号メジャーマイナー判別用特徴量である、ビート毎のコード判別用特徴量をTrueのデータに追加して、手続きは、ステップS156に進む。
ステップS153において、正しいコードがメジャーでない、すなわちマイナーであると判定された場合、手続きは、ステップS155に進む。ステップS155において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトされた、元信号メジャーマイナー判別用特徴量である、ビート毎のコード判別用特徴量をFalseのデータに追加して、手続きは、ステップS156に進む。
ステップS156において、コード判別学習部121は、全てのビートについて処理したか否かを判定し、全てのビートを処理していないと判定された場合、手続きはステップS151に戻り、次のビートについて、上述した処理が繰り返される。
ステップS156において、全てのビートを処理したと判定された場合、手続きはステップS157に進む。ステップS157において、コード判別学習部121は、元信号メジャーマイナー判別用特徴量によって作成したTrueのデータおよびFalseのデータから、ビート毎のコード判別用特徴量の最初のデータの音がルートである場合、メジャーかマイナーかを判別する判別部を機械学習で作成する。
例えば、図36に示されるように、コード判別学習部121は、GPまたは各種回帰解析などにより、メジャーコードの拍の範囲から抽出された元信号メジャーマイナー判別用特徴量によって作成された、最初のデータの音がルートとされているTrueのデータの入力に対してTrueを出力し、マイナーコードの拍の範囲から抽出された元信号メジャーマイナー判別用特徴量によって作成された、最初のデータの音がルートとされているFalseのデータの入力に対してFalseを出力するように、メジャーマイナー判別部65の学習を行う。
ステップS158において、コード判別学習部121は、センタ成分を除去した音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済みメジャーマイナー判別用特徴量を取得する。
ステップS159において、コード判別学習部121は、正解ルートのデータが最初に来るように、センタ除去済みメジャーマイナー判別用特徴量である、取得したビート毎のコード判別用特徴量をシフトする。
ステップS160において、コード判別学習部121は、ビート毎のコード判別用特徴量に対応するビートの正しいコードがメジャーであるか否かを判定し、メジャーであると判定された場合、手続きは、ステップS161に進む。ステップS161において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトされた、センタ除去済みメジャーマイナー判別用特徴量である、ビート毎のコード判別用特徴量をTrueのデータに追加して、手続きは、ステップS163に進む。
ステップS160において、正しいコードがメジャーでない、すなわちマイナーであると判定された場合、手続きは、ステップS162に進む。ステップS162において、コード判別学習部121は、正解ルートのデータが最初に来るようにシフトされた、センタ除去済みメジャーマイナー判別用特徴量である、ビート毎のコード判別用特徴量をFalseのデータに追加して、手続きは、ステップS163に進む。
ステップS163において、コード判別学習部121は、全てのビートについて処理したか否かを判定し、全てのビートを処理していないと判定された場合、手続きはステップS158に戻り、上述した処理が繰り返される。
ステップS163において、全てのビートを処理したと判定された場合、手続きはステップS164に進む。ステップS164において、コード判別学習部121は、センタ除去済みメジャーマイナー判別用特徴量によって作成したTrueのデータおよびFalseのデータから、ビート毎のコード判別用特徴量の最初のデータの音がルートである場合、メジャーかマイナーかを判別する判別部を機械学習で作成して、処理は終了する。
例えば、コード判別学習部121は、GPまたは各種回帰解析などにより、メジャーコードの拍の範囲から抽出されたセンタ除去済みメジャーマイナー判別用特徴量によって作成された、最初のデータの音がルートとされているTrueのデータの入力に対してTrueを出力し、マイナーコードの拍の範囲から抽出されたセンタ除去済みメジャーマイナー判別用特徴量によって作成された、最初のデータの音がルートとされているFalseのデータの入力に対してFalseを出力するように、メジャーマイナー判別部63の学習を行う。
次に、正解コード判別部91を作成する場合の学習について説明する。
図37は、ルートであるかの判別とメジャーかマイナーかの判別とを学習するためのビート毎のコード判別学習の処理を説明するフローチャートである。
ステップS181において、コード判別学習部121は、元の音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量を取得する。
ステップS182において、コード判別学習部121は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量であるビート毎のコード判別用特徴量と、ビート毎のコード判別用特徴量に対応するビート毎のコードによって示される正しいコードの名前である正解コード名とを、教師データに追加する。
ステップS183において、コード判別学習部121は、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量であるビート毎のコード判別用特徴量と正解コード名とを、1音分シフトして、シフトしたビート毎のコード判別用特徴量と正解コード名とを教師データに追加する。
ステップS184において、コード判別学習部121は、ステップS183を11回繰り返したか否かを判定し、ステップS183が11回繰り返されるまで、手続きは、ステップS183に戻る。
ステップS184において、ステップS183を11回繰り返したと判定された場合、手続きはステップS185に進む。
例えば、図38で示されるように、ビート毎のコード判別用特徴量に対応するビート毎のコードによって示される正しいコードの名前である正解コード名がDである場合、C,C#,D,D#,E,F,F#,G,G#,A,A#、およびBのそれぞれの音名の音のエネルギを示すデータが順に配置されている元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量が、Dである正解コード名と共に、教師データに追加される。
そして、コード判別学習部121は、C#,D,D#,E,F,F#,G,G#,A,A#,B、およびCのそれぞれの音名の音のエネルギを示すデータが順に配置されるように、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量における音のエネルギを示すデータの配置をシフトし、正解コード名をC#にシフトする。コード判別学習部121は、C#,D,D#,E,F,F#,G,G#,A,A#,B、およびCのそれぞれの音名の音のエネルギを示すデータが順に配置されている元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量と、C#である正解コード名と共に、教師データに追加する。
さらに、コード判別学習部121は、D,D#,E,F,F#,G,G#,A,A#,B,C、およびC#のそれぞれの音名の音のエネルギを示すデータが順に配置されるように、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量における音のエネルギを示すデータの配置をさらにシフトし、正解コード名をDにシフトする。コード判別学習部121は、D,D#,E,F,F#,G,G#,A,A#,B,C、およびC#のそれぞれの音名の音のエネルギを示すデータが順に配置されている元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量と、Dである正解コード名と共に、教師データに追加する。
このように、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量における、音のエネルギを示すデータの配置のシフトが11回繰り返されて、1つの元信号ルート判別用特徴量から、12のデータが教師データに追加され、1つの元信号メジャーマイナー判別用特徴量から、12のデータが教師データに追加されることになる。
ステップS185において、コード判別学習部121は、センタ成分を除去した音声信号からのビート毎のコード判別用特徴量を取得する。すなわち、この場合、コード判別学習部121は、ビート毎特徴量抽出部23から供給されたビート毎のコード判別用特徴量のうちの、センタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量を取得する。
ステップS186において、コード判別学習部121は、センタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量であるビート毎のコード判別用特徴量と、ビート毎のコード判別用特徴量に対応するビート毎のコードによって示される正しいコードの名前である正解コード名とを、教師データに追加する。
ステップS187において、コード判別学習部121は、センタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量であるビート毎のコード判別用特徴量と正解コード名とを、1音分シフトして、シフトしたビート毎のコード判別用特徴量と正解コード名とを教師データに追加する。
ステップS188において、コード判別学習部121は、ステップS187を11回繰り返したか否かを判定し、ステップS187が11回繰り返されるまで、手続きは、ステップS187に戻る。
ステップS188において、ステップS187を11回繰り返したと判定された場合、手続きはステップS189に進む。
ステップS189において、コード判別学習部121は、全てのビートについて処理したか否かを判定し、全てのビートを処理していないと判定された場合、手続きはステップS181に戻り、次のビートについて上述した処理が繰り返される。
ステップS189において、全てのビートについて処理したと判定された場合、手続きは、ステップS190に進み、コード判別学習部121は、作成した教師データから、正解コード名を判別する判別部を機械学習で作成して、処理は終了する。
例えば、ステップS190において、コード判別学習部121は、kNN(k-Nearest Neighbor)、SVM(Support Vector Machine)、Naive Bayes、最も距離が近いコードを正解するマハラノビス距離、または最も確率が高いコードを正解とするGMM(Gaussian Mixture Model)などにより、作成した教師データから、正解コード名を判別する判別部を機械学習で作成する。
このように、コード判別学習部121は、作成した教師データから、元信号ルート判別用特徴量および元信号メジャーマイナー判別用特徴量、並びにセンタ除去済みルート判別用特徴量およびセンタ除去済みメジャーマイナー判別用特徴量から正解コードを判別する正解コード判別部91の学習を行う。
以上のように、音声信号を信号処理するようにした場合には、楽曲の和音を判別することができる。また、ステレオ信号である音声信号から、左右の中央に定位する音声の成分であるセンタ成分を除去し、センタ成分が除去された音声信号から、所定の範囲における、12平均率の音程のそれぞれの高さの音のそれぞれの特徴を示す特徴量を抽出し、特徴量を用いてその範囲の和音を判別するようにした場合には、音声信号から、その楽曲の和音をより正確に判別することができる。
なお、信号処理装置11は、音声信号を処理する機器であれば良く、例えば、外部から供給された音声信号を処理する機器や、音声信号を記録して再生する据え置きの機器や、携帯型の機器として構成することができる。
また、以上において、基準音のエネルギを示すデータが特徴量の最初に配置される例を説明したが、これに限らず、基準音のエネルギのデータを、特徴量の最後または中央など、特徴量における任意の位置に配置するようにしてもよい。
なお、音声信号の拍の範囲の和音を判別すると説明したが、これに限らず、小節の範囲、所定の数の拍の範囲など、音声信号の所定の範囲の和音を判別するようにしてもよい。この場合、和音を判別する範囲おける、音声信号の特徴量が抽出される。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図39は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)201は、ROM(Read Only Memory)202、または記憶部208に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)203には、CPU201が実行するプログラムやデータなどが適宜記憶される。これらのCPU201、ROM202、およびRAM203は、バス204により相互に接続されている。
CPU201にはまた、バス204を介して入出力インタフェース205が接続されている。入出力インタフェース205には、キーボード、マウス、マイクロホンなどよりなる入力部206、ディスプレイ、スピーカなどよりなる出力部207が接続されている。CPU201は、入力部206から入力される指令に対応して各種の処理を実行する。そして、CPU201は、処理の結果を出力部207に出力する。
入出力インタフェース205に接続されている記憶部208は、例えばハードディスクからなり、CPU201が実行するプログラムや各種のデータを記憶する。通信部209は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部209を介してプログラムを取得し、記憶部208に記憶してもよい。
入出力インタフェース205に接続されているドライブ210は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア211が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部208に転送され、記憶される。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図39に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア211、または、プログラムが一時的もしくは永続的に格納されるROM202や、記憶部208を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部209を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
11 信号処理装置, 21 ビート検出部, 22 センタ除去部, 23 ビート毎特徴量抽出部, 24 コード判別部, 41 アタック情報抽出部, 42 基本ビート周期検出部, 43 テンポ決定部, 44 楽曲特徴量抽出部, 45 テンポ修正部, 61 シフトレジスタ, 62 ルート判別部, 63 メジャーマイナー判別部, 64 ルート判別部, 65 メジャーマイナー判別部, 66 確率計算部, 81 DFTフィルタバンク, 82 DFTフィルタバンク, 83 マスク部, 84 DFTフィルタバンク, 85 DFTフィルタバンク, 91 正解コード判別部, 121 コード判別学習部, 201 CPU, 202 ROM, 203 RAM, 208 記憶部, 211 リムーバブルメディア