(57)【要約】【課題】演奏位置を高い精度で検出可能な情報処理装置、情報処理方法、及びプログラムを提供すること。【解決手段】本情報処理装置は、楽曲を構成する複数の楽譜音符を記憶する記憶部と、演奏により生成される複数の演奏音符を入力する入力部と、入力された複数の演奏音符の中から検出対象音符を設定する設定部と、検出対象音符に対応する最適対応音符の候補として複数の候補対応音符を選択する第１の選択部と、複数の候補対応音符の中の１つを最適対応音符と仮定した場合の、検出対象音符の周辺にある複数の周辺演奏音符の各々と複数の楽譜音符の各々との個別音符一致度を算出する第１の算出部と、周辺演奏音符ごとに最大個別音符一致度を判定する判定部と、最大個別音符一致度をもとに、検出対象音符と候補対応音符との音符一致度を算出する第２の算出部と、音符一致度が最大となるものを最適対応音符として選択する第２の選択部を具備する。【選択図】図６
2015215455.tif 000002
【特許請求の範囲】
【請求項１】
楽曲を構成する複数の楽譜音符を記憶する記憶部と、
前記楽曲の演奏により生成される複数の演奏音符を入力する入力部と、
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定する設定部と、
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択する第１の選択部と、
前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出する第１の算出部と、
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定する判定部と、
前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出する第２の算出部と、
前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択する第２の選択部と
を具備する情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記複数の楽譜音符の各々は、所定の時点を基準とした時間軸である楽譜時間軸上において、前記楽譜音符に対する演奏のタイミングを示す時刻である楽譜時刻を有し、
前記複数の演奏音符の各々は、前記所定の時点に対応する時点を基準とした、前記演奏音符を生成する演奏が行われた時刻である演奏時刻を有し、
前記第１の算出部は、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻を基準として、前記周辺演奏音符の演奏時刻と前記楽譜音符の楽譜時刻との一致度である時刻一致度を算出し、その算出された時刻一致度をもとに前記個別音符一致度を算出する
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、さらに、
前記複数の周辺演奏音符の各々が有する前記演奏時刻を、前記検出対象音符の前記演奏時刻と前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻とをもとに、前記楽譜時間軸上の時刻である第１の変換時刻にそれぞれ変換する第１の変換部を具備し、
前記第１の算出部は、前記第１の変換時刻をもとに前記時刻一致度を算出する
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記記憶部は、前記複数の楽譜音符に対する演奏のテンポを表す楽譜テンポを記憶し、
前記第１の変換部は、前記検出対象音符に応じた演奏テンポを算出するテンポ算出部を有し、前記検出対象音符の前記演奏時刻及び前記周辺演奏音符の前記演奏時刻の差と、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻と、前記楽譜テンポ及び前記演奏テンポの比とをもとに、前記第１の変換時刻を算出する
情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、さらに、
前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備し、
前記テンポ算出部は、前記検出対象音符の前記演奏時刻の直前のビート演奏時刻を含む複数のビート演奏時刻をもとに、前記演奏テンポを算出する
情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記第１の変換部は、前記周辺演奏音符の前記演奏時刻に最も近い前記ビート演奏時刻及び前記検出対象音符の前記演奏時刻の差と、前記最も近いビート演奏時刻に対応する前記ビート楽譜時刻及び前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻の差との比を用いて、前記第１の変換時刻を算出する
情報処理装置。
【請求項７】
請求項２から６のうちいずれか１項に記載の情報処理装置であって、さらに、
前記検出対象音符の前記演奏時刻を、前記楽譜時間軸上の時刻である第２の変換時刻に変換する第２の変換部を具備し、
前記第１の選択部は、前記第２の変換時刻を基準とする所定時間の範囲内に含まれる複数の楽譜音符を、前記複数の候補対応音符として選択する
情報処理装置。
【請求項８】
請求項７に記載の情報処理装置であって、さらに、
前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備し、
前記第２の変換部は、前記直前の前記ビート演奏時刻と前記直前のビート演奏時刻に対応する前記ビート楽譜時刻とをもとに、前記第２の変換時刻を算出する
情報処理装置。
【請求項９】
請求項２から８のうちいずれか１項に記載の情報処理装置であって、
前記第１の算出部は、確率分布関数を用いて前記時刻一致度を算出する
情報処理装置。
【請求項１０】
請求項９に記載の情報処理装置であって、
前記確率分布関数は、前記周辺演奏音符の前記演奏時刻及び前記検出対象音符の前記演奏時刻の差をもとに生成される
情報処理装置。
【請求項１１】
請求項２から１０のうちいずれか１項に記載の情報処理装置であって、
前記複数の楽譜音符の各々は、楽譜音高を有し、
前記複数の演奏音符の各々は、演奏音高を有し、
前記第１の算出部は、前記周辺演奏音符の演奏音高と前記楽譜音符の楽譜音高との一致度である音高一致度を算出し、その算出された音高一致度と前記時刻一致度とをもとに、前記個別音符一致度を算出する
情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置であって、
前記第１の算出部は、確率分布関数を用いて前記音高一致度を算出する
情報処理装置。
【請求項１３】
楽曲を構成する複数の楽譜音符を記憶し、
前記楽曲の演奏により生成される複数の演奏音符を入力し、
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定し、
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択し、
前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出し、
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定し、
前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出し、
前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択する
ことをコンピュータが実行する情報処理方法。
【請求項１４】
楽曲を構成する複数の楽譜音符を記憶するステップと、
前記楽曲の演奏により生成される複数の演奏音符を入力するステップと、
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定するステップと、
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択するステップと、
前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出するステップと、
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定するステップと、
前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出するステップと、
前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択するステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏者が楽曲を演奏するときの演奏位置を検出可能な情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、楽曲を演奏する演奏者の演奏位置を検出するための技術が知られている。例えば特許文献１には、演奏者が演奏ミスをしても、演奏位置を速やかに特定できる演奏位置検出装置について開示されている。
【０００３】
特許文献１に記載の検出方法では、入力された音響信号から１つ以上の音階が特定される。そして時系列に配列された１つ以上の音階を含む演奏配列が作成される。一方フラッシュメモリには、演奏順に配列された音符の音階を含む楽譜配列が記憶されている。記憶されている楽譜配列の中から、演奏配列に含まれる音階の数と同じ数の音階を含む、複数の参照配列が選択される。そして演奏配列が、選択された参照配列であろう尤度が、参照配列ごとに算出される。各参照配列の中から最尤度を有する参照配列が特定され、特定された参照配列の最後の音階の位置が演奏位置として決定される（特許文献１の明細書段落［０００９］等）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２３８６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
演奏位置の検出としては、典型的には特許文献１に記載のように、演奏により入力された音符に対応する楽譜上の音符を検出する方法が用いられる。
【０００６】
例えば、入力された演奏音符に対応する楽譜上の音符の検出方法として、１つ１つ入力された音符に対して、順次楽譜上の音符をあてはめる方法が考えられる。しかしながらこの方法が用いられた場合、ミスタッチによる音符の弾き損ねや余分な音の演奏等があると、正確な検出は非常に難しくなる。
【０００７】
また入力された順に楽譜上の音符があてはめられる場合には、楽譜音符があらかじめ１音ずつ定められた順番で並んでいることを前提としているため、認識できるのは単音の演奏のみとなり、和音を含む演奏に対応することが難しい。
【０００８】
以上のような事情に鑑み、本発明の目的は、和音が演奏される場合や演奏中にミスタッチが生じた場合でも、演奏位置を高い精度で検出可能な情報処理装置、情報処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一形態に係る情報処理装置は、記憶部と、入力部と、設定部と、第１の選択部と、第１の算出部と、判定部と、第２の算出部と、第２の選択部とを具備する。
前記記憶部は、楽曲を構成する複数の楽譜音符を記憶する。
前記入力部は、前記楽曲の演奏により生成される複数の演奏音符を入力する。
前記設定部は、前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定する。
前記第１の選択部は、前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択する。
前記第１の算出部は、前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出する。
前記判定部は、前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定する。
前記第２の算出部は、前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出する。
前記第２の選択部は、前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択する。
【００１０】
この情報処理装置では、候補対応音符が最適対応音符であると仮定された場合の最大個別音符一致度が、周辺演奏音符ごとに判定される。そして当該最大個別音符一致度をもとに、検出対象音符と候補対応音符との音符一致度が算出される。これにより検出対象音符に対応する最適対応音符を精度よく選択することが可能となる。また周辺演奏音符を俯瞰的にとらえて音符一致度が算出されるので、演奏中にミスタッチが生じた場合でも、高い精度で最適対応音符を検出することができる。また和音が演奏される場合でも、当該和音を構成する演奏音符及び楽譜音符の１つ１つを独立した音符として処理することが可能である。この結果、単音での演奏であろうと和音での演奏であろうと高い精度で演奏位置を検出することができる。
【００１１】
前記複数の楽譜音符の各々は、所定の時点を基準とした時間軸である楽譜時間軸上において、前記楽譜音符に対する演奏のタイミングを示す時刻である楽譜時刻を有してもよい。この場合、前記複数の演奏音符の各々は、前記所定の時点に対応する時点を基準とした、前記演奏音符を生成する演奏が行われた時刻である演奏時刻を有してもよい。また前記第１の算出部は、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻を基準として、前記周辺演奏音符の演奏時刻と前記楽譜音符の楽譜時刻との一致度である時刻一致度を算出し、その算出された時刻一致度をもとに前記個別音符一致度を算出してもよい。
このように時刻一致度が用いられることで、個別一致度を高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【００１２】
前記情報処理装置は、さらに、前記複数の周辺演奏音符の各々が有する前記演奏時刻を、前記検出対象音符の前記演奏時刻と前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻とをもとに、前記楽譜時間軸上の時刻である第１の変換時刻にそれぞれ変換する第１の変換部を具備してもよい。この場合、前記第１の算出部は、前記第１の変換時刻をもとに前記時刻一致度を算出してもよい。
このように第１の変換時刻が用いられることで、高い精度で時刻一致度を算出することができる。この結果、高精度の位置検出が実現される。
【００１３】
前記記憶部は、前記複数の楽譜音符に対する演奏のテンポを表す楽譜テンポを記憶してもよい。この場合、前記第１の変換部は、前記検出対象音符に応じた演奏テンポを算出するテンポ算出部を有し、前記検出対象音符の前記演奏時刻及び前記周辺演奏音符の前記演奏時刻の差と、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻と、前記楽譜テンポ及び前記演奏テンポの比とをもとに、前記第１の変換時刻を算出してもよい。
テンポの情報をもとに時刻の変換が行われることで高精度の位置検出が可能となる。
【００１４】
前記情報処理装置は、さらに、前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備してもよい。この場合、前記テンポ算出部は、前記検出対象音符の前記演奏時刻の直前のビート演奏時刻を含む複数のビート演奏時刻をもとに、前記演奏テンポを算出してもよい。
ビート楽譜時刻及びビート演奏時刻が用いられることで、高い精度で演奏テンポを算出することが可能となる。
【００１５】
前記第１の変換部は、前記周辺演奏音符の前記演奏時刻に最も近い前記ビート演奏時刻及び前記検出対象音符の前記演奏時刻の差と、前記最も近いビート演奏時刻に対応する前記ビート楽譜時刻及び前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻の差との比を用いて、前記第１の変換時刻を算出してもよい。
このようにビート楽譜時刻及びビート演奏時刻を用いて第１の変換時刻が算出されてもよい。この結果、高い精度で時刻一致度を算出することが可能となる。
【００１６】
前記情報処理装置は、さらに、前記検出対象音符の前記演奏時刻を、前記楽譜時間軸上の時刻である第２の変換時刻に変換する第２の変換部を具備してもよい。この場合、前記第１の選択部は、前記第２の変換時刻を基準とする所定時間の範囲内に含まれる複数の楽譜音符を、前記複数の候補対応音符として選択してもよい。
これにより複数の候補対応音符を効率よく選択することが可能となる。
【００１７】
前記情報処理装置は、さらに、前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備してもよい。この場合、前記第２の変換部は、前記直前の前記ビート演奏時刻と前記直前のビート演奏時刻に対応する前記ビート楽譜時刻とをもとに、前記第２の変換時刻を算出してもよい。
このようにビート楽譜時刻及びビート演奏時刻を用いて第２の変換時刻が算出されてもよい。
【００１８】
前記第１の算出部は、確率分布関数を用いて前記時刻一致度を算出してもよい。
確率分布関数を用いることで高い精度で時刻一致度を算出することができる。
【００１９】
前記確率分布関数は、前記周辺演奏音符の前記演奏時刻及び前記検出対象音符の前記演奏時刻の差をもとに生成されてもよい。
これにより時刻一致度の算出精度を向上させることができる。
【００２０】
前記複数の楽譜音符の各々は、楽譜音高を有してもよい。この場合、前記複数の演奏音符の各々は、演奏音高を有してもよい。また前記第１の算出部は、前記周辺演奏音符の演奏音高と前記楽譜音符の楽譜音高との一致度である音高一致度を算出し、その算出された音高一致度と前記時刻一致度とをもとに、前記個別音符一致度を算出してもよい。
このように時刻一致度と音高一致度とが用いられることで、個別一致度を高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【００２１】
前記第１の算出部は、確率分布関数を用いて前記音高一致度を算出してもよい。
確率分布関数を用いることで高い精度で音高一致度を算出することができる。
【００２２】
本発明の一形態に係る情報処理方法は、コンピュータにより実行される情報処理方法であって、楽曲を構成する複数の楽譜音符を記憶することを含む。
前記楽曲の演奏により生成される複数の演奏音符が入力される。
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符が設定される。
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符が選択される。
前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度が算出される。
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度が判定される。
前記検出対象音符と前記候補対応音符との一致度である音符一致度が、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出される。
前記複数の候補対応音符の中から、前記音符一致度が最大となるものが前記最適対応音符として選択される。
【００２３】
本発明の一形態に係るプログラムは、コンピュータに以下のステップを実行させる。
楽曲を構成する複数の楽譜音符を記憶するステップ。
前記楽曲の演奏により生成される複数の演奏音符を入力するステップ。
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定するステップ。
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択するステップ。
前記選択された複数の候補対応音符の中の１つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出すステップ。
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定するステップ。
前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出するステップ。
前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択するステップ。
【発明の効果】
【００２４】
以上のように、本発明によれば、和音が演奏される場合や演奏中にミスタッチが生じた場合でも、演奏位置を高い精度で検出することが可能となる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２５】
【図１】一実施形態に係る演奏認識装置のハードウェア構成例を示すブロック図である。
【図２】演奏認識装置の機能的な構成例を示すブロック図である。
【図３】楽譜時刻及び演奏時刻について説明するための図である。
【図４】マッチング部の詳細な構成例を示すブロック図である。
【図５】演奏認識装置の動作例を示すフローチャートである。
【図６】楽譜マッチングの一例を示すフローチャートである。
【図７】図６に示すフローチャートを説明するための模式的な図である。
【図８】音符一致度算出の一例を示すフローチャートである。
【図９】図８に示すフローチャートを説明するための模式的な図である。
【図１０】最大個別音符一致度算出の一例を示すフローチャートである。
【図１１】図１０に示すフローチャートを説明するための模式的な図である。
【図１２】個別音符一致度算出の一例を示すフローチャートである。
【図１３】図１２に示すフローチャートを説明するための模式的な図である。
【図１４】周辺演奏音符の演奏時刻を第１の変換時刻に変換する方法の、他の実施形態を説明するための模式的な図である。
【図１５】時刻一致度を算出するための第２の確率分布関数の生成に関する、他の実施形態を説明するための模式的な図である。
【発明を実施するための形態】
【００２６】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００２７】
［演奏認識装置の構成］
図１は、本発明の一実施形態に係る情報処理装置として機能する演奏認識装置のハードウェア構成例を示すブロック図である。演奏認識装置としては、例えばＰＣ（Personal Computer）等のコンピュータが用いられる。
【００２８】
演奏認識装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、入出力インタフェース１０５、及び、これらを互いに接続するバス１０４を備える。
【００２９】
入出力インタフェース１０５には、表示部１０６、操作部１０７、記憶部１０８、通信部１０９、ドライブ部１１０、Ｉ／Ｆ（インタフェース）部１１２等が接続される。
【００３０】
表示部１０６は、例えば液晶、ＥＬ（Electroluminescence）等を用いた表示デバイスである。操作部１０７は、例えばキーボード、ポインティングデバイス、その他の操作装置である。操作部１０７がタッチパネルを含む場合、そのタッチパネルは表示部１０６と一体となり得る。
【００３１】
記憶部１０８は、不揮発性の記憶デバイスであり、例えばＨＤＤ（Hard Disk Drive）、フラッシュメモリ、その他の固体メモリである。ドライブ部１１０は、例えば光学記録媒体、磁気記録テープ等、リムーバブルの記録媒体１１１を駆動することが可能なデバイスである。
【００３２】
通信部１０９は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等に接続可能な、他のデバイスと通信するためのモデム、ルータ、その他の通信機器である。通信部１０９は、有線及び無線のどちらを利用して通信するものであってもよい。
【００３３】
Ｉ／Ｆ部１１２は、シリアルまたはパラレル通信端子、ディスプレイ接続端子、又はネットワーク端子等の、他のデバイスや種々のケーブルを接続するためのインタフェースである。表示部１０６、操作部１０７、通信部１０９等が、Ｉ／Ｆ部１１２を介して演奏認識装置１００に接続されてもよい。
【００３４】
本実施形態では、Ｉ／Ｆ部１１２を介して、演奏認識装置１００に演奏データが入力される。そのために必要なインタフェースがＩ／Ｆ部１１２に接続されてもよい。
【００３５】
演奏認識装置１００による情報処理は、記憶部１０８またはＲＯＭ１０２等に記憶されたソフトウェアと、演奏認識装置１００のハードウェア資源との協働により実現される。具体的には、ＣＰＵ１０１が記憶部１０８等に記憶された、ソフトウェアを構成するプログラムをＲＡＭ１０３にロードして実行することにより、所定の情報処理が実行される。
【００３６】
プログラムは、例えば記録媒体１１１を介して演奏認識装置１００にインストールされる。またはネットワークを介してインストールが行われてもよい。
【００３７】
図２は、演奏認識装置１００の機能的な構成例を示すブロック図である。各ブロックは、電子回路等などハードウェアとして実装されてもよいし、コンピュータ上で動作するソフトウェアとして実装されてもよい。
【００３８】
演奏認識装置１００は、演奏データ入力部１２０と、演奏データ記録部１２１と、楽譜データ入力部１２３と、楽譜データ記録部１２４と、マッチング部１２５と、出力部１２６とを有する。
【００３９】
演奏データ入力部１２０は、例えば電子ピアノ等の電子楽器が演奏されることで出力される演奏データを受信する。演奏データは、例えばＭＩＤＩ（登録商標）（Musical Instrument Digital Interface）規格に基づいたデータであり、演奏された音のそれぞれについて、少なくとも音高及び時刻の情報を含む。その他、ベロシティ等の情報を含んでもよい。音高は演奏された音の高さであり、時刻は演奏された時刻である。またベロシティは、演奏された音の強弱を表し「押鍵速度」とも呼ばれる。
【００４０】
演奏データ入力部１２０は、受信した演奏データから、各演奏音についての音高、時刻、及びベロシティ等を取得して、演奏データ記録部１２１に記録する。なお演奏データは、ＭＩＤＩ（登録商標）データに限定されない。例えばマイク等から入力された演奏音や歌声等から上記した音高や時刻等が抽出されてもよい。
【００４１】
楽譜データ入力部１２３は、楽譜データ１２２を読み出して楽譜データ記録部１２４へ記録する。楽譜データ１２２は、例えばＭＩＤＩ（登録商標）ファイルの形式で記録されたデータであり、楽曲を構成する理想的な音符の配列を表すデータである。楽譜データ１２２は、各音符についての音高及び時刻の情報を少なくとも含む。その他、各音符についてのベロシティ等の情報を含んでもよい。また楽譜データ１２２は、音符を演奏すべきテンポの情報を含む。楽譜データ１２２は、例えば記録媒体１１１から読み出されてもよいし、ネットワーク上のサーバ等からダウンロードされてもよい。
【００４２】
本開示では、楽譜データ１２２に含まれる複数の音符データを、楽曲を構成する複数の楽譜音符と記載する。そして各楽譜音符が有する音高及び時刻の情報を、楽譜音高及び楽譜時刻と記載する。また演奏すべきテンポの情報を、複数の楽譜音符に対する演奏のテンポを示す楽譜テンポと記載する。
【００４３】
また演奏データに含まれる複数の演奏音のデータを、楽曲の演奏により生成される複数の演奏音符と記載する。そして各演奏音符が有する音高及び時刻の情報を、演奏音高及び演奏時刻と記載する。
【００４４】
図３は、楽譜時刻及び演奏時刻について説明するための図である。楽譜時刻は、所定の時点としての原点Ｏ１を基準とした時間軸である楽譜時間軸Ａ１上において、楽譜音符１０に対する演奏のタイミングを示す時刻である。原点Ｏ１は、典型的には、演奏を開始すべき時点であり、例えば楽譜の最初のビート（拍）の時点が設定される。なお楽譜時間軸の基準となる所定の時点として、その他の点が採用されてもよい。
【００４５】
例えば原点Ｏ１を０sec（秒）とする楽譜時間軸Ａ１が設定された場合、その楽譜時間軸Ａ１上の各楽譜音符１０を演奏すべき時刻が、楽譜時刻となる。楽譜時刻は、基準となる原点Ｏ１との時間的な差ともいえる。
【００４６】
演奏時刻は、楽譜時間軸Ａ１上の原点Ｏ１に対応する時点Ｏ２を基準とした、演奏音符１５を生成する演奏が行われた時刻である。原点Ｏ１として演奏を開始すべき時点が設定された場合、それに対応する時点Ｏ２としては、実際に演奏を開始した時点が設定される。例えば図３Ａに示すように、楽譜時間軸Ａ１上の原点Ｏ１に楽譜音符１０が存在する場合には、当該楽譜音符１０を演奏した時点が、原点Ｏ１に対応する時点Ｏ２となる。そして演奏開始時点を０secとする演奏時間軸Ａ２が設定される。また演奏開始時点を基準として、以後演奏が行われた時刻が、当該演奏により生成された演奏音符１５の演奏時刻となる。
【００４７】
例えばこのような設定により、原点Ｏ１及びこれに対応する時点Ｏ２をともに０secとする楽譜時間軸Ａ１及び演奏時間軸Ａ２がそれぞれ設定される。
【００４８】
図３Ｂに示すように、原点Ｏ１に楽譜音符１０が存在しない場合、メトロノーム等のガイドＧが出力されてもよい。この場合、ガイドされる時点（Ｏ１及びＯ２）が０secとなるように、楽譜時間軸Ａ１と演奏時間軸Ａ２とがそれぞれ設定されればよい。
【００４９】
楽譜時刻は、抽象的な時間の情報であり、楽譜音符１０は楽譜時間軸Ａ１上にあらかじめ決められた間隔で配置される。例えば、毎分１５０拍のテンポで毎拍ごとに配置された音符は正確に４００msecの間隔で並んでいる。一方、演奏時刻は、実時間に即して設定されるものであり、各演奏音符１５はユーザの演奏に応じて演奏時間軸Ａ２上に揺らぎを含んだ時刻を持って配置される。なお、本実施形態における「１拍」の時間は例えば四分音符の時間であるがこれに限定されず、八分音符や十六分音符など様々な時間であってもよい。
【００５０】
楽譜時間軸Ａ１の基準となる上記の所定の時点が、ユーザにより設定可能であってもよい。例えば曲の途中のビートや所定の楽譜音符の楽譜時刻が、楽譜時間軸の基準となる所定の時点として設定されてもよい。この場合、その時点を演奏の開始時点として、本技術を適用することが可能となる。
【００５１】
マッチング部１２５は、演奏データ記録部１２１及び楽譜データ記録部１２４から音符データを取り出し、所定の演奏音符１５に対応する楽譜音符１０である最適対応音符を選択し、出力部１２６に出力する。本技術により、ユーザの演奏により入力された演奏音符１５に対応する最適対応音符をリアルタイムで検出することが可能である。
【００５２】
図４は、マッチング部１２５の詳細な構成例を示すブロック図である。マッチング部１２５は、検出対象音符設定部（設定部）１３０と、候補対応音符選択部（第１の選択部）１３１と、個別音符一致度算出部（第１の算出部）１３２と、最大個別音符一致度判定部（判定部）１３３と、音符一致度算出部（第２の算出部）１３４と、最適対応音符選択部（第２の選択部）１３５とを有する。またマッチング部１２５は、時刻変換部（第１の変換部、第２の変換部）１３６と、確率分布発生部１３７と、ビート判定部（ビート時刻算出部）１３８と、ビート履歴記録部１３９と、テンポ算出部１４０とを有する。
【００５３】
検出対象音符設定部１３０は、入力された複数の演奏音符１５の中から、対応する楽譜音符１０を検出する対象となる検出対象音符を設定する。典型的には、新たに入力された演奏音符１５が順次検出対象音符として設定される。これによりリアルタイムで、演奏位置を検出することができる。
【００５４】
候補対応音符選択部１３１は、設定された検出対象音符に対応する楽譜音符１０である最適対応音符の複数の候補として、複数の楽譜音符の中から複数の候補対応音符を選択する。
【００５５】
個別音符一致度算出部１３２は、選択された複数の候補対応音符の中の１つを最適対応音符と仮定した場合の、検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、複数の楽譜音符の各々との一致度である個別音符一致度を算出する。１つの周辺演奏音符に対して、複数の楽譜音符の各々に対応する複数の個別音符一致度が算出される。
【００５６】
最大個別音符一致度判定部１３３は、複数の周辺演奏音符の各々について、複数の楽譜音符１０の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定する。上記したように１つの周辺演奏音符に対して、複数の楽譜音符１０の各々に対応する複数の個別音符一致度が算出される。この複数の個別音符一致度の中の最大値が、最大個別音符一致度となる。
【００５７】
音符一致度算出部１３４は、検出対象音符と候補対応音符との一致度である音符一致度を算出する。音符一致度は、当該候補対応音符を最適対応音符と仮定した場合の、複数の周辺演奏音符の各々について判定された最大個別音符一致度をもとに算出する。
【００５８】
最適対応音符選択部１３５は、複数の候補対応音符の中から、音符一致度が最大となるものを最適対応音符として選択する。
【００５９】
時刻変換部１３６は、演奏音符１５が有する演奏時間軸Ａ２上の演奏時刻を、楽譜時間軸Ａ１上の時刻に変換する。本実施形態では、第１の変換部として機能する時刻変換部１３６により、複数の周辺演奏音符の各々が有する演奏時刻が、第１の変換時刻にそれぞれ変換される。また第２の変換部として機能する時刻変換部１３６により、検出対象音符の演奏時刻が、第２の変換時刻に変換される。第１及び第２の変換時刻は、楽譜時間軸Ａ１上の時刻に変換された後の時刻である。
【００６０】
確率分布発生部１３７は、個別音符一致度を算出する際に用いられる確率分布関数を出力する。本実施形態では、音高一致度を算出するための第１の確率分布関数と、時刻一致度を算出するための第２の確率分布関数とが出力される。各確率分布関数は、記憶部１０８等に記憶されており、適宜読み出される。あるいは所定の確率分布関数がリアルタイムで生成されて出力されてもよい。
【００６１】
ビート判定部１３８は、楽譜時間軸Ａ１上のビートの時刻であるビート楽譜時刻と、そのビート楽譜時刻に対応するビート演奏時刻とを算出する。ビート楽譜時刻は楽譜時間軸Ａ１上の定まった時刻であり、ビート演奏時刻はそれに対応する演奏時間軸Ａ２上の時刻である。ビート楽譜時刻及びこれに対応するビート演奏時刻は、紐づけられてビート履歴記録部１３９に記録される。テンポ算出部１４０は、検出対象音符に応じた演奏テンポを算出する。
【００６２】
［演奏認識装置の動作］
図５は、演奏認識装置１００の動作例を示すフローチャートである。まず演奏データが入力されたか否かが判定される（ステップ１０１）。入力があった場合（ＹＥＳ）、新しく入力された演奏データ内の演奏音符１５が取得され、演奏データ記録部１２１に記録される（ステップ１０２）。
【００６３】
本実施形態では、入力された演奏音符１５が順次検出対象音符として設定され、演奏データ記録部１２１から読み出される。そしてマッチング部１２５により、楽譜マッチングが行われる（ステップ１０３）。この楽譜マッチングにより、楽譜データ記録部１２４に記録された複数の楽譜音符１０の中から、最適対応音符が検出される。
【００６４】
最適対応音符が検出された演奏音符１５については、その旨及びペアとなる楽譜音符１０の情報が、演奏データ記録部１２１に記録される。この情報は、ビート判定部１３８にも出力され、ビート判定に用いられる（ステップ１０４）。
【００６５】
ビート判定部１３８は、楽譜時間軸Ａ１上のビートの時刻であるビート楽譜時刻を算出する。典型的には、楽譜時間軸Ａ１上の原点Ｏ１を楽譜の最初のビート（拍）として、１拍分の時間（ビート間の時間）で割り切れる時刻が、ビート楽譜時刻として算出される。楽譜時間軸Ａ１の基準となる所定の時点がその他の時点に設定された場合でも、楽譜の拍子や楽譜テンポをもとに、ビート楽譜時刻は算出可能である。
【００６６】
ビート判定部１３８は、最適対応音符として選択された楽譜音符１０が、ビートの位置に存在するビート楽譜音符であるか否か判定する。この判定は、判定対象となる楽譜音符１０の楽譜時刻と、上記したビート楽譜時刻とが比較されることで行われる。両者が一致する場合には、判定対象となる楽譜音符１０がビート楽譜音符として判定される。そしてビート楽譜音符と判定された楽譜音符１０を最適対応音符とする演奏音符１５が、ビート演奏音符として判定され、その演奏時刻がビート演奏時刻として算出される。ビート楽譜時刻及びビート演奏時刻のペアは、ビート履歴記録部１３９に記録される。
【００６７】
なおビートの位置に存在する音符が和音の場合には、その和音を構成する複数の楽譜音符１０の全てがビート楽譜音符となる。そしてこれらの楽譜音符１０とそれぞれペア（演奏音符及び最適対応音符のペア）となる、和音として演奏された複数の演奏音符１５がビート演奏音符となる。和音を構成するビート楽譜音符の楽譜時刻は互いに完全に一致する。しかしながら和音を構成する複数のビート演奏音符は、微妙にずれて演奏されるので、各演奏時刻は互いに異なるものとなる。このように複数の演奏音符１５がともにビート演奏音符と判定された場合には、各ビート演奏音符の演奏時刻の平均値が、ビート演奏時刻として記録される。
【００６８】
ビート履歴記録部１３９に、ビート楽譜時刻及びビート演奏時刻のペアが記録されると、テンポ算出部１４０により、その情報をもとに演奏テンポが算出される（ステップ１０６）。本実施形態では、記録されたビート演奏時刻までの過去ｎ拍分のビート演奏時刻をもとに演奏テンポが算出される。
【００６９】
具体的には、過去ｎ拍分のビート演奏音符が演奏されるのにかかった時間を拍数ｎで除算することで１拍分の平均時間が算出され、この値で１分（６０秒）を除算することによって演奏テンポ（ＢＰＭ：Beats Per Minute）が算出される。過去ｎ拍分のｎの値は限定されず、１以上の値が適宜設定される。
【００７０】
演奏テンポは、ビート履歴記録部１３９にビート楽譜時刻及びビート演奏時刻のペアが記録されるたびに算出される。そして次に新しい演奏テンポが算出されるまではその値が利用される。このようにビート履歴記録部１３９に記録されたビート楽譜時刻及びビート演奏時刻が用いられることで、高い精度で演奏テンポを算出することが可能となる。
【００７１】
本実施形態において、「検出対象音符２０に応じた演奏テンポ」とは、検出対象音符２０が入力された際に、上記のようにして算出されている演奏テンポを意味する。従って「検出対象音符２０に応じた演奏テンポ」は、検出対象音符２０の演奏時刻の直前のビート演奏時刻までの過去ｎ拍分のビート演奏時刻をもとに算出される。すなわちテンポ算出部１４０は、検出対象音符２０の演奏時刻の直前のビート演奏時刻を含む複数のビート演奏時刻をもとに、「検出対象音符２０に応じた演奏テンポ」を算出する。
【００７２】
ビートの判定は、演奏データの入力がない場合でも一定時間間隔で呼び出される（ステップ１０１のＮｏからステップ１０５のＹｅｓ）。例えば休符が続く場合や、演奏すべき音符をユーザが弾き損なってしまう場合等により、数拍分すなわち複数のビートにわたって演奏音符が入力されない場合があり得る。本実施形態では、そのような場合でも、ビート楽譜時刻に対応するビート演奏時刻を算出することができる。
【００７３】
本実施形態では、ビート楽譜時刻及びビート演奏時刻が記録されると、それぞれに１拍分の時間を加えた次のビート楽譜時刻と次の推定ビート演奏時刻が算出される。具体的には、記録されたビート楽譜時刻に楽譜テンポから算出された１拍分の時間を加えた時刻が、次のビート楽譜時刻として算出される。また記録されたビート演奏時刻に演奏テンポから算出された１拍分の時間を加えた時刻が、次の推定ビート演奏時刻として算出される。
【００７４】
その後、算出された推定ビート演奏時刻の時間的周辺で次の演奏音符が入力されない場合には、推定ビート演奏時刻が次のビート演奏時刻として、またそれに対応するビート楽譜時刻が次のビート楽譜時刻としてビート履歴部１３９に記録される（図１４の白丸Ｔ２）。
【００７５】
このように本実施形態では、ビートの位置に楽譜音符が存在しない場合、あるいは存在するが演奏が入力されなかった場合でも、ビート楽譜時刻及びビート演奏時刻のペアが算出されて記録される。各ビートにおいてこれらのペアが記録されるので、ビート履歴に基づいた演奏時刻から楽譜時刻への変換を高い精度で行うことができる。
【００７６】
なお演奏テンポの算出方法は限定されず、他の方法が用いられてもよい。例えばビート履歴を使わず、複数の演奏音符の時刻とそれに対応づけられた楽譜音符の時刻から１拍あたりの時間を導くことによって演奏テンポを算出してもよい。また「検出対象音符に応じた演奏テンポ」の算出についても、上記した方法とは異なる方法が用いられてもよい。
【００７７】
ステップ１０５にて、一定時間が経過していないと判定された場合（Ｎｏ）、最後の楽譜音符が有する楽譜時刻が経過したか否かが判定される（ステップ１０７）。終了していないと判定された場合は（Ｎｏ）、ステップ１０１に戻る。終了したと判定された場合は（Ｙｅｓ）、処理を終了する。
【００７８】
図６は、楽譜マッチングの一例を示すフローチャートである。図７は、このフローチャートを説明するための模式的な図である。まず検出対象音符２０の演奏時刻が、楽譜時間軸Ａ１上の第２の変換時刻Ｒ2に変換される（ステップ２０１）。本実施形態では、検出対象音符２０の演奏時刻と、直前のビート演奏時刻と、直前のビート演奏時刻に対応するビート楽譜時刻とをもとに、以下の式により、第２の変換時刻Ｒ2が算出される。
【００７９】
【数１】
2015215455.tif 000003
【００８０】
Ｒ2 …第２の変換時刻
Ｔorg …検出対象音符２０の演奏時刻
Ｔbeat …直前のビート演奏時刻
Ｒbeat …直前のビート楽譜時刻
ＴｅｍｐｏＳ…演奏テンポ
ＴｅｍｐｏＲ…楽譜テンポ
【００８１】
すなわち第２の変換時刻Ｒ2は、検出対象音符２０の演奏時刻及び直前のビート演奏時刻の差と、直前のビート楽譜時刻と、楽譜テンポ及び演奏テンポの比とをもとに算出可能である。なお第２の変換時刻Ｒ2の算出方法は限定されず、例えばビート演奏時刻、ビート楽譜時刻の代わりに、対応が取れている他の演奏時間軸上の時刻、楽譜時間軸上の時刻を使って算出されてもよい。例えば原点Ｏ１及び時点Ｏ２の組や、入力された演奏音符及びそれに対応付けられた楽譜音符の時刻の組等を使って、第２の変換時刻Ｒ2が算出されてもよい。
【００８２】
次に複数の候補対応音符２５が選択される。本実施形態では、変換された後の第２の変換時刻Ｒ2を基準とする所定時間の範囲Ｌ内に含まれる複数の楽譜音符１０が、複数の候補対応音符２５として選択される。所定時間の範囲Ｌは、例えば±１secの範囲であるが、これに限定されない。図６では、楽譜音符１０が１つずつ取得され（ステップ２０２）、取得された楽譜音符１０の楽譜時刻と、第２の変換時刻Ｒ2との差が一定値以内か否かが判定される（ステップ２０３）。このようにして複数の候補対応音符２５が選択されてもよい。
【００８３】
なお図７では、所定時間の範囲Ｌ内に和音を構成する音符１０ａ及び１０ｂが含まれている。このように和音を構成する音符１０ａ及び１０ｂも、その１つ１つが独立した楽譜音符１０として処理される。すなわちこれらの楽譜音符１０ａ及び１０ｂは、楽譜時刻が一致し、かつ楽譜音高が異なるもの同士となる。和音が演奏されて生成される複数の演奏音符１５も、１つ１つが独立した演奏音符１５として処理される。そして各演奏音符１５が順次検出対象音符２０として設定され、最適対応音符の検出が実行される。
【００８４】
候補対応音符２５ごとに、音符一致度が算出される（ステップ２０４）。音符一致度は、当該候補対応音符２５を最適対応音符と仮定した場合に算出される評価値である。この音符一致度の算出については、後に詳しく説明する。
【００８５】
候補対応音符２５ごとに算出された音符一致度は、その最大値が記録される。そしてこれまでよりも大きい値が算出された場合には、最大音符一致度が更新される。（ステップ２０５、ステップ２０６）。全ての楽譜音符１０について処理が終わったら（ステップ２０７のＹｅｓ）、最大音符一致度を与える候補対応音符２５が、最適対応音符として出力される（ステップ２０８）。
【００８６】
なお最大音符一致度に関して閾値が設定されてもよい。最大音符一致度が閾値を超えない場合には、検出対象音符に対応する最適対応音符はない旨の信号が出力される。これにより例えばミスタッチにより生成される演奏音符や、ユーザのアドリブによる楽譜にない音符の演奏等に十分に対応することが可能となる。
【００８７】
図８は、音符一致度算出（ステップ２０４）の一例を示すフローチャートである。図９は、このフローチャートを説明するための模式的な図である。この処理は、候補対応音符２５のうちの１つが最適対応音符であると仮定された状態で実行される処理である。
【００８８】
まず合計値レジスタが０にリセットされる（ステップ３０１）。検出対象音符２０に時間的に最も近い演奏音符１５ａがひとつ取得される（ステップ３０２）。本実施形態では、新しく入力される演奏音符１５が検出対象音符２０として設定されるので、最も近い演奏音符１５ａとして、過去に入力された演奏音符１５が取得される。
【００８９】
取得された演奏音符１５ａについて、最大個別音符一致度Ｄ１が算出される（ステップ３０３）。算出された最大個別音符一致度Ｄ１は、合計値レジスタに加算される（ステップ３０４）。なお最大個別音符一致度Ｄ１は、最適対応音符であると仮定された候補対応音符２５を基準として、演奏音符１５ａと楽譜音符１０との間で算出される個別音符一致度の最大値である。最大個別音符一致度Ｄ１が算出された楽譜音符１０は、取得された演奏音符１５ａに対応する個別対応音符３０となる。
【００９０】
図９では、矢印Ｚ１により、演奏音符１５と個別対応音符３０とのペアが表現されている。また矢印Ｚ２により、検出対象音符２０と、最適対応音符であると仮定された候補対応音符２５とのペアが表現されている。
【００９１】
一定数の演奏音符１５を処理したか否かが判定され、満たしていない場合には（ステップ３０５のＮｏ）、ステップ３０２に戻る。そしてすでに取得された演奏音符１５を除いた中で、検出対象音符２０に最も近い演奏音符１５ａが取得される。このように時間的に近い順で演奏音符１５が取得され、各演奏音符１５について最大個別音符一致度Ｄ１が算出される。一定数の演奏音符１５が処理された場合は（ステップ３０５のＹｅｓ）、合計値レジスタの値が音符一致度Ｄ２として出力される（ステップ３０６）。
【００９２】
図８に示す処理例では、検出対象音符２０に近い順に所定の数の演奏音符１５が取得された。これら取得された所定の数の演奏音符１５が、本実施形態に係る周辺演奏音符３５に相当する。周辺演奏音符３５は、検出対象音符２０の時間的周辺に位置する演奏音符１５であり、その選択方法は限定されない。図８に示すような方法の他、例えば検出対象音符２０の演奏時刻を基準とする所定時間の範囲内に含まれる複数の演奏音符１５が、周辺演奏音符３５として選択されてもよい。
【００９３】
また図８に示す処理例では、周辺演奏音符３５について算出された最大個別音符一致度Ｄ１の総和が音符一致度Ｄ２として出力された。これに限定されず、最大個別音符一致度Ｄ１をすべて乗じた値や、平均値等が音符一致度Ｄ２として出力されてもよい。
【００９４】
図１０は、最大個別音符一致度算出（ステップ３０３）の一例を示すフローチャートである。図１１は、このフローチャートを説明するための模式的な図である。この処理は、周辺演奏音符３５が１つ選択された状態で実行される処理である。例えば図１１に示す周辺演奏音符３５が選択された状態であるとする。
【００９５】
まず、楽譜音符１０が１つ取得される（ステップ４０１）。周辺演奏音符３５と楽譜音符１０との個別音符一致度が算出される（ステップ４０２）。図１１に示すように、各楽譜音符１０との間で個別音符一致度が算出され、その最大値が記録（更新）される（ステップ４０３、ステップ４０４）。全ての楽譜音符１０について処理が終わったら（ステップ４０５のＹｅｓ）、最大個別音符一致度Ｄ１が出力される（ステップ４０６）。
【００９６】
なお最大個別音符一致度Ｄ１に関して閾値が設定されてもよい。最大個別音符一致度Ｄ１が閾値を超えない場合には、個別対応音符３０はない旨の信号が出力される。これにより明らかに対応してない音符同士の評価値（個別音符一致度）を除外することができる。
【００９７】
また全ての楽譜音符１０との間で個別音符一致度が算出されるので、最適対応音符であると仮定された候補対応音符２５との間でも個別音符一致度が算出される。その個別音符一致度が最大となる場合には、その値が最大個別音符一致度Ｄ１となる。
【００９８】
また１つの楽譜音符１０が、複数の異なる周辺演奏音符３５に対する個別対応音符となる場合もあり得る。すなわち本技術では、最大個別音符一致度Ｄ１を与える個別対応音符の重複が許容されている。これによりユーザのミスタッチが発生した場合でも、高い精度で演奏位置を検出することが可能となる。
【００９９】
図１２は、個別音符一致度算出（ステップ４０２）の一例を示すフローチャートである。図１３は、このフローチャートを説明するための模式的な図である。この処理は、算出の対象となる周辺演奏音符３５と、楽譜音符１０とがそれぞれ選択された状態で行われる。例えば図１３に示す周辺演奏音符３５と、楽譜音符１０とが選択された状態であるとする。
【０１００】
個別音符一致度を算出するために、本実施形態では、周辺演奏音符３５の演奏時刻と楽譜音符１０の楽譜時刻との一致度である時刻一致度が算出される。また周辺演奏音符３５の演奏音高と楽譜音符１０の楽譜音高との一致度である音高一致度が算出される。
【０１０１】
これらの算出のために、まず第１の確率分布関数ｆ1（ｘ）と、第２の確率分布関数ｆ2（ｘ）とが読み出される、あるいは生成される（ステップ５０１）。第１の確率分布関数ｆ1（ｘ）は音高一致度を算出するための関数である。また第２の確率分布関数ｆ2（ｘ）は、時刻一致度（タイミング一致度）を算出するための関数である。確率分布関数としては、以下に示すガウシアン関数が用いられる。
【０１０２】
【数２】
2015215455.tif 000004
【０１０３】
第１及び第２の確率分布関数ｆ1（ｘ）及びｆ2（ｘ）として、標準偏差σが適宜設定されたものが用いられる。なお他の確率分布関数が用いられてもよい。
【０１０４】
演奏の対象となる楽譜音符１０に対し、対応する演奏音符が実際に入力される確率は、楽譜音符１０の楽譜時刻に対応する演奏時間軸上の時刻にて最も高くなり、また楽譜音符１０の楽譜音高にて最も高くなると考えられる。そしてそれらの時刻及び音高からのずれが大きくなるほど、当該楽譜音符１０に対応する演奏音符が入力される確率は小さくなる。すなわち、時刻及び音高のずれが小さいほど楽譜音符１０と演奏音符１５は対応するペアである可能性が高く、ずれが大きいほど対応する可能性は低くなる。これらのことを鑑み、確率分布関数から導かれる音高及び時刻のずれに応じた出現確率を、演奏音符１５と楽譜音符１０との一致度を表す評価値として用いる。確率分布関数を用いることで、高い精度で簡単に音高一致度及び時刻一致度をそれぞれ算出することができる。
【０１０５】
さらに時刻一致度を算出するために、周辺演奏音符３５の演奏時刻が、第１の変換時刻Ｒ1に変換される（ステップ５０２）。この変換は、検出対象音符２０の演奏時刻と最適対応音符であると仮定された候補対応音符２５の楽譜時刻とをもとに実行される。具体的には、第１の変換時刻Ｒ1は、以下の式で算出される。
【０１０６】
【数３】
2015215455.tif 000005
【０１０７】
Ｒ1 …第１の変換時刻
Ｔ…周辺演奏音符３５の演奏時刻
Ｔorg …検出対象音符２０の演奏時刻
Ｒorg …候補対応音符２５の楽譜時刻
ＴｅｍｐｏＳ…演奏テンポ
ＴｅｍｐｏＲ…楽譜テンポ
【０１０８】
すなわち第１の変換時刻Ｒ1は、検出対象音符２０の演奏時刻及び周辺演奏音符３５の演奏時刻の差と、最適対応音符であると仮定された候補対応音符２５の楽譜時刻と、楽譜テンポ及び演奏テンポの比とをもとに算出可能である。
【０１０９】
従って第１の変換時刻Ｒ1は、最適対応音符であると仮定された候補対応音符２５が変更されると、それに伴って変化する値となる。この点が、最適対応音符であると仮定された候補対応音符２５の楽譜時刻を基準として時刻一致度を算出するという点に対応する。本技術では、第１の変換時刻Ｒ1を用いて時刻一致度を高い精度で算出することができる。
【０１１０】
なお上記で説明した実施形態では、周辺演奏音符３５と楽譜音符１０との間の個別音符一致度を全ての楽譜音符１０に対して計算しているが、第１の変換時刻Ｒ1を基準とする所定時間の範囲内に含まれる楽譜音符１０に対してのみ計算してもよい。
【０１１１】
音高一致度及び時刻一致度が算出される（ステップ５０３）。音高一致度Ｓnは、以下の式で算出される。
【０１１２】
【数４】
2015215455.tif 000006
【０１１３】
Ｓnmax …音高が完全に一致した場合の一致度
ｄn …音高の差
σn …音高一致度算出のために設定された標準偏差
【０１１４】
時刻一致度Ｓtは、以下の式で算出される。
【０１１５】
【数５】
2015215455.tif 000007
【０１１６】
Ｓtmax …時刻が完全に一致した場合の一致度
ｄt …時刻の差（第１の変換時刻Ｒ1と楽譜時刻との差）
σt …時刻一致度算出のために設定された標準偏差
【０１１７】
これら算出された音高一致度Ｓn及び時刻一致度Ｓtをもとに、個別音符一致度Ｓが算出される（ステップ５０４）。個別音符一致度Ｓは、例えば以下の式により算出される。
【０１１８】
【数６】
2015215455.tif 000008
【０１１９】
個別音符一致度Ｓの算出方法として、音高一致度Ｓn及び時刻一致度Ｓtの和や、その他の演算が用いられてもよい。音高一致度Ｓn及び時刻一致度Ｓtが用いられることで、個別音符一致度Ｓを高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【０１２０】
以上、本技術に係る演奏認識装置１００では、候補対応音符２５の１つが最適対応音符であると仮定され、その仮定のもとに、複数の周辺演奏音符３５の各々について、最大個別音符一致度Ｄ１が判定される。そして当該最大個別音符一致度Ｄ１をもとに、検出対象音符２０と候補対応音符２５との音符一致度Ｄ２が算出される。これにより検出対象音符２０に対応する最適対応音符を精度よく選択することが可能となる。この結果、演奏位置を高い精度で検出することが可能となる。
【０１２１】
図７等にも示すように、検出対象音符２０の演奏時刻が楽譜時間軸Ａ１上の第２の変換時刻Ｒ2に変換されるので、演奏上のテンポの揺れ等に関わらず、最適対応音符を精度よく検出することが可能となる。
【０１２２】
対応する楽譜音符の検出方法として、１つ１つ入力された演奏音符に対して、順次楽譜音符をあてはめる方法が用いられた場合、ミスタッチによる音符の弾き損ねや余分な音の演奏等があると、正確な検出は非常に難しい。本技術では、複数の周辺演奏音符３５の各々について最大個別音符一致度Ｄ１が判定され、それをもとに音符一致度Ｄ２が算出される。すなわち周辺の演奏音符１５を俯瞰的にとらえて音符一致度Ｄ２が算出される。この結果、演奏中にミスタッチが生じた場合でも、高い精度で最適対応音符を検出することができる。
【０１２３】
また入力された順に楽譜音符があてはめられる場合には、楽譜音符があらかじめ１音ずつ定められた順番で並んでいることを前提としているため、認識できるのは単音の演奏のみとなり、和音を含む演奏に対応することが難しい。これに対して本技術では、和音を構成する演奏音符１５及び楽譜音符１０の１つ１つが全て独立した音符として処理される。この結果、単音での演奏であろうと和音での演奏であろうと高い精度で演奏位置を検出することができる。
【０１２４】
検出された最適対応音符の情報は、例えばディスプレイ等に表示された楽譜上の演奏位置を示す場合や、自動的に楽譜のページを更新する譜めくり等のために用いられる。またユーザの演奏に同期させて、映像、音声、静止画像、文字を表示する場合にも用いられる。またユーザの演奏に合わせて、楽曲の他のパートの自動演奏等を実行する場合にも用いられる。
【０１２５】
例えば本技術に用いることで、ユーザがアドリブでテンポを変動させたり、途中で楽譜にない音符のアドリブ演奏が行われたとしても、その演奏に同期させて高い精度で音声や映像等を出力させることができる。またユーザの演奏が途中でつっかえてしまった場合でも、バックの演奏は続けられ、ユーザはその演奏に合わせた位置から演奏を再開する、といったことも可能となる。
【０１２６】
＜その他の実施形態＞
本発明は、以上説明した実施形態に限定されず、他の種々の実施形態を実現することができる。
【０１２７】
図１４は、周辺演奏音符の演奏時刻を第１の変換時刻に変換する方法の、他の実施形態を説明するための模式的な図である。
【０１２８】
例えば図１４に示す周辺演奏音符３５の演奏時刻を楽譜時間軸Ａ１上の第１の変換時刻Ｒ1に変換するとする。またビート履歴記録部１３９には、ビート履歴として、ビート演奏音符４０ａの演奏時刻Ｔ１と、推定されたビート演奏時刻Ｔ２と、ビート演奏音符４０ｂの演奏時刻Ｔ３と、ビート演奏音符４０ｃの演奏時刻Ｔ４とが記録されているとする。なおビート演奏音符４０ａ、４０ｂ、４０ｃは、ビート楽譜音符４５ａ、４５ｂ、４５ｃとそれぞれペアとなっている。
【０１２９】
このような場合に、周辺演奏音符３５に最も近いビート演奏時刻Ｔ１と、それに対応するビート楽譜時刻を用いて、以下の式により、第１の変換時刻Ｒ1が算出されてもよい。
【０１３０】
【数７】
2015215455.tif 000009
【０１３１】
Ｒ1 …第１の変換時刻
Ｔ…周辺演奏音符３５の演奏時刻
Ｔorg …検出対象音符２０の演奏時刻
Ｒorg …候補対応音符２５の楽譜時刻
Ｔbeat …最も近いビート演奏時刻（Ｔ１）
Ｒbeat …最も近いビート楽譜時刻
【０１３２】
すなわち、周辺演奏音符３５の演奏時刻に最も近いビート演奏時刻Ｔ１及び検出対象音符２０の演奏時刻の差と、最も近いビート演奏時刻Ｔ１に対応するビート楽譜時刻及び最適対応音符であると仮定された候補対応音符２５の楽譜時刻の差との比を用いて、第１の変換時刻Ｒ1が算出されてもよい。ビート履歴の情報を用いることで、さらに精度よく第１の変換時刻Ｒ1を算出することが可能となる。この結果、時刻一致度の算出精度も向上する。
【０１３３】
図１５は、時刻一致度を算出するための第２の確率分布関数ｆ2（ｘ）の生成に関する、他の実施形態を説明するための模式的な図である。図１５に示すように、検出対象音符２０から時間的に離れた周辺演奏音符３５については、演奏テンポの揺らぎ等により、算出される時刻一致度が小さくなりすぎてしまう場合があり得る。従って周辺演奏音符３５の演奏時刻と、検出対象音符２０の演奏時刻との差が大きいほど、第２の確率分布関数確率分布関数ｆ2（ｘ）の標準偏差σtの値（分散σt 2の値）を大きくする。そして確率分布曲線の幅を大きくして、時刻のずれに対する許容度を上げる。これにより時刻一致度の値が小さくなりすぎてしまうことを防ぐことができる。
【０１３４】
このように周辺演奏音符３５の演奏時刻及び検出対象音符２０の演奏時刻の差をもとに、第２の確率分布関数ｆ2（ｘ）が生成されてもよい。
【０１３５】
上記では、時刻一致度及び音高一致度をもとに個別音符一致度が算出された。これに代えて、時刻一致度のみを用いて、これを個別音符一致度として算出してもよい。この場合、演奏音符の音高は考慮されないので、適当な鍵盤（例えば「ド」の鍵盤のみ）を指一本でリズミカルに叩くだけでそのテンポを検出し、機械が曲を演奏するというようなアプリケーションが可能となる。このアプリケーションにより、例えばピアノ等を弾けないユーザが自分の好きなテンポで曲を演奏することが可能となる。
【０１３６】
また、時刻と音高に加えて、演奏音符のベロシティ情報（鍵盤を叩く強さの情報）が用いられてもよい。個別音符一致度の算出にベロシティ情報も利用するようにすれば、例えばある程度の強さで弾いた演奏音符は一致度を大きめに、弱く弾いた演奏音符はミスタッチの可能性が高いので一致度を小さめに重み付けする、といったことが可能となる。この結果、高い精度での位置検出が可能となる。
【０１３７】
上記では、新しく入力される演奏音符が検出対象音符として設定されるので、周辺演奏音符として、過去に入力された演奏音符が選択された。しかしながら全ての演奏音符が演奏データ記録部に記録された後に、非リアルタイムで演奏位置が検出される場合等には、周辺演奏音符として、過去に入力された演奏音符のみならず、後に入力された演奏音符が選択されてもよい。
【０１３８】
電子ピアノ等の電子楽器に、上記で説明した演奏認識装置の機能が備えられてもよい。この場合、当該電子楽器が、本技術に係る情報処理装置として機能する。
【０１３９】
以上説明した各形態の特徴部分のうち、少なくとも２つの特徴部分を組み合わせることも可能である。また上記で記載した種々の効果は、あくまで例示であって限定されるものではなく、また他の効果が発揮されてもよい。
【符号の説明】
【０１４０】
Ａ１…楽譜時間軸
Ａ２…演奏時間軸
１０…楽譜音符
１５…演奏音符
２０…検出対象音符
２５…候補対応音符
３０…個別対応音符
３５…周辺演奏音符
４０…ビート演奏音符
４５…ビート楽譜音符
１００…演奏認識装置
１３０…検出対象音符設定部（設定部）
１３１…候補対応音符選択部（第１の選択部）
１３２…個別音符一致度算出部（第１の算出部）
１３３…最大個別音符一致度判定部（判定部）
１３４…音符一致度算出部（第２の算出部）
１３５…最適対応音符選択部（第２の選択部）
１３６…時刻変換部（第１の変換部、第２の変換部）
１３７…確率分布発生部
１３８…ビート判定部（ビート時刻算出部）
１３９…ビート履歴記録部
１４０…テンポ算出部
【図１】
2015215455.tif 000010
【図２】
2015215455.tif 000011
【図３】
2015215455.tif 000012
【図４】
2015215455.tif 000013
【図５】
2015215455.tif 000014
【図６】
2015215455.tif 000015
【図７】
2015215455.tif 000016
【図８】
2015215455.tif 000017
【図９】
2015215455.tif 000018
【図１０】
2015215455.tif 000019
【図１１】
2015215455.tif 000020
【図１２】
2015215455.tif 000021
【図１３】
2015215455.tif 000022
【図１４】
2015215455.tif 000023
【図１５】
2015215455.tif 000024