以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
また、以下の順序にしたがって当該「発明を実施するための最良の形態」を説明する。
1.一実施形態に係る情報処理装置の全体の構成
2.一実施形態に係る情報処理装置の各部の説明
2−1.ログスペクトル変換部
2−2.ビート確率算出部
2−3.ビート解析部
2−4.楽曲構造解析部
2−5.コード確率算出部
2−6.キー検出部
2−7.小節線検出部
2−8.コード進行検出部
3.本実施形態に係る情報処理装置の特徴
4.まとめ
<1.一実施形態に係る情報処理装置の全体の構成>
まず、本発明の一実施形態に係る情報処理装置100の全体的な構成について説明する。
図1は、本発明の一実施形態に係る情報処理装置100の論理的な構成を示すブロック図である。図1を参照すると、情報処理装置100は、ログスペクトル変換部110、ビート確率算出部120、ビート解析部130、楽曲構造解析部150、コード確率算出部160、キー検出部170、小節線検出部180、及びコード進行検出部190を備える。
情報処理装置100は、まず、楽曲の音声が記録された任意の形式の音声信号を取得する。情報処理装置100が取り扱う音声信号のフォーマットは、WAV、AIFF、MP3、ATRACなどの圧縮型又は非圧縮型の任意のフォーマットであってよい。
情報処理装置100は、かかる音声信号を入力信号とし、図1に示した各部による処理を実行する。情報処理装置100による音声信号の処理結果には、例えば、音声信号に含まれるビートの時間軸上の位置、小節線の位置、各ビート位置におけるキー又はコードなどが含まれ得る。
情報処理装置100は、例えば、PC(Personal Computer)やワークステーションなどの汎用的なコンピュータであってよい。また、情報処理装置100は、携帯電話端末、携帯情報端末、ゲーム端末、音楽再生機、又はテレビジョン受像機などの任意のデジタル機器であってよい。さらに、情報処理装置100は、楽曲処理専用の装置であってもよい。
以下、図1に示した情報処理装置100の各部について詳細に説明する。
<2.一実施形態に係る情報処理装置の各部の説明>
[2−1.ログスペクトル変換部]
ログスペクトル変換部110は、入力信号である音声信号の波形を、時間と音程の二次元で表されるログスペクトルに変換する。音声信号の波形をログスペクトルに変換する手法としては、例えば、特開2005−275068に記載された手法を用いることができる。
特開2005−275068に記載された手法では、まず、音声信号が帯域分割とダウンサンプリングによって複数のオクターブの信号に分割される。次に、各オクターブの信号から、12の音程の周波数帯域を通過させる帯域通過フィルタによって、それぞれ12の音程の信号が抽出される。その結果、複数のオクターブにわたる12音ごとの音のエネルギーを表すログスペクトルが得られる。
図2は、ログスペクトル変換部110により出力されるログスペクトルの一例を示す説明図である。
図2の縦軸を参照すると、入力された音声信号は4つのオクターブに分割され、さらに各オクターブは、“C”、“C#”、“D”、“D#”、“E”、“F”、“F#”、“G”、“G#”、“A”、“A#”、及び“B”の12の音程にそれぞれ分割されている。一方、図2の横軸は、音声信号が時間軸に沿ってサンプリングされた際のフレーム番号を表している。例えば、音声信号がサンプリング周波数128[Hz]でサンプリングされた場合には、1フレーム時間は1[sec]/128=7.8125[msec]に相当する。
図2の時間−音程の二次元平面上にプロットされた色の濃淡は、時間軸上の各位置における各音程のエネルギーの強さを表す。例えば、図2において、第10番目のフレームにおける下から2番目のオクターブの音程C(図中S1)は濃くプロットされており、音のエネルギーが強い、即ちその音が強く発せられていることを表している。
なお、ログスペクトル変換部110により出力されるログスペクトルは、かかる例に限定されない。図3は、図2とは異なる音声信号を8つのオクターブに分割したログスペクトルの例を示している。
[2−2.ビート確率算出部]
ビート確率算出部120は、ログスペクトル変換部110から入力されたログスペクトルの所定の時間単位(例えば1フレーム)ごとに、その時間単位にビートが含まれる確率(以下、ビート確率という)を算出する。なお、所定の時間単位を1フレームとした場合には、ビート確率とは各フレームがビート位置(ビートの時間軸上の位置)に一致している確率とみなすことができる。ビート確率の算出には、例えば、特開2008−123011に記載された学習アルゴリズムを応用した機械学習の結果取得されるビート確率算出式を用いる。
特開2008−123011に記載された手法では、まず、学習装置に音声信号などのコンテンツデータと当該コンテンツデータから抽出されるべき特徴量の教師データとの組が供給される。次に、学習装置は、コンテンツデータから特徴量を計算するための特徴量抽出式を、ランダムに選択したオペレータを結合することにより複数生成する。そして、学習装置は、生成した特徴量抽出式に従って計算した特徴量を入力した教師データと比較して評価する。さらに、学習装置は、特徴量抽出式の評価結果に基づいて、次の世代の特徴量抽出式を生成する。このような特徴量抽出式の生成と評価のサイクルを複数回繰り返すことにより、最終的にコンテンツデータから教師データを高い精度で抽出可能な特徴量抽出式を得ることができる。
ビート確率算出部120で用いるビート確率算出式は、かかる学習アルゴリズムを応用し、図4に示すような学習処理によって取得される。なお、図4では、ビート確率を算出する時間単位を1フレームとする例について示している。
まず、学習アルゴリズムに、ビート位置が既知である楽曲の音声信号から変換されたログスペクトルの断片(以下、部分ログスペクトルという)と、各部分ログスペクトルについての教師データとしてのビート確率とを供給する。ここで、部分ログスペクトルのウィンドウ幅は、ビート確率の算出の精度と処理コストのトレードオフを考慮して定められる。例えば、部分ログスペクトルのウィンドウ幅は、ビート確率を計算するフレームの前後7フレーム(即ち計15フレーム)としてもよい。
また、教師データとしてのビート確率とは、例えば、各部分ログスペクトルの中央のフレームにビートが含まれるか否かを、既知のビート位置に基づいて真値(1)又は偽値(0)で表したデータである。ここでは小節の位置は考慮されず、中央のフレームがビート位置に該当すればビート確率は1、該当しなければビート確率は0となる。図4の例では、部分ログスペクトルWa、Wb、Wc…Wnに対応するビート確率は、それぞれ1、0、1、…、0として与えられている。
このような入力データと教師データの複数の組に基づいて、上述した学習アルゴリズムにより、部分ログスペクトルからビート確率を算出するためのビート確率算出式(P(W))が予め取得される。
そして、ビート確率算出部120は、入力されたログスペクトルの1フレームごとに前後数フレームをウィンドウ幅とする部分ログスペクトルを切り出し、学習の結果得られたビート確率算出式を適用してビート確率を順次算出する。
図5は、ビート確率算出部120により算出されるビート確率の一例を示す説明図である。
図5を参照すると、まず図5(A)は、ログスペクトル変換部110からビート確率算出部120へ入力されるログスペクトルの一例である。また、図5(B)は、図5(A)のログスペクトルからビート確率算出部120により算出されるビート確率を、時間軸に沿って折れ線状に示している。例えば、フレーム位置F1では、ログスペクトルから部分ログスペクトルW1が切り出され、ビート確率算出式によりビート確率は0.95と計算されている。一方、フレーム位置F2では、ログスペクトルから部分ログスペクトルW2が切り出され、ビート確率算出式によりビート確率は0.1と計算されている。即ち、フレーム位置F1はビート位置に該当している可能性が高く、フレーム位置F2はビート位置に該当している可能性が低いことが分かる。
ビート確率算出部120によりこのように算出された各フレームにおけるビート確率は、後述するビート解析部130及び小節線検出部180へ出力される。
なお、ビート確率算出部120により使用されるビート確率算出式は、他の学習アルゴリズムにより学習されていてもよい。但し、ログスペクトルには、一般的に、例えば打楽器によるスペクトル、発音によるスペクトルの発生、コード変化によるスペクトルの変化など、多様なパラメータが含まれる。打楽器によるスペクトルであれば、打楽器が鳴らされた時点がビート位置である確率が高い。一方、発声によるスペクトルであれば、発声が開始され時点がビート位置である確率が高い。そうした多様なパラメータを総合的に用いてビート確率を高い精度で算出するためには、特開2008−123011に記載された学習アルゴリズムを用いるのが好適である。
[2−3.ビート解析部]
ビート解析部130は、ビート確率算出部120から入力されるビート確率に基づいて、音声信号に含まれるビートの時間軸上の位置、即ちビート位置を決定する。
図6は、ビート解析部130のより詳細な構成を示すブロック図である。図6を参照すると、ビート解析部130は、オンセット検出部132、ビートスコア計算部134、ビート探索部136、一定テンポ判定部138、一定テンポ用ビート再探索部140、ビート決定部142、及びテンポ補正部144を含む。
[2−3−1.オンセット検出部]
オンセット検出部132は、図5を用いて説明した、ビート確率算出部120から入力されるビート確率に基づいて、音声信号に含まれるオンセットを検出する。なお、本明細書において、オンセットとは、音声信号の中で音が発せられた時点を指し、より具体的には、ビート確率が所定の閾値以上であって極大値をとる点として扱われる。
図7は、ある音声信号について算出されたビート確率から検出されるオンセットの一例を示す説明図である。
図7には、図5(B)と同様、ビート確率算出部120により算出されたビート確率が、時間軸に沿って折れ線状に示されている。かかるビート確率において、極大値をとる点はフレームF3、F4、F5の3点である。このうち、フレームF3及びF5については、その時点でのビート確率は予め与えられる所定の閾値Th1よりも大きい。一方、フレームF4の時点でのビート確率は、当該閾値Th1よりも小さい。この場合、フレームF3及びF5の2点がオンセットとして検出される。
図8は、オンセット検出部132によるオンセット検出処理の流れの一例を示すフローチャートである。
図8を参照すると、オンセット検出部132は、まずフレームごとに算出されたビート確率について1番目のフレームから順次ループさせる(S1322)。そして、オンセット検出部132は、各フレームについて、ビート確率が所定の閾値よりも大きいか否か(S1324)、及びビート確率が極大を示しているか否か(S1326)を判定する。ここでビート確率が所定の閾値よりも大きく、かつビート確率が極大を示していれば、処理はS1328へ進む。一方、ビート確率が所定の閾値よりも大きくなく、又はビート確率が極大を示していなければ、S1328の処理はスキップされる。S1328では、オンセット位置のリストに現在時刻(又はフレーム番号)が追加される(S1328)。その後、全てのフレームについての処理が終了した時点で、ループは終了する(S1330)。
以上のようなオンセット検出部132によるオンセット検出処理により、音声信号に含まれるオンセット位置のリスト、即ち各オンセットに対応する時刻又はフレーム番号のリストが出力される。
図9は、オンセット検出部132により検出されたオンセットの位置を、ビート確率に対応させて示した説明図である。
図9では、ビート確率の折れ線の上に、オンセット検出部132により検出されたオンセットの位置を丸印で示している。ここでは、閾値Th1よりも大きいビート確率の極大値を示した15個のオンセットが検出されたことが理解される。オンセット検出部132により検出されたオンセット位置のリストは、次に説明するビートスコア計算部134へ出力される。
[2−3−2.ビートスコア計算部]
ビートスコア計算部134は、オンセット検出部132により検出された各オンセットについて、それぞれ一定のテンポ(又は一定のビート間隔)を有する何らかのビートに一致している度合いを表すビートスコアを計算する。
図10は、ビートスコア計算部134によるビートスコア計算処理について説明するための説明図である。
図10を参照すると、オンセット検出部132により検出されたオンセットのうち、フレーム位置Fk(フレーム番号k)に対応するオンセットが注目オンセットとして設定されている。また、フレーム位置Fkから所定の間隔dの整数倍だけ離れた一連のフレーム位置Fk−3、Fk−2、Fk−1、Fk、Fk+1、Fk+2、Fk+3が示されている。本明細書では、このような所定の間隔dをシフト量、シフト量dの整数倍離れたフレーム位置をシフト位置という。そして、ビート確率が計算されたフレームの集合Fに含まれる全てのシフト位置(…Fk−3、Fk−2、Fk−1、Fk、Fk+1、Fk+2、Fk+3…)におけるビート確率の和を、当該注目オンセットのビートスコアとする。即ち、フレーム位置Fiにおけるビート確率をP(Fi)とすると、注目オンセットのフレーム番号k及びシフト量dに依存するビートスコアBS(k,d)は、次式で表される。
なお、式(1)により算出されるビートスコアBS(k,d)は、音声信号のk番目のフレームに位置するオンセットが、シフト量dをビート間隔とする一定のテンポに乗っている可能性の高さを表すスコアということができる。
図11は、ビートスコア計算部134によるビートスコア計算処理の流れの一例を示すフローチャートである。
図11を参照すると、ビートスコア計算部134は、まずオンセット検出部132により検出されたオンセットについて、1番目のオンセットから順にループさせる(S1322)。さらに、ビートスコア計算部134は、注目オンセットに関し、全てのシフト量dについてループさせる(S1344)。ここでループの対象となるシフト量dは、演奏に使用され得る範囲の全てのビートの間隔の値である。そして、ビートスコア計算部134は、ビートスコアBS(k,d)を初期化する(即ち、ビートスコアBS(k,d)にゼロを代入する)(S1346)。次に、ビートスコア計算部134は、注目オンセットのフレーム位置Fdをシフトさせるシフト係数nについてループさせる(S1348)。そして、ビートスコア計算部134は、各シフト位置におけるビート確率P(Fk+nd)を、ビートスコアBS(k,d)に順次加算する(S1350)。その後、全てのシフト係数nについてループが終了すると(S1352)、ビートスコア計算部134は、注目オンセットのフレーム位置(フレーム番号k)、シフト量d、及びビートスコアBS(k,d)を記録する(S1354)。ビートスコア計算部134は、このようなビートスコアBS(k,d)の計算を、全てのオンセットの全てのシフト量について繰り返す(S1356、S1358)。
以上のようなビートスコア計算部134によるビートスコア計算処理により、オンセット検出部132により検出された全てのオンセットについて、複数のシフト量dにわたるビートスコアBS(k,d)が出力される。
図12は、一例として、ビートスコア計算部134により出力されるビートスコアを可視化したビートスコア分布図である。
図12において、横軸には、オンセット検出部132により検出されたオンセットが時系列で順に並べられている。一方、図12の縦軸は、各オンセットについてビートスコアを算出したシフト量を表す。また、図中の各点の色の濃淡は、そのオンセットについてそのシフト量で算出されたビートスコアの大きさを表す。かかるビートスコア分布図において、例えば、シフト量d1の近辺では、全てのオンセットにわたってビートスコアが高くなっている。これは、例えばシフト量d1に相当するテンポで楽曲が演奏されたと仮定すれば、検出されたオンセットの多くがビートに一致する可能性が高いことを意味している。ビートスコア計算部134により計算されたビートスコアは、次に説明するビート探索部136へ出力される。
[2−3−3.ビート探索部]
ビート探索部136は、ビートスコア計算部134により計算されたビートスコアに基づいて、尤もらしいテンポ変動を示すオンセット位置の経路を探索する。ビート探索部136による経路探索の手法としては、例えば、隠れマルコフモデルに基づくビタビアルゴリズムを用いることができる。
図13は、ビート探索部136における経路探索について説明するための説明図である。
ビート探索部136による経路探索にビタビアルゴリズムを適用する場合、時間軸(図13の横軸)の単位として、図12に関連して説明したオンセット番号を用いる。また、観測系列(図13の縦軸)として、ビートスコアの算出に使用したシフト量を用いる。
即ち、ビート探索部136は、ビートスコア計算部134においてビートスコアを計算したオンセットとシフト量の全ての組合せの1つ1つを、経路探索の対象のノードとする。なお、上述したように、各ノードのシフト量は、その意味において各ノードについて想定されるビート間隔に等しい。そこで、以下の説明では、各ノードのシフト量をビート間隔と言い換える。
このようなノードに対し、ビート探索部136は、時間軸に沿っていずれかのノードを順に選択していき、選択された一連のノードよりなる経路を後に説明する評価値を用いて評価する。このとき、ビート探索部136は、ノードの選択においてオンセットをスキップすることを許可される。例えば、図13において、k−1番目のオンセットの次に、k番目のオンセットがスキップされ、k+1番目のオンセットが選択されている。これは、オンセットの中にビートであるオンセットとビートでないオンセットが通常混在しており、ビートでないオンセットを経由しない経路も含めて、尤もらしい経路を探索しなければならないためである。
経路の評価には、例えば、(1)ビートスコア、(2)テンポ変化スコア、(3)オンセット移動スコア、及び(4)スキップペナルティの4つの評価値を用いることができる。このうち、(1)ビートスコアは、各ノードについてビートスコア計算部134により計算されたビートスコアである。一方、(2)テンポ変化スコア、(3)オンセット移動スコア、及び(4)スキップペナルティは、ノード間の遷移に対して与えられる。
ノード間の遷移に対して与えられる評価値のうち、(2)テンポ変化スコアは、楽曲の中でテンポは通常緩やかに変動するものであるという経験的な知識に基づいて与えられる評価値である。即ち、経路選択におけるノード間の遷移に際し、遷移前のノードのビート間隔と遷移後のノードのビート間隔との差が小さい程、テンポ変化スコアには高い値が与えられる。
図14は、テンポ変化スコアの一例を示す説明図である。
図14において、現在、ノードN1が選択されている。そして、ビート探索部136は、次のノードとしてノードN2〜N5のいずれかを選択する可能性がある(それ以外のノードを選択する可能性もあるが、説明の便宜上、ここではノードN2〜N5の4つのノードについて述べる)。ここでビート探索部136がノードN4を選択した場合、ノードN1とノードN4の間にはビート間隔の差は無いため、テンポ変化スコアとしては最も高い値が与えられる。一方、ビート探索部136がノードN3又はN5を選択した場合、ノードN1とノードN3又はN5との間にはビート間隔に差があり、ノードN4を選択した場合と比べて低いテンポ変化スコアが与えられる。また、ビート探索部136がノードN2を選択した場合、ノードN1とノードN2との間のビート間隔の差はノードN3又はN5を選択した場合よりも大きいため、さらに低いテンポ変化スコアが与えられる。
次に、(3)オンセット移動スコアは、遷移の前後のノードのオンセット位置の間隔が遷移元のノードのビート間隔と整合しているかに応じて与えられる評価値である。
図15は、オンセット移動スコアの一例を示す説明図である。
図15(A)では、現在、k番目のオンセットのビート間隔d2のノートN6が選択されている。また、ビート探索部136が次に選択するノードのうち、2つのノードN7及びN8も示されている。このうち、ノードN7はk+1番目のオンセットのノードであり、k番目のオンセットとk+1番目のオンセットの間隔(例えば、フレーム番号の差)はD7である。一方、ノードN8はk+2番目のオンセットのノードであり、k番目のオンセットとk+2番目のオンセットの間隔はD8である。
ここで、経路上の全てのノードが一定のテンポにおけるビート位置に必ず一致している理想的な経路を仮定すると、隣り合うノード間のオンセット位置の間隔は、各ノードのビート間隔の整数倍(休符が無ければ等倍)となるはずである。そこで、図15(B)に示すように、現在のノードN6との間でオンセット位置の間隔がノードN6のビート間隔d2の整数倍に近いほど高いオンセット移動スコアを定義する。図15(B)の例では、ノードN6とノードN7の間の間隔D7よりも、ノードN6とノードN8の間の間隔D8の方がノードN6のビート間隔d2の整数倍に近いため、ノードN6からノードN8への遷移に、より高いオンセット移動スコアが与えられている。
次に、(4)スキップペナルティは、ノードの遷移におけるオンセットの過剰なスキップを抑制するための評価値である。即ち、1度の遷移でオンセットを多くスキップするほど低いスコアが、スキップしないほど高いスコアが与えられる。なお、ここではスコアが低いほどペナルティが大きいことを意味する。
図16は、スキップペナルティの一例を示す説明図である。
図16では、現在、k番目のオンセットのノートN9が選択されている。また、ビート探索部136が次に選択するノードのうち、3つのノードN10、N11及びN12も示されている。このうち、それぞれノードN10はk+1番目、ノードN11はk+2番目、ノードN12はk+3番目のオンセットのノードである。即ち、ノードN9からノードN10へ遷移する場合には、オンセットのスキップは発生しない。一方、ノードN9からノードN11へ遷移する場合には、k+1番目のオンセットがスキップされる。また、ノードN9からノードN12へ遷移する場合には、k+1番目及びk+2番目のオンセットがスキップされる。このとき、スキップペナルティの値は、ノードN9からノードN10へ遷移する場合には相対的に高い値、ノードN9からノードN11へ遷移する場合には中程度の値、ノードN9からノードN12へ遷移する場合にはより低い値が与えられる。それにより、経路選択に際して、ノード間の間隔を一定とするためにより多くのオンセットがスキップされてしまうという現象を防ぐことができる。
ここまで、ビート探索部136において探索される経路の評価に用いられる4つの評価値について説明した。図13を用いて説明した経路の評価は、選択された経路について、その経路に含まれる各ノード又はノード間の遷移に対して与えられる上記(1)〜(4)の評価値を順次乗算することにより行われる。そして、ビート探索部136は、想定し得る全ての経路の中で、各経路内での評価値の積が最も高い経路を最適な経路として決定する。
図17は、ビート探索部136により最適な経路として決定された経路の一例を示す説明図である。
図17では、図12に示したビートスコア分布図の上に、ビート探索部136により決定された最適経路が点線枠で示されている。図17を参照すると、同図の例においてビート探索部136により探索された楽曲のテンポは、ビート間隔d3を中心に変動していることが分かる。ビート探索部136により決定された最適経路(最適経路に含まれるノードのリスト)は、次に説明する一定テンポ判定部138、一定テンポ用ビート再探索部140、及びビート決定部142へ出力される。
[2−3−4.一定テンポ判定部]
一定テンポ判定部138は、ビート探索部136により決定された最適経路が、ビート間隔(即ち、各ノードについて想定されるビート間隔)の分散の小さい一定のテンポを示しているか否かを判定する。より具体的には、一定テンポ判定部138は、まず、ビート探索部136から入力された最適経路に含まれるノードのビート間隔の集合について分散を計算する。そして、一定テンポ判定部138は、算出された分散が予め与えられる所定の閾値よりも小さい場合にはテンポは一定と判定し、所定の閾値よりも大きい場合にはテンポは一定でないと判定する。
図18は、一定テンポ判定部138による判定結果の2つの例を示す説明図である。
図18(A)を参照すると、点線枠で囲まれたオンセット位置の最適経路のビート間隔は、時間に応じて変動している。このような経路については、一定テンポ判定部138による閾値判定の結果、テンポは一定でないと判定され得る。一方、図18(B)を参照すると、点線枠で囲まれたオンセット位置の最適経路のビート間隔は、楽曲全体にわたってほぼ一定である。このような経路については、一定テンポ判定部138による閾値判定の結果、テンポは一定であると判定され得る。一定テンポ判定部138による閾値判定の結果は、一定テンポ用ビート再探索部140へ出力される。
[2−3−5.一定テンポ用ビート再探索部]
一定テンポ用ビート再探索部140は、ビート探索部136から出力された最適経路が一定テンポ判定部138により一定のテンポを示していると判定された場合に、最も頻度の高いビート間隔の周辺のみに探索の対象のノードを限定して経路探索を再実行する。
図19は、一定テンポ用ビート再探索部140による経路の再探索処理について説明するための説明図である。
図19を参照すると、図13と同様に、ビート間隔を観測系列とする時間軸(オンセット番号)に沿ったノードの集合が示されている。ここで、ビート探索部136により最適経路と決定された経路に含まれるノードのビート間隔の最頻値がd4であり、その経路は一定テンポ判定部138により一定のテンポを示していると判定されたと仮定する。その場合、一定テンポ用ビート再探索部140は、ビート間隔dがd4−Th2≦d≦d4+Th2(Th2は予め与えられる所定の閾値)を満たすノードのみを探索の対象として、経路を再度探索する。図19の例では、例えばk番目のオンセットについてN12〜N16の5つのノードが示されている。このうち、N13〜N15のビート間隔は探索範囲(d4−Th2≦d≦d4+Th2)に含まれる。これに対し、N12及びN16のビート間隔は、上記探索範囲に含まれない。そのため、k番目のオンセットについては、N13〜N15の3つのノードのみが一定テンポ用ビート再探索部140による経路探索の再実行の対象となる。なお、一定テンポ用ビート再探索部140による経路の再探索処理の内容は、探索の対象とするノードの範囲を除き、図13〜図17を用いて説明した探索部136による経路探索処理と同様である。
このような一定テンポ用ビート再探索部140による経路の再探索処理により、テンポが一定の楽曲について、経路探索の結果部分的に発生する可能性のあるビート位置の誤りを減少させることができる。一定テンポ用ビート再探索部140により再決定された最適経路は、ビート決定部142へ出力される。
[2−3−6.ビート決定部]
ビート決定部142は、ビート探索部136により決定された最適経路、又は一定テンポ用ビート再探索部140により再決定された最適経路と、それら経路に含まれる各ノードのビート間隔とに基づいて、音声信号に含まれるビート位置を決定する。
図20は、ビート決定部142によるビート決定処理について説明するための説明図である。
図20(A)には、図9を用いて説明したオンセット検出部132によるオンセット検出結果の一例をあらためて示している。この例では、オンセット検出部132により検出された、k番目のオンセットの周囲の14個のオンセットが示されている。
これに対し、(B)は、ビート探索部136又は一定テンポ用ビート再探索部140により決定された最適経路に含まれるオンセットを示している。(B)の例では、(A)に示された14個のオンセットのうち、k−7番目、k番目、k+6番目のオンセット(フレーム番号Fk−7、Fk、Fk+6)が最適経路に含まれている。また、k−7番目のオンセットのビート間隔(対応するノードのビート間隔に相当)はdk−7、k番目のオンセットのビート間隔はdkである。
このようなオンセットについて、ビート決定部142は、まず最適経路に含まれるオンセットの位置はその楽曲のビート位置であるとみなす。そして、ビート決定部142は、最適経路に含まれる隣り合うオンセットの間のビートを、各オンセットのビート間隔に応じて補完する。
ビート決定部142は、最適経路上で隣り合うオンセットの間のビートを補完するために、まず補完するビートの数を決定する。例えば、図21に示すように、隣り合う2つのオンセットの位置をFh及びFh+1、オンセット位置Fhにおけるビート間隔をdhとする。その場合、ビート決定部142によりFh及びFh+1の間に補完されるビート数Bfillは次式で与えられる。
なお、式(2)において、Round(X)とは、Xの小数桁を四捨五入して整数に丸めることを表す。即ち、ビート決定部142により補完されるビート数は、隣り合うオンセットの間隔をビート間隔で割った値を整数に丸めた後、植木算の考え方に基づき1を引いた数となる。
次に、ビート決定部142は、最適経路上で隣り合うオンセットの間に、上記の通り決定したビートの数だけ、ビートが等間隔に配置されるようにビートを補完する。図20(C)の例では、k−7番目とk番目のオンセットの間に2つ、k番目とk+6番目のオンセットの間に2つのビートが、それぞれ補完されている。なお、ビート決定部142により補完されるビートの位置は、必ずしもオンセット検出部132により検出されたオンセットの位置に一致しないことに留意すべきである。それにより、ビート決定部142は、局所的にビート位置から外れて発せられた音に影響されることなく、ビートの位置を適切に決定することができる。また、ビート位置において休符が存在し音が発せられなかった場合でも適切にビート位置を認識することができる。
ビート決定部142により決定されたビート位置のリスト(最適経路上のオンセットとビート決定部142により補完されたビートを含む)は、テンポ補正部144へ出力される。
[2−3−7.テンポ補正部]
ビート決定部142により決定されたビート位置により表されるテンポは、楽曲の本来のテンポの2倍や1/2倍、3/2倍、2/3倍などの定数倍になっている可能性がある。テンポ補正部144は、その可能性を考慮し、誤って定数倍に認識しているテンポを補正して楽曲の本来のテンポを再現する。
図22は、定数倍の関係にある3種類のテンポについて、それぞれのビート位置のパターンを例示した説明図である。
図22を参照すると、(A)では、図示された時間の範囲内で、6つのビートが検出されている。これに対し、(B)では、同じ時間の範囲内に12のビートが含まれている。即ち、(B)のビート位置は、(A)のビート位置を基準として2倍のテンポを示している。
一方、(C−1)では、同じ時間の範囲内に3つのビートが含まれている。即ち、(C−1)のビート位置は、(A)のビート位置を基準として1/2倍のテンポを示している。また、(C−2)では、(C−1)と同様に、同じ時間の範囲内に3つのビートを含み、(A)のビート位置を基準として1/2倍のテンポを示している。但し、(C−1)と(C−2)では、基準のテンポからテンポを変更する際に残されるビート位置がそれぞれ異なっている。
テンポ補正部144によるテンポの補正は、例えば、次の(1)〜(3)の手順により行われる。
(1)波形に基づいて推定される推定テンポの決定
(2)複数の基本倍率のうち最適な基本倍率の決定
(3)基本倍率が1倍となるまで(2)を繰返し
(1)波形に基づいて推定される推定テンポの決定
まず、テンポ補正部144は、音声信号の波形に現れる音質的特徴から妥当であると推定される推定テンポを決定する。推定テンポの決定には、例えば、上述した特開2008−123011に記載された学習アルゴリズムを応用した機械学習の結果取得される推定テンポ判別式を用いることができる。
テンポ補正部144で用いる推定テンポ判別式は、特開2008−123011に記載された学習アルゴリズムを応用し、図23に示すような学習処理によって取得される。
まず、学習アルゴリズムに、入力データとして、楽曲の音声信号から変換された複数のログスペクトルを供給する。例えば、図23では、ログスペクトルLS1〜LSnが学習アルゴリズムに供給されている。さらに、学習アルゴリズムに、教師データとして、各楽曲を人間が聴いて判定した正解テンポを供給する。例えば、図23では、各ログスペクトルについての正解テンポ(LS1:100、…、LSn:60)が学習アルゴリズムに供給されている。このような入力データと教師データの複数の組に基づいて、上述した学習アルゴリズムにより、ログスペクトルから推定テンポを決定するための推定テンポ判別式が予め取得される。
テンポ補正部144は、このように予め取得した推定テンポ判別式を情報処理装置100へ入力された音声信号に適用して、推定テンポを決定する。
(2)複数の基本倍率のうち最適な基本倍率の決定
次に、テンポ補正部144は、複数の基本倍率のうち、補正後のテンポが楽曲の本来のテンポに最も近い基本倍率を決定する。ここで、基本倍率とは、テンポの補正に用いる定数比の基本単位となる倍率である。例えば、本実施形態では、基本倍率を1/3倍、1/2倍、2/3倍、1倍、3/2倍、2倍、3倍の7種類の倍率として説明する。但し、基本倍率はかかる例に限定されず、例えば1/3倍、1/2倍、1倍、2倍、3倍の5種類の倍率などであってもよい。
テンポ補正部144は、最適な基本倍率を決定するために、まず、上記各基本倍率について、その倍率でビート位置を補正した後の平均ビート確率をそれぞれ計算する(基本倍率1倍については、ビート位置を補正しない場合の平均ビート確率を計算する)。
図24は、テンポ補正部144により計算される基本倍率ごとの平均ビート確率について説明するための説明図である。
図24を参照すると、図5(B)と同様に、ビート確率算出部120により算出されたビート確率が時間軸に沿って折れ線状に示されている。また、横軸には、いずれかの基本倍率に応じて補正された3つのビートのフレーム番号Fh−1、Fh、及びFh+1が示されている。ここで、フレーム番号Fhにおけるビート確率をBP(h)とすると、基本倍率rに応じて補正されたビート位置の集合F(r)の平均ビート確率BPAVG(r)は、次式により与えられる。
ここで、上式において、m(r)は、集合F(r)に含まれるフレーム番号の個数である。
なお、図22(C−1)及び(C−2)を用いて説明したように、基本倍率r=1/2の場合には、ビート位置の候補は2通り存在する。その場合、テンポ補正部144は、2通りのビート位置の候補についてそれぞれ平均ビート確率BPAVG(r)を計算し、平均ビート確率BPAVG(r)の高い方のビート位置を基本倍率r=1/2に応じた補正後のビート位置として採用する。同様に、基本倍率r=1/3の場合には、ビート位置の候補は3通り存在する。その場合、テンポ補正部144は、3通りのビート位置の候補についてそれぞれ平均ビート確率BPAVG(r)を計算し、平均ビート確率BPAVG(r)の最も高いビート位置を基本倍率r=1/3に応じた補正後のビート位置として採用する。
次に、テンポ補正部144は、基本倍率ごとの平均ビート確率を計算すると、推定テンポと平均ビート確率に基づいて、基本倍率ごとに補正後のテンポの尤もらしさ(以下、テンポ尤度という)を算出する。ここで、テンポ尤度は、例えば、推定テンポを中心とするガウス分布で表されるテンポ確率と平均ビート確率との積とすることができる。
図25は、テンポ補正部144により算出されるテンポ尤度について説明するための説明図である。
図25において、(A)は、各基本倍率についてテンポ補正部144により算出された補正後の平均ビート確率を示している。また、(B)は、テンポ補正部144により音声信号の波形に基づいて推定された推定テンポを中心とし、予め与えられる所定の分散σ1によって定まるガウス分布であるテンポ確率を示している。なお、図25(A)及び(B)の横軸は、各基本倍率に応じてビート位置を補正した後のテンポの対数を表す。テンポ補正部144は、各基本倍率について、かかる平均ビート確率とテンポ確率とを乗算することにより、(C)に示すテンポ尤度を算出する。即ち、図25の例では、基本倍率が1倍の場合と1/2倍の場合で平均ビート確率はほぼ同等だが、1/2倍に補正したテンポの方がより推定テンポに近い(テンポ確率が高い)ため、算出されるテンポ尤度は1/2倍に補正したテンポの方が高くなっている。テンポ補正部144は、このようにテンポ尤度を算出し、最もテンポ尤度の高い基本倍率を、補正後のテンポが楽曲の本来のテンポに最も近い基本倍率として決定する。
このように、尤もらしいテンポの決定に推定テンポから得られるテンポ確率を加味することで、局所的な音声の波形からは判別することが困難な定数倍の関係にあるテンポの候補から、適切なテンポを精度よく決定することができる。
(3)基本倍率が1倍となるまで(2)を繰返し
その後、テンポ補正部144は、最もテンポ尤度の高い基本倍率が1倍となるまで、基本倍率ごとの平均ビート確率の計算とテンポ尤度の算出を繰り返す。その結果、テンポ補正部144による補正前のテンポが楽曲の本来のテンポの1/4倍や1/6倍、4倍、6倍などであったとしても、基本倍率の組合せによって得られる適切な補正倍率(例えば、1/2倍×1/2倍=1/4倍)でテンポを補正することができる。
図26は、テンポ補正部144による補正処理の流れの一例を示すフローチャートである。
図26を参照すると、テンポ補正部144は、まず学習により予め取得される推定テンポ判別式を用いて、音声信号から推定テンポを決定する(S1442)。次に、テンポ補正部144は、複数の基本倍率(1/3、1/2…など)について順次ループさせる(S1444)。そのループ内において、テンポ補正部144は、図22を用いて説明したように、各基本倍率に応じてビート位置を変更して、テンポを補正する(S1446)。次に、テンポ補正部144は、図24を用いて説明したように、補正後のビート位置での平均ビート確率を計算する(S1448)。次に、テンポ補正部144は、S1448で計算した平均ビート確率とS1442で決定した推定テンポに基づいて、図25を用いて説明したように、基本倍率ごとのテンポ尤度を計算する(S1450)。そして、テンポ補正部144は、全ての基本倍率のループが終了すると(S1452)、テンポ尤度が最も高い基本倍率を決定する(S1454)。さらに、テンポ補正部144は、テンポ尤度が最も高い基本倍率が1倍か否かを判定する(S1456)。ここでテンポ尤度が最も高い基本倍率が1倍であれば、テンポ補正部144による補正処理は終了する。一方、テンポ尤度が最も高い基本倍率が1倍でなければ、処理はS1444へ戻る。それにより、テンポ尤度が最も高い基本倍率に応じて補正されたテンポ(ビート位置)に基づいて、再度いずれかの基本倍率によるテンポの補正が行われる。
以上説明したオンセット検出部132からテンポ補正部144までの処理の後、ビート解析部130によるビート解析処理は終了する。ビート解析部130による解析の結果検出されたビート位置は、後述する楽曲構造解析部150及びコード確率算出部160へ出力される。
[2−4.楽曲構造解析部]
楽曲構造解析部150は、ログスペクトル変換部110から入力される音声信号のログスペクトルとビート解析部130から入力されるビート位置とに基づいて、音声信号に含まれるビート区間同士の音声の類似確率を計算する。
図27は、楽曲構造解析部150のより詳細な構成を示すブロック図である。図27を参照すると、楽曲構造解析部150は、ビート区間特徴量計算部152、相関計算部154、及び類似確率生成部156を含む。
[2−4−1.ビート区間特徴量計算部]
ビート区間特徴量計算部152は、ビート解析部130により検出された各ビートについて、そのビートから次のビートまでのビート区間における部分ログスペクトルの特徴を表すビート区間特徴量を計算する。
図28は、ビート、ビート区間、及びビート区間特徴量の相互の関係を示す説明図である。
図28の上部には、ビート解析部130により検出された6つのビートB1〜B6が示されている。これに対し、ビート区間とは、音声信号をビート位置で区分した区間であって、各ビートから次のビートまでの区間を表す。即ち、図28の例において、ビート区間BD1は、ビートB1からビートB2までの区間、ビート区間BD2は、ビートB2からビートB3までの区間、ビート区間BD3は、ビートB3からビートB4までの区間となる。そして、ビート区間特徴量計算部152は、各ビート区間BD1〜6において切り出された部分ログスペクトルから、ビート区間特徴量BF1〜BF6をそれぞれ計算する。
図29及び図30は、ビート区間特徴量計算部152によるビート区間特徴量の計算処理について説明するための説明図である。
図29(A)では、ビート区間特徴量計算部152により、1つのビートに対応するビート区間BDにおける部分ログスペクトルが切り出されている。ビート区間特徴量計算部152は、まず、このような部分ログスペクトルの各音程(オクターブ数×12音)ごとにエネルギーを時間平均することにより、音程別の平均エネルギーを算出する。図29(B)は、ビート区間特徴量計算部152により算出される音程別の平均エネルギーの大きさを示している。
次に、図30を参照すると、図30(A)は、図29(B)と同じ音程別平均エネルギーの大きさを示している。ビート区間特徴量計算部152は、その後、異なるオクターブにおける12音の同じ音名のオクターブ数分の平均エネルギーの値を、所定の重みを用いて重み付け加算し、12音別のエネルギーを算出する。例えば、図30(B)、(C)に示した例では、nオクターブ分のC音の平均エネルギー(C1、C2、…Cn)が所定の重み(W1、W2、…Wn)を用いて重み付け加算され、C音のエネルギー値ENCが算出されている。また、同様に、nオクターブ分のB音の平均エネルギー(B1、B2、…Bn)が所定の重み(W1、W2、…Wn)を用いて重み付け加算され、B音のエネルギー値ENBが算出されている。C音とB音の中間の10の音(C#〜A#)についても同様である。その結果、12音別の各エネルギー値ENC、ENC#、…ENBを要素とする12次元のベクトルが生成される。ビート区間特徴量計算部152は、ビート区間特徴量BFとして、このような12音別エネルギー(12次元ベクトル)をビートごとに計算し、相関計算部154へ出力する。
なお、重み付け加算に用いるオクターブ別の重みW1、W2、…Wnの値は、一般的な楽曲においてメロディやコードが明確に現れる中音域ほど大きい値とするのが好適である。それにより、メロディやコードの特徴をより強く反映して楽曲構造を解析することができる。
[2−4−2.相関計算部]
相関計算部154は、ビート区間特徴量計算部152から入力されるビート区間特徴量、即ちビート区間ごとの12音別エネルギーを用いて、音声信号に含まれるビート区間の全ての組合せについてのビート区間同士の相関係数を計算する。
図31は、相関計算部154による相関係数計算処理について説明するための説明図である。
図31では、ログスペクトルを区分するビート区間の中で相関係数を計算する組み合わせの一例として、第1注目ビート区間BDi及び第2注目ビート区間BDjが示されている。相関計算部154は、このような2つの注目ビート区間の間の相関係数を計算するために、まず、第1注目ビート区間BDiの前後N区間(図31の例ではN=2、計5区間)にわたる12音別エネルギーを取得する。同様に、相関計算部154は、第2注目ビート区間BDjの前後N区間にわたる12音別エネルギーを取得する。そして、相関計算部154は、取得した第1注目ビート区間BDiの前後N区間の12音別エネルギーと第2注目ビート区間BDjの前後N区間の12音別エネルギーとの間で相関係数を計算する。相関計算部154は、このような相関係数の計算を全ての第1注目ビート区間BDiと第2注目ビート区間BDjの組合せについて計算し、計算結果を類似確率生成部156へ出力する。
[2−4−3.類似確率生成部]
類似確率生成部156は、予め生成される変換曲線を用いて、相関計算部154から入力されたビート区間同士の相関係数を、ビート区間の音声の内容が相互に類似している程度を表す類似確率に変換する。
図32は、相関係数を類似確率に変換する際に用いられる変換曲線の一例を説明するための説明図である。
図32(A)は、予め求められた2つの確率分布であって、同じ音声の内容を有しているビート区間同士の相関係数の確率分布、及び異なる音声の内容を有しているビート区間同士の相関係数の確率分布を示している。図32(A)から理解されるように、相関係数が低いほど音声の内容が同じである確率は低く、相関係数が高いほど音声の内容が同じである確率は高い。そのため、図32(B)に示すような、相関係数からビート区間同士の類似確率を導く変換曲線を予め生成することができる。類似確率生成部156は、このような予め生成しておいた変換曲線を用いて、例えば相関計算部154から入力された相関係数CO1を類似確率SP1へ変換する。
図33は、楽曲構造解析部150により算出されるビート区間同士の類似確率を、一例として可視化した説明図である。
図33の縦軸は第1注目ビート区間の位置、横軸は第2注目ビート区間の位置に対応する。また、二次元平面上にプロットされた色の濃淡は、その座標に対応する第1注目ビート区間と第2注目ビート区間との間の類似確率を表す。例えば、第1注目ビート区間i1と、実質的に同じビート区間である第2注目ビート区間j1との間の類似確率は当然に高い値を示し、両者が同じ音声の内容を有していることを示している。さらに楽曲が進み、第2注目ビート区間j2に到達すると、第1注目ビート区間i1と第2注目ビート区間j2との間の類似確率は再び高い値となっている。即ち、第2注目ビート区間j2では、第1注目ビート区間i1とほぼ同じ内容の音声が演奏されている可能性が高いことが分かる。このように楽曲構造解析部150により取得されたビート区間同士の類似確率は、後述する小節線検出部180及びコード進行検出部190へ出力される。
なお、本実施形態では、ビート区間内のエネルギーの時間平均をビート区間特徴量の計算に用いることから、楽曲構造解析部150による楽曲構造の解析においてビート区間内の時間的なログスペクトルの変化の情報は考慮されない。即ち、例えば、あるビート区間と他のビート区間で(例えば演奏者のアレンジなどにより)同じメロディが時間的なずれをもって演奏されたとしても、そのずれがビート区間内に閉じている限りは、演奏された内容を同一であると判定することができる。
[2−5.コード確率算出部]
コード確率算出部160は、ビート解析部130により検出された各ビートについて、対応するビート区間内で各コードが演奏されている確率を表すコード確率を算出する。
なお、コード確率算出部166により算出されるコード確率の値は、後述するキー検出部180によるキー検出処理に用いられる暫定的な値である。コード確率は、後に説明するコード進行検出部190のコード確率計算部196により、ビート区間ごとのキー確率を考慮して再計算される。
図34は、コード確率算出部160のより詳細な構成を示すブロック図である。図34を参照すると、コード確率算出部160は、ビート区間特徴量計算部162、ルート別特徴量準備部164、及びコード確率計算部166を含む。
[2−5−1.ビート区間特徴量計算部]
ビート区間特徴量計算部162は、楽曲構造解析部150のビート区間特徴量計算部152と同様に、ビート解析部130により検出された各ビートについて、対応するビート区間内の音声信号の特徴を表すビート区間特徴量としての12音別エネルギーを計算する。ビート区間特徴量計算部162による12音別エネルギーの計算処理は、図28〜図30を用いて説明したビート区間特徴量計算部152による処理と同様である。但し、ビート区間特徴量計算部162は、12音ごとのオクターブ別平均エネルギーと重み付け加算する重みの値として、図30に示した重みW1、W2…Wnとは異なる値を用いてもよい。ビート区間特徴量計算部162は、ビート区間特徴量としての12音別エネルギーを計算し、ルート別特徴量準備部164へ出力する。
[2−5−2.ルート別特徴量準備部]
ルート別特徴量準備部164は、ビート区間特徴量計算部162から入力される12音別エネルギーから、ビート区間ごとのコード確率の算出に用いられるルート別特徴量を生成する。
図35及び図36は、ルート別特徴量準備部164によるルート別特徴量生成処理について説明するための説明図である。
ルート別特徴量準備部164は、まず、注目ビート区間BDiについて、前後N区間分の12音別エネルギーを抽出する(図35参照)。ここで抽出された前後N区間分の12音別エネルギーは、C音をコードのルート(根音)とする特徴量とみなすことができる。図35の例では、N=2であるため、C音をルートとする5区間分のルート別特徴量(12×5次元)が抽出されている。なお、ここでのNの値は、図31におけるNの値と同一の値であっても異なる値であってもよい。
次に、ルート別特徴量準備部164は、C音をルートとする5区間分のルート別特徴量の12音の要素位置を所定数だけずらず(シフトさせる)ことで、C#音からB音までをそれぞれルートとする、11通りの5区間分のルート別特徴量を生成する(図36参照)。なお、要素位置をシフトさせるシフト数は、C#音をルートとする場合は1、D音をルートとする場合は2、…(略)…、B音をルートとする場合は11などとなる。その結果、ルート別特徴量準備部164により、C音からB音までの12音をそれぞれルートとするルート別特徴量(それぞれ12×5次元)が12音分生成される。
ルート別特徴量準備部164は、このようなルート別特徴量生成処理を全てのビート区間について行い、各区間についてのコード確率の算出に用いるルート別特徴量を準備する。なお、図35緒及び図36の例では、1つのビート区間について準備される特徴量は、12×5×12次元のベクトルとなる。ルート別特徴量準備部164により生成されたルート別特徴量は、コード確率計算部166へ出力される。
[2−5−3.コード確率計算部]
コード確率計算部166は、ルート別特徴量準備部164から入力されたルート別特徴量を用いて、ビート区間ごとに、各コードが演奏されている確率を表すコード確率を算出する。ここで、各コードとは、例えば、ルート(C、C#、D…)や構成音の数(三和音、四和音(7th)、五和音(9th))、及び長短(メジャー/マイナー)などにより区別される個々のコードのことをいう。コード確率の算出には、例えば、ロジスティック回帰分析によって予め学習されたコード確率算出式を用いることができる。
図37は、コード確率計算部166によるコード確率の計算に用いられるコード確率算出式の学習処理について説明するための説明図である。
なお、コード確率算出式の学習は、学習したいコードの種類ごとに行われる。即ち、例えばメジャーコード用のコード確率算出式、マイナーコード用のコード確率算出式、7thコード用のコード確率算出式、及び9thコード用のコード確率算出式などについて、それぞれ以下に説明する学習処理が行われる。
まず、ロジスティック回帰分析における独立変数として、正解のコードが既知であるビート区間ごとのルート別特徴量(例えば図36を用いて説明した12×5×12次元のベクトル)を複数用意する。
また、ビート区間ごとのルート別特徴量のそれぞれについて、ロジスティック回帰分析により生起確率を予測するダミーデータ(教師データ)を用意する。例えば、メジャーコード用のコード確率算出式を学習する場合には、ダミーデータの値は、既知のコードがメジャーコードであれば真値(1)、それ以外なら偽値(0)となる。また、マイナーコード用のコード確率算出式を学習する場合には、ダミーデータの値は、既知のコードがマイナーコードであれば真値(1)、それ以外なら偽値(0)となる。7thコード、9thコードについても同様である。
このような独立変数とダミーデータを用いて十分な数のビート区間ごとのルート別特徴量についてロジスティック回帰分析を行うことで、ビート区間ごとのルート別特徴量からそれぞれの種類のコード確率を算出するためのコード確率算出式が予め取得される。
そして、コード確率計算部166は、ルート別特徴量準備部164から入力されたルート別特徴量に予め取得されたコード確率算出式を適用し、ビート区間ごとに、コード確率をコードのそれぞれの種類について順次算出する。
図38は、コード確率計算部166によるコード確率の計算処理について説明するための説明図である。
図38(A)を参照すると、ビート区間ごとのルート別特徴量のうち、C音をルートとするルート別特徴量が示されている。コード確率計算部166は、例えば、このC音をルートとするルート別特徴量に予め学習により取得したメジャーコード用のコード確率算出式を適用し、当該ビート区間についてコードが“C”であるコード確率CPCを計算する。また、コード確率計算部166は、C音をルートとするルート別特徴量にマイナーコード用のコード確率算出式を適用し、当該ビート区間についてコードが“Cm”であるコード確率CPCmを計算する。
同様に、コード確率計算部166は、C#音をルートとするルート別特徴量にメジャーコード用及びマイナーコード用のコード確率算出式を適用し、コード“C#”のコード確率CPC#及びコード“C#m”のコード確率CPC#mを計算することができる(図38(B))。コード“B”のコード確率CPB及びコード“Bm”のコード確率CPBmの計算についても同様である(図38(C))。
図39は、コード確率計算部166により算出されるコード確率の一例を示す説明図である。
図39を参照すると、ある1つのビート区間について、C音からB音までの12音ごとに“Maj(メジャー)”、“m(マイナー)”、“7(7th/セブンス)”、“m7(マイナーセブンス)”などの種類のコードのコード確率が計算されている。図39の例によれば、コード確率CPC=0.88、CPCm=0.08、CPC7=0.01、CPCm7=0.02、CPCB=0.01である。また、それ以外のコード確率はいずれもゼロである。
なお、コード確率計算部166は、複数のコードの種類についてコード確率を計算すると、算出した確率値の合計が1つのビート区間内で1となるように確率値を正規化する。このようなコード確率計算部166による計算及び正規化処理は、音声信号に含まれる全てのビート区間について繰り返される。
以上説明したビート区間特徴量計算部162からコード確率計算部166までの処理の後、コード確率算出部160によるコード確率算出処理は終了する。コード確率算出部160により算出されたコード確率は、次に説明するキー検出部170へ出力される。
[2−6.キー検出部]
キー検出部170は、コード確率算出部160により算出されたビート区間ごとのコード確率を用いて、ビート区間ごとのキー(調/基本音階)を検出する。また、キー検出部170は、キー検出処理の過程において、ビート区間ごとのキー確率を算出する。
図40は、キー検出部170のより詳細な構成を示すブロック図である。図40を参照すると、キー検出部170は、相対コード確率生成部172、特徴量準備部174、キー確率計算部176、及びキー決定部178を含む。
[2−6−1.相対コード確率生成部]
相対コード確率生成部172は、コード確率算出部160から入力されるビート区間ごとのコード確率から、ビート区間ごとのキー確率の算出に用いられる相対コード確率を生成する。
図41は、相対コード確率生成部172による相対コード確率生成処理について説明するための説明図である。
相対コード確率生成部172は、まず、ある注目ビート区間についてのコード確率から、メジャーコードとマイナーコードについてのコード確率を抽出する。ここで抽出されたコード確率は、メジャーコード12音とマイナーコード12音の合計24次元のベクトルを形成する。以下、この24次元のベクトルを、C音をキーと仮定した相対コード確率として扱う。
次に、相対コード確率生成部172は、抽出したメジャーコードとマイナーコードのコード確率の12音の要素位置を所定数だけずらず(シフトさせる)ことで、11通りの相対コード確率を生成する。なお、要素位置をシフトさせるシフト数は、図36を用いて説明したルート別特徴量の生成時と同じシフト数とする。その結果、相対コード確率生成部172により、C音からB音までの12音をそれぞれキーと仮定した相対コード確率が12通り生成される。
相対コード確率生成部172は、このような相対コード確率生成処理を全てのビート区間について行い、生成した相対コード確率を特徴量準備部174へ出力する。
[2−6−2.特徴量準備部]
特徴量準備部174は、ビート区間ごとのキー確率の算出に用いられる特徴量として、相対コード確率生成部172から入力される相対コード確率からビート区間ごとのコード出現スコア及びコード遷移出現スコアを生成する。
図42は、特徴量準備部174により生成されるビート区間ごとのコード出現スコアについて説明するための説明図である。
図42を参照すると、特徴量準備部174は、まず、注目ビート区間の前後Mビート分の区間のC音をキーと仮定した相対コード確率CPを用意する。そして、特徴量準備部174は、前後Mビート分の区間にわたって、C音をキーと仮定した相対コード確率に含まれる同じ位置の要素の確率値を通算する。その結果、注目ビート区間の周囲に位置する複数のビート区間にわたるC音をキーと仮定した場合の各コードの出現確率に応じたコード出現スコア(CEC、CEC#、…、CEBm)(24次元ベクトル)が求められる。特徴量準備部174は、このようなコード出現スコアの計算を、C音からB音までの12音のそれぞれをキーと仮定した場合について行う。それにより、1つの注目ビート区間について、12通りのコード出現スコアが求められる。
次に、図43は、特徴量準備部174により生成されるビート区間ごとのコード遷移出現スコアについて説明するための説明図である。
図43を参照すると、特徴量準備部174は、まず、ビート区間BDi及び隣り合うビート区間BDi+1の間の全てのコードの組合せ(即ち全てのコード遷移)について、コード遷移の前後のC音をキーと仮定した相対コード確率を乗算する。ここで、全てのコードの組合せとは、“C”→“C”、“C”→“C#”、“C”→“D”、…“B”→“B”の24×24通りの組合せをいう。次に、特徴量準備部174は、注目ビート区間の前後Mビート分の区間にわたり、コード遷移の前後の相対コード確率の乗算結果を通算する。その結果、注目ビート区間の周囲に位置する複数のビート区間にわたるC音をキーと仮定した場合の各コード遷移の出現確率に応じた24×24次元のコード遷移出現スコア(24×24次元ベクトル)が求められる。例えば、注目ビート区間BDiにおける“C”→“C#”のコード遷移についてのコード遷移出現スコアCTC→C#(i)は、次式により与えられる。
特徴量準備部174は、このような24×24通りのコード遷移出現スコアCTの計算を、C音からB音までの12音のそれぞれをキーと仮定した場合について行う。それにより、1つの注目ビート区間について、12通りのコード遷移出現スコアが求められる。
なお、楽曲のキーは、例えば小節ごとに変化し得るコードと異なり、より長い区間にわたって通常は変化しない。そのため、コード出現スコアやコード遷移出現スコアの算出に用いる相対コード確率の範囲を定義するMの値は、例えば数十ビートなど、多数の小節を含み得る値とするのが好適である。
特徴量準備部174は、このようにビート区間ごとに計算した24次元のコード出現スコアCE及び24×24次元のコード遷移出現スコアを、キー確率を計算するための特徴量として、キー確率計算部176へ出力する。
[2−6−3.キー確率計算部]
キー確率計算部176は、特徴量準備部174から入力されたコード出現スコア及びコード遷移出現スコアを用いて、ビート区間ごとに、各キーが演奏されている確率を表すキー確率を算出する。ここで、各キーとは、例えば、12音(C、C#、D…)及び長短(メジャー/マイナー)により区別されるキーをいう。キー確率の算出には、例えば、ロジスティック回帰分析によって予め学習されたキー確率算出式を用いることができる。
図44は、キー確率計算部176によるキー確率の計算に用いられるキー確率算出式の学習処理について説明するための説明図である。
なお、キー確率算出式の学習は、メジャーキーとマイナーキーとに分けて行われる。即ち、メジャーキー確率算出式及びマイナーキー確率算出式の2つの算出式が学習により取得される。
まず、ロジスティック回帰分析における独立変数として、正解のキーが既知であるビート区間ごとのコード出現スコア及びコード出現進行スコアを複数用意する。
次に、用意されたコード出現スコア及びコード出現進行スコアの組のそれぞれについて、ロジスティック回帰分析により生起確率を予測するダミーデータ(教師データ)を用意する。例えば、メジャーキー確率算出式を学習する場合には、ダミーデータの値は、既知のキーがメジャーキーであれば真値(1)、それ以外なら偽値(0)となる。また、マイナーキー確率算出式を学習する場合には、ダミーデータの値は、既知のキーがマイナーキーであれば真値(1)、それ以外なら偽値(0)となる。
このような独立変数とダミーデータの十分な数の組を用いてロジスティック回帰分析を行うことで、ビート区間ごとのコード出現スコア及びコード出現進行スコアからメジャーキー又はマイナーキーの確率を算出するためのキー確率算出式が予め取得される。
そして、キー確率計算部176は、特徴量準備部174から入力されたコード出現スコア及びコード出現進行スコアに各キー確率算出式を適用し、ビート区間ごとに、キー確率を各キーについて順次算出する。
図45は、キー確率計算部176によるキー確率の計算処理について説明するための説明図である。
図45(A)を参照すると、キー確率計算部176は、例えば、C音をキーと仮定したコード出現スコア及びコード出現進行スコアに予め学習により取得したメジャーキー確率算出式を適用し、当該ビート区間についてキーが“C”であるキー確率KPCを計算する。また、キー確率計算部176は、C音をキーと仮定したコード出現スコア及びコード出現進行スコアにマイナーキー確率算出式を適用し、当該ビート区間についてキーが“Cm”であるキー確率KPCmを計算する。
同様に、キー確率計算部176は、C#音をキーと仮定したコード出現スコア及びコード出現進行スコアにメジャーキー確率算出式及びマイナーキー確率算出式を適用し、キー確率KPC#及びKPC#mを計算することができる(図45(B))。キー確率KPB及びKPBmの計算についても同様である(図45(C))。
図46は、キー確率計算部176により算出されるキー確率の一例を示す説明図である。
図46を参照すると、ある1つのビート区間について、C音からB音までの12音ごとに“Maj(メジャー)”及び“m(マイナー)”の2種類のキー確率が計算されている。図46の例によれば、キー確率KPC=0.90、KPCm=0.03である。また、それ以外のキー確率はいずれもゼロである。
なお、キー確率計算部176は、全てのキーの種類についてキー確率を計算すると、算出した確率値の合計が1つのビート区間内で1となるように確率値を正規化する。このようなキー確率計算部176による計算及び正規化処理は、音声信号に含まれる全てのビート区間について繰り返される。キー確率計算部176は、このようにビート区間ごとに各キーのキー確率を算出し、キー決定部178へ出力する。
さらに、キー確率計算部176は、C音からB音までの12音ごとにメジャー及びマイナーの2種類について計算したキー確率から、メジャー及びマイナーを区別しない単純キー確率を計算する。
図47は、キー確率計算部176による単純キー確率の計算処理について説明するための説明図である。
図47(A)を参照すると、ある1つのビート区間について、キー確率計算部176により、キー確率KPC=0.90、KPCm=0.03、KPA=0.02、KPAm=0.05が計算されている。それ以外のキー確率はいずれもゼロである。このとき、キー確率計算部176は、メジャー及びマイナーを区別しない単純キー確率を、C音からB音までの12音ごとに、平行調の関係にあるキー同士のキー確率を合計することにより計算する。例えば、単純キー確率SKPCはキー確率KPCとKPAmの合計であり、SKPC=0.90+0.05=0.95となる。これは、ハ長調(キー“C”)とイ短調(キー“Am”)が平行調の関係にあるためである。その他、C#音からB音までの単純キー確率についても同様に計算される。
キー確率計算部176により算出された12通りの単純キー確率SKPC〜SKPBは、コード進行検出部190へ出力される。
[2−6−4.キー決定部]
キー決定部178は、キー確率計算部176によりビート区間ごとに算出された各キーのキー確率に基づいて、尤もらしいキーの進行を経路探索により決定する。キー決定部178による経路探索の手法としては、例えば、上述したビタビアルゴリズムを用いることができる。
図48は、キー決定部178における経路探索について説明するための説明図である。
キー決定部178による経路探索にビタビアルゴリズムを適用する場合、時間軸(図48の横軸)にはビートが順に配置される。また、観測系列(図48の縦軸)として、キー確率が算出されたキーの種類を用いる。即ち、キー決定部178は、キー確率計算部176においてキー確率を算出したビートとキーの種類の全ての組合せの1つ1つを、経路探索の対象のノードとする。
このようなノードに対し、キー決定部178は、時間軸に沿っていずれかのノードを順に選択していき、選択された一連のノードよりなる経路を、(1)キー確率、及び(2)キー遷移確率の2つの評価値を用いて評価する。なお、キー決定部178によるノードの選択に際しては、ビートをスキップすることは許可されない。
(1)キー確率とは、キー確率計算部176により算出された上述したキー確率である。キー確率は、図48に示した個々のノードごとに与えられる。一方、(2)キー遷移確率とは、ノード間の遷移に対して与えられる評価値である。キー遷移確率は、キーが既知である楽曲における転調の発生確率に基づいて、転調のパターンごとに予め定義される。
図49は、キー遷移確率の一例を示す説明図である。
キー遷移確率としては、遷移の前後のキーの種類のパターン、即ちメジャーからメジャー、メジャーからマイナー、マイナーからメジャー、マイナーからマイナーの4つのパターンごとに、遷移に伴う転調量に応じた12通りの値が定義される。図49には、そのうち、メジャーからメジャーへのキーの遷移における転調量に応じた12通りの確率値の一例が示されている。例えば、転調量Δkについてのキー遷移確率をPr(Δk)とすると、Pr(0)=0.9987である。これは、楽曲内でキーが変わる確率が極めて低いことを表している。一方、Pr(1)=0.0002である。これは、キーが1音程上がる(又は11音程下がる)確率が0.02%であることを表している。同様に、Pr(2)=Pr(3)=Pr(4)=Pr(5)=Pr(7)=Pr(8)=Pr(9)=Pr(10)=0.0001である。また、Pr(6)=Pr(11)=0.0000である。この他、メジャーからマイナー、マイナーからメジャー、マイナーからマイナーの各遷移パターンについても、同様に転調量に応じた12通りの確率値がそれぞれ予め定義される。
キー決定部178は、図48を用いて説明したキー進行を表す各経路について、その経路に含まれる各ノードの(1)キー確率と、ノード間の遷移に対して与えられる上記(2)キー遷移確率を順次乗算する。そして、キー決定部178は、経路の評価値としての乗算結果が最大となる経路を、尤もらしいキー進行を表す最適な経路として決定する。
図50は、キー決定部178により最適な経路として決定されたキー進行の一例を示す説明図である。
図50では、楽曲の先頭から終端までの時間のスケールの下に、キー決定部178により決定されたその楽曲のキー進行が示されている。まず、楽曲の先頭から3分経過時点までは、楽曲のキーは“Cm”である。その後、楽曲のキーは“C#m”に変化し、楽曲の終端までそのキーが続いている。
以上説明した相対コード確率生成部172からキー決定部178までの処理の後、キー検出部170によるキー検出処理は終了する。キー検出部170により検出されたキー進行及びキー確率は、次に説明する小節線検出部180及びコード進行検出部190へ出力される。
[2−7.小節線検出部]
小節線検出部180は、ビート確率、ビート区間同士の類似確率、ビート区間ごとのコード確率、キー進行、及びビート区間ごとのキー確率に基づいて、一連のビートがそれぞれ何拍子何拍目であるかを表す小節線の進行を決定する。
図51は、小節線検出部180のより詳細な構成を示すブロック図である。図51を参照すると、小節線検出部180は、第1特徴量抽出部181、第2特徴量抽出部182、小節線確率計算部184、小節線確率修正部186、小節線決定部188、及び小節線再決定部189を含む。
[2−7−1.第1特徴量抽出部]
第1特徴量抽出部181は、後述する小節線確率の計算に用いられる特徴量として、ビート区間ごとに、前後Lビート分のコード確率とキー確率に応じた第1特徴量を抽出する。
図52は、第1特徴量抽出部181による特徴量抽出処理について説明するための説明図である。
図52を参照すると、第1特徴量は、注目ビート区間BDiの前後Lビート分の区間のコード確率とキー確率とから導かれる(1)コード非変化スコア及び(2)相対コードスコアを含む。このうち、コード非変化スコアは、注目ビート区間BDiの前後Lビート分の区間数に相当する次元を有する特徴量である。一方、相対コードスコアは、注目ビート区間BDiの前後Lビート分の区間ごとに24次元を有する特徴量である。例えば、L=8とした場合には、コード非変化スコアは17次元、相対コードスコアは17×24次元=408次元であり、第1特徴量は計425次元を有する。以下、かかるコード非変化スコア及び相対コードスコアについて説明する。
(1)コード非変化スコア
コード非変化スコアとは、一定の範囲の区間にわたって楽曲のコードが変化していない度合いを表す特徴量である。コード非変化スコアは、次に述べるコード安定スコアをコード不安定スコアで除算することにより求められる。
図53は、コード非変化スコアの計算に用いるコード安定スコアについて説明するための説明図である。
図53を参照すると、ビート区間BDiのコード安定スコアは、ビート区間BDiの前後Lビートの各区間について1つずつ定まる要素CC(i−L)〜CC(i+L)を含む。そして、これら各要素は、対象のビート区間と直前のビート区間の間の、同じコード名同士のコード確率の積の合計値として計算される。例えば、ビート区間BDi−L−1のコード確率とビート区間BDi−Lのコード確率との間で同じコード名同士のコード確率の積を合計することにより、コード安定スコアCC(i−L)が算出される。同様に、ビート区間BDi+L−1のコード確率とビート区間BDi+Lのコード確率との間で同じコード名同士のコード確率の積を合計することにより、コード安定スコアCC(i+L)が算出される。第1特徴量抽出部181は、このような計算を注目ビート区間BDiの前後Lビート分の区間にわたって行い、2L+1通りのコード安定スコアを算出する。
図54は、コード非変化スコアの計算に用いるコード不安定スコアについて説明するための説明図である。
図54を参照すると、ビート区間BDiのコード不安定スコアは、ビート区間BDiの前後Lビートの各区間について1つずつ定まる要素CU(i−L)〜CU(i+L)を含む。そして、これら各要素は、対象のビート区間と直前のビート区間の間の、異なるコード名同士の全ての組合せについてのコード確率の積の合計値として計算される。例えば、ビート区間BDi−L−1のコード確率とビート区間BDi−Lのコード確率との間で異なるコード名同士のコード確率の積を合計することにより、コード不安定スコアCU(i−L)が算出される。同様に、ビート区間BDi+L−1のコード確率とビート区間BDi+Lのコード確率との間で異なるコード名同士のコード確率の積を合計することにより、コード不安定スコアCU(i+L)が算出される。第1特徴量抽出部181は、このような計算を注目ビート区間BDiの前後Lビート分の区間にわたって行い、2L+1通りのビート不安定スコアを算出する。
さらに、第1特徴量抽出部181は、注目ビート区間BDiについて、2L+1個の要素ごとにコード安定スコアをコード不安定スコアで除算し、コード非変化スコアを算出する。例えば、注目ビート区間BDiについてのコード安定スコアCC=(CCi−L、…、CCi+L)、コード不安定スコアCU=(CUi−L、…、CUi+L)とすると、コード非変化スコアCR=(CCi−L/CUi−L、…、CCi+L/CUi+L)となる。
かかるコード非変化スコアは、注目ビート区間の周囲の一定の範囲内でコードの変化が少ないほど大きい値を示す。第1特徴量抽出部181は、このようなコード非変化スコアを、音声信号に含まれる全てのビート区間について算出する。
(2)相対コードスコア
相対コードスコアとは、一定の範囲の区間にわたるコードの出現確率とそのパターンを表す特徴量である。相対コードスコアは、キー検出部170から入力されるキー進行に合わせてコード確率をシフトさせて生成される。
図55は、相対コードスコアの生成処理について説明するための説明図である。
図55(A)には、図50と同様に、キー検出部170により決定されたキー進行の一例が示されている。かかるキー進行において、楽曲の先頭から3分経過した時点で、楽曲のキーは“B”から“C#m”へ変化している。さらに、前後Lビート分の区間内にキーが変化する時点を含む注目ビート区間BDiの位置も示されている。
このとき、第1特徴量抽出部181は、キーが“B”であるビート区間については、当該ビート区間のメジャーとマイナーを含む24次元のコード確率の要素位置をコード確率CPBが先頭に来るようにシフトさせた相対コード確率を生成する。また、第1特徴量抽出部181は、キーが“C#m”であるビート区間については、当該ビート区間のメジャーとマイナーを含む24次元のコード確率の要素位置をコード確率CPC#mが先頭に来るようにシフトさせた相対コード確率を生成する。第1特徴量抽出部181は、このような相対コード確率を注目ビート区間の前後Lビート分の区間ごとに生成し、生成した相対コード確率の集合((2L+1)×24次元の特徴量ベクトル)を相対コードスコアとして出力する。
以上説明した(1)コード非変化スコア及び(2)相対コードスコアよりなる第1特徴量は、第1特徴量抽出部181から小節線確率計算部184へ出力される。
[2−7−2.第2特徴量抽出部]
第2特徴量抽出部182は、後述する小節線確率の計算に用いられる特徴量として、各ビート区間について、前後Lビート分の区間にわたるビート確率の変化の特徴に応じた第2特徴量を抽出する。
図56は、第2特徴量抽出部182による特徴量抽出処理について説明するための説明図である。
図56を参照すると、ビート確率算出部120から入力されたビート確率が時間軸に沿って示されている。また、一例として、かかるビート確率を解析して検出された6つのビート、及び注目ビート区間BDiも示されている。第2特徴量抽出部182は、このようなビート確率について、注目ビート区間BDiの前後Lビート分のビート区間に含まれる所定の間隔の小区間SDjごとにビート確率の平均値を算出する。
ここで、例えば、音価(M分のN拍子のM)が4である拍子を主に検出する場合には、図56に示したように、小区間をビート間隔を1/4及び3/4に区切る線で区分するのが好適である。その場合、1つの注目ビート区間BDiについて算出されるビート確率の平均値は、L×4+1個となる。従って、第2特徴量抽出部182により抽出される第2特徴量は、注目ビート区間ごとにL×4+1次元を有する。また、小区間の間隔はビート間隔の1/2となる。
なお、楽曲の小節線を適切に検出するためには、少なくとも数小節程度にわたる音声信号の特徴を解析することが求められる。そのため、第2特徴量の抽出に用いるビート確率の範囲を定義するLの値は、例えば、8ビートなどとするのが好適である。L=8の場合には、第2特徴量抽出部182により抽出される第2特徴量は、注目ビート区間ごとに33次元を有する。
以上説明した第2特徴量は、第2特徴量抽出部182から小節線確率計算部184へ出力される。
[2−7−3.小節線確率計算部]
小節線確率計算部184は、上述した第1特徴量及び第2特徴量を用いて、ビートごとに、小節線確率を算出する。ここで、本明細書において、小節線確率とは、あるビートがX拍子のY拍目である確率の集合を意味する。また、本実施形態では、一例として、1/4拍子、2/4拍子、3/4拍子及び4/4拍子の各拍子の各拍数を判別の対象とする。即ち、本実施形態において、XとYの組合せは(X,Y)=(1,1)、(2,1)、(2,2)、(3,1)、(3,2)、(3,3)、(4,1)、(4,2)、(4,3)、(4,4)の10通り存在し、10種類の小節線確率が算出される。なお、小節線確率計算部184により算出される確率値は、後述する小節線確率修正部186により楽曲の構造を考慮して修正される。即ち、小節線確率計算部184により算出される確率は、修正前の中間的なデータである。小節線確率計算部184による小節線確率の算出には、例えば、ロジスティック回帰分析によって予め学習された小節線確率算出式を用いることができる。
図57は、小節線確率計算部184による小節線確率の計算に用いられる小節線確率算出式の学習処理について説明するための説明図である。
なお、小節線確率算出式の学習は、上述した小節線確率の種類ごとに行われる。即ち、1/4拍子、2/4拍子、3/4拍子及び4/4拍子の各拍数を判別することを想定すると、10通りの小節線確率算出式が学習により取得される。
まず、ロジスティック回帰分析における独立変数として、正解の拍子(X)と拍数(Y)が既知である音声信号を解析して抽出された第1特徴量と第2特徴量の組を複数用意する。
次に、用意された第1特徴量と第2特徴量の組のそれぞれについて、ロジスティック回帰分析により生起確率を予測するダミーデータ(教師データ)を用意する。例えば、1/4拍子の1拍目である確率を算出するための1/4拍子1拍目判別式を学習する場合には、ダミーデータの値は、既知の拍子と拍数が(1,1)であれば真値(1)、それ以外なら偽値(0)となる。また、例えば、2/4拍子の1拍目である確率を算出するための2/4拍子1拍目判別式を学習する場合には、ダミーデータの値は、既知の拍子と拍数が(2,1)であれば真値(1)、それ以外なら偽値(0)となる。また、その他の拍子及び拍数についても同様である。
このような独立変数とダミーデータの十分な数の組を用いてロジスティック回帰分析を行うことで、第1特徴量及び第2特徴量から小節線確率を算出するための10通りの小節線確率算出式が予め取得される。
そして、小節線確率計算部184は、第1特徴量抽出部181及び第2特徴量抽出部182からそれぞれ入力された第1特徴量及び第2特徴量に小節線確率算出式を適用し、ビート区間ごとに、小節線確率を順次算出する。
図58は、小節線確率計算部184による小節線確率の計算処理について説明するための説明図である。
図58を参照すると、小節線確率計算部184は、例えば、注目ビート区間について抽出された第1特徴量及び第2特徴量に予め取得した1/4拍子1拍目判別式を適用し、ビートが1/4拍子の1拍目である小節線確率Pbar´(1,1)を計算する。また、小節線確率計算部184は、注目ビート区間について抽出された第1特徴量及び第2特徴量に予め取得した2/4拍子1拍目判別式を適用し、ビートが2/4拍子の1拍目である小節線確率Pbar´(2,1)を計算する。その他の拍子及び拍数についても同様である。
小節線確率計算部184は、このような小節線確率の計算を全てのビートについて繰返し、ビートごとの小節線確率を算出する。小節線確率計算部184により算出されたビートごとの小節線確率は、次に説明する小節線確率修正部186へ出力される。
[2−7−4.小節線確率修正部]
小節線確率修正部186は、楽曲構造解析部150から入力されるビート区間同士の類似確率に基づいて、小節線確率計算部184から入力される小節線確率を修正する。
例えば、i番目の注目ビートがX拍子のY拍目である修正前の小節線確率をPbar´(i,x,y)、i番目のビート区間とj番目のビート区間との間の類似確率をSP(i,j)とする。そうすると、修正後の小節線確率Pbar(i,x,y)は、例えば次式で与えられる。
即ち、修正後の小節線確率Pbar(i,x,y)は、注目ビートに対応するビート区間と他のビート区間との間の類似確率を重みとみなし、正規化した当該類似確率を用いて修正前の小節線確率を重み付け加算した値となる。このような確率値の修正により、類似する内容の音声が演奏されているビート間の小節線確率は、修正前の小節線確率と比較して近い値となる。小節線確率修正部186により修正されたビートごとの小節線確率は、次に説明する小節線決定部188へ出力される。
[2−7−5.小節線決定部]
小節線決定部188は、小節線確率修正部186から入力されたビートごとのX拍子Y拍目の小節線確率に基づいて、尤もらしい小節線の進行を経路探索により決定する。小節線決定部188による経路探索の手法としては、例えば、上述したビタビアルゴリズムを用いることができる。
図59は、小節線決定部188における経路探索について説明するための説明図である。
小節線決定部188による経路探索にビタビアルゴリズムを適用する場合、時間軸(図59の横軸)にはビートが順に配置される。また、観測系列(図59の縦軸)として、小節線確率が算出されたビートの種類(X拍子Y拍目)を用いる。即ち、小節線決定部188は、小節線確率修正部186から入力されたビートとビートの種類の全ての組合せの1つ1つを、経路探索の対象のノードとする。
このようなノードに対し、小節線決定部188は、時間軸に沿っていずれかのノードを順に選択する。そして、小節線決定部188は、選択した一連のノードよりなる経路を、(1)小節線確率、及び(2)拍子変化確率の2つの評価値を用いて評価する。
なお、小節線決定部188によるノードの選択に際しては、例えば、次のような制約を設けるのが好適である。まず第1に、ビートをスキップすることは許可されない。第2に、例えば4拍子1拍目〜3拍目や3拍子1拍目、2拍目などの小節の途中からの他の拍子への遷移や、小節の途中への他の拍子からの遷移は禁止される。第3に、1拍目から、3拍目若しくは4拍目、又は2拍目から2拍目若しくは4拍目など、拍数の並びが適切でない遷移も禁止される。
次に、小節線決定部188による経路の評価に用いられる評価値のうち、(1)小節線確率は、小節線確率修正部186により小節線確率を修正して算出された上述の小節線確率である。小節線確率は、図59に示した個々のノードごとに与えられる。一方、(2)拍子変化確率とは、ノード間の遷移に対して与えられる評価値である。拍子変化確率は、多数の一般的な楽曲の小節線の進行における拍子の変化の発生確率を集計することにより、変化前のビートの種類と変化後のビートの種類の組合せごとに予め定義される。
図60は、拍子変化確率の一例を示す説明図である。
図60を参照すると、変化前の4種類の拍子と変化後の4種類の拍子から特定される計16種類の拍子変化確率が示されている。この例において、例えば、4拍子から1拍子へ変化する拍子変化確率は0.05、2拍子へ変化する拍子変化確率は0.03、3拍子へ変化する拍子変化確率は0.02、4拍子へ変化する(変化なし)拍子変化確率は0.90である。これは、楽曲の途中で拍子が変化する可能性は通常は高くないこと表している。
なお、1拍子や2拍子については、小節線の検出の誤差により小節線が正しい位置からずれた際に小節線位置を自動的に復帰させる役目を果たす場合がある。そのため、1拍子や2拍子と他の拍子との間の拍子変化確率は、3拍子や4拍子と他の拍子との間の拍子変化確率よりも高い値としておくのが好適である。
小節線決定部188は、図59を用いて説明した小節線の進行を表す各経路について、その経路に含まれる各ノードの(1)小節線確率と、ノード間の遷移に対して与えられる上記(2)拍子変化確率を順次乗算する。そして、小節線決定部188は、経路の評価値としての乗算結果が最大となる経路を、尤もらしい小節線の進行を表す最適な経路として決定する。
図61は、小節線決定部188により最適な経路として決定された小節線の進行の一例を示す説明図である。
図61では、1番目のビートから8番目のビートについて、小節線決定部188により最適経路とされた小節線の進行が示されている(太線枠参照)。かかる例によれば、、各ビートの種類は、1番目のビートから順に、4拍子1拍目、4拍子2拍目、4拍子3拍目、4拍子4拍目、4拍子1拍目、4拍子2拍目、4拍子3拍目、4拍子4拍目である。このように小節線決定部188により決定された小節線の進行を表す最適経路は、次に説明する小節線再決定部189へ出力される。
[2−7−6.小節線再決定部]
ここで、通常の楽曲において、ビートの種類の3拍子と4拍子が混在することは稀である。そこで、小節線再決定部189は、まず小節線決定部188から入力された小節線進行において出現したビートの種類に3拍子と4拍子とが混在しているか否かを判定する。そして、小節線再決定部189は、ビートの種類に3拍子と4拍子とが混在していた場合には、より出現頻度の低い拍子を探索の対象から除外して小節線の進行を示す最適な経路を再度探索する。このような小節線再決定部189による経路の再探索処理により、経路探索の結果部分的に発生する可能性のある小節線(ビートの種類)の認識の誤りを減少させることができる。
以上説明した第1特徴量抽出部181から小節線再決定部189までの処理の後、小節線検出部180による小節線検出処理は終了する。小節線検出部180により検出された小節線進行(一連のビートの種類)は、次に説明するコード進行検出部190へ出力される。
[2−8.コード進行検出部]
コード進行検出部190は、ビート区間ごとの単純キー確率、ビート区間同士の類似確率、及び小節線の進行に基づいて、ビート区間ごとの一連のコードにより構成される尤もらしいコード進行を決定する。
図62は、コード進行検出部190のより詳細な構成を示すブロック図である。図62を参照すると、コード進行検出部190は、ビート区間特徴量計算部192、ルート別特徴量準備部194、コード確率計算部196、コード確率修正部197、及びコード進行決定部198を含む。
[2−8−1.ビート区間特徴量計算部]
ビート区間特徴量計算部192は、まず、コード確率算出部160のビート区間特徴量計算部162と同様に、12音別エネルギーを計算する(12音別エネルギーの計算処理については、図28〜図30参照)。その代わりに、ビート区間特徴量計算部192は、ビート区間特徴量計算部162により算出された12音別エネルギーを取得して利用してもよい。
次に、ビート区間特徴量計算部192は、注目ビート区間の前後N区間分の12音別エネルギーと、キー検出部170から入力された単純キー確率とを含む拡張ビート区間特徴量を生成する。
図63は、ビート区間特徴量計算部192により生成される拡張ビート区間特徴量について説明するための説明図である。
図63を参照すると、一例として、ビート区間特徴量計算部192により、注目ビート区間BDiの前後N区間分の12音別エネルギーBFi−2、BFi−1、BFi、BFi+1、BFi+2が抽出されている。なお、ここでは、一例としてN=2としている。また、ビート区間特徴量計算部192により、注目ビート区間BDiにおける単純キー確率(SKPC、…、SKPB)が取得されている。ビート区間特徴量計算部192は、このような注目ビート区間の前後N区間分の12音別エネルギーと単純キー確率とを含む拡張ビート区間特徴量を全てのビート区間について生成し、ルート別特徴量準備部194へ出力する。
[2−8−2.ルート別特徴量準備部]
ルート別特徴量準備部194は、ビート区間特徴量計算部192から入力される拡張ビート区間特徴量の要素位置をシフトさせ、12通りの拡張ルート別特徴量を生成する。
図64は、ルート別特徴量準備部194による拡張ルート別特徴量生成処理について説明するための説明図である。
図64を参照すると、ルート別特徴量準備部194は、まず、ビート区間特徴量計算部192から入力される拡張ビート区間特徴量を、C音をルートとする拡張ルート別特徴量とみなす。次に、ルート別特徴量準備部194は、C音をルートとする拡張ルート別特徴量の12音の要素位置を所定数だけシフトさせることで、C#音からB音までをそれぞれルートとする、11通りの拡張ルート別特徴量を生成する。なお、要素位置をシフトさせるシフト数は、図36を用いて説明したルート別特徴量準備部164によるルート別特徴量生成処理でのシフト数と同様である。
ルート別特徴量準備部194は、このような拡張ルート別特徴量生成処理を全てのビート区間について行い、各区間についてのコード確率の再計算に用いる拡張ルート別特徴量を準備する。ルート別特徴量準備部194により生成された拡張ルート別特徴量は、コード確率計算部196へ出力される。
[2−8−3.コード確率計算部]
コード確率計算部196は、ルート別特徴量準備部194から入力された拡張ルート別特徴量を用いて、ビート区間ごとに、各コードが演奏されている確率を表すコード確率を計算する。ここで、各コードとは、上述したように、例えば、ルート(C、C#、D…)や構成音の数(三和音、四和音(7th)、五和音(9th))、及び長短(メジャー/マイナー)などにより区別される個々のコードのことをいう。コード確率の算出には、例えば、ロジスティック回帰分析によって予め学習された拡張コード確率算出式を用いることができる。
図65は、コード確率計算部196によるコード確率の再計算に用いられる拡張コード確率算出式の学習処理について説明するための説明図である。
なお、拡張コード確率算出式の学習は、コード確率算出式と同様、学習したいコードの種類ごとに行われる。即ち、例えばメジャーコード用の拡張コード確率算出式、マイナーコード用の拡張コード確率算出式、7thコード用の拡張コード確率算出式、及び9thコード用の拡張コード確率算出式などについて、それぞれ以下に説明する学習処理が行われる。
まず、ロジスティック回帰分析における独立変数として、正解のコードが既知であるビート区間ごとの拡張ルート別特徴量(例えば図64を用いて説明した12通りの12×6次元のベクトル)を複数用意する。
また、ビート区間ごとの拡張ルート別特徴量のそれぞれについて、ロジスティック回帰分析により生起確率を予測するダミーデータ(教師データ)を用意する。例えば、メジャーコード用の拡張コード確率算出式を学習する場合には、ダミーデータの値は、既知のコードがメジャーコードであれば真値(1)、それ以外なら偽値(0)となる。また、マイナーコード用の拡張コード確率算出式を学習する場合には、ダミーデータの値は、既知のコードがマイナーコードであれば真値(1)、それ以外なら偽値(0)となる。7thコード、9thコードについても同様である。
このような独立変数とダミーデータを用いて十分な数のビート区間ごとの拡張ルート別特徴量についてロジスティック回帰分析を行うことで、拡張ルート別特徴量から各コード確率を再計算するための拡張コード確率算出式が予め取得される。
そして、コード確率計算部196は、拡張ルート別特徴量準備部194から入力された拡張ルート別特徴量に予め取得された拡張コード確率算出式を適用し、ビート区間ごとにコード確率を順次算出する。
図66は、コード確率計算部196によるコード確率の再計算処理について説明するための説明図である。
図66(A)を参照すると、ビート区間ごとの拡張ルート別特徴量のうち、C音をルートとする拡張ルート別特徴量が示されている。コード確率計算部196は、例えば、このC音をルートとする拡張ルート別特徴量に予め学習により取得したメジャーコード用の拡張コード確率算出式を適用し、当該ビート区間についてコードが“C”であるコード確率CP´Cを再計算する。また、コード確率計算部196は、C音をルートとする拡張ルート別特徴量にマイナーコード用の拡張コード確率算出式を適用し、当該ビート区間についてコードが“Cm”であるコード確率CP´Cmを再計算する。
同様に、コード確率計算部196は、C#音をルートとする拡張ルート別特徴量にメジャーコード用及びマイナーコード用の拡張コード確率算出式を適用し、コード確率CP´C#及びコード確率CP´C#mを再計算する(図66(B))。コード確率CP´B及びコード確率CP´Bm(図66(C))、並びに図示していない他の種類のコード(7thや9th等を含む)のコード確率の再計算についても同様である。
コード確率計算部196は、このようなコード確率の再計算処理を全ての注目ビート区間について繰返し、再計算したコード確率を次に説明するコード確率修正部197へ出力する。
[2−8−4.コード確率修正部]
コード確率修正部197は、楽曲構造解析部150から入力されるビート区間同士の類似確率に基づいて、コード確率計算部196により再計算されたコード確率を修正する。
例えば、i番目の注目ビート区間のコードXのコード確率をCP´X(i)、i番目のビート区間とj番目のビート区間との間の類似確率をSP(i,j)とする。そうすると、修正後のコード確率CP´´X(i)は、例えば次式で与えられる。
即ち、修正後のコード確率CP´´X(i)は、注目ビートに対応するビート区間と他のビート区間との間の類似確率を重みとみなし、正規化した当該類似確率を用いてコード確率を重み付け加算した値となる。このような確率値の修正により、類似する内容の音声が演奏されているビート区間の間で、コード確率は、その修正前と比較して近い値となる。コード確率修正部197により修正されたビート区間ごとのコード確率は、次に説明するコード進行決定部198へ出力される。
[2−8−5.コード進行決定部]
コード進行決定部198は、コード確率修正部197から入力されたビート位置ごとのコード確率に基づいて、尤もらしいコード進行を経路探索により決定する。コード進行決定部198による経路探索の手法としては、例えば、上述したビタビアルゴリズムを用いることができる。
図67は、コード進行決定部198における経路探索について説明するための説明図である。
コード進行決定部198による経路探索にビタビアルゴリズムを適用する場合、時間軸(図67の横軸)にはビートが順に配置される。また、観測系列(図67の縦軸)として、コード確率が算出されたコードの種類を用いる。即ち、コード進行決定部198は、コード確率修正部197から入力されたビート区間とコードの種類の全ての組合せの1つ1つを、経路探索の対象のノードとする。
このようなノードに対し、コード進行決定部198は、時間軸に沿っていずれかのノードを順に選択する。そして、コード進行決定部198は、選択した一連のノードよりなる経路を、(1)コード確率、(2)キーに応じたコード出現確率、(3)小節線に応じたコード遷移確率、及び(4)キーに応じたコード遷移確率の4つの評価値を用いて評価する。なお、コード進行決定部198によるノードの選択に際しては、ビートをスキップすることは許可されない。
コード進行決定部198による経路の評価に用いられる評価値のうち、(1)コード確率は、コード確率修正部197により修正された上述のコード確率である。コード確率は、図67に示した個々のノードごとに与えられる。
また、(2)キーに応じたコード出現確率は、キー検出部170から入力されるキー進行によりビート区間ごとに特定されるキーに応じた、各コードの出現確率である。キーに応じたコード出現確率は、多数の楽曲におけるコードの出現確率をその楽曲のキーの種類ごとに集計することにより、予め定義される。例えば、一般的には、キーがC音である楽曲におけるコード“C”、“F”、及び“G”の各コードの出現確率は高い。キーに応じたコード出現確率は、図67に示した個々のノードごとに与えられる。
また、(3)小節線に応じたコード遷移確率とは、小節線検出部180から入力される小節線進行によりビートごとに特定されるビートの種類に応じた、コードの遷移確率である。小節線に応じたコード遷移確率は、多数の楽曲におけるコードの遷移確率をその楽曲の小節線進行における隣り合うビートの種類ごとに集計することにより、予め定義される。例えば、一般的には、小節の変わり目(遷移後が1拍目)や4拍子の2拍目から3拍目への遷移に際してコードが変化する確率は、他の遷移に際してコードが変化する確率よりも高い。小節線に応じたコード遷移確率は、ノード間の遷移に対して与えられる。
また、(4)キーに応じたコード遷移確率とは、キー検出部170から入力されるキー進行によりビート区間ごとに特定されるキーに応じた、コードの遷移確率である。キーに応じたコード遷移確率は、多数の楽曲におけるコードの遷移確率をその楽曲のキーの種類ごとに集計することにより、予め定義される。キーに応じたコード遷移確率は、ノード間の遷移に対して与えられる。
コード進行決定部198は、図67を用いて説明したコード進行を表す各経路について、その経路に含まれる各ノードの上記(1)〜(4)の評価値を順次乗算する。そして、コード進行決定部198は、経路の評価値としての乗算結果が最大となる経路を、尤もらしいコード進行を表す最適な経路として決定する。
図68は、コード進行決定部198により最適な経路として決定されたコード進行の一例を示す説明図である。
図68では、1〜6番目のビート区間及びi番目のビート区間について、コード進行決定部198により最適経路とされたコード進行が示されている(太線枠参照)。かかる例によれば、ビート区間ごとのコードは、1番目のビート区間から順に、“C”、“C”、“F”、“F”、“Fm”、“Fm”、…、“C”である。
以上説明したビート区間特徴量計算部192からコード進行決定部198までの処理の後、コード進行検出部190によるコード進行検出処理は終了する。
<3.本実施形態に係る情報処理装置の特徴>
本実施形態に係る情報処理装置100は、主に次に述べる特徴により、従来手法と比較してより精度の高い音声信号の解析結果を提供する。
第1に、小節線検出部180は、楽曲構造解析部150により計算されたビート区間同士の類似確率に応じて決定される修正後の小節線確率(各ビートが何拍子何拍目であるかを表す)に基づいて、音声信号の尤もらしい小節線の進行を決定する。即ち、本実施形態における小節線進行の決定に際して、小節線確率は、ビート区間内で類似する内容の音声が演奏されているビート間では近い値となるように事前に修正され得る。それにより、本来のビートの種類をより正確に反映した小節線確率に基づいて小節線進行を決定することが可能となる。
また、小節線検出部180は、ビート区間ごとのコードの種類又はキーの種類に応じて変動する第1特徴量と、ビート確率に応じて変動する第2特徴量とに基づいて、類似確率を用いて修正される前の小節線確率を計算する。ここで、各ビートが何拍子の何拍目であるかは、通常、コードの変化やキーの変化及びビートを考慮して判断し得る。従って、かかる第1特徴量及び第2特徴量に基づいて算出される小節線確率は、尤もらしい小節線進行の決定に有効である。
第2に、コード進行検出部190は、楽曲構造解析部150により計算されたビート区間同士の類似確率に応じて決定される修正後のコード確率に基づいて、音声信号の尤もらしいコード進行を決定する。即ち、本実施形態におけるコード進行の決定に際して、コード確率は、ビート区間内で類似する内容の音声が演奏されているビート間では近い値となるように事前に修正され得る。それにより、実際に演奏されたコードの種類をより正確に反映したコード確率に基づいてコード進行を決定することが可能となる。
また、コード進行検出部190は、注目するビート区間の周囲の区間の12音別エネルギーに加えて、キー検出部170により算出された単純キー確率を含む拡張ビート区間特徴量を用いて、コード進行の決定に使用するコード確率を再計算する。それにより、ビート区間ごとのキーの特徴を考慮して、より正確なコード進行が決定される。
第3に、楽曲構造解析部150は、ビート区間ごとの音程別の平均エネルギーに応じた特徴量の相関に基づいて、前述したビート区間同士の類似確率を算出する。ここで、音程別の平均エネルギーは、演奏された音の音量や音程などの音質的特徴を残している一方で、テンポの時間的変動には影響されにくい。即ち、音程別の平均エネルギーに応じて算出されたビート区間同士の類似確率は、テンポの変動の影響を受けることなく、楽曲のビート、コード又はキーを正確に解析するために有用である。
また、楽曲構造解析部150は、注目するビート区間の周囲に位置する複数のビート区間にわたる特徴量を用いて、ビート区間同士の相関を計算する。即ち、1つのビート区間における音質的特徴が他の1つのビート区間における音質的特徴と類似していても、周囲の複数のビート区間の音質的特徴が異なっていれば、計算される相関係数は高くならない。それにより、1つのビート区間ごとに変化することの少ない楽曲のキー、コード、又は拍子などを、より高い精度で解析することが可能となる。
第4に、ビート解析部130のビート探索部136は、想定し得るビート間隔を有するビートにオンセットが一致している度合いを表すビートスコアを用いて、尤もらしいテンポ変動を示すオンセットの最適経路を選択する。それにより、演奏されたテンポを適切に反映したビート位置を検出することが容易となる。
また、ビート解析部130の一定テンポ用ビート再探索部140は、ビート探索部136により決定された最適経路におけるテンポの変動(ビート間隔の分散)が小さい場合には、最も出現頻度の高いビート間隔の周辺に探索範囲を限定して最適経路を再探索する。それにより、テンポが一定の楽曲について、経路探索の結果部分的に発生する可能性のあるビート位置の誤りを減少させることができる。
なお、上記以外の本明細書において説明した各特徴も、本実施形態に係る情報処理装置100による解析結果の精度の向上に寄与していることは言うまでもない。
<4.まとめ>
以上、図1〜図68を用いて、本発明の一実施形態に係る情報処理装置100について説明した。
なお、情報処理装置100により最終的に出力される情報は、本明細書において説明したビート位置、ビート区間同士の類似確率、キー確率、キー進行、小節線進行、コード確率、又はコード進行などのうちいずれかの情報を含む任意の情報であってよい。また、本明細書において説明した情報処理装置100の構成のうち一部を部分的に実施することも可能である。例えば、ユーザにとってコード進行を検出することが必要でない場合には、上述したコード進行検出部190を省略し、例えば小節線のみを検出するビート解析装置として情報処理装置100を構成してもよい。
また、本実施形態では、ビート探索部136、キー決定部178、小節線決定部188、及びコード進行決定部198などにおける経路探索のためのアルゴリズムとしてビタビアルゴリズムを使用した。しかしながら、かかる例に限定されず、上記各部において他の任意の経路探索アルゴリズムを使用してもよい。また、本実施形態において使用したロジスティック回帰アルゴリズムの代わりに、他の統計分析アルゴリズムを使用してもよい。
また、ビート探索部136、キー決定部178、小節線決定部188、及びコード進行決定部198のうち2つ以上の処理部における経路探索が同時に実行されてもよい。例えば、2つ以上の処理部における経路探索を同時に実行することで、探索される経路の尤もらしさを包括的に最大化することができる。但し、その場合には経路探索に要する処理コストが大きくなることに留意すべきである。また、経路探索に際して本明細書に記載していない制約条件を追加して探索の範囲を狭め、処理コストを抑制してもよい。
また、本明細書において説明したように、本実施形態に係る処理においては、様々なパラメータが予め供給される。例えば、オンセット検出用の閾値(図7)、一定テンポ判定用の閾値(図18)、一定テンポについての経路の再探索範囲の限定用の閾値(図19)、12音別エネルギー算出の際の重み付け加算に用いられる重み(図30)などは、そうしたパラメータの一例である。これらパラメータは、例えば、近傍探索、遺伝的探索(Generic Algorithm)、又は任意のパラメータ最適化アルゴリズムを用いて事前に最適化しておくことができる。
さらに、本明細書において説明した情報処理装置100の各部による一連の処理をハードウェアで実現するかソフトウェアで実現するかは問わない。一連の処理又はその一部をソフトウェアで実行させる場合には、ソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれたコンピュータ、又は例えば図69に示した汎用コンピュータなどを用いて実行される。
図69において、CPU(Central Processing Unit)902は、汎用コンピュータの動作全般を制御する。ROM(Read Only Memory)904には、一連の処理の一部又は全部を記述したプログラム又はデータが格納される。RAM(Random Access Memory)906には、処理の実行時にCPU902により用いられるプログラムやデータなどが一時的に記憶される。
CPU902、ROM904、及びRAM906は、バス910を介して相互に接続される。バス910にはさらに、入出力インタフェース912が接続される。
入出力インタフェース912は、CPU902、ROM904、及びRAM906と、入力装置920、出力装置922、記憶装置924、通信装置926、及びドライブ930とを接続するためのインタフェースである。
入力装置920は、例えばボタンやマウス、キーボードなどの入力装置を介して、ユーザからの指示や情報入力を受け付ける。出力装置922は、例えばCRT(Cathode Ray Tube)、液晶ディスプレイ、OLED(Organic Light Emitting Diode)などの表示装置、又はスピーカなどの音声出力装置を介してユーザに情報を出力する。
記憶装置924は、例えばハードディスクドライブ又はフラッシュメモリなどにより構成され、プログラムやプログラムデータ、入出力データなどを記憶する。通信装置926は、LAN又はインターネットなどのネットワークを介する通信処理を行う。ドライブ930は、必要に応じて汎用コンピュータに設けられ、例えばドライブ930にはリムーバブルメディア932が装着される。
本実施形態に係る情報処理措置100により出力される情報は、楽曲に関連する様々なアプリケーションへの応用が可能である。例えば、小節線検出部180により検出された小節線進行とコード進行検出部190により検出されたコード進行とを用いて、仮想空間上で楽曲に合わせてキャラクターを動作させるアプリケーションを実現してもよい。また、例えば、コード進行検出部190により検出されたコード進行を用いて、自動的に楽譜にコード進行を記入するアプリケーションなどを実現してもよい。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば、フローチャートに記載した処理を、必ずしもフローチャートに記載された順序に沿って実行しなくてもよい。各処理ステップは、並列的あるいは個別に独立して実行される処理を含んでもよい。