本発明の一実施形態に係るスコアアライメント装置10について説明する。スコアアライメント装置10は、楽曲の演奏を表わす音響信号を取り込みつつ前記取り込んだ音響信号を分析して、前記楽曲の楽譜のうちのどの部分が現在演奏されているのかを推定する。本実施形態では、楽譜を表わす楽譜データとして、標準MIDIファイル形式のデータを用いる。
スコアアライメント装置10は、図1に示すように、入力操作子11、コンピュータ部12、表示器13、記憶装置14、外部インターフェース回路15及びサウンドシステム16を備えており、これらがバスBSを介して接続されている。
入力操作子11は、オン・オフ操作に対応したスイッチ(例えば数値を入力するためのテンキー)、回転操作に対応したボリューム又はロータリーエンコーダ、スライド操作に対応したボリューム又はリニアエンコーダ、マウス、タッチパネルなどから構成される。これらの操作子は、演奏者の手によって操作されて、スコアアライメント処理の開始又は停止、スコアアライメント処理に関する各種パラメータの設定などに用いられる。入力操作子11を操作すると、その操作内容を表す操作情報が、バスBSを介して、後述するコンピュータ部12に供給される。
コンピュータ部12は、バスBSにそれぞれ接続されたCPU12a、ROM12b及びRAM12cからなる。CPU12aは、後述するスコアアライメント処理の手順を表わしたスコアアライメントプログラムをROM12bから読み出して実行する。ROM12bには、前記プログラムに加えて、初期設定パラメータ、表示器13に表示される画像を表わす表示データを生成するための図形データ及び文字データなどの各種データが記憶されている。RAM12cには、前記プログラムの実行時に必要なデータが一時的に記憶される。
表示器13は、液晶ディスプレイ(LCD)によって構成される。コンピュータ部12は、図形データ、文字データなどを用いて表示すべき内容を表わす表示データを生成して表示器13に供給する。例えば、コンピュータ部12は、後述するスコアアライメント処理により推定された楽譜位置を表わす表示データを表示器13に供給する。表示器13は、コンピュータ部12から供給された表示データに基づいて画像を表示する。
また、記憶装置14は、HDD、FDD、CD、DVDなどの大容量の不揮発性記録媒体と、同各記録媒体に対応するドライブユニットから構成されている。記憶装置14には、楽譜を表わす楽譜データ(標準MIDIファイル)が記憶されている。楽譜データは予め記憶装置14に記憶されていてもよいし、後述する外部インターフェース回路15を介して外部から取り込んでもよい。
外部インターフェース回路15は、スコアアライメント装置10を電子音楽装置、パーソナルコンピュータなどの外部機器に接続可能とする接続端子を備えている。スコアアライメント装置10は、外部インターフェース回路15を介して、LAN(Local Area Network)、インターネットなどの通信ネットワークにも接続可能である。
サウンドシステム16は、ディジタル音信号を生成する音源回路、前記生成されたディジタル音信号をアナログ音信号に変換するD/A変換器、前記変換したアナログ音信号を増幅するアンプ、及び増幅されたアナログ音信号を音響信号に変換して出力するスピーカを備えている。また、サウンドシステム16は、楽曲の演奏により放音された楽音を収音するためのマイク、収音された楽音を表わすアナログ音信号をディジタル音信号に変換するA/D変換器、変換されたディジタル音信号を表わすサンプルデータを一時的に記憶するバッファも備えている。つまり、サウンドシステム16は、楽音を所定のサンプリング周期(例えば、1/44100sec)でサンプリングし、サンプリングによって得られたサンプルデータを前記バッファに記憶する。
次に、楽譜位置及びテンポの推定手法について説明する。スコアアライメント装置10は、図2に示すように、まず、マイクを介して楽曲の演奏を表わす音響信号を取り込みつつ前記取り込んだ音響信号を分析して現在演奏されている楽譜位置の確率密度及び現在のテンポの確率密度を計算する。そして、前記計算された確率密度の系列を用いて、最適な楽譜位置及びテンポを決定する。前記決定された楽譜位置及びテンポは、制御対象(表示器13、サウンドシステム16など)の制御に用いられる。
次に、楽譜位置及びテンポの確率密度の計算手法について説明する。本実施形態では、以下説明するように、前記複数の区間の系列が隠れセミマルコフモデルHSMM(図3、式(2)参照)としてモデル化される。まず、図3に示すように、楽曲の楽譜が複数の区間i(=1,2,・・・,I)に分割される。各区間の長さは同一である。例えば、各区間の長さは、4分音符1つ分の長さである。「i」は、楽曲の先頭から数えて何番目の区間であるかを表わすインデックスである。実際の演奏に対応した楽譜は、上記のように分割された複数の区間の系列として表現可能である。
1つの区間を演奏するのにかかる時間(演奏が1つの区間に留まる時間)は、テンポに依存する。例えば、テンポが60BPM(Beats Per Minute)の場合は、1つの区間を演奏するのに1秒かかる。また、テンポが120BPMの場合は、1つの区間を演奏するのに0.5秒かかる。ここで、例えば0.1秒を単位時間とするフレームの数として表現すれば、テンポが60BPMの場合は、1つの区間を演奏するのに10フレーム分の時間がかかり、テンポが120BPMの場合は、1つの区間を演奏するのに5フレーム分の時間がかかる。
時刻t(楽曲の先頭から数えてt番目のフレーム)において区間iが演奏されており、区間iを演奏するのにフレーム数Tに相当する時間がかかることが確定していて、区間iの先頭から数えてn番目のフレームまで演奏し終えた状態(区間iの先頭から現在の楽譜位置まで演奏するのにn個分のフレームの時間がかかった状態)を状態Si,n,T(t)と表記する。図3における○印は、各状態Si,n,T(t)に対応している。なお、各区間内ではテンポは変化しないものとする。つまり、同図において矢印で結ばれた○印の各系列においては、左側の○印から右側の○印へ順に遷移する。したがって、各系列を構成する○印の数がテンポに対応している。すなわち、○印の数が少ない系列ほどテンポが速く、○印の数が多い系列ほどテンポが遅い。よって、各区間において初期状態を1つ選択すれば、演奏がその区間に留まる長さ(フレーム数T)が確定する。
また、通常、演奏は楽譜の先頭から末尾へ向かって順に進行するので、1つの区間の演奏が終了したとき、その区間の1つ後の区間への遷移のみが許容される。ここで、区間iから区間jへ遷移する確率を確率τ
i,jと表記する。また、1つの区間の末尾の状態から、次の区間の初期状態へ遷移するときには、任意の初期状態へ遷移可能とする。つまり、1つの区間から次の区間へ遷移するとき、テンポが変更され得る。ここで、フレーム数T´に相当するテンポから、フレーム数Tに相当するテンポに遷移する確率を確率τ
T‘,Tと表記する。すると、状態S
i´,n´,T´(t)から状態S
i,n,T(t+1)へ遷移する確率である状態遷移確率τ
(i´,n´,T´)〜(i,n,T)は、下記の式(1)のように表わされる。なお、本実施形態では、説明を簡単にするために、楽譜位置を遠く離れた区間へ遷移させる演奏記号(ダ・カーポ、繰り返し記号など)が楽譜に含まれないと仮定する。
しかし、演奏者が楽曲を実際に演奏するとき、楽譜では指定されていない部分を繰り返し演奏したり、弾けない部分を飛ばしたりすることがある。つまり、楽譜位置が、隣接する区間ではなく、遠く離れた区間へ遷移する(ジャンプする)可能性がある。そこで、隠れマルコフモデルHMMや隠れセミマルコフモデルHSMMに従って区間が遷移する確率γ、状態S
i,n,Tを観測する確率π
i,n,T、及び状態S
i,n,Tの観測尤度O
i,n,T(t)を用いて、下記の式(2)に示すようなモデルを設定する。観測尤度O
i,n,T(t)については後述する。
次に、サウンドシステム16によってサンプリングされた楽音のフレームtに含まれる各音高mのパワーy
m(t)及び1つ前のフレームからのパワーの増加量Δy
m(t)が音響信号の特徴量として計算される。ここで、パワーy
m(t)の観測尤度及びパワーの増加量Δy
m(t)の観測尤度は、式(3)及び式(4)に示すように、それぞれvon Mises−Fisher分布に従うと仮定する。
すると、式(2)の観測尤度O
i,n,T(t)は、下記の式(5)のように表わされる。
なお、上記式(3)及び式(4)における「κ」は、von Mises Fisher分布の集中度を表わす。つまり、「κ」が大きいほど、パワーym(t)及びパワーの増加量Δym(t)の観測尤度の分布図において、平均値を中心に急峻なピークが形成される。「κ」の値は、例えば「100」に設定される。また、「w(k)」は音響信号の特徴量のテンプレート(以下、音モデルと呼ぶ)である。「k」は音モデルを特定するためのインデックスである。各音モデルは、各楽器を用いて各音高の楽音(単音)をそれぞれ発生させ、それらの楽音の特徴量を計算して記録したデータである。例えば、「w(k=1)」は、ピアノを弾いてMIDIノートナンバが「69」に相当する音高の音を発生させ、その特徴量(パワー)を記録したデータである。また、例えば、「w(k=2)」は、バイオリンを弾いてMIDIノートナンバが「69」に相当する音高の楽音を発生させ、その特徴量(パワー)を記録したデータである。また、「h」は、各音モデルの強度を表わす。なお、発音数が多い楽曲の場合、設定された各音モデルの強度と実際に演奏された楽音の強度に大きな差が生じることがある。この場合、「κ」の値を小さくして、分散をより大きくすればよい。
パワーym(t)の観測尤度(式(3))に関して具体的に説明する。説明を簡単にするために、分析対象の楽曲は、単一の楽器で演奏される楽曲とし、音モデルのインデックスとしての「k」とMIDIノートナンバNNとが一致すると仮定する。ここで、現在の状態が状態Si=4,n=6,T=12であるとする。このときのパワーym(t)の観測尤度について考察する。この場合、i+n/T=4+6/12=4.5であるから楽譜位置4.5に対応する「h(4.5)」を抽出する。図4においては、各音モデルの強度(つまり「h」の大きさ)を濃淡グラフとして示している。同図において濃く示された要素の強度が大きい。この例ではk=69の要素の強度が大きいので、結果として、パワーym(t)の観測尤度は、「w(k=69)」の要素が支配的である平均値を持つように分布する。
隠れセミマルコフモデルHSMMにおける前向き変数α
i,n,T(t)は、下記の式(6)のように表される。
この式(6)を整理すると、下記の式(7)に示す漸化式が得られる。
ここで、説明を簡単にするために、いずれの楽譜位置にも一様に遷移可能なモデルについて考察する。この場合、状態Sを観測する確率πは、状態数|S|を用いて、式(8)のように表わされる。
また、初期の状態に遷移する確率(1−γ)を「0.01」とすると、状態iの観測尤度O
i(t)、状態iから状態jへの遷移確率τ
i,j、状態iの前向き変数α
i(t)を用いて、前向き変数αの更新式は、式(9)のように表わされる。
式(9)における「τ
i,j×0.99」の部分と、「0.01/|S|」の部分は、楽譜データを読み込んだ際に計算しておくことができる。一方、式(7)において、「γ」の値を「1」とすれば、式(10)に示すように、通常の隠れマルコフモデルHMMにおける前向き変数の漸化式が得られる。
したがって、隠れセミマルコフモデルHSMMにおける前向き変数の更新の演算と、通常の隠れマルコフモデルHMMにおける前向き変数の更新の演算との違い(オーバーヘッド)は、「0.01/|S|」を加算する処理のみである。なお、この例では、いずれの楽譜位置にも一様に遷移可能としているが、状態遷移が制限されている場合であってもオーバーヘッドに関しては、この例と同様である。
本実施形態においては、分割された区間の時系列を隠れセミマルコフモデルHSMMとしてモデル化しているので、通常の隠れマルコフモデルとしてモデル化した場合に比べて状態数が膨大であり、区間i、フレーム数n及びフレーム数Tの組み合わせの数も膨大である。したがって、前向きアルゴリズムを用いて楽譜位置の確率密度を計算すると、計算量が膨大になってしまう。そこで、スコアアライメント装置10は、以下説明するように、通常の隠れマルコフモデルHMMを用いて、前向きアルゴリズムを適用する隠れセミマルコフモデルHSMMの区間を絞り込む区間検索手段を備える。
通常の隠れマルコフモデルHMMは次のように定義される。すなわち、上記の隠れセミマルコフモデルHSMMと同様に楽譜を分割し、分割した区間のそれぞれに状態変数を割り当てる。ただし、隠れセミマルコフモデルHSMMの区間数よりも隠れマルコフモデルHMMの区間数のほうが多くなるように楽譜を分割する。例えば、隠れセミマルコフモデルHSMMにおいては、それぞれの区間の長さが4分音符の長さになるように楽譜を分割し、隠れマルコフモデルHMMにおいては、それぞれの区間の長さが32分音符の長さになるように楽譜を分割する。また、各状態(区間)は自分自身にも遷移可能とする。つまり、隠れマルコフモデルHMMにおいては、ある状態から自分自身に遷移する確率が「τ(HMM)」であり、ある状態から1つ後ろの状態へ遷移する確率が「1−τ(HMM)」である。このような隠れマルコフモデルHMMに対して実時間で前向きアルゴリズムを適用し、各フレームtにおいて前向き変数が最大となる状態を検索する。そして、前記検索した状態に対応する隠れセミマルコフモデルHSMMの区間に隣接する所定数(例えば16個(4拍子の曲の4小節分))の区間ΔSにのみ前向きアルゴリズムを適用する。
なお、「τ(HMM)」は、1フレームあたりに遷移する区間数とみなすことができる。この「区間」とは、隠れマルコフモデルHMMの区間である。したがって、自分自身に遷移する確率を表す「τ(HMM)」と、現在推定されているテンポ(すなわちフレーム数T)とが整合していないと、区間ΔSが適切に得られない可能性がある。そこで、隠れセミマルコフモデルHSMMに基づいて計算された確率密度を用いて、現在のフレーム数Tに対する分布(=Σi,nαi,n,T(t))を計算する。そして、現在のフレーム数Tを用いて1フレームあたりに遷移する区間数の期待値を計算することにより、「τ(HMM)」を決定する。これにより、隠れマルコフモデルHMMと隠れセミマルコフモデルHSMMのテンポが整合する。
次に、前記計算された楽譜位置確率密度及びテンポ確率密度の系列に基づいて、現在の楽譜位置を決定する手法について説明する。上記非特許文献2においては、テンポの連続性を1次の自己回帰過程としてモデル化していた。つまり、フレームtにおけるテンポを「νt」とし、平均値が「0」であって、分散σ2が「0」より大きい正規分布に従う独立なテンポ変化量εtに対して、νt=νt−1+εtというモデルを仮定していた。しかし、音楽音響信号においては、テンポを速く(遅く)しているときには、ある程度連続した区間でεtが正(負)の値をとり、かつテンポの時間微分(つまり、楽譜位置の加速度)は「0」に戻る傾向にある。つまり、あるフレームにおけるテンポ変化量εtは、そのフレームに隣接するフレームのテンポ変化量εtに依存する。
そこで、本実施形態においては、さらに高次の情報を採り入れる。フレームtに関する楽譜位置の確率密度を楽譜位置確率密度Uq(t)、テンポの確率密度をテンポ確率密度VT(t)と表記する。ここで、「q」は、任意の「M」に対して、「q=round(M(i+n/T))」なる演算式により定義される変数である。つまり、「VT(t)」は、「q」が1フレームあたりに「M/T」だけ遷移する確率である。
ここで、フレームtにおける真の楽譜位置を楽譜位置x
t、真の楽譜位置の遷移速度をテンポv
t、真の楽譜位置の遷移加速度を加速度a
tと表記する。つまり、テンポv
tは、楽譜位置x
tの一階微分に相当し、加速度a
tは、楽譜位置x
tの二階微分に相当する。そして、下記の式(11)〜式(13)によって定義される状態空間モデル(高次の自己回帰過程)を設定する。すなわち、楽譜位置の推移を表わす楽譜位置軌跡モデル、テンポの推移を表わすテンポ軌跡モデル、及び加速度の推移を表わす加速度軌跡モデルを設定する。
なお、式(13)における「r」は加速度atの減衰係数である。この減衰係数の作用により、加速度atは、連続的に変化し、かつ「0」に戻るという傾向を示す。また、「r」が大きいとテンポの変化が緩やかになり、「r」が小さいとテンポの変化が激しくなる傾向を示す。「r」は例えば、「0.5」に設定される。実演奏のテンポデータに基づいて、「r」を最適な値に設定しても良い。
上記の状態空間モデルがどのような観測値(つまり、楽譜位置確率密度U
q(t)及びテンポ確率密度V
T(t)を生成するかをモデル化できれば、状態遷移と観測尤度を同時に考慮することにより、状態変数を推論することができる。そこで、楽譜位置確率密度U
q(t)の平均値μ(U
q(t))及び分散σ
2(U
q(t))、並びにテンポ確率密度V
T(t)の平均値μ(V
T(t))及び分散σ
2(V
T(t))を下記の式(14)〜式(17)を用いて計算する。
つまり、推定された現在の楽譜位置x
tの周辺のフレームに関する楽譜位置確率密度U
q(t)及びテンポ確率密度V
T(t)の平均値及び分散を計算する。そして、観測尤度を下記の式(18)に示すように定義する。
すなわち、まず、現在のフレームよりN個前に位置するフレームと現在のフレームとの間における楽譜位置確率密度の系列及びテンポ確率密度の系列から、楽譜位置xtの周辺のフレームの確率密度の系列をそれぞれ抽出する。ここで、ΔT個だけ前に位置するフレームにおいて計算された確率密度を正規分布と見なす。つまり、ΔT個だけ前に位置するフレームにおいて計算された確率密度のヒストグラムの平均及び分散を正規分布の平均及び分散と見なす。そして、楽譜位置xt、テンポvt及び加速度atを用いて、ΔT個だけ前に位置するフレームにおけるテンポ軌跡モデル及び加速度軌跡モデルの尤度を計算する。図5は、計算された楽譜位置観測密度の系列に対するテンポ軌跡モデルを推定する過程を示す概念図である。実際には、テンポ確率密度の系列に対する加速度軌跡モデルも推定する。カルマンフィルタを用いれば、上記のような楽譜位置軌跡モデル、テンポ軌跡モデル及び加速度軌跡モデルを実時間で推定できる。カルマンフィルタの更新ステップが実行され、更新された状態の推定値を用いて、楽譜位置xtの平均値〈xt〉、及びテンポvtの平均値〈vt〉が計算される。そして、前記計算された楽譜位置xtの平均値〈xt〉、及びテンポvtの平均値〈vt〉が、現在の楽譜位置及びテンポとして決定される。
次に、スコアアライメント装置10の動作について具体的に説明する。CPU12aは、図6Aに示すように、ステップS10にて、スコアアライメントプログラムをROM12bから読み込んで、スコアアライメント処理を開始する。次に、CPU12aは、ステップS11にて、表示器13に楽譜データのリストを表示する。ユーザは、表示されたリストの中から、スコアアライメント処理を実行する対象の楽曲(つまり、演奏される楽曲)の楽譜データを、入力操作子11を用いて選択する。次に、CPU12aは、ステップS12にて、前記選択された楽譜データを記憶装置14から読み込んで、複数の区間i(=1,2,・・・,I)に分割する。
次に、CPU12aは、ステップS13にて、サウンドシステム16に、楽音のサンプリングを開始させる。次に、CPU12aは、ステップS14にて、処理対象のフレームを最初のフレームに設定する。すなわち、フレームのインデックスである「t」の値を「1」に設定する。
次に、CPU12aは、ステップS15にて、楽譜位置確率密度・テンポ確率密度計算処理を実行する。図6Bに示すように、CPU12aは、ステップS150にて楽譜位置確率密度・テンポ確率密度計算処理を開始する。次に、CPU12aは、ステップS151にて、フレームtに含まれる音響信号(サンプルデータ)をサウンドシステム16のバッファから読み込む。次に、CPU12aは、ステップS152にて、上記式(3)乃至式(5)に基づいて、観測尤度Oi,n,T(t)を計算する。次に、CPU12aは、ステップS153にて、前記計算された観測尤度Oi,n,T(t)を用いて、通常の隠れマルコフモデルHMMに前向きアルゴリズムを適用し、フレームtにおいて前向き変数が最大となる状態を検出する。これにより、隠れセミマルコフモデルHSMMに前向きアルゴリズムを適用する区間が決定される。次に、CPU12aは、ステップS154にて、隠れセミマルコフモデルHSMMを構成する複数の区間のうち、前記決定された区間に前向きアルゴリズムを適用する(式(7)参照)。次に、CPU12aは、ステップS155にて、隠れセミマルコフモデルHSMMに前向きアルゴリズムを適用して計算された前向き変数を用いて、楽譜位置確率密度Uq(t)及びテンポ確率密度VT(t)を計算する。そして、CPU12aは、ステップS156にて、楽譜位置確率密度・テンポ確率密度計算処理を終了し、アライメント計算処理のステップS16に処理を進める。
次に、CPU12aは、ステップS16にて、楽譜位置・テンポ決定処理を実行する。CPU12aは、図6Cに示すように、ステップS160にて、楽譜位置・テンポ決定処理を開始する。次に、CPU12aは、ステップS161にて、楽譜位置がジャンプしたか否かを判定する。具体的には、現在のフレームに関して計算された楽譜位置確率密度Uq(t)と、1つ前のフレームに関して計算された楽譜位置確率密度Uq(t−1)との差に基づいて、楽譜位置がジャンプしたか否かを判定する。例えば、現在のフレームにおける楽譜位置確率密度Uq(t)及び1つ前のフレームにおける楽譜位置確率密度Uq(t−1)に基づいて、最も可能性の高い楽譜位置(隠れセミマルコフモデルHSMMの前向き変数の値が最も大きい状態)をそれぞれ検出し、前記検出した現在のフレームの楽譜位置と1つ前のフレームの楽譜位置とが4小節以上離れている場合に、楽譜位置がジャンプしたと判定する。楽譜位置がジャンプしていない場合には、CPU12aは、「No」と判定して、ステップS162にて、上記式(14)乃至式(17)に基づいて、楽譜位置xtの周辺のフレームにおける楽譜位置確率密度Uq(t)及びテンポ確率密度VT(t)の平均値及び分散を計算する。次に、CPU12aは、ステップS163にて、上記式(18)に基づいて観測尤度を計算し、カルマンフィルタを用いてテンポ推移モデル及び加速度推移モデルを推定する。
一方、楽譜位置がジャンプした場合には、CPU12aは、ステップS161において「Yes」と判定する。そして、CPU12aは、ステップS164にて、楽譜位置xt、テンポvt、及び加速度atの値を次のように設定する。例えば、現在のフレームにおける楽譜位置確率密度Uq(t)に基づいて、最も可能性の高い楽譜位置を検出し、前記検出した楽譜位置を楽譜位置xtとして設定する。また、テンポvtを規定値(例えば「120BPM」)に設定する。また、加速度atを規定値(例えば「0」)に設定する。
そして、CPU12aは、ステップS165にて、楽譜位置推移モデル、テンポ推移モデル及び加速度推移モデルの推定結果を用いて楽譜位置及びテンポを決定して、前記決定した楽譜位置及びテンポに応じて制御対象を制御する。
例えば、楽曲の楽譜を表示器13に表示し、前記決定した楽譜位置(音符)の色を他の部分の色とは異ならせることにより、現在の楽譜位置を明示する。また、例えば、推定された楽譜位置に対応する静止画、動画などを表示する。例えば、静止画を表わす静止画データのファイル名と楽譜位置を予め対応させておき、推定された楽譜位置に対応する静止画データを用いて静止画を表示器13に表示してもよい。また、例えば、動画を表わす動画データの再生位置(例えばフレーム番号)と楽譜位置を予め対応付けておき、前記動画のうち、推定された楽譜位置に対応する部分を表示器13に表示してもよい。また、例えば、伴奏を表わす伴奏データの再生位置(例えば小節番号)と楽譜位置を予め対応付けておき、推定された楽譜位置に対応する部分のデータをサウンドシステム16の音源回路に送信して、伴奏の楽音を放音させてもよい。伴奏を再生する際には、伴奏のテンポを前記決定したテンポに設定すればよい。
次に、CPU12aは、前記計算された前向き変数α
i,n,T(t)を用いて、ステップS166にて、隠れマルコフモデルHMMの状態遷移確率を更新する。具体的には、まず、セミマルコフモデルHSMMの前向き変数を用いて、現在のフレーム数Tの期待値〈T〉を計算する。隠れセミマルコフモデルHSMMにおいて、フレーム数Tの値が平均値〈T〉である場合、1フレームあたりに遷移する区間数は、「1/〈T〉」と表わされる。また、上記のように、「τ
(HMM)」は、1フレームあたりに遷移する隠れマルコフモデルHMMの区間数とみなすことができる。したがって、隠れセミマルコフモデルHSMMの区間長と隠れマルコフモデルHMMの区間長との比を「φ」(=隠れセミマルコフモデルHSMMの区間長/隠れマルコフモデルHMMの区間長)とすると、「τ
(HMM)=φ/〈T〉」と表わされる。「τ
(HMM)」は「0」以上、且つ「1」以下の値として定義されているため、「τ
(HMM)」は、次の式(19)に基づいて更新される。
そして、CPU12aは、ステップS167にて、楽譜位置決定処理を終了し、アライメント計算処理のステップS17に処理を進める。
次に、CPU12aは、ステップS17にて、処理対象のフレームを次のフレームに設定する。すなわち、フレームのインデックスである「t」の値をインクリメントする。これ以降、CPU12aは、ステップS15乃至ステップS17を繰り返し実行する。ただし、ユーザが入力操作子11を用いてスコアアライメント処理の終了を指示すると、CPU12aは、制御対象の動作を停止させ、スコアアライメント処理を終了する。
上記のように構成したスコアアライメント装置10においては、まず、楽譜位置確率密度及びテンポ確率密度を計算する。そして、楽譜位置確率密度Uq(t)の系列及びテンポ確率密度VT(t)の系列を用いて、高次の自己回帰過程に基づいて楽譜位置及びテンポを決定する。これによれば、テンポの時間微分(すなわち、楽譜位置の加速度)が連続的であって、且つ「0」に戻る傾向を示すという音楽音響信号の性質を表現できる。また、隠れセミマルコフモデルHSMMを用いて計算された楽譜位置確率密度Uq(t)及びテンポ確率密度VT(t)の分散が大きい区間では、楽譜位置確率密度の系列及びテンポ確率密度の系列の経路が平滑化されるという挙動が得られる。これにより、楽譜位置の推定精度を向上させることができる。したがって、スコアアライメント装置10をメディアプレーヤに適用すれば、演奏者による演奏の進行位置と他のメディア(自動伴奏、画像など)の再生位置とのずれを従来よりも抑制できる。つまり、演奏者による演奏に対する他のメディアの再生が不自然に感じられることを抑制できる。
また、通常の隠れマルコフモデルHMMに前向きアルゴリズムを適用して前向き変数を計算し、前向き変数が最大となる状態(区間)を検索する。そして、隠れセミマルコフモデルHSMMにおいて、前記検索された状態(区間)に対応する区間を含む複数の区間ΔSに対して前向きアルゴリズムを適用して楽譜位置確率密度Uq(t)及びテンポ確率密度VT(t)を計算している。したがって、隠れセミマルコフモデルHSMMを構成する全ての区間に対して前向きアルゴリズムを適用する場合に比べて、計算量の増大を抑制することができる。
また、隠れセミマルコフモデルHSMMの区間数よりも隠れマルコフモデルHMMの区間数のほうが多くなるように楽譜を分割した。これにより、隠れセミマルコフモデルHSMMの区間のうち前向きアルゴリズムを適用する複数の区間を、隠れマルコフモデルHMMの区間数と隠れセミマルコフモデルHSMMの区関数とが同一である場合に比べて、より適切に検索できる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態では、楽譜にダ・カーポ、繰り返し記号などが含まれないと仮定しているが、楽譜にダ・カーポ、繰り返し記号などが含まれる場合には、それらの演奏記号に従って区間の遷移確率を適当に設定すればよい。例えば、繰り返し記号が含まれる場合には、繰り返し区間のうちの末尾の区間から、繰り返し区間の先頭へ遷移する確率を50%とし、繰り返し区間の末尾の区間から、前記末尾の区間の1つ後の区間へ遷移する確率を50%とすればよい。
また、例えば、ステップS151にて、音響信号データを読み込んだとき、無音か否かを判定するステップを追加しても良い。無音である場合には、楽譜位置xtのモデルを状態空間モデルに基づいてのみ更新すればよい。つまり、xt=xt−1+vt−1+at−1/2なる演算式を用いればよい。また、この場合、隠れマルコフモデルHMM及び隠れセミマルコフモデルHSMMの前向き変数に関しては、楽譜位置xtに対応する箇所の変数のみを一様分布に設定し、それ以外を「0」に設定すればよい。
また、楽譜にフェルマータが存在する場合は、フェルマータが記された区間において自己遷移を許容するように隠れセミマルコフモデルHSMMを設定すればよい。つまり、区間iにフェルマータが存在するとき、確率τi,iを「ρ」とし、確率τi,jを「1−ρ」に設定すればよい。この場合、区間iにおいて自己遷移した回数をカウントし、カウント結果に応じて、演奏が区間iに留まった長さを評価してもよい。例えば、区間iに留まった長さを「短すぎる」、「普通」、「長すぎる」という3段階で判定し、判定結果を演奏評価情報として出力しても良い。
また、推定されたテンポ及びその分散を用いて、楽曲の演奏速度を評価してもよい。例えば、楽曲の演奏速度を「遅すぎる」、「普通」、「速すぎる」という3段階で判定し、判定結果を演奏評価情報として出力しても良い。