以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
本稿には、以下の順序で説明が記載されている。
(説明項目)
1.基盤技術
1−1.特徴量計算式生成装置10の構成例
2.実施形態
2−1.情報処理装置100の全体構成
2−2.センター抽出部102の構成
2−3.ログスペクトル解析部104の構成
2−4.分類推定部106の構成
2−5.音程分布推定部108の構成
2−6.メロディー確率推定部110の構成
2−7.メロディーライン決定部112の構成
2−8.平滑化部114の構成
2−9.ビート検出部116、キー検出部118の構成
2−9−1.ビート検出部116の構成
2−9−2.コード確率検出部120の構成
2−9−3.キー検出部118の構成
2−10.ハードウェア構成例
2−11.まとめ
<1.基盤技術>
まず、本発明の一実施形態に係る技術について詳細な説明をするに先立ち、同実施形態の技術的構成を実現するために用いる基盤技術について簡単に説明する。ここで説明する基盤技術は、任意の入力データが持つ特徴を特徴量という形で定量化するアルゴリズムの自動生成方法に関する。入力データとしては、例えば、音声データの信号波形や画像に含まれる色毎の輝度データ等、種々のデータが用いられる。また、楽曲を例に挙げると、当該基盤技術を適用することにより、例えば、楽曲データの波形から、その楽曲の明るさやテンポの速さ等を表す特徴量を算出するためのアルゴリズムが自動生成される。なお、以下で述べる特徴量計算式生成装置10の構成例に代えて、例えば、特開2008−123011号公報に記載された学習アルゴリズムを代わりに利用することも可能である。
[1−1.特徴量計算式生成装置10の構成例]
まず、図1を参照しながら、上記の基盤技術に係る特徴量計算式生成装置10の機能構成について説明する。図1は、上記の基盤技術に係る特徴量計算式生成装置10の一構成例を示す説明図である。ここで説明する特徴量計算式生成装置10は、任意の入力データを用いて、その入力データに含まれる特徴を特徴量として定量化するアルゴリズム(以下、計算式)を自動生成する手段(学習アルゴリズム)の一例である。
図1に示すように、特徴量計算式生成装置10は、主に、オペレータ記憶部12と、抽出式生成部14と、抽出式リスト生成部20と、抽出式選択部22と、計算式設定部24とを有する。さらに、特徴量計算式生成装置10は、計算式生成部26と、特徴量選択部32と、評価データ取得部34と、教師データ取得部36と、式評価部38とを有する。なお、上記の抽出式生成部14は、オペレータ選択部16を含む。また、上記の計算式生成部26は、抽出式計算部28、及び係数算出部30を含む。さらに、式評価部38は、計算式評価部40、及び抽出式評価部42を含む。
まず、抽出式生成部14は、オペレータ記憶部12に記録されている複数のオペレータを組み合わせて計算式の元となる特徴量抽出式(以下、抽出式)を生成する。なお、ここで言うオペレータとは、入力データのデータ値に対して所定の演算処理を実行するために用いる演算子である。オペレータで実行される演算の種類には、例えば、微分値算出、最大値抽出、ローパスフィルタリング、普遍分散値算出、高速フーリエ変換、標準偏差値算出、平均値算出等が含まれる。もちろん、これら例示した種類の演算に限定されず、入力データのデータ値に対して実行可能な任意の種類の演算が含まれる。
また、各オペレータには、演算の種類、演算対象軸、及び演算に用いるパラメータが設定されている。演算対象軸とは、入力データの各データ値を定義する軸の中で、演算処理の対象とする軸を意味する。例えば、楽曲データを例に挙げると、楽曲データは、時間軸及び音程軸(周波数軸)で形成される空間内において音量の信号波形として与えられる。この楽曲データに対して微分演算を行う場合、時間軸方向に微分演算を行うのか、又は周波数軸方向に微分演算を行うのかを決定する必要がある。そこで、各パラメータには、入力データが定義される空間を形成する軸の中で演算処理の対象とする軸の情報が含まれる。
また、演算の種類によっては、パラメータが必要になる。例えば、ローパスフィルタリングの場合、透過させるデータ値の範囲を規定するための閾値がパラメータとして定められている必要がある。こうした理由から、各オペレータには、演算の種類の他に、演算対称軸、及び必要なパラメータが含まれている。例えば、あるオペレータは、F#Differential、F#MaxIndex、T#LPF_1;0.861、T#UVariance、…のように表現される。オペレータの先頭に付されるF等は、演算対象軸を表す。例えば、Fは周波数軸を意味し、Tは時間軸を意味する。
演算対称軸の次に#で区切られて付されるDifferential等は、演算の種類を表す。例えば、Differentialは微分値算出演算、MaxIndexは最大値抽出演算、LPFはローパスフィルタリング、UVarianceは普遍分散値算出演算を意味する。そして、演算の種類に続く数字はパラメータを表す。例えば、LPF_1;0.861は、1〜0.861の範囲を通過帯域とするローパスフィルタを表す。これらの多種多様なオペレータは、オペレータ記憶部12に記録されており、抽出式生成部14により読み出されて利用される。抽出式生成部14は、まず、オペレータ選択部16により任意のオペレータを選択し、選択したオペレータを組み合わせて抽出式を生成する。
例えば、オペレータ選択部16によりF#Differential、F#MaxIndex、T#LPF_1;0.861、T#UVarianceが選択され、抽出式生成部14により下記の式(1)で表現される抽出式fが生成される。但し、先頭に付された12Tonesは、処理対象とする入力データの種類を示すものである。例えば、12Tonesと表記されている場合、入力データの波形を解析して得られる時間−音程空間上の信号データ(後述するログスペクトル)が演算処理の対象とされる。つまり、下記の式(1)で表現される抽出式は、後述するログスペクトルを処理対象とし、入力データに対して、周波数軸方向(音程軸方向)に微分演算及び最大値抽出、時間軸方向にローパスフィルタリング及び普遍分散値演算を順次実行することを表している。
…(1)
上記の通り、抽出式生成部14は、上記の式(1)に示したような抽出式を様々なオペレータの組み合わせについて生成する。この生成方法について、より詳細に説明する。まず、抽出式生成部14は、オペレータ選択部16を用いてオペレータを選択する。このとき、オペレータ選択部16は、選択したオペレータの組み合わせ(抽出式)で入力データに演算を施した結果がスカラ又は所定サイズ以下のベクトルになるか否か(収束するか否か)を判定する。
なお、上記の判定処理は、各オペレータに含まれる演算対象軸の種類及び演算の種類に基づいて行われる。この判定処理は、オペレータ選択部16によりオペレータの組み合わせが選択された際、各組み合わせについて実行される。そして、オペレータ選択部16により演算結果が収束すると判定された場合、抽出式生成部14は、オペレータ選択部16で選択されたオペレータの組み合わせを用いて抽出式を生成する。抽出式生成部14による抽出式の生成処理は、所定数(以下、選択抽出式数)の抽出式が生成されるまで実行される。抽出式生成部14で生成された抽出式は、抽出式リスト生成部20に入力される。
抽出式生成部14から抽出式リスト生成部20に抽出式が入力されると、入力された抽出式から所定数(以下、リスト内抽出式数≦選択抽出式数)の抽出式が選択されて抽出式リストが生成される。このとき、抽出式リスト生成部20による生成処理は、所定数(以下、リスト数)の抽出式リストが生成されるまで実行される。そして、抽出式リスト生成部20で生成された抽出式リストは、抽出式選択部22に入力される。
ここで、抽出式生成部14、及び抽出式リスト生成部20の処理に関して具体的な例を示す。まず、抽出式生成部14により入力データの種類が、例えば、楽曲データに決定される。次いで、オペレータ選択部16によりオペレータOP1、OP2、OP3、OP4がランダムに選択される。そして、選択されたオペレータの組み合わせで楽曲データの演算結果が収束するか否かの判定処理が実行される。楽曲データの演算結果が収束すると判定された場合、OP1〜OP4の組み合わせで抽出式f1が生成される。抽出式生成部14で生成された抽出式f1は、抽出式リスト生成部20に入力される。
さらに、抽出式生成部14は、抽出式f1の生成処理と同様の処理を繰り返し、例えば、抽出式f2、f3、f4を生成する。このようにして生成された抽出式f2、f3、f4は、抽出式リスト生成部20に入力される。抽出式f1、f2、f3、f4が入力されると、抽出式リスト生成部20は、例えば、抽出式リストL1={f1,f2、f4}、L2={f1、f3,f4}を生成する。抽出式リスト生成部20で生成された抽出式リストL1、L2は、抽出式選択部22に入力される。以上、具体例を挙げて説明したように、抽出式生成部14により抽出式が生成され、抽出式リスト生成部20により抽出式リストが生成されて、抽出式選択部22に入力される。但し、上記の例では、選択抽出式数=4、リスト内抽出式数=3、リスト数=2の場合を示したが、実際には非常に多数の抽出式、及び抽出式リストが生成される点に注意されたい。
さて、抽出式リスト生成部20から抽出式リストが入力されると、抽出式選択部22は、入力された抽出式リストの中で、後述する計算式に組み込むべき抽出式を選択する。例えば、上記の抽出式リストL1の中で抽出式f1、f4を計算式に組み込む場合、抽出式選択部22は、抽出式リストL1について抽出式f1、f4を選択する。抽出式選択部22は、各抽出式リストについて上記の選択処理を実行する。そして、選択処理が完了すると、抽出式選択部22による選択処理の結果、及び各抽出式リストは、計算式設定部24に入力される。
抽出式選択部22から選択結果及び各抽出式リストが入力されると、計算式設定部24は、抽出式選択部22の選択結果を考慮して各抽出式リストに対応する計算式を設定する。例えば、計算式設定部24は、下記の式(2)に示すように、各抽出式リストLm={f1,…,fK}に含まれる抽出式fkを線形結合して計算式Fmを設定する。但し、m=1、…、M(Mはリスト数)、k=1、…、K(Kはリスト内抽出式数)、B0、…、BKは結合係数である。
…(2)
なお、計算式Fmを抽出式fk(k=1〜K)の非線形関数に設定することも可能である。但し、計算式設定部24で設定される計算式Fmの関数形は、後述する計算式生成部26で用いられる結合係数の推定アルゴリズムに依存する。従って、計算式設定部24は、計算式生成部26で利用可能な推定アルゴリズムに応じて計算式Fmの関数形を設定するように構成される。例えば、計算式設定部24は、入力データの種類に応じて関数形を変えるように構成されていてもよい。但し、本稿においては、説明の都合上、上記の式(2)で表現される線形結合を用いることにする。さて、計算式設定部24により設定された計算式の情報は、計算式生成部26に入力される。
また、計算式生成部26には、計算式で算出したい特徴量の種類が特徴量選択部32から入力される。なお、特徴量選択部32は、計算式で算出したい特徴量の種類を選択するための手段である。さらに、計算式生成部26には、評価データ取得部34から入力データの種類に対応する評価データが入力される。例えば、入力データの種類が楽曲である場合、複数の楽曲データが評価データとして入力される。また、計算式生成部26には、教師データ取得部36から各評価データに対応する教師データが入力される。ここで言う教師データとは、各評価データの特徴量である。特に、特徴量選択部32が選択した種類の教師データが計算式生成部26に入力される。例えば、入力データが楽曲データであり、特徴量の種類がテンポである場合、各評価データの正解テンポ値が教師データとして計算式生成部26に入力される。
評価データ、教師データ、特徴量の種類、計算式等が入力されると、計算式生成部26は、まず、抽出式計算部28によって計算式Fmに含まれる抽出式f1、…、fKに各評価データを入力して各抽出式による計算結果(以下、抽出式計算結果)を求める。抽出式計算部28により各評価データに関する各抽出式の抽出式計算結果が算出されると、抽出式計算部28から係数算出部30に各抽出式計算結果が入力される。係数算出部30は、各評価データに対応する教師データ、及び入力された抽出式計算結果を利用し、上記の式(2)においてB0、…、BKで表現された結合係数を算出する。例えば、最小二乗法等を用いて係数B0、…、BKを決定することができる。このとき、係数算出部30は、平均二乗誤差等の評価値を共に算出する。
なお、抽出式計算結果、結合係数、及び平均二乗誤差等は特徴量の種類毎にリスト数分だけ算出される。そして、抽出式計算部28で算出された抽出式計算結果、係数算出部30で算出された結合係数、及び平均二乗誤差等の評価値は、式評価部38に入力される。これらの算出結果が入力されると、式評価部38は、入力された算出結果を用いて各計算式の良否を判定するための評価値を算出する。上記の通り、各計算式を構成する抽出式及び抽出式を構成するオペレータを決定する処理においてランダムな選択処理が含まれている。つまり、これらの決定処理において最適な抽出式及び最適なオペレータが選択されたか否かについて不確定要素が含まれている。そこで、算出結果を評価し、必要に応じて再計算又は計算結果の修正をするために、式評価部38により評価が行われる。
図1に示す式評価部38には、各計算式の評価値を算出する計算式評価部40と、各抽出式の寄与度を算出する抽出式評価部42とが設けられている。計算式評価部40は、各計算式を評価するために、例えば、AIC又はBICと呼ばれる評価方法を用いる。ここで言うAICとは、Akaike Information Criterionの略である。一方、BICとは、Bayesian Information Criterionの略である。AICを用いる場合、各計算式の評価値は、各計算式に対する平均二乗誤差及び教師データの数(以下、教師数)を用いて算出される。例えば、この評価値は、下記の式(3)で表現される値(AIC)に基づいて算出される。
…(3)
上記の式(3)では、AICが小さいほど計算式の精度が高いことを意味する。従って、AICを用いる場合の評価値は、AICが小さいほど大きくなるように設定される。例えば、その評価値は、上記の式(3)で表現されるAICの逆数で算出される。なお、計算式評価部40においては、特徴量の種類数分だけ評価値が算出される。そこで、計算式評価部40は、各計算式について特徴量の種類に関する平均演算を行い、平均評価値を算出する。つまり、この段階で各計算式の平均評価値が算出される。計算式評価部40で算出された平均評価値は、計算式の評価結果として抽出式リスト生成部20に入力される。
一方、抽出式評価部42は、抽出式計算結果、及び結合係数に基づいて各計算式における各抽出式の寄与率を評価値として算出する。例えば、抽出式評価部42は、下記の式(4)に従って寄与率を算出する。なお、抽出式fkの抽出式計算結果に対する標準偏差は、各評価データについて算出された抽出式計算結果から得られるものである。下記の式(4)に従って抽出式評価部42により計算式毎に算出された各抽出式の寄与率は、抽出式の評価結果として抽出式リスト生成部20に入力される。
…(4)
但し、StDev(…)は標準偏差を表す。また、推定対象の特徴量とは、楽曲のテンポ等である。例えば、100曲のログスペクトルが評価データとして、各曲のテンポが教師データとして与えられる場合、StDev(推定対象の特徴量)は、100曲のテンポの標準偏差を表す。また、上記の式(4)に含まれるPearson(…)は相関関数を表す。例えば、Pearson(fkの計算結果,推定対象の特徴量)は、fkの計算結果と推定対象の特徴量との間の相関係数を算出するための相関関数を表す。なお、ここでは特徴量として楽曲のテンポを例示したが、推定対象となる特徴量はこれに限定されない。
このようにして式評価部38から抽出式リスト生成部20に評価結果が入力されると、新たな計算式の構築に用いる抽出式リストが生成される。まず、抽出式リスト生成部20は、計算式評価部40で算出された平均評価値が高い順に所定数の計算式を選択し、選択した計算式に対応する抽出式リストを新たな抽出式リストに設定する(選択)。また、抽出式リスト生成部20は、計算式評価部40で算出された平均評価値が高い順に重み付けしながら2つの計算式を選択し、当該計算式に対応する抽出式リストの抽出式を組み合わせて新たな抽出式リストを生成する(交差)。また、抽出式リスト生成部20は、計算式評価部40で算出された平均評価値が高い順に重み付けしながら1つの計算式を選択し、その計算式に対応する抽出式リストの抽出式を一部変更して新たな抽出式リストを生成する(突然変異)。また、抽出式リスト生成部20は、ランダムに抽出式を選択して新たな抽出式リストを生成する。
なお、上記の交差においては、寄与率の低い抽出式ほど選択されにくく設定される方が好ましい。また、上記の突然変異においては、寄与率の低い抽出式ほど変更されやすく設定される方が好ましい。このようにして新たに生成又は設定された抽出式リストを用いて、抽出式選択部22、計算式設定部24、計算式生成部26、及び式評価部38による処理が再び実行される。これら一連の処理は、式評価部38による評価結果の向上度合いがある程度収束するまで繰り返し実行される。そして、式評価部38による評価結果の向上度合いがある程度収束すると、その時点の計算式が算出結果として出力される。ここで出力された計算式を用いることで、上記の評価データとは異なる任意の入力データから、その入力データが持つ所望の特徴を表す特徴量が精度良く算出される。
上記のように、特徴量計算式生成装置10の処理は、交差や突然変異等の要素を考慮して世代交代を進めながら繰り返し処理を実行する遺伝的アルゴリズムに基づいている。この遺伝的アルゴリズムを用いることで、精度良く特徴量を推定することが可能な算出式が得られる。但し、後述する実施形態においては、例えば、遺伝的アルゴリズムよりも簡略化された方法で計算式を算出する学習アルゴリズムを用いることができる。例えば、抽出式リスト生成部20において上記の選択、交差、突然変異等の処理を行う代わりに、抽出式選択部22において抽出式の使用/未使用の組み合わせを変えつつ、計算式評価部40の評価値が最も高い組み合わせを選択する方法が考えられる。この場合には、抽出式評価部42の構成を省略することができる。また、演算負荷及び所望する推定精度に応じて適宜構成を変更することが可能である。
<2.実施形態>
以下、本発明の一実施形態について説明する。本実施形態は、Wavデータ等で提供される楽曲データから、その楽曲のメロディーラインを自動抽出する技術に関する。特に、本実施形態においては、メロディーラインの抽出精度を向上させる技術が提案される。例えば、同技術によると、メロディー以外の他の楽器の音程を間違ってメロディーと検出する誤検出の頻度を低減させることができる。また、ビブラート等の影響により本来のメロディーから半音ずれた音程をメロディーであると誤検出する頻度を低減させることができる。さらに、異なるオクターブの音程をメロディーであると誤検出する頻度を低減させることができる。なお、同技術は、楽曲データからベースラインを高精度に抽出する技術にも応用することができる。
[2−1.情報処理装置100の全体構成]
まず、図2を参照しながら、本実施形態に係る情報処理装置100の機能構成について説明する。図2は、本実施形態に係る情報処理装置100の機能構成例を示す説明図である。なお、ここで説明する情報処理装置100は、楽曲データからメロディーラインを抽出することが可能なメロディーライン抽出装置として機能するものである。以下、情報処理装置100の全体構成について説明した後、各構成要素の詳細な構成について個々に説明する。
図2に示すように、情報処理装置100は、センター抽出部102と、ログスペクトル解析部104と、分類推定部106と、音程分布推定部108と、メロディー確率推定部110とを有する。さらに、情報処理装置100は、メロディーライン決定部112と、平滑化部114と、ビート検出部116と、キー検出部118と、コード確率検出部120とを有する。
また、図2に例示した情報処理装置100には、特徴量計算式生成装置10が含まれている。但し、特徴量計算式生成装置10は、情報処理装置100の内部に設けられていてもよいし、外部装置として情報処理装置100に接続されていてもよい。以下の説明においては、説明の都合上、情報処理装置100に特徴量計算式生成装置10が内蔵されているものとする。また、情報処理装置100は、特徴量計算式生成装置10を設ける代わりに、特徴量の計算式を生成することが可能な各種の学習アルゴリズムを用いることも可能である。
全体的な処理の流れは次の通りである。まず、センター抽出部102に楽曲データが入力される。センター抽出部102では、楽曲データに含まれるステレオ成分のうち、センター成分だけが抽出される。そして、楽曲データのセンター成分は、ログスペクトル解析部104に入力される。ログスペクトル解析部104では、楽曲データのセンター成分が後述するログスペクトルに変換される。ログスペクトル解析部104から出力されるログスペクトルは、特徴量計算式生成装置10、及びメロディー確率推定部110等に入力される。なお、ログスペクトルは、特徴量計算式生成装置10、メロディー確率推定部110以外の構成要素においても利用されることがある。その場合、適宜、ログスペクトル解析部104から直接的又は間接的に各構成要素に対して所要のログスペクトルが提供される。
例えば、分類推定部106にログスペクトルが入力され、特徴量計算式生成装置10を用いて当該ログスペクトルに対応する楽曲が所定の分類項目に分類される。また、音程分布推定部108にログスペクトルが入力され、特徴量計算式生成装置10を用いて当該ログスペクトルからメロディーラインの分布確率が大まかに推定される。なお、メロディー確率推定部110では、入力されたログスペクトルから、当該ログスペクトルの各音程がメロディーラインである確率が推定される。このとき、分類推定部106で推定された楽曲の分類が考慮される。メロディー確率推定部110で推定されたメロディーラインの確率は、メロディーライン決定部112に入力される。そして、メロディーライン決定部112によりメロディーラインが決定される。決定されたメロディーラインは、平滑化部114でビート毎に平滑化されてから外部に出力される。
メロディーラインの抽出処理に関する大まかな流れは上記の通りである。但し、各構成要素における処理には、例えば、楽曲のビートやキー進行等が用いられる。そのため、ビート検出部116でビートが検出され、キー検出部118でキー進行が検出される。また、キー検出処理に用いられるコード確率(後述)は、コード確率検出部120で検出される。以下では、まず、ビート検出部116、キー検出部118、及びコード確率検出部120を除く各構成要素について詳細に説明し、楽曲データからメロディーラインを抽出するために中心的に用いられる機能について詳述する。その後、ビート検出部116、キー検出部118、及びコード確率検出部120の機能構成について詳細に説明する。
[2−2.センター抽出部102の構成例]
まず、センター抽出部102について説明する。センター抽出部102は、入力されたステレオ信号から、中央付近に定位する音源信号(以下、センター信号)を抽出する手段である。例えば、センター抽出部102は、センター信号と非中央付近に定位する音源信号(以下、非センター信号)との間の音量差を算出し、その算出結果に応じて非センター信号を抑圧する。但し、ここで言うセンター信号とは、チャネル間でレベル差及び位相差が小さい信号のことを意味する。
ここで、センター抽出部102の構成について、図3を参照しながら、より詳細に説明する。図3に示すように、センター抽出部102は、左チャネル帯域分割部122、右チャネル帯域分割部124、帯域通過フィルタ126、左チャネル帯域合成部128、及び右チャネル帯域合成部130で構成することができる。
まず、左チャネル帯域分割部122には、センター抽出部102に入力されるステレオ信号のうち、左チャネルの信号sLが入力される。左チャネルの信号sLには、左チャネルの非センター信号Lとセンター信号Cとが混在している。また、左チャネルの信号sLは、時間の進行に伴って変化する音量レベルの信号である。そこで、左チャネル帯域分割部122は、入力された左チャネルの信号sLにDFT処理を施し、時間領域の信号から周波数領域の信号(以下、マルチバンド信号fL(0),…,fL(N−1))へと変換する。但し、fL(k)は、k番目(k=0,…,N−1)の周波数帯に対応するサブバンド信号である。なお、上記のDFTは、Discrete Fourier Transformの略である。左チャネル帯域分割部122から出力された左チャネルのマルチバンド信号は、帯域通過フィルタ126に入力される。
同様に、右チャネル帯域分割部124には、センター抽出部102に入力されるステレオ信号のうち、右チャネルの信号sRが入力される。右チャネルの信号sRには、右チャネルの非センター信号Rとセンター信号Cとが混在している。また、右チャネルの信号sRは、時間の進行に伴って変化する音量レベルの信号である。そこで、右チャネル帯域分割部124は、入力された右チャネルの信号sRにDFT処理を施し、時間領域の信号から周波数領域の信号(以下、マルチバンド信号fR(0),…,fR(N−1))へと変換する。但し、fR(k’)は、k’番目(k’=0,…,N−1)の周波数帯に対応するサブバンド信号である。右チャネル帯域分割部124から出力された右チャネルのマルチバンド信号は、帯域通過フィルタ126に入力される。但し、各チャネルに対するマルチバンド信号の帯域分割数をN(例えば、N=8192)とした。
上記の通り、帯域通過フィルタ126には、各チャネルのマルチバンド信号fL(k)(k=0,…,N−1)、fR(k’)(k’=0,…,N−1)が入力される。なお、以下の説明において、周波数が低い順にk=0,…,N−1、又はk’=0,…,N−1とラベル付けする。また、各信号成分fL(k)及びfR(k’)のことをサブチャネル信号と呼ぶことにする。まず、帯域通過フィルタ126においては、両チャネルのマルチバンド信号から同じ周波数帯のサブチャネル信号fL(k)、fR(k’)(k’=k)が選択され、両サブチャネル信号の類似度a(k)が算出される。類似度a(k)は、例えば、下記の式(5)及び式(6)に従って算出される。但し、サブチャネル信号には、振幅成分と位相成分とが含まれる。そのため、振幅成分の類似度をap(k)、位相成分の類似度をai(k)と表現している。
…(5)
…(6)
但し、|…|は…の大きさを表す。θはfL(k)とfR(k)との間の位相差(0≦|θ|≦π)を表す。上付き*は複素共役を表す。Re[…]は…の実部を表す。上記の式(6)から明らかなように、振幅成分の類似度ap(k)は、サブチャネル信号fL(k)、fR(k)の大きさが一致する場合に1となる。逆に、サブチャネル信号fL(k)、fR(k)の大きさが一致しない場合、類似度ap(k)は1よりも小さな値となる。一方、位相成分の類似度ai(k)に関しては、位相差θが0のときに類似度ai(k)が1、位相差θがπ/2のときに類似度ai(k)が0、位相差θがπのときに類似度ai(k)が−1となる。つまり、位相成分の類似度ai(k)は、サブチャネル信号fL(k)、fR(k)の位相が一致した場合に1となり、サブチャネル信号fL(k)、fR(k)の位相が一致しない場合に1より小さな値となる。
上記の方法により各周波数帯k(k=0,…,N−1)の類似度a(k)が算出されると、帯域通過フィルタ126により、所定の閾値よりも小さい類似度ap(q)、ai(q)(0≦q≦N−1)に対応する周波数帯qが抽出される。そして、帯域通過フィルタ126により抽出された周波数帯qのサブチャネル信号のみが左チャネル帯域合成部128又は右チャネル帯域合成部130に入力される。例えば、左チャネル帯域合成部128には、サブチャネル信号fL(q)(q=q0,…,qn−1)が入力される。そこで、左チャネル帯域合成部128は、帯域通過フィルタ126から入力されたサブチャネル信号fL(q)(q=q0,…,qn−1)に対してIDFT処理を施し、周波数領域から時間領域へと変換する。但し、上記のIDFTは、Inverse discrete Fourier Transformの略である。
同様に、右チャネル帯域合成部130には、サブチャネル信号fR(q)(q=q0,…,qn−1)が入力される。そこで、右チャネル帯域合成部130は、帯域通過フィルタ126から入力されたサブチャネル信号fR(q)(q=q0,…,qn−1)に対してIDFT処理を施し、周波数領域から時間領域へと変換する。左チャネル帯域合成部128からは、左チャネルの信号sLに含まれていたセンター信号成分sL’が出力される。一方、右チャネル帯域合成部130からは、右チャネルの信号sRに含まれていたセンター信号成分sR’が出力される。以上説明した方法により、センター抽出部102は、ステレオ信号からセンター信号を抽出する。そして、センター抽出部102で抽出されたセンター信号は、ログスペクトル解析部104に入力される(図2を参照)。
[2−3.ログスペクトル解析部104の構成例]
次に、ログスペクトル解析部104について説明する。ログスペクトル解析部104は、入力された音声信号を各音程の強度分布に変換する手段である。音声信号には、オクターブ毎に12の音程(C、C#、D、D#、E、F、F#、G、G#、A、A#、B)が含まれる。また、各音程の中心周波数は対数で分布する。例えば、音程A3の中心周波数fA3を基準にすると、A#3の中心周波数はfA#3=fA3*21/12と表現される。同様に、音程B3の中心周波数fB3は、fB3=fA#3*21/12と表現される。このように、隣り合う音程間で中心周波数の比は、1:21/12である。しかし、音声信号を扱う上で、音声信号を時間−周波数空間における信号強度分布として捉えると、周波数軸が対数軸となってしまい、音声信号に対する処理が複雑化してしまう。そこで、ログスペクトル解析部104は、音声信号を解析し、時間−周波数空間の信号から時間−音程空間の信号(以下、ログスペクトル)に変換する。
ここで、ログスペクトル解析部104の構成について、図4を参照しながら、より詳細に説明する。図4に示すように、ログスペクトル解析部104は、再標本化部132、オクターブ分割部134、及び複数のバンドパスフィルタバンク136(BPFB)で構成することができる。
まず、再標本化部132に音声信号が入力される。すると、再標本化部132は、入力される音声信号のサンプリング周波数(例えば、44.1kHz)を所定のサンプリング周波数に変換する。所定のサンプリング周波数としては、例えば、オクターブの境界に対応する周波数(以下、境界周波数)を基準とし、境界周波数を2のべき乗倍した周波数が用いられる。例えば、音声信号のサンプリング周波数は、オクターブ4とオクターブ5との間の境界周波数1016.7Hzを基準とし、基準の25倍のサンプリング周波数(32534.7Hz)に変換される。このようにサンプリング周波数を変換することで、再標本化部132の後段で実施される帯域分割処理及びダウンサンプリング処理の結果として得られる最高及び最低周波数が、あるオクターブの最高及び最低周波数に一致する。その結果、音声信号から各音程の信号を抽出する処理を簡単化することができる。
さて、再標本化部132によりサンプリング周波数が変換された音声信号は、オクターブ分割部134に入力される。すると、オクターブ分割部134は、帯域分割処理とダウンサンプリング処理とを繰り返し実行することで、入力された音声信号をオクターブ毎に分割する。オクターブ分割部134で分割された各オクターブの信号は、オクターブ毎(O1、…、O8)に設けられたバンドパスフィルタバンク136(BPFB(O1)、…、BPFB(O8))に入力される。各バンドパスフィルタバンク136は、入力された各オクターブの音声信号から各音程の信号を抽出するために、12の音程に対応する通過帯域を持つ12の帯域通過フィルタで構成されている。例えば、オクターブ8のバンドパスフィルタバンク136(BPFB(O8))を通過することで、オクターブ8の音声信号から12音程(C8、C#8、D8、D#8、E8、F8、F#8、G8、G#8、A8、A#8、B8)の信号が抽出される。
各バンドパスフィルタバンク136から出力される信号により、各オクターブにおける12音程の信号強度(以下、エネルギー)を表すログスペクトルが得られる。図5は、ログスペクトル解析部104から出力されるログスペクトルの一例を示す説明図である。
図5の縦軸(音程)を参照すると、入力された音声信号は7つのオクターブに分割され、さらに各オクターブは、“C”、“C#”、“D”、“D#”、“E”、“F”、“F#”、“G”、“G#”、“A”、“A#”、“B”の12の音程に分割されている。一方、図5の横軸(時間)は、音声信号が時間軸に沿ってサンプリングされた際のフレーム番号を表している。例えば、再標本化部132において音声信号がサンプリング周波数127.0888[Hz]で再サンプリングされた場合、1フレームは、1[sec]/127.0888=7.8686[msec]に相当する時間間隔となる。また、図5に示したログスペクトルの色の濃淡は、各フレームにおける各音程のエネルギーの大きさを表す。例えば、位置S1が濃い色を示しており、位置S1に対応する時間に、位置S1に対応する音程(音程F)の音が強く発せられていることが分かる。なお、図5は、ある音声信号を入力信号としたときに得られるログスペクトルの一例である。従って、入力信号が異なれば、異なるログスペクトルが得られる。このようにして得られたログスペクトルは、分類推定部106に入力される(図2を参照)。
[2−4.分類推定部106の構成例]
次に、分類推定部106について説明する。分類推定部106は、楽曲の信号が入力された際に、その入力信号が属する楽曲の分類を推定する手段である。後述するように、各入力信号が属する楽曲の分類を考慮することで、後段で実施されるメロディーラインの検出処理において検出精度を高めることが可能になる。楽曲は、例えば、図6に示すように、「古い曲」「男性ボーカル、バックグラウンド(BG)大」「男性ボーカル、バックグラウンド(BG)小」「女性ボーカル、バックグラウンド(BG)大」等に分類される。例えば、「古い曲」は、録音時点における録音機器や音響設備の技術レベルが現在とは異なるため、音質が悪かったり、バックグラウンドの音量割合が小さいという特徴を持つ。その他の分類についても、分類毎に図6に示すような特徴が存在する。そこで、こうした楽曲の特徴毎に入力信号の分類が行われる。なお、楽曲の分類は、図6に例示したものに限定されない。例えば、声質等に基づいて、より細分化された分類を用いることも可能である。
さて、分類推定部106は、楽曲の分類を推定するために、図7に示すような処理を実行する。まず、分類推定部106は、評価データとして用いる複数の音声信号(曲1、…、曲4)をログスペクトル解析部104でログスペクトルに変換させる。そして、分類推定部106は、複数の音声信号(曲1、…、曲4)のログスペクトルを評価データとして特徴量計算式生成装置10に入力する。また、評価データとして用いる各音声信号(曲1、…、曲4)の分類は、図7に示すように分類値(0又は1)として与えられている。但し、分類値0は非該当、分類値1は該当を表す。例えば、音声信号(曲1)は、分類「古い曲」「男性ボーカル、BG小」には該当せず、「男性ボーカル、BG大」に該当する。分類推定部106は、特徴量計算式生成装置10を用いて、このような分類値を算出する推定アルゴリズム(計算式)を生成するのである。
そのため、分類推定部106は、特徴量計算式生成装置10に対し、複数の音声信号(曲1、…、曲4)のログスペクトルを評価データとして入力すると共に、教師データとして各分類の分類値を入力する。従って、特徴量計算式生成装置10には、評価データとして音声信号(曲1、…、曲4)のログスペクトル、及び教師データとして各音声信号に対する各分類の分類値が入力される。なお、各音声信号に対応する評価データには、1曲分のログスペクトルが用いられる。このような評価データ及び教師データが入力されると、特徴量計算式生成装置10は、任意の音声信号のログスペクトルから各分類の分類値を算出する計算式GAを分類毎に生成する。このとき、特徴量計算式生成装置10は、最終的に出力された各計算式GAの評価値(確率)を同時に出力する。
特徴量計算式生成装置10で分類毎の計算式GAが生成されると、分類推定部106は、実際に分類したい曲(以下、実施曲)の音声信号をログスペクトル解析部104でログスペクトルに変換させる。そして、分類推定部106は、特徴量計算式生成装置10で生成された分類毎の計算式GAに実施曲のログスペクトルを入力し、実施曲に対する各分類の分類値を算出する。各分類の分類値が算出されると、分類推定部106は、分類値が最も高い分類に実施曲を分類する。但し、分類推定部106は、分類の際に各計算式の確率を考慮するように構成されていてもよい。この場合、分類推定部106は、各分類に対応する計算式で算出された分類値と当該計算式の確率とを用いて、分類毎に実施曲が該当する確率(以下、該当確率)を算出する。そして、分類推定部106は、該当確率が最も高い分類に実施曲を割り振る。その結果、図7に例示するような分類結果が得られる。このようにして得られた分類結果は、音程分布推定部108、メロディー確率推定部110、及びメロディーライン決定部112に入力される(図2を参照)。
[2−5.音程分布推定部108の構成例]
次に、図8及び図9を参照しながら、音程分布推定部108の構成について説明する。音程分布推定部108は、メロディーラインの分布を自動推定する手段である。メロディーラインの分布は、経時変動するメロディーラインの各区間で算出される期待値及び曲全体で算出される標準偏差により表現される。このようなメロディーラインの分布をログスペクトルから推定するために、音程分布推定部108は、特徴量計算式生成装置10を用いて各区間におけるメロディーラインの期待値を算出するための計算式を生成する。
まず、音程分布推定部108は、分類推定部106と同様に、複数の音声信号のログスペクトルを評価データとして特徴量計算式生成装置10に入力する。さらに、音程分布推定部108は、教師データとして各音声信号の正解メロディーラインを区間毎に切り出し(図8を参照)、特徴量計算式生成装置10に入力する。このようにして評価データ及び教師データが入力されると、特徴量計算式生成装置10から各区間におけるメロディーラインの期待値を算出するための計算式が出力される。また、分類推定部106は、評価データとして用いた各音声信号のログスペクトルについて、計算式で算出される出力値と、教師データとして用いた正解メロディーラインとの間の誤差を算出する。さらに、分類推定部106は、取得した誤差を正規分布で近似してメロディーラインの標準偏差を算出する。音程分布推定部108で算出されたメロディーラインの期待値及び標準偏差で規定される範囲は、例えば、図9に示すグラフのように表現される。
このように、音程分布推定部108は、ログスペクトルの区間(時間断片)から当該区間のメロディーラインを推定する計算式を特徴量計算式生成装置10により生成し、その計算式を用いてメロディーラインの分布を推定する。このとき、音程分布推定部108は、分類推定部106で推定された楽曲の分類毎に計算式を生成する。そして、音程分布推定部108は、時間を少しずつシフトさせながらログスペクトルの時間断片を切り出し、切り出したログスペクトルを計算式に入力してメロディーラインの期待値及び標準偏差を算出する。その結果、メロディーラインの区間毎にメロディーラインの推定値が算出される。このようにして音程分布推定部108で算出されたメロディーラインの推定値は、メロディーライン決定部112に入力される(図2を参照)。
[2−6.メロディー確率推定部110の構成例]
次に、図10〜図12を参照しながら、メロディー確率推定部110の構成について説明する。メロディー確率推定部110は、ログスペクトル解析部104から出力されるログスペクトルをメロディー確率に変換する手段である。例えば、メロディー確率推定部110は、図10の(A)に示すログスペクトルを同図(B)に示すメロディー確率分布に変換する。つまり、メロディー確率推定部110は、ログスペクトルに基づき、時間−音程空間の各座標位置におけるメロディー確率を算出する。なお、ここで言うメロディー確率は、各座標位置におけるログスペクトルの値がメロディーラインのものである確率を表している。まず、メロディー確率推定部110は、各座標位置のメロディー確率を推定するため、事前に正解メロディーラインが分かっている楽曲データのログスペクトルを用いてロジスティック回帰を行う。このロジスティック回帰により、ログスペクトルからメロディー確率を算出するための関数fが得られる。そして、メロディー確率推定部110は、求めた関数を用いて図10(B)のようなメロディー確率分布を算出する。
ここで、図11及び図12を参照しながら、メロディー確率推定部110による上記の関数fの生成方法、及び関数fを用いたメロディー確率の算出方法について、より詳細に説明する。まず、図11に示すように、メロディー確率推定部110は、ログスペクトルの値が定義される時間−音程空間上で、メロディー確率を推定しようとする座標位置(以下、推定位置)を基準として所定サイズの範囲(以下、参照範囲)を選択する。例えば、メロディー確率推定部110は、各推定位置を基準に、音程軸方向に−12〜+36セミトーン分、時間軸方向に−2〜+2フレーム分の参照範囲を選択する。図11には、メロディー確率推定部110により選択された参照範囲の一例が模式的に示されている。この例においては、黒で塗り潰された座標位置が推定位置であり、その周囲のハッチング処理が施された部分が参照範囲である。
このようにして座標位置毎に参照範囲を選択すると、メロディー確率推定部110は、選択した参照範囲の各座標位置に対応するログスペクトル値(エネルギー)の対数値を算出する。さらに、メロディー確率推定部110は、算出した各座標位置に対応する対数値の参照範囲内における平均値が0になるように、各座標位置の対数値を正規化する。正規化後の対数値x(図11の例では、x=(x1,…,x245);49音程×5フレーム分)は、メロディー確率を推定する関数f(x)の生成処理に用いられる。関数f(x)の生成処理は、正解メロディーラインが事前に与えられている複数の楽曲データ(以下、学習用楽曲データ)を用いて実行される。まず、メロディー確率推定部110は、学習用楽曲データのログスペクトルを利用し、各推定位置について正規化後の対数値x(以下、正規化対数値x)を算出する。さらに、メロディー確率推定部110は、各参照範囲に正解メロディーラインが含まれるか否かを判定する。以下、参照範囲に正解メロディーラインが含まれる場合の判定結果をTrueと表現し、含まれない場合の判定結果をFalseと表現することにする。
正規化対数値x及び判定結果が得られると、メロディー確率推定部110は、これらの結果を利用し、「正規化対数値xが入力された場合に当該正規化対数値xに対応する参照範囲の判定結果がTrueである確率を出力する関数f(x)」を生成する。メロディー確率推定部110は、例えば、ロジスティック回帰を用いることで関数f(x)を生成することができる。ロジスティック回帰とは、判定結果がTrue又はFalseになる確率のロジットが入力変数の線形結合で表現できるものと仮定して結合係数を回帰分析により算出する方法である。例えば、入力変数をx=(x1,…,xn)、判定結果がTrueとなる確率をP(True)、結合係数をβ0,…,βnと表現すると、ロジスティック回帰モデルは、下記の式(7)のように表現される。下記の式(7)を変形すると下記の式(8)のようになり、入力変数xから判定結果Trueの確率P(True)を算出するための関数f(x)が求められる。
…(7)
…(8)
そこで、メロディー確率推定部110は、学習用楽曲データから各参照範囲について得られた正規化対数値x=(x1,…,x245)、及び判定結果を上記の式(7)に入力し、結合係数β0,…,β245を算出する。このようにして結合係数β0,…,β245が決定されることで、正規化対数値xから判定結果がTrueとなる確率P(True)を算出するための関数f(x)が得られる。但し、関数f(x)が0.0〜1.0の範囲で定義される確率であり、かつ、同じ時間で正解メロディーラインの音程が1つであるから、関数f(x)は、同じ時間で合計した値が1になるように正規化される。また、関数f(x)は、楽曲の分類毎に生成される方が好ましい。そこで、メロディー確率推定部110は、分類毎に与えられた学習用楽曲データを用いて各分類の関数f(x)を算出する。
このような方法で分類毎に関数f(x)を生成しておき、メロディー確率推定部110は、実施曲データのログスペクトルが入力された場合に、分類推定部106から入力された実施曲データの分類を考慮して関数f(x)を選択する。例えば、実施曲が「古い曲」に分類された場合、「古い曲」の学習用楽曲データから得られた関数f(x)が選択される。そして、メロディー確率推定部110は、実施曲データのログスペクトル値を正規化対数値xに変換した上で、選択した関数f(x)によりメロディー確率を算出する。時間−音程空間内の各座標位置についてメロディー確率推定部110によりメロディー確率が算出されると、図10の(B)に示すようなメロディー確率分布が得られる。このようにして得られたメロディー確率分布は、メロディーライン決定部112に入力される(図2を参照)。
(関数f(x)生成処理の流れについて)
ここで、図12を参照しながら、メロディー確率推定部110による関数f(x)の生成方法について、その処理の流れを簡単に纏めておくことにする。
図12に示すように、まず、メロディー確率推定部110は、時間軸方向にループ処理を開始する(S102)。このとき、時間軸方向の推定位置を表す時間t(フレーム番号t)が設定される。次いで、メロディー確率推定部110は、音程軸方向にループ処理を開始する(S104)。このとき、音程軸方向の推定位置を表す音程oが設定される。次いで、メロディー確率推定部110は、ステップS102、S104において設定した時間t、音程oで表される推定位置の参照範囲について、正規化対数値xを求める(S106)。例えば、推定位置(t,o)の周辺(t−2〜t+2,o−12〜o+36)が参照範囲に設定され、正規化対数値x={x(t+Δt,o+Δo);−2≦Δt≦2,−12≦o≦36}が算出される。次いで、メロディー確率推定部110は、事前に学習用楽曲データを用いて学習処理により求めた関するf(x)を用いて時間t、音程oのメロディー確率を算出する(S108)。
ステップS106、S108の処理により、時間t、音程oで表される推定位置のメロディー確率が推定された。そこで、メロディー確率推定部110は、再びステップS104の処理に戻り(S110)、推定位置の音程oを1セミトーンだけインクリメントしてステップS106、S108の処理を繰り返す。メロディー確率推定部110は、推定位置の音程oを1セミトーンずつインクリメントしながら、所定の音程範囲(例えば、o=12〜72)についてステップS106、S108の処理を実行する。所定の音程範囲についてステップS106、S108の処理が実行された後、メロディー確率推定部110は、ステップS112の処理に進行する。
ステップS112において、メロディー確率推定部110は、時間tのメロディー確率の和が1になるように正規化する(S112)。つまり、ステップS102で設定された推定位置の時間tについて、所定の音程範囲について算出されたメロディー確率の和が1になるように、ステップS112で各音程oのメロディー確率が正規化される。次いで、メロディー確率推定部110は、再びステップS102の処理に戻り(S114)、推定位置の時間tを1フレームだけインクリメントしてステップS104〜S112の処理を繰り返す。メロディー確率推定部110は、推定位置の時間tを1フレームずつインクリメントしながら、所定の時間範囲(例えば、t=1〜T)についてステップS104〜S112の処理を実行する。所定の時間範囲についてステップS104〜S112の処理が実行された後、メロディー確率推定部110は、メロディー確率の推定処理を終了する。
[2−7.メロディーライン決定部112の構成例]
次に、図13〜図15を参照しながら、メロディーライン決定部112の構成について説明する。メロディーライン決定部112は、メロディー確率推定部110で推定されたメロディー確率、及び音程分布推定部108で推定されたメロディーラインの期待値や標準偏差等に基づいて尤もらしいメロディーラインを決定する手段である。尤もらしいメロディーラインを決定するために、メロディーライン決定部112は、時間−音程空間内でメロディー確率が高い経路の探索処理を実行する。ここで実行する経路探索には、音程分布推定部108で算出されたP(o|Wt)、及び、以下に示すような確率p(Δo)、p(nt|nt−1)が用いられる。既に述べた通り、確率P(o|Wt)は、ある時刻tでメロディーが音程oをとる確率を表す。
まず、メロディーライン決定部112は、各楽曲データの正解メロディーラインにおいて変化量Δoの音程遷移が出現する割合を算出する。多数の楽曲データで各音程遷移Δoの出現割合を算出すると、メロディーライン決定部112は、各音程遷移Δoについて、これら全ての楽曲データにおける出現割合の平均値及び標準偏差を算出する。そして、メロディーライン決定部112は、上記のようにして算出した各音程遷移Δoに関する出現割合の平均値及び標準偏差を利用し、当該平均値及び標準偏差を持つガウス分布で確率p(Δo)を近似する。
次に、確率p(nt|nt−1)について説明する。確率p(nt|nt−1)は、音程nt−1から音程ntに遷移する際の遷移方向を考慮した確率を表す。なお、音程ntは、Cdown、C#down、…、Bdown、Cup、C#up、…、Bupのいずれかの値をとる。ここで、downは音程が下がることを示し、upは音程が上がることを示す。一方、nt−1は、音程の上がり下がりを考慮せず、C、C#、…、Bの値をとる。例えば、確率p(Dup|C)は、音程Cから音程Dに上がる確率を示す。但し、確率(nt|nt−1)は、実際のキー(例えば、D)を所定のキー(例えば、C)にシフトさせて利用される。例えば、現在のキーがDで所定のキーがCの場合、F#→Adownの遷移確率としては、キーをシフトすることでF#がEに変更され、AがGに変更されるため、確率p(Gdown|E)が参照される。
さて、確率p(nt|nt−1)についても確率p(Δo)の場合と同様にして、メロディーライン決定部112は、各楽曲データの正解メロディーラインにおいて各音程遷移nt−1→ntが出現する割合を算出する。多数の楽曲データで各音程遷移nt−1→ntの出現割合を算出すると、メロディーライン決定部112は、各音程遷移nt−1→ntについて、これら全ての楽曲データにおける出現割合の平均値及び標準偏差を算出する。そして、メロディーライン決定部112は、上記のようにして算出した各音程遷移nt−1→ntに関する出現割合の平均値及び標準偏差を利用し、当該平均値及び標準偏差持つガウス分布で確率p(nt|nt−1)を近似する。
これらの確率を概念的に示したものが図14である。図14の例では、メロディーラインの現在の音程がC4である。時間t1においてメロディーラインの音程が遷移する場合、遷移確率としては、確率p(Δo)、p(nt|nt−1)が参照される。例えば、音程C4から音程D4に遷移する場合、音程間の差は+2セミトーンである。また、図14の例では、同じオクターブ間で音程が上がる方向に遷移している。従って、確率p(Δo=+2)、確率p(Dup|C)が参照される。一方、音程C4から音程G3に遷移する場合、音程間の差は−5セミトーンである。また、図14の例では、オクターブを跨いで音程が下がる方向に遷移している。従って、確率p(Δo=−2)、確率p(Gdown|C)が参照される。同様に、時間t1においてメロディーが音程D4に遷移し、時間t2においてメロディーが音程G3に遷移する場合を考えると、確率p(Δo=−7)、確率p(Gdown|D)が参照される。また、各音程C4、D4、G3における確率としては、確率P(o|Wt)が参照される。
さて、上記のようにして得られた確率P(o|Wt)、p(Δo)、p(nt|nt−1)を用いてメロディーラインが決定される。但し、確率p(nt|nt−1)を利用するには、メロディーラインを推定しようとする楽曲データのキーが必要になる。そこで、メロディーライン決定部112は、キー検出部118を用いて楽曲データのキーを検出する。なお、キー検出部118の構成については後段において詳述する。ここでは、楽曲データのキーが与えられているものとしてメロディーラインの決定方法について説明する。
メロディーライン決定部112は、ビタビ(Viterbi)探索を用いてメロディーラインを決定する。ビタビ探索自体は、隠れマルコフモデル(Hidden Markov Model)に基づく良く知られた経路探索手法である。メロディーライン決定部112によるビタビ探索には、確率P(o|Wt)、p(Δo)、p(nt|nt−1)の他に、メロディー確率推定部110で推定された各推定位置におけるメロディー確率が用いられる。以下の説明においては、時間t、音程oにおける上記のメロディー確率をp(Mt|o,t)と表すことにする。これらの確率を用いると、ある時点tで音程oがメロディーである確率P(o,t)は、下記の式(9)のように表現される。そして、音程oから同じ音程oに遷移する確率P(t+Δt,o|t,o)は、下記の式(10)のように表現される。さらに、音程oから異なる音程o+Δoに遷移する確率P(t+Δt,o+Δo|t,o)は、下記の式(11)のように表現される。
…(9)
…(10)
…(11)
このような表現を用いると、ノードq1(時刻t1、音程o27)→q2(時刻t2、音程o26)と辿った場合の確率P(q1,q2)は、P(q1,q2)=p(nt2|nt1)p(Δo=−1)p(M1|o27,t1)p(o27|Wt1)と表される。そして、楽曲の最初から最後までの時間に関し、上記のように表現される確率が最大となるような経路が尤もらしいメロディーラインとして抽出される。但し、各ビタビ経路に関する確率の対数値を経路探索の基準とする。例えば、log(P(q1,q2))は、log(p(nt2|nt1))+log(p(Δo=−1))+log(p(M1|o27,t1))+log(p(o27|Wt1))のような各対数値の和が用いられる。
また、メロディーライン決定部112は、ビタビ探索の基準として単純に対数値の和を用いるのではなく、確率の種類に応じて重み付けし、重み付け加算された対数値を基準に利用するように構成されていてもよい。例えば、メロディーライン決定部112は、通過したノードのlog(p(Mt|o,t))、b1*log(p(o|Wt))、通過したノード間遷移のb2*log(p(nt|nt−1))、b3*log(p(Δo))を加算してビタビ探索の基準とする。但し、b1、b2、b3は確率の種類毎に与えられる重みパラメータである。つまり、メロディーライン決定部112は、楽曲の最初から最後までの時間について、上記の重み付き対数加算値を計算し、その対数加算値が最大の経路を抽出する。メロディーライン決定部112で抽出された経路がメロディーラインに決定される。
なお、ビタビ探索に用いる確率及び重みパラメータは、分類推定部106で推定された楽曲の分類に応じて異なるものが用いられる方が好ましい。例えば、「古い曲」と分類された楽曲のメロディーラインに対するビタビ探索には、予め正解メロディーラインの与えられた大量の「古い曲」から求められた確率、及び「古い曲」用にチューニングされたパラメータが用いられる方が好ましい。このようにしてメロディーライン決定部112で決定されたメロディーラインは、平滑化部114に入力される(図2を参照)。
[2−8.平滑化部114の構成例]
次に、平滑化部114の構成について説明する。平滑化部114は、メロディーライン決定部112で決定されたメロディーラインを楽曲のビートで定められる区間毎に平滑化する手段である。楽曲データのビートは、ビート検出部116により検出される。なお、ビート検出部116の構成については後段において詳述する。ビート検出部116でビートが検出されると、平滑化部114は、例えば、8部音符毎にメロディーラインの投票を行い、最も頻度の高い音程をメロディーラインとする。各ビート区間には、メロディーラインとして複数の音程が含まれていることがある。そこで、平滑化部114は、メロディーラインに決定された音程の出現頻度をビート区間毎に検出し、最も出現頻度が多い音程で各ビート区間の音程を平滑化するのである。このようにしてビート区間毎に平滑化された音程がメロディーラインとして外部に出力される。
[2−9.ビート検出部116、キー検出部118の構成例]
ここで、説明を保留にしておいたビート検出部116、及びキー検出部118の構成について説明する。この中で、キー検出部118によるキー検出処理に用いるコード確率を算出するためのコード確率検出部120の構成例についても説明する。後述するように、キー検出部118の処理には、コード確率検出部120の処理結果が必要となる。また、コード確率検出部120の処理には、ビート検出部116の処理結果が必要となる。そこで、ビート検出部116、コード確率検出部120、キー検出部118の順に説明する。
(2−9−1.ビート検出部116の構成例)
まず、ビート検出部116の構成について説明する。上記の通り、ビート検出部116の処理結果は、コード確率検出部120の処理、及び平滑化部114で用いる楽曲のビートを検出するための処理に用いられる。ビート検出部116は、図16に示すように、ビート確率算出部142、及びビート解析部144により構成される。ビート確率算出部142は、楽曲データのログスペクトルに基づき、各フレームがビート位置である確率を算出する手段である。また、ビート解析部144は、ビート確率算出部142で算出された各フレームのビート確率に基づいてビート位置を検出する手段である。以下、これらの構成要素が持つ機能について、より詳細に説明する。
まず、ビート確率算出部142について説明する。ビート確率算出部142は、ログスペクトル解析部104から入力されたログスペクトルの所定の時間単位(例えば、1フレーム)毎に、その時間単位にビートが含まれる確率(以下、ビート確率という)を算出する。なお、所定の時間単位を1フレームとした場合、ビート確率は、各フレームがビート位置(ビートの時間軸上の位置)に一致している確率とみなすことができる。ビート確率算出部142で用いるビート確率を算出するための計算式は、例えば、特徴量計算式生成装置10による学習アルゴリズムを用いて生成される。また、特徴量計算式生成装置10に与えられる学習用の教師データ及び評価データとしては、図17に示すようなものが用いられる。図17では、ビート確率を算出する時間単位を1フレームとしている。
図17に示すように、特徴量計算式生成装置10には、ビート位置が既知である楽曲の音声信号から変換されたログスペクトルの断片(以下、部分ログスペクトルという)、及び各部分ログスペクトルに関するビート確率が供給される。つまり、部分ログスペクトルが評価データとして、ビート確率が教師データとして特徴量計算式生成装置10に供給される。但し、部分ログスペクトルのウィンドウ幅は、ビート確率の算出の精度と処理コストのトレードオフを考慮して定められる。例えば、部分ログスペクトルのウィンドウ幅は、ビート確率を計算するフレームの前後7フレーム(計15フレーム)程度に設定される。
また、教師データとして供給されるビート確率は、例えば、各部分ログスペクトルの中央のフレームにビートが含まれるか否かを既知のビート位置に基づいて真値(1)又は偽値(0)で表したものである。但し、ここでは小節の位置は考慮されず、中央のフレームがビート位置に該当すればビート確率は1、該当しなければビート確率は0となる。図17の例では、部分ログスペクトルWa、Wb、Wc…Wnに対応するビート確率は、それぞれ1、0、1、…、0として与えられている。このような複数組の評価データ及び教師データに基づき、特徴量計算式生成装置10により、部分ログスペクトルからビート確率を算出するためのビート確率算出式P(W)が生成される。このようにしてビート確率算出式P(W)を生成すると、ビート確率算出部142は、実施曲データのログスペクトルから、1フレーム毎に部分ログスペクトルを切り出し、各部分ログスペクトルに当該ビート確率算出式を適用してビート確率を順次算出する。
図18は、ビート確率算出部142により算出されたビート確率の一例を示す説明図である。図18の(A)は、ログスペクトル解析部104からビート確率算出部142へと入力されるログスペクトルの一例である。一方、図18の(B)は、ログスペクトル(A)に基づいてビート確率算出部142で算出されるビート確率を時間軸に沿って折れ線状に示したものである。例えば、フレーム位置F1を参照すると、フレーム位置F1には、部分ログスペクトルW1が対応することが分かる。つまり、フレームF1のビート確率P(W1)=0.95は、部分ログスペクトルW1から算出されたものである。同様に、フレーム位置F2のビート確率P(W2)は、ログスペクトルから切り出された部分ログスペクトルW2に基づいてビート確率P(W2)=0.1と計算されたものである。フレーム位置F1のビート確率P(W1)は大きく、フレーム位置F2のビート確率P(W2)は小さいことから、フレーム位置F1はビート位置に該当している可能性が高く、フレーム位置F2はビート位置に該当している可能性が低いと言える。
なお、ビート確率算出部142により使用されるビート確率算出式は、他の学習アルゴリズムにより生成されてもよい。但し、ログスペクトルには、一般的に、例えば打楽器によるスペクトル、発音によるスペクトルの発生、コード変化によるスペクトルの変化など、多様なパラメータが含まれる。打楽器によるスペクトルであれば、打楽器が鳴らされた時点がビート位置である確率が高い。一方、発声によるスペクトルであれば、発声が開始され時点がビート位置である確率が高い。そうした多様なパラメータを総合的に用いてビート確率を高い精度で算出するためには、特徴量計算式生成装置10又は特開2008−123011に記載された学習アルゴリズムを用いるのが好適である。上記のようにしてビート確率算出部142で算出されたビート確率は、ビート解析部144に入力される。
ビート解析部144は、ビート確率算出部142から入力された各フレームのビート確率に基づいてビート位置を決定する。図16に示すように、ビート解析部144は、オンセット検出部152、ビートスコア計算部154、ビート探索部156、一定テンポ判定部158、一定テンポ用ビート再探索部160、ビート決定部162、及びテンポ補正部164を含む。なお、オンセット検出部152、ビートスコア計算部154、及びテンポ補正部164には、ビート確率算出部142から各フレームのビート確率が入力される。
まず、オンセット検出部152は、ビート確率算出部142から入力されたビート確率に基づいて音声信号に含まれるオンセットを検出する。但し、ここで言うオンセットとは、音声信号の中で音が発せられた時点を指す。より具体的には、ビート確率が所定の閾値以上であって極大値をとる点のことをオンセットと呼ぶ。例えば、図19には、ある音声信号について算出されたビート確率に基づいて検出されるオンセットの例が示されている。但し、図19は、図18の(B)と同様に、ビート確率算出部142により算出されたビート確率を時間軸に沿って折れ線状に示したものである。図19に例示したビート確率のグラフの場合、極大値をとる点はフレームF3、F4、F5の3点である。このうち、フレームF3及びF5については、その時点におけるビート確率が、予め与えられる所定の閾値Th1よりも大きい。一方、フレームF4の時点におけるビート確率は、当該閾値Th1よりも小さい。従って、フレームF3及びF5の2点がオンセットとして検出される。
ここで、図20を参照しながら、オンセット検出部152によるオンセット検出処理の流れについて簡単に説明する。図20に示すように、まず、オンセット検出部152は、フレームごとに算出されたビート確率について1番目のフレームから順次ループさせる(S1322)。そして、オンセット検出部152は、各フレームについて、ビート確率が所定の閾値よりも大きいか否か(S1324)、及びビート確率が極大を示しているか否か(S1326)を判定する。ここでビート確率が所定の閾値よりも大きく、かつ、ビート確率が極大である場合、オンセット検出部152は、ステップS1328の処理へ進行する。一方、ビート確率が所定の閾値よりも小さいか、又はビート確率が極大でない場合、ステップS1328の処理はスキップされる。ステップS1328では、オンセット位置のリストに現在時刻(又は、フレーム番号)が追加される(S1328)。その後、全てのフレームについての処理が終了した時点で、オンセット検出処理のループは終了する(S1330)。
以上説明したオンセット検出部152によるオンセット検出処理により、音声信号に含まれるオンセット位置のリスト(各オンセットに対応する時刻又はフレーム番号のリスト)が生成される。また、上記のオンセット検出処理により、例えば、図21に示すようなオンセットの位置が検出される。図21は、オンセット検出部152により検出されたオンセットの位置をビート確率に対応付けて示したものである。図21では、ビート確率の折れ線の上部に、オンセット検出部152で検出されたオンセットの位置が丸印で示されている。図21の例では、閾値Th1よりも大きいビート確率の極大値が15個のオンセットとして検出されている。このようにしてオンセット検出部152で検出されたオンセット位置のリストは、ビートスコア計算部154に入力される(図16を参照)。
ビートスコア計算部154は、オンセット検出部152により検出された各オンセットについて、それぞれ一定のテンポ(又は一定のビート間隔)を有する何らかのビートに一致している度合いを表すビートスコアを計算する。
まず、ビートスコア計算部154は、図22に示すような注目オンセットを設定する。図22の例では、オンセット検出部152により検出されたオンセットのうち、フレーム位置Fk(フレーム番号k)に対応するオンセットが注目オンセットとして設定されている。また、フレーム位置Fkから所定の間隔dの整数倍だけ離れた一連のフレーム位置Fk−3、Fk−2、Fk−1、Fk、Fk+1、Fk+2、Fk+3が参照される。以下の説明においては、所定の間隔dをシフト量、シフト量dの整数倍離れたフレーム位置をシフト位置と呼ぶことにする。ビートスコア計算部154は、ビート確率が計算されたフレームの集合Fに含まれる全てのシフト位置(…Fk−3、Fk−2、Fk−1、Fk、Fk+1、Fk+2、Fk+3、…)におけるビート確率の和を注目オンセットのビートスコアとする。例えば、フレーム位置Fiにおけるビート確率をP(Fi)とすると、注目オンセットのフレーム番号k及びシフト量dに対するビートスコアBS(k,d)は、下記の式(12)で表現される。なお、下記の式(12)で表現されるビートスコアBS(k,d)は、音声信号のk番目のフレームに位置するオンセットがシフト量dをビート間隔とする一定のテンポに乗っている可能性の高さを表すスコアであると言える。
…(12)
ここで、図23を参照しながら、ビートスコア計算部154によるビートスコア計算処理の流れについて簡単に説明する。
図23に示すように、まず、ビートスコア計算部154は、オンセット検出部152により検出されたオンセットについて、1番目のオンセットから順にループさせる(S1322)。さらに、ビートスコア計算部154は、注目オンセットに関し、全てのシフト量dについてループさせる(S1344)。ここでループの対象となるシフト量dは、演奏に使用され得る範囲の全てのビートの間隔の値である。そして、ビートスコア計算部154は、ビートスコアBS(k,d)を初期化する(例えば、ビートスコアBS(k,d)にゼロを代入する)(S1346)。次に、ビートスコア計算部154は、注目オンセットのフレーム位置Fdをシフトさせるシフト係数nについてループさせる(S1348)。そして、ビートスコア計算部154は、各シフト位置におけるビート確率P(Fk+nd)を、ビートスコアBS(k,d)に順次加算する(S1350)。その後、全てのシフト係数nについてループが終了すると(S1352)、ビートスコア計算部154は、注目オンセットのフレーム位置(フレーム番号k)、シフト量d、及びビートスコアBS(k,d)を記録する(S1354)。ビートスコア計算部154は、このようなビートスコアBS(k,d)の計算を、全てのオンセットの全てのシフト量について繰り返す(S1356、S1358)。
以上説明したビートスコア計算部154によるビートスコア計算処理により、オンセット検出部152で検出された全てのオンセットについて、複数のシフト量dにわたるビートスコアBS(k,d)が算出される。なお、上記のビートスコア計算処理により、図24に示すようなビートスコア分布図が得られる。このビートスコア分布図は、ビートスコア計算部154により出力されるビートスコアを可視化したものである。図24において、横軸には、オンセット検出部152で検出されたオンセットが時系列で順に並べられている。図24の縦軸は、各オンセットについてビートスコアを算出したシフト量を表す。また、各点の色の濃淡は、各オンセットについてシフト量毎に算出されたビートスコアの大きさを表す。図24の例では、シフト量d1の近辺において、全てのオンセットにわたってビートスコアが高くなっている。仮にシフト量d1に相当するテンポで楽曲が演奏されたと仮定すれば、検出されたオンセットの多くがビートに一致する可能性が高い。そのため、このようなビートスコア分布図になるのである。ビートスコア計算部154で計算されたビートスコアは、ビート探索部156に入力される。
ビート探索部156は、ビートスコア計算部154で算出されたビートスコアに基づいて、尤もらしいテンポ変動を示すオンセット位置の経路を探索する。ビート探索部156による経路探索の手法としては、例えば、隠れマルコフモデルに基づくビタビ探索アルゴリズムが用いられる。また、ビート探索部156によるビタビ探索には、例えば、図25に模式的に示したように、時間軸(横軸)の単位にオンセット番号を設定し、観測系列(縦軸)にビートスコア算出時に用いたシフト量を設定する。そして、ビート探索部156は、時間軸及び観測系列の各値で定義される各ノードを結ぶビタビ経路を探索する。言い換えると、ビート探索部156は、ビートスコア計算部154においてビートスコアを計算する際に用いたオンセットとシフト量の全ての組合せの1つ1つを経路探索の対象ノードとする。なお、各ノードのシフト量は、各ノードについて想定されるビート間隔に等しい。そこで、以下の説明では、各ノードのシフト量をビート間隔と呼ぶことがある。
このようなノードに対し、ビート探索部156は、時間軸に沿っていずれかのノードを順に選択していき、選択された一連のノードで形成されるビタビ経路を評価する。このとき、ビート探索部156は、ノードの選択においてオンセットのスキップが許可される。例えば、図25の例では、k−1番目のオンセットの次に、k番目のオンセットがスキップされ、k+1番目のオンセットが選択されている。これは、オンセットの中にビートであるオンセットとビートでないオンセットが通常混在しており、ビートでないオンセットを経由しない経路も含めて、尤もらしい経路を探索しようとするためである。
経路の評価には、例えば、(1)ビートスコア、(2)テンポ変化スコア、(3)オンセット移動スコア、及び(4)スキップペナルティの4つの評価値を用いることができる。このうち、(1)ビートスコアは、各ノードについてビートスコア計算部154により計算されたビートスコアである。一方、(2)テンポ変化スコア、(3)オンセット移動スコア、及び(4)スキップペナルティは、ノード間の遷移に対して与えられる。ノード間の遷移に対して与えられる評価値のうち、(2)テンポ変化スコアは、楽曲の中でテンポが通常緩やかに変動するものであるという経験的な知識に基づいて与えられる評価値である。そのため、遷移前のノードのビート間隔と遷移後のノードのビート間隔との差が小さい程、テンポ変化スコアには高い評価値が与えられる。
ここで、図26を参照しながら、(2)テンポ変化スコアについて、より詳細に説明する。図26の例では、現在のノードとしてノードN1が選択されている。このとき、ビート探索部156は、次のノードとしてノードN2〜N5のいずれかを選択する可能性がある。なお、N2〜N5以外のノードを選択する可能性もあるが、説明の都合上、ここではノードN2〜N5の4つのノードについて述べる。ここでビート探索部156がノードN4を選択した場合、ノードN1とノードN4の間にはビート間隔の差は無いため、テンポ変化スコアとしては最も高い値が与えられる。一方、ビート探索部156がノードN3又はN5を選択した場合、ノードN1と、ノードN3又はN5との間にはビート間隔に差があり、ノードN4を選択した場合に比べて低いテンポ変化スコアが与えられる。また、ビート探索部156がノードN2を選択した場合、ノードN1とノードN2との間のビート間隔の差はノードN3又はN5を選択した場合よりも大きい。そのため、さらに低いテンポ変化スコアが与えられる。
次に、図27を参照しながら、(3)オンセット移動スコアについて、より詳細に説明する。このオンセット移動スコアは、遷移の前後のノードのオンセット位置の間隔が遷移元のノードのビート間隔と整合しているかに応じて与えられる評価値である。図27の(A)では、現在のノードとして、k番目のオンセットのビート間隔d2のノードN6が選択されている。また、ビート探索部156が次に選択し得るノードとして、2つのノードN7及びN8が示されている。このうち、ノードN7はk+1番目のオンセットのノードであり、k番目のオンセットとk+1番目のオンセットの間隔(例えば、フレーム番号の差)はD7である。一方、ノードN8はk+2番目のオンセットのノードであり、k番目のオンセットとk+2番目のオンセットの間隔はD8である。
ここで、経路上の全てのノードが一定のテンポにおけるビート位置に必ず一致している理想的な経路を仮定すると、隣り合うノード間のオンセット位置の間隔は、各ノードのビート間隔の整数倍(休符が無ければ等倍)となるはずである。そこで、図27の(B)に示すように、現在のノードN6との間でオンセット位置の間隔がノードN6のビート間隔d2の整数倍に近いほど高いオンセット移動スコアを与える。図27の(B)の例では、ノードN6とノードN7との間の間隔D7よりも、ノードN6とノードN8との間の間隔D8の方がノードN6のビート間隔d2の整数倍に近いため、ノードN6からノードN8への遷移に対し、より高いオンセット移動スコアが与えられる。
次に、図28を参照しながら、(4)スキップペナルティについて、より詳細に説明する。このスキップペナルティは、ノードの遷移におけるオンセットの過剰なスキップを抑制するための評価値である。従って、1度の遷移でオンセットを多くスキップするほど低いスコアが、スキップしないほど高いスコアが与えられる。なお、ここではスコアが低いほどペナルティが大きいものとする。図28の例では、現在のノードとして、k番目のオンセットのノートN9が選択されている。また、図28の例には、ビート探索部156が次に選択し得るノードとして、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へ遷移する場合により低い値が与えられる。その結果、経路選択に際して、ノード間の間隔を一定とするためにより多くのオンセットがスキップされてしまう現象を防ぐことができる。
以上、ビート探索部156における探索経路の評価に用いられる4つの評価値について説明した。図25を用いて説明した経路の評価は、選択された経路について、その経路に含まれる各ノード又はノード間の遷移に対して与えられる上記(1)〜(4)の評価値を順次乗算することにより行われる。そして、ビート探索部156は、想定し得る全ての経路の中で、各経路内での評価値の積が最も高い経路を最適な経路として決定する。このようにして決定された経路は、例えば、図29のようになる。図29は、ビート探索部156により最適な経路として決定されたビタビ経路の一例を示すものである。図29の例では、図24に示したビートスコア分布図の上に、ビート探索部156により決定された最適経路が点線枠で示されている。図29の例においてビート探索部156により探索された楽曲のテンポは、ビート間隔d3を中心に変動していることが分かる。ビート探索部156により決定された最適経路(最適経路に含まれるノードのリスト)は、一定テンポ判定部158、一定テンポ用ビート再探索部160、及びビート決定部162に入力される。
一定テンポ判定部158は、ビート探索部156により決定された最適経路が、各ノードについて想定されるビート間隔の分散の小さい一定テンポを示しているか否かを判定する。まず、一定テンポ判定部158は、ビート探索部156から入力された最適経路に含まれるノードのビート間隔の集合について分散を計算する。そして、一定テンポ判定部158は、算出した分散が予め与えられる所定の閾値よりも小さい場合にテンポが一定であると判定し、所定の閾値よりも大きい場合にテンポが一定でないと判定する。例えば、図30に示すように、一定テンポ判定部158によりテンポが判定される。
例えば、図30の(A)に示した例においては、点線枠で囲まれたオンセット位置の最適経路のビート間隔は時間に応じて変動している。このような経路については、一定テンポ判定部158による閾値判定の結果、テンポが一定でないと判定される。一方、図30の(B)に示した例においては、点線枠で囲まれたオンセット位置の最適経路のビート間隔は楽曲全体にわたってほぼ一定である。このような経路については、一定テンポ判定部158による閾値判定の結果、テンポが一定であると判定される。このようにして得られた一定テンポ判定部158による閾値判定の結果は、一定テンポ用ビート再探索部160に入力される。
一定テンポ用ビート再探索部160は、ビート探索部156で抽出された最適経路が一定テンポ判定部158で一定のテンポを示していると判定された場合に、最も頻度の高いビート間隔の周辺のみに探索の対象ノードを限定して経路探索を再実行する。例えば、一定テンポ用ビート再探索部160は、図31に例示するような方法で経路の再探索処理を実行する。なお、一定テンポ用ビート再探索部160は、図25と同様に、ビート間隔を観測系列とする時間軸(オンセット番号)に沿ったノードの集合について経路の再探索処理を実行する。
例えば、ビート探索部156で最適経路と決定された経路に含まれるノードのビート間隔の最頻値がd4であり、その経路に対応するテンポが一定テンポ判定部158で一定であると判定されたものと仮定する。この場合、一定テンポ用ビート再探索部160は、ビート間隔dがd4−Th2≦d≦d4+Th2(Th2は所定の閾値)を満たすノードのみを探索の対象として経路を再度探索する。図31の例では、k番目のオンセットについてノードN12〜N16の5つのノードが示されている。このうち、一定テンポ用ビート再探索部160においては、ノードN13〜N15のビート間隔は探索範囲(d4−Th2≦d≦d4+Th2)に含まれる。これに対し、ノードN12及びN16のビート間隔は上記探索範囲に含まれない。そのため、k番目のオンセットについては、ノードN13〜N15のみが一定テンポ用ビート再探索部160による経路探索処理の対象となる。
なお、一定テンポ用ビート再探索部160による経路の再探索処理の内容は、探索の対象とするノードの範囲を除き、ビート探索部156による経路探索処理と同様である。このような一定テンポ用ビート再探索部160による経路の再探索処理により、テンポが一定の楽曲について、経路探索の結果部分的に発生する可能性のあるビート位置の誤りを減少させることができる。一定テンポ用ビート再探索部160により再決定された最適経路は、ビート決定部162に入力される。
ビート決定部162は、ビート探索部156により決定された最適経路、又は一定テンポ用ビート再探索部160により再決定された最適経路と、それら経路に含まれる各ノードのビート間隔とに基づいて音声信号に含まれるビート位置を決定する。例えば、ビート決定部162は、図32に示すような方法でビート位置を決定する。図32の(A)には、オンセット検出部152で得られたオンセット検出結果の一例が示されている。この例には、オンセット検出部152で検出されたk番目のオンセットの周囲14個のオンセットが示されている。一方、図32の(B)は、ビート探索部156又は一定テンポ用ビート再探索部160で決定される最適経路のオンセットが示されている。(B)の例では、(A)に示された14個のオンセットのうち、k−7番目、k番目、k+6番目のオンセット(フレーム番号Fk−7、Fk、Fk+6)が最適経路に含まれている。また、k−7番目のオンセットのビート間隔(対応するノードのビート間隔に相当)はdk−7、k番目のオンセットのビート間隔はdkである。
このようなオンセットについて、まず、ビート決定部162は、最適経路に含まれるオンセットの位置をその楽曲のビート位置であるとみなす。そして、ビート決定部162は、最適経路に含まれる隣り合うオンセット間のビートを各オンセットのビート間隔に応じて補完する。このとき、ビート決定部162は、最適経路上で隣り合うオンセットの間のビートを補完するために、まず補完するビートの数を決定する。例えば、ビート決定部162は、図33に示すように、隣り合う2つのオンセットの位置をFh及びFh+1、オンセット位置Fhにおけるビート間隔をdhとする。この場合、Fh及びFh+1の間に補完されるビート数Bfillは次式で与えられる。
…(13)
但し、Round(…)は、…の小数桁を四捨五入して整数に丸めることを示す。上記の式(13)によると、ビート決定部162により補完されるビート数は、隣り合うオンセットの間隔をビート間隔で割った値が整数に丸められた後、植木算の考え方に基づいて1を引いた数となる。
次に、ビート決定部162は、最適経路上で隣り合うオンセットの間にビートが等間隔に配置されるように、決定したビートの数だけビートを補完する。図32の(C)は、ビート補間後のオンセットが示されている。(C)の例では、k−7番目のオンセットとk番目のオンセットとの間に2つのビートが、k番目のオンセットとk+6番目のオンセットとの間に2つのビートが補完されている。但し、ビート決定部162により補完されるビートの位置は、必ずしもオンセット検出部152により検出されたオンセットの位置に一致しない。このような構成にすることで、局所的にビート位置から外れて発せられた音に影響されずにビートの位置が決定される。また、ビート位置において休符が存在し、その位置で音が発せられなかった場合でも適切にビート位置を認識することができる。このようにしてビート決定部162により決定されたビート位置のリスト(最適経路上のオンセットとビート決定部162により補完されたビートを含む)は、テンポ補正部164に入力される。
テンポ補正部164は、ビート決定部162により決定されたビート位置で表されるテンポを補正する。補正前のテンポは、楽曲本来のテンポの2倍、1/2倍、3/2倍、2/3倍などの定数倍(図34を参照)になっている可能性がある。そのため、テンポ補正部164では、誤って定数倍に認識しているテンポを補正して楽曲本来のテンポを再現する。ここで、ビート決定部162で決定されるビート位置のパターンを示した図34の例を参照する。図34の例においては、図示された時間の範囲内でパターン(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)とは、基準のテンポからテンポを変更する際に残されるビート位置が異なる。テンポ補正部164によるテンポの補正は、例えば、次の(S1)〜(S3)の手順により行われる。
(S1)波形に基づいて推定される推定テンポの決定
(S2)複数の基本倍率のうち最適な基本倍率の決定
(S3)基本倍率が1倍となるまで(S2)を繰返し
まず、(S1)波形に基づいて推定される推定テンポの決定について説明する。テンポ補正部164は、音声信号の波形に現れる音質的特徴から妥当であると推定される推定テンポを決定する。推定テンポの決定には、例えば、特徴量計算式生成装置10又は特開2008−123011に記載された学習アルゴリズムで生成される推定テンポ判別用の計算式(推定テンポ判別式)が用いられる。例えば、図35に示すように、特徴量計算式生成装置10には、評価データとして複数の楽曲のログスペクトルが供給される。図35の例では、ログスペクトルLS1〜LSnが供給されている。さらに、教師データとして、各楽曲を人間が聴いて判定した正解テンポが供給される。図35の例では、各ログスペクトルについての正解テンポ(LS1:100、…、LSn:60)が供給されている。このような複数組の評価データと教師データとに基づいて推定テンポ判別式が生成される。そして、テンポ補正部164は、生成した推定テンポ判別式を用いて実施曲の推定テンポを算出する。
次に、(S2)複数の基本倍率のうち最適な基本倍率の決定について説明する。テンポ補正部164は、複数の基本倍率のうち、補正後のテンポが楽曲の本来のテンポに最も近い基本倍率を決定する。ここで、基本倍率とは、テンポの補正に用いる定数比の基本単位となる倍率である。基本倍率としては、例えば、1/3倍、1/2倍、2/3倍、1倍、3/2倍、2倍、3倍の7種類の倍率が用いられる。但し、本実施形態の適用範囲はこれらの例に限定されず、例えば、1/3倍、1/2倍、1倍、2倍、3倍の5種類の倍率で基本倍率が構成されていてもよい。テンポ補正部164は、最適な基本倍率を決定するために、まず、各基本倍率でビート位置を補正した後の平均ビート確率をそれぞれ計算する。但し、基本倍率1倍については、ビート位置を補正しない場合の平均ビート確率を計算する。例えば、テンポ補正部164により、図36に示すような方法で基本倍率毎に平均ビート確率が算出される。
図36には、ビート確率算出部142で算出されたビート確率が時間軸に沿って折れ線状に示されている。なお、横軸には、いずれかの基本倍率に応じて補正された3つのビートのフレーム番号Fh−1、Fh、及びFh+1が示されている。ここで、フレーム番号Fhにおけるビート確率をBP(h)とすると、基本倍率rに応じて補正されたビート位置の集合F(r)の平均ビート確率BPAVG(r)は、下記の式(14)により与えられる。但し、m(r)は、集合F(r)に含まれるフレーム番号の個数を示す。
…(14)
図34のパターン(C−1)及びパターン(C−2)を用いて説明したように、基本倍率r=1/2の場合、ビート位置の候補は2通り存在する。そのため、テンポ補正部164は、2通りのビート位置の候補についてそれぞれ平均ビート確率BPAVG(r)を計算し、平均ビート確率BPAVG(r)の高い方のビート位置を基本倍率r=1/2に応じた補正後のビート位置として採用する。同様に、基本倍率r=1/3の場合、ビート位置の候補は3通り存在する。そこで、テンポ補正部164は、3通りのビート位置の候補について、それぞれ平均ビート確率BPAVG(r)を計算し、平均ビート確率BPAVG(r)の最も高いビート位置を基本倍率r=1/3に応じた補正後のビート位置として採用する。
このようにして基本倍率ごとの平均ビート確率を計算すると、テンポ補正部164は、推定テンポと平均ビート確率に基づいて、基本倍率ごとに補正後のテンポの尤もらしさ(以下、テンポ尤度)を算出する。テンポ尤度は、例えば、推定テンポを中心とするガウス分布で表されるテンポ確率と平均ビート確率との積で表すことができる。例えば、テンポ補正部164により、図37に示すようなテンポ尤度が算出される。
図37の(A)は、各基本倍率についてテンポ補正部164で算出された補正後の平均ビート確率を示している。また、図37の(B)は、テンポ補正部164により音声信号の波形に基づいて推定された推定テンポを中心とし、所定の分散σ1を持つガウス分布で表現されるテンポ確率を示している。なお、図37の(A)及び(B)の横軸は、各基本倍率に応じてビート位置を補正した後のテンポの対数を表す。テンポ補正部164は、基本倍率毎に平均ビート確率とテンポ確率とを乗算して(C)に示すようなテンポ尤度を算出する。図37の例では、基本倍率が1倍の場合と1/2倍の場合とで平均ビート確率がほぼ同じとなるが、1/2倍に補正したテンポの方がより推定テンポに近い(テンポ確率が高い)。そのため、算出されたテンポ尤度は1/2倍に補正したテンポの方が高くなる。テンポ補正部164は、このようにしてテンポ尤度を算出し、最もテンポ尤度の高い基本倍率を補正後のテンポが楽曲本来のテンポに最も近くなる基本倍率に決定する。
このようにして尤もらしいテンポの決定に推定テンポから得られるテンポ確率が加味されることで、局所的な音声の波形からは判別することが困難な定数倍の関係にあるテンポの候補から、適切なテンポを精度よく決定することができる。このようにしてテンポが補正されると、テンポ補正部164は、(S3)基本倍率が1倍となるまで(S2)の処理を繰返す。具体的には、テンポ補正部164により、最もテンポ尤度の高い基本倍率が1倍となるまで、基本倍率ごとの平均ビート確率の計算とテンポ尤度の算出とが繰り返される。その結果、テンポ補正部164による補正前のテンポが楽曲の本来のテンポの1/4倍や1/6倍、4倍、6倍などであったとしても、基本倍率の組合せで得られる適切な補正倍率(例えば、1/2倍×1/2倍=1/4倍)によりテンポが補正される。
ここで、図38を参照しながら、テンポ補正部164による補正処理の流れについて簡単に説明する。図38に示すように、まず、テンポ補正部164は、特徴量計算式生成装置10により予め生成された推定テンポ判別式を用いて、音声信号から推定テンポを決定する(S1442)。次いで、テンポ補正部164は、複数の基本倍率(1/3、1/2…など)について順次ループさせる(S1444)。そのループ内において、テンポ補正部164は、各基本倍率に応じてビート位置を変更し、テンポを補正する(S1446)。次いで、テンポ補正部164は、補正後のビート位置における平均ビート確率を計算する(S1448)。次いで、テンポ補正部164は、ステップS1448で計算した平均ビート確率とステップS1442で決定した推定テンポとに基づいて、基本倍率ごとのテンポ尤度を計算する(S1450)。
次いで、テンポ補正部164は、全ての基本倍率のループが終了すると(S1452)、テンポ尤度が最も高い基本倍率を決定する(S1454)。次いで、テンポ補正部164は、テンポ尤度が最も高い基本倍率が1倍か否かを判定する(S1456)。ここで、テンポ尤度が最も高い基本倍率が1倍であれば、テンポ補正部164は、一連の補正処理を終了する。一方、テンポ尤度が最も高い基本倍率が1倍でなければ、テンポ補正部164は、ステップS1444の処理に戻る。このようにしてテンポ尤度が最も高い基本倍率に応じて補正されたテンポ(ビート位置)に基づき、再度いずれかの基本倍率によるテンポの補正が行われる。
以上、ビート検出部116の構成について説明した。平滑化部114は、上記のようにして検出されたビート位置の情報に基づいてメロディーラインをビート区間毎に平滑化し、メロディーラインの検出結果として出力する。また、ビート検出部116による検出結果は、コード確率検出部120に入力される(図2を参照)。
(2−9−2.コード確率検出部120の構成例)
コード確率検出部120は、ビート解析部144で検出された各ビートのビート区間内で各コードが演奏されている確率(以下、コード確率)を算出する。上記の通り、コード確率検出部120で算出されるコード確率は、キー検出部118によるキー検出処理に用いられる。図39に示すように、コード確率検出部120は、ビート区間特徴量計算部172、ルート別特徴量準備部174、及びコード確率計算部176を含む。
上記の通り、コード確率検出部120には、ビート検出部116で検出されたビート位置の情報とログスペクトルとが入力される。そこで、ビート区間特徴量計算部172は、ビート解析部144で検出された各ビートについてビート区間内の音声信号の特徴を表すビート区間特徴量として12音別エネルギーを計算する。そして、ビート区間特徴量計算部172は、ビート区間特徴量としての12音別エネルギーを計算し、ルート別特徴量準備部174に入力する。ルート別特徴量準備部174は、ビート区間特徴量計算部172から入力される12音別エネルギーに基づいてビート区間ごとのコード確率の算出に用いられるルート別特徴量を生成する。例えば、ルート別特徴量準備部174は、図40及び図41に示す方法でルート別特徴量を生成する。
まず、ルート別特徴量準備部174は、注目するビート区間BDiについて、前後N区間分の12音別エネルギーを抽出する(図40を参照)。ここで抽出された前後N区間分の12音別エネルギーは、C音をコードのルート(根音)とする特徴量とみなすことができる。図40の例においては、N=2であるため、C音をルートとする5区間分のルート別特徴量(12×5次元)が抽出されている。次いで、ルート別特徴量準備部174は、C音をルートとする5区間分のルート別特徴量の12音の要素位置を所定数だけシフトさせて、C#音からB音までをそれぞれルートとする11通りの5区間分のルート別特徴量を生成する(図41を参照)。なお、要素位置をシフトさせるシフト数は、C#音をルートとする場合は1、D音をルートとする場合は2、…、B音をルートとする場合は11などとなる。その結果、ルート別特徴量準備部174により、C音からB音までの12音をそれぞれルートとするルート別特徴量(それぞれ12×5次元)が12音分生成される。
ルート別特徴量準備部174は、このようなルート別特徴量生成処理を全てのビート区間について実行し、各区間についてコード確率の算出に用いるルート別特徴量を準備する。なお、図40及び図41の例では、1つのビート区間について準備される特徴量は、12×5×12次元のベクトルとなる。ルート別特徴量準備部174により生成されたルート別特徴量は、コード確率計算部176に入力される。コード確率計算部176は、ルート別特徴量準備部174から入力されたルート別特徴量を用いて、各コードが演奏されている確率(コード確率)をビート区間ごとに算出する。ここで、各コードとは、例えば、ルート(C、C#、D…)や構成音の数(三和音、四和音(7th)、五和音(9th))、及び長短(メジャー/マイナー)などにより区別される個々のコードのことを言う。コード確率の算出には、例えば、ロジスティック回帰分析によって予め学習されたコード確率算出式を用いる。
例えば、コード確率計算部176は、図42に示す方法でコード確率の計算に用いるコード確率算出式を生成する。なお、コード確率算出式の学習は、学習したいコードの種類ごとに行われる。例えば、メジャーコード用のコード確率算出式、マイナーコード用のコード確率算出式、7thコード用のコード確率算出式、9thコード用のコード確率算出式などについて、それぞれ以下で説明する学習処理が行われる。
まず、ロジスティック回帰分析における独立変数として、正解のコードが既知であるビート区間ごとのルート別特徴量(例えば、図41で説明した12×5×12次元のベクトル)を複数用意する。また、ビート区間ごとのルート別特徴量のそれぞれについて、ロジスティック回帰分析により生起確率を予測するためのダミーデータを用意する。例えば、メジャーコード用のコード確率算出式を学習する場合、ダミーデータの値は、既知のコードがメジャーコードであれば真値(1)、それ以外なら偽値(0)となる。一方、マイナーコード用のコード確率算出式を学習する場合、ダミーデータの値は、既知のコードがマイナーコードであれば真値(1)、それ以外なら偽値(0)となる。7thコード、9thコード等についても同様である。
このような独立変数とダミーデータを利用し、十分な数のビート区間ごとのルート別特徴量についてロジスティック回帰分析を行うことで、ビート区間ごとのルート別特徴量から、コード確率を算出するためのコード確率算出式が生成される。そして、コード確率計算部176は、生成したコード確率算出式にルート別特徴量準備部174から入力されたルート別特徴量を適用し、各種類のコードについてビート区間ごとにコード確率を順次算出する。コード確率計算部176によるコード確率の計算処理は、例えば、図43に示すような方法で行われる。図43の(A)には、ビート区間ごとのルート別特徴量のうち、C音をルートとするルート別特徴量が示されている。
例えば、コード確率計算部176は、C音をルートとするルート別特徴量にメジャーコード用のコード確率算出式を適用し、各ビート区間についてコードが“C”であるコード確率CPCを計算する。また、コード確率計算部176は、C音をルートとするルート別特徴量にマイナーコード用のコード確率算出式を適用し、当該ビート区間についてコードが“Cm”であるコード確率CPCmを計算する。同様に、コード確率計算部176は、C#音をルートとするルート別特徴量にメジャーコード用及びマイナーコード用のコード確率算出式を適用し、コード“C#”のコード確率CPC#及びコード“C#m”のコード確率CPC#mを計算する(B)。コード“B”のコード確率CPB及びコード“Bm”のコード確率CPBmについても同様に計算される(C)。
このような方法でコード確率計算部176により図44に示すようなコード確率が算出される。図44を参照すると、ある1つのビート区間について、C音からB音までの12音ごとに“Maj(メジャー)”、“m(マイナー)”、“7(7th/セブンス)”、“m7(マイナーセブンス)”などについてコード確率が計算されている。図44の例では、コード確率CPC=0.88、コード確率CPCm=0.08、コード確率CPC7=0.01、コード確率CPCm7=0.02、コード確率CPCB=0.01である。また、これらの種類以外のコード確率はいずれもゼロである。なお、コード確率計算部176は、上記のようにして複数種類のコードについてコード確率を計算した後、算出した確率値の合計が1つのビート区間内で1となるように確率値を正規化する。コード確率計算部176によるコード確率の計算及び正規化処理は、音声信号に含まれる全てのビート区間について繰り返される。
以上説明したビート区間特徴量計算部172、ルート別特徴量準備部174、コード確率計算部176の処理により、コード確率検出部120においてコード確率が算出される。そして、コード確率検出部120で算出されたコード確率は、キー検出部118に入力される(図2を参照)。
(2−9−3.キー検出部118の構成例)
次に、キー検出部118の構成について説明する。上記の通り、キー検出部118には、コード確率検出部120で算出されたコード確率が入力される。キー検出部118は、コード確率検出部120で算出されたビート区間ごとのコード確率を用いて、ビート区間ごとのキー(調/基本音階)を検出する手段である。図45に示すように、キー検出部118は、相対コード確率生成部182、特徴量準備部184、キー確率計算部186、及びキー決定部188を含む。
まず、相対コード確率生成部182には、コード確率検出部120からコード確率が入力される。そして、相対コード確率生成部182は、コード確率検出部120から入力されたビート区間ごとのコード確率から、ビート区間ごとのキー確率の算出に用いられる相対コード確率を生成する。例えば、相対コード確率生成部182は、図46に示すような方法で相対コード確率を生成する。まず、相対コード確率生成部182は、ある注目ビート区間のコード確率から、メジャーコード及びマイナーコードに関するコード確率を抽出する。ここで抽出されたコード確率は、メジャーコード12音とマイナーコード12音の合計24次元のベクトルで表現される。以下の説明では、C音をキーと仮定した相対コード確率として、ここで抽出されたコード確率を含む24次元のベクトルを扱うことにする。
次に、相対コード確率生成部182は、抽出したメジャーコード及びマイナーコードのコード確率について12音の要素位置を所定数だけシフトさせる。このようにシフトさせることで、11通りの相対コード確率が生成される。なお、要素位置をシフトさせるシフト数は、図41で説明したルート別特徴量の生成時と同じシフト数とする。このようにして相対コード確率生成部182によりC音からB音までの12音をそれぞれキーと仮定した相対コード確率が12通り生成される。相対コード確率生成部182は、このような相対コード確率生成処理を全てのビート区間について行い、生成した相対コード確率を特徴量準備部184に入力する。
特徴量準備部184は、ビート区間ごとのキー確率の算出に用いる特徴量を生成する。特徴量準備部184で生成される特徴量としては、相対コード確率生成部182から特徴量準備部184に入力される相対コード確率から生成されるビート区間ごとのコード出現スコア及びコード遷移出現スコアが用いられる。
まず、特徴量準備部184は、図47に示すような方法でビート区間ごとのコード出現スコアを生成する。まず、特徴量準備部184は、注目ビート区間の前後Mビート区間分のC音をキーと仮定した相対コード確率CPを用意する。そして、特徴量準備部184は、前後Mビート分の区間にわたって、C音をキーと仮定した相対コード確率に含まれる同じ位置の要素の確率値を通算する。その結果、注目ビート区間の周囲に位置する複数のビート区間にわたるC音をキーと仮定した場合の各コードの出現確率に応じたコード出現スコア(CEC、CEC#、…、CEBm)(24次元ベクトル)が求められる。特徴量準備部184は、C音からB音までの12音のそれぞれをキーと仮定した場合について、このようなコード出現スコアの計算を行う。この計算により、1つの注目ビート区間について、12通りのコード出現スコアが求められる。
次に、特徴量準備部184は、図48に示すような方法でビート区間ごとのコード遷移出現スコアを生成する。まず、特徴量準備部184は、ビート区間BDi及び隣り合うビート区間BDi+1の間の全てのコードの組合せ(全てのコード遷移)について、コード遷移の前後のC音をキーと仮定した相対コード確率を互いに乗算する。全てのコードの組合せとは、“C”→“C”、“C”→“C#”、“C”→“D”、…“B”→“B”の24×24通りの組合せを言う。次いで、特徴量準備部184は、注目ビート区間の前後Mビート分の区間にわたり、コード遷移の前後の相対コード確率の乗算結果を通算する。その結果、注目ビート区間の周囲に位置する複数のビート区間にわたるC音をキーと仮定した場合の各コード遷移の出現確率に応じた24×24次元のコード遷移出現スコア(24×24次元ベクトル)が求められる。例えば、注目ビート区間BDiにおける“C”→“C#”のコード遷移についてのコード遷移出現スコアCTC→C#(i)は、下記の式(15)により与えられる。
…(15)
このように、特徴量準備部184は、C音からB音までの12音のそれぞれをキーと仮定した場合について、24×24通りのコード遷移出現スコアCTの計算を行う。この計算により、1つの注目ビート区間について、12通りのコード遷移出現スコアが求められる。なお、楽曲のキーは、小節ごとに変化することが多いコードとは異なり、より長い区間にわたって変化しないことが多い。そのため、コード出現スコアやコード遷移出現スコアの算出に用いる相対コード確率の範囲を定義するMの値は、例えば、数十ビートなど、多数の小節を含む値とするのが好適である。特徴量準備部184は、キー確率を計算するための特徴量として、ビート区間ごとに計算した24次元のコード出現スコアCE及び24×24次元のコード遷移出現スコアをキー確率計算部186に入力する。
キー確率計算部186は、特徴量準備部184から入力されたコード出現スコア及びコード遷移出現スコアを用いて、ビート区間ごとに各キーが演奏されている確率(キー確率)を算出する。各キーとは、例えば、12音(C、C#、D…)及び長短(メジャー/マイナー)により区別されるキーを言う。キー確率の算出には、例えば、ロジスティック回帰分析によって予め学習されたキー確率算出式を用いる。例えば、キー確率計算部186は、図49に示すような方法でキー確率の計算に用いられるキー確率算出式を生成する。なお、キー確率算出式の学習は、メジャーキーとマイナーキーとに分けて行われる。その結果、メジャーキー確率算出式及びマイナーキー確率算出式が生成される。
図49に示すように、ロジスティック回帰分析における独立変数として、正解のキーが既知であるビート区間ごとのコード出現スコア及びコード出現進行スコアが複数用意される。次に、用意されたコード出現スコア及びコード出現進行スコアの組のそれぞれについて、ロジスティック回帰分析により生起確率を予測するダミーデータが用意される。例えば、メジャーキー確率算出式を学習する場合、ダミーデータの値は、既知のキーがメジャーキーであれば真値(1)、それ以外なら偽値(0)となるものである。また、マイナーキー確率算出式を学習する場合、ダミーデータの値は、既知のキーがマイナーキーであれば真値(1)、それ以外なら偽値(0)となるものである。
このような独立変数とダミーデータの十分な数の組を用いてロジスティック回帰分析を行うことで、ビート区間ごとのコード出現スコア及びコード出現進行スコアからメジャーキー又はマイナーキーの確率を算出するためのキー確率算出式が生成される。キー確率計算部186は、各キー確率算出式に対して特徴量準備部184から入力されたコード出現スコア及びコード出現進行スコアを適用し、各キーについてビート区間ごとにキー確率を順次算出する。例えば、図50に示すような方法でキー確率が計算される。
例えば、図50の(A)で、キー確率計算部186は、予め学習により取得したメジャーキー確率算出式に対してC音をキーと仮定したコード出現スコア及びコード出現進行スコアを適用し、各ビート区間についてキーが“C”であるキー確率KPCを計算する。また、キー確率計算部186は、マイナーキー確率算出式にC音をキーと仮定したコード出現スコア及びコード出現進行スコアを適用し、当該ビート区間についてキーが“Cm”であるキー確率KPCmを計算する。同様に、キー確率計算部186は、メジャーキー確率算出式及びマイナーキー確率算出式に対してC#音をキーと仮定したコード出現スコア及びコード出現進行スコアを適用し、キー確率KPC#及びKPC#mを計算する(B)。キー確率KPB及びKPBmについても同様に計算される(C)。
このような計算により、例えば、図51に示すようなキー確率が算出される。図51を参照すると、ある1つのビート区間について、C音からB音までの12音ごとに“Maj(メジャー)”及び“m(マイナー)”の2種類のキー確率が計算されている。図51の例では、キー確率KPC=0.90、キー確率KPCm=0.03である。また、これらキー確率以外の確率値はいずれもゼロである。キー確率計算部186は、全てのキーの種類についてキー確率を算出した後、算出した確率値の合計が1つのビート区間内で1となるように確率値を正規化する。そして、キー確率計算部186による計算及び正規化処理は、音声信号に含まれる全てのビート区間について繰り返される。このようにしてビート区間ごとに算出された各キーのキー確率は、キー決定部188に入力される。
キー決定部188は、キー確率計算部186でビート区間ごとに算出された各キーのキー確率に基づいて、尤もらしいキーの進行を経路探索により決定する。キー決定部188による経路探索の手法としては、例えば、上述したビタビ探索アルゴリズムが用いられる。例えば、図52に示す方法でビタビ経路の経路探索が行われる。このとき、時間軸(横軸)としてビートが順に配置され、観測系列(縦軸)としてキーの種類が配置される。そのため、キー決定部188は、キー確率計算部186においてキー確率を算出したビートとキーの種類の全ての組合せの1つ1つを経路探索の対象ノードとする。
このようなノードに対し、キー決定部188は、時間軸に沿っていずれかのノードを順に選択していき、選択された一連のノードで形成される経路を(1)キー確率、及び(2)キー遷移確率の2つの評価値を用いて評価する。なお、キー決定部188によるノードの選択に際しては、ビートをスキップすることは許可されないものとする。但し、評価に用いる(1)キー確率は、キー確率計算部186で算出されたキー確率である。そのため、キー確率は、図52の各ノードに与えられる。一方、(2)キー遷移確率は、ノード間の遷移に対して与えられる評価値である。キー遷移確率は、キーが既知である楽曲における転調の発生確率に基づいて転調のパターンごとに予め定義される。
キー遷移確率としては、遷移の前後のキーの種類のパターン、即ちメジャーからメジャー、メジャーからマイナー、マイナーからメジャー、マイナーからマイナーの4つのパターンごとに、遷移に伴う転調量に応じた12通りの値が定義される。図53には、メジャーからメジャーへのキーの遷移における転調量に応じた12通りの確率値が一例として示されている。転調量Δkに対応するキー遷移確率をPr(Δk)とすると、図53の例では、キー遷移確率Pr(0)は、Pr(0)=0.9987である。この値は、楽曲内でキーが変わる確率が非常に低いことを表している。一方、キー遷移確率Pr(1)は、Pr(1)=0.0002である。これは、キーが1音程上がる(又は11音程下がる)確率が0.02%であることを表している。同様に、図53の例では、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通りの確率値がそれぞれ予め定義される。
キー決定部188は、キー進行を表す各経路について、その経路に含まれる各ノードの(1)キー確率と、各ノード間の遷移に対して与えられる(2)キー遷移確率とを順次乗算する。そして、キー決定部188は、経路の評価値としての乗算結果が最大となる経路を尤もらしいキー進行を表す最適な経路に決定する。例えば、図54に示すようなキー進行がキー決定部188により決定される。図54には、楽曲の先頭から終端までの時間のスケールの下に、キー決定部188により決定された楽曲のキー進行の一例が示されている。この例では、楽曲の先頭から3分経過時点まで楽曲のキーが“Cm”である。その後、楽曲のキーは“C#m”に変化し、楽曲の終端までそのキーが続いている。このように、相対コード確率生成部182、特徴量準備部184、キー確率計算部186、キー決定部188の処理により決定されたキー進行は、メロディーライン決定部112に入力される(図2を参照)。
以上、ビート検出部116、コード確率検出部120、及びキー検出部118の構成について詳細に説明した。上記の通り、ビート検出部116で検出された楽曲のビートは、コード確率検出部120、及び平滑化部114で利用される。また、コード確率検出部120で算出されたコード確率は、キー検出部118で利用される。さらに、キー検出部118で検出されたキー進行は、メロディーライン決定部112で利用される。このような構成にすることで、情報処理装置100において、楽曲データから精度良くメロディーラインを抽出することができるようになる。
[2−10.ハードウェア構成(情報処理装置100)]
上記装置が有する各構成要素の機能は、例えば、図55に示すハードウェア構成により、上記の機能を実現するためのコンピュータプログラムを用いて実現することが可能である。図55は、上記装置の各構成要素が有する機能を実現することが可能な情報処理装置のハードウェア構成を示す説明図である。この情報処理装置の形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、又は各種の情報家電等の形態がこれに含まれる。なお、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
図55に示すように、情報処理装置100は、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、外部バス912と、インターフェース914とを有する。さらに、情報処理装置100は、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。なお、上記のCPUは、Central Processing Unitの略である。また、上記のROMは、Read Only Memoryの略である。さらに、上記のRAMは、Random Access Memoryの略である。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、例えば、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する。RAM906は、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等を一時的又は永続的に格納する。これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908によって相互に接続されている。また、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続されている。
入力部916は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等の操作手段である。また、入力部916は、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントロール手段(所謂、リモコン)であってもよい。なお、入力部916は、上記の操作手段を用いて入力された情報を入力信号としてCPU902に伝送するための入力制御回路等により構成されている。
出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置が用いられる。また、出力部918としては、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置が用いられる。記憶部920は、各種のデータを格納するための装置であり、例えば、HDD等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等により構成される。なお、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。さらに、上記のPDPは、Plasma DisplayPanelの略である。そして、上記のELDは、Electro−Luminescence Displayの略である。また、上記のHDDは、Hard Disk Driveの略である。
ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、DVDメディア、Blu−rayメディア、HD DVDメディアが用いられる。さらに、リムーバブル記録媒体928としては、コンパクトフラッシュ(登録商標)(CF;CompactFlash)、メモリースティック、又はSDメモリカード等が用いられる。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード等であってもよい。なお、上記のSDは、Secure Digitalの略である。また、上記のICは、Integrated Circuitの略である。
接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS−232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。なお、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は各種通信用のモデム等が用いられる。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成される。ネットワーク932は、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。なお、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。さらに、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
[2−11.まとめ]
最後に、本実施形態の情報処理装置が有する機能構成と、当該機能構成により得られる作用効果について簡単に纏める。
まず、本実施形態に係る情報処理装置の機能構成は次のように表現することができる。当該情報処理装置は、次のような信号変換部、メロディー確率推定部、及びメロディーライン決定部を有する。上記の信号変換部は、音声信号を音程毎の信号強度を表す音程信号に変換するものである。音声信号は、通常、時間−周波数空間の信号強度分布として与えられる。しかし、各音程の中心周波数は、対数で分布するため、信号処理が複雑化してしまう。そこで、上記の信号変換部により音程信号に変換するのである。音声信号を時間−音程空間の音程信号に変換することで後段において実施される処理の効率を高めることができる。
また、上記のメロディー確率推定部は、前記音程信号の各音程がメロディー音である確率(メロディー確率)を推定するものである。このとき、メロディー確率推定部は、音程信号のフレーム(時間単位)毎にメロディー確率を推定する。メロディー確率の推定には、例えば、既に述べた学習アルゴリズムが用いられる。そして、フレーム毎に推定されたメロディー確率は、メロディーライン決定部で利用される。上記のメロディーライン決定部は、メロディー確率推定部でフレーム毎に推定された前記各音程がメロディー音である確率に基づき、音声信号の開始フレームから終了フレームまでを結ぶ音程の経路から最尤経路を検出してメロディーラインに決定するものである。このように、メロディーライン全体が学習アルゴリズムを用いて推定されるのではなく、フレーム毎に学習アルゴリズムを用いて推定されたメロディー確率に基づき、経路探索によりメロディーラインが推定される。その結果、メロディーラインの推定精度を向上させることが可能になる。
また、上記の情報処理装置は、前記音声信号がステレオ信号である場合に当該ステレオ信号からセンター信号を抽出するセンター抽出部をさらに備えていてもよい。センター抽出部を備えることで、ステレオ信号からメロディーラインを推定する際に、その推定精度を向上させることが可能になる。なお、センター抽出部を設ける場合、前記信号変換部は、前記センター抽出部で抽出されたセンター信号を前記音程信号に変換する。そして、センター信号から変換された音程信号に基づいて後段の処理が実行される。
また、上記の情報処理装置は、前記音声信号を所定の分類項目に分類する信号分類部をさらに備えていてもよい。この場合、前記メロディー確率推定部は、前記信号分類部の分類結果に基づいて前記各音程がメロディー音である確率を推定する。さらに、前記メロディーライン決定部は、前記信号分類部の分類結果に基づいて前記最尤経路を検出する。上記の通り、メロディー確率の推定は、学習アルゴリズムを用いて実現される。そのため、学習アルゴリズムに与えられる音声信号(及び特徴量)を分類で絞り込むことで、より尤もらしいメロディー確率が推定できる。さらに、経路探索する際、各ノード(フレーム毎の音程)の確率及びノード間遷移の確率に分類毎の重み付けを行うことで、最尤経路(メロディーライン)の推定精度を高めることができる。
また、上記の情報処理装置は、前記音程信号について、メロディー音である音程の期待値をフレーム毎に推定すると共に、メロディー音である音程の標準偏差を推定する音程分布推定部をさらに備えていてもよい。音程分布推定部により推定された期待値、及び標準偏差から大まかなメロディー確率分布が得られる。そこで、前記メロディーライン決定部は、前記音程分布推定部の推定結果に基づいて前記最尤経路を検出する。このように、大まかなメロディー確率分布を考慮することで、オクターブの検出間違いを低減させることが可能になる。
また、前記メロディーライン決定部で決定されたメロディーラインの音程をビート区間毎に平滑化する平滑化部をさらに備えていてもよい。上記の通り、メロディーライン決定部で決定されるメロディーラインは、メロディー確率の推定処理、及び経路探索処理により推定されてものである。そのため、フレーム単位の細かな音程のぶれが含まれている。そこで、平滑化部は、ビート区間単位で音程を平滑化してメロディーラインを整形する。このような整形処理が行われることで、実際のメロディーラインに近い綺麗なメロディーラインが出力される。
また、前記メロディー確率推定部は、任意の音声信号が持つ特徴量を抽出する計算式を複数の音声信号及び当該各音声信号の前記特徴量を用いて生成する計算式生成装置に対してメロディーラインが既知の音声信号と当該メロディーラインとを与えて前記メロディー音である確率を抽出するための計算式を生成し、当該計算式を用いて前記各音程がメロディー音である確率をフレーム毎に推定するように構成されていてもよい。このように、メロディー確率の推定処理には、例えば、特徴量が既知の音声信号を用いた学習処理で生成される計算式が用いられる。十分な数の音声信号を用いて学習処理が行われることで、精度良くメロディー確率が推定される。
また、上記の情報処理装置は、前記音声信号の各ビート区間を検出するビート検出部と、前記ビート検出部で検出されたビート区間毎に各コードが演奏されている確率を検出するコード確率検出部と、前記コード確率検出部でビート区間毎に検出された前記各コードが演奏されている確率を用いて前記音声信号のキーを検出するキー検出部と、をさらに備えていてもよい。この場合、前記メロディーライン決定部は、前記キー検出部で検出されたキーに基づいて前記最尤経路を検出する。このように、音声信号のキーを考慮して経路探索を行うことで、メロディーラインの推定精度を高めることができる。特に、ビブラート等の影響で半音単位の検出間違いが発生する頻度を低減させることが可能になる。
また、上記の情報処理装置は、音声信号を音程毎の信号強度を表す音程信号に変換する信号変換部と、前記音程信号の各音程がベース音である確率を推定するベース確率推定部と、前記ベース確率推定部でフレーム毎に推定された前記各音程がベース音である確率に基づき、前記音声信号の開始フレームから終了フレームまでを結ぶ音程の経路から最尤経路を検出してベースラインに決定するベースライン決定部と、を備えるものであってもよい。このように、上記の情報処理装置は、メロディーラインの推定処理と同様にしてベースラインの推定を行うこともできる。
(備考)
上記のログスペクトルは、音程信号の一例である。上記のログスペクトル解析部104は、信号変換部の一例である。上記のビタビ探索は、最尤経路の検出方法の一例である。上記の特徴量計算式生成装置10は、計算式生成装置の一例である。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
上記実施形態の説明では、楽曲のメロディーラインを抽出する方法について説明した。しかしながら、本実施形態の技術は、ベースラインを抽出する方法にも応用することが可能である。例えば、学習データとして与えられるメロディーラインに関する情報をベースラインのものに変更することで、実質的に同じ構成により、楽曲データから精度良くベースラインを抽出することが可能になる。