(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
演奏位置の検出としては、典型的には特許文献1に記載のように、演奏により入力された音符に対応する楽譜上の音符を検出する方法が用いられる。
【0006】
例えば、入力された演奏音符に対応する楽譜上の音符の検出方法として、1つ1つ入力された音符に対して、順次楽譜上の音符をあてはめる方法が考えられる。しかしながらこの方法が用いられた場合、ミスタッチによる音符の弾き損ねや余分な音の演奏等があると、正確な検出は非常に難しくなる。
【0007】
また入力された順に楽譜上の音符があてはめられる場合には、楽譜音符があらかじめ1音ずつ定められた順番で並んでいることを前提としているため、認識できるのは単音の演奏のみとなり、和音を含む演奏に対応することが難しい。
【0008】
以上のような事情に鑑み、本発明の目的は、和音が演奏される場合や演奏中にミスタッチが生じた場合でも、演奏位置を高い精度で検出可能な情報処理装置、情報処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の一形態に係る情報処理装置は、記憶部と、入力部と、設定部と、第1の選択部と、第1の算出部と、判定部と、第2の算出部と、第2の選択部とを具備する。
前記記憶部は、楽曲を構成する複数の楽譜音符を記憶する。
前記入力部は、前記楽曲の演奏により生成される複数の演奏音符を入力する。
前記設定部は、前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定する。
前記第1の選択部は、前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択する。
前記第1の算出部は、前記選択された複数の候補対応音符の中の1つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出する。
前記判定部は、前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定する。
前記第2の算出部は、前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出する。
前記第2の選択部は、前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択する。
【0010】
この情報処理装置では、候補対応音符が最適対応音符であると仮定された場合の最大個別音符一致度が、周辺演奏音符ごとに判定される。そして当該最大個別音符一致度をもとに、検出対象音符と候補対応音符との音符一致度が算出される。これにより検出対象音符に対応する最適対応音符を精度よく選択することが可能となる。また周辺演奏音符を俯瞰的にとらえて音符一致度が算出されるので、演奏中にミスタッチが生じた場合でも、高い精度で最適対応音符を検出することができる。また和音が演奏される場合でも、当該和音を構成する演奏音符及び楽譜音符の1つ1つを独立した音符として処理することが可能である。この結果、単音での演奏であろうと和音での演奏であろうと高い精度で演奏位置を検出することができる。
【0011】
前記複数の楽譜音符の各々は、所定の時点を基準とした時間軸である楽譜時間軸上において、前記楽譜音符に対する演奏のタイミングを示す時刻である楽譜時刻を有してもよい。この場合、前記複数の演奏音符の各々は、前記所定の時点に対応する時点を基準とした、前記演奏音符を生成する演奏が行われた時刻である演奏時刻を有してもよい。また前記第1の算出部は、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻を基準として、前記周辺演奏音符の演奏時刻と前記楽譜音符の楽譜時刻との一致度である時刻一致度を算出し、その算出された時刻一致度をもとに前記個別音符一致度を算出してもよい。
このように時刻一致度が用いられることで、個別一致度を高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【0012】
前記情報処理装置は、さらに、前記複数の周辺演奏音符の各々が有する前記演奏時刻を、前記検出対象音符の前記演奏時刻と前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻とをもとに、前記楽譜時間軸上の時刻である第1の変換時刻にそれぞれ変換する第1の変換部を具備してもよい。この場合、前記第1の算出部は、前記第1の変換時刻をもとに前記時刻一致度を算出してもよい。
このように第1の変換時刻が用いられることで、高い精度で時刻一致度を算出することができる。この結果、高精度の位置検出が実現される。
【0013】
前記記憶部は、前記複数の楽譜音符に対する演奏のテンポを表す楽譜テンポを記憶してもよい。この場合、前記第1の変換部は、前記検出対象音符に応じた演奏テンポを算出するテンポ算出部を有し、前記検出対象音符の前記演奏時刻及び前記周辺演奏音符の前記演奏時刻の差と、前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻と、前記楽譜テンポ及び前記演奏テンポの比とをもとに、前記第1の変換時刻を算出してもよい。
テンポの情報をもとに時刻の変換が行われることで高精度の位置検出が可能となる。
【0014】
前記情報処理装置は、さらに、前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備してもよい。この場合、前記テンポ算出部は、前記検出対象音符の前記演奏時刻の直前のビート演奏時刻を含む複数のビート演奏時刻をもとに、前記演奏テンポを算出してもよい。
ビート楽譜時刻及びビート演奏時刻が用いられることで、高い精度で演奏テンポを算出することが可能となる。
【0015】
前記第1の変換部は、前記周辺演奏音符の前記演奏時刻に最も近い前記ビート演奏時刻及び前記検出対象音符の前記演奏時刻の差と、前記最も近いビート演奏時刻に対応する前記ビート楽譜時刻及び前記最適対応音符であると仮定された前記候補対応音符の前記楽譜時刻の差との比を用いて、前記第1の変換時刻を算出してもよい。
このようにビート楽譜時刻及びビート演奏時刻を用いて第1の変換時刻が算出されてもよい。この結果、高い精度で時刻一致度を算出することが可能となる。
【0016】
前記情報処理装置は、さらに、前記検出対象音符の前記演奏時刻を、前記楽譜時間軸上の時刻である第2の変換時刻に変換する第2の変換部を具備してもよい。この場合、前記第1の選択部は、前記第2の変換時刻を基準とする所定時間の範囲内に含まれる複数の楽譜音符を、前記複数の候補対応音符として選択してもよい。
これにより複数の候補対応音符を効率よく選択することが可能となる。
【0017】
前記情報処理装置は、さらに、前記楽譜時間軸上のビートの時刻であるビート楽譜時刻と、前記ビート楽譜時刻に対応するビート演奏時刻とを算出するビート時刻算出部を具備してもよい。この場合、前記第2の変換部は、前記直前の前記ビート演奏時刻と前記直前のビート演奏時刻に対応する前記ビート楽譜時刻とをもとに、前記第2の変換時刻を算出してもよい。
このようにビート楽譜時刻及びビート演奏時刻を用いて第2の変換時刻が算出されてもよい。
【0018】
前記第1の算出部は、確率分布関数を用いて前記時刻一致度を算出してもよい。
確率分布関数を用いることで高い精度で時刻一致度を算出することができる。
【0019】
前記確率分布関数は、前記周辺演奏音符の前記演奏時刻及び前記検出対象音符の前記演奏時刻の差をもとに生成されてもよい。
これにより時刻一致度の算出精度を向上させることができる。
【0020】
前記複数の楽譜音符の各々は、楽譜音高を有してもよい。この場合、前記複数の演奏音符の各々は、演奏音高を有してもよい。また前記第1の算出部は、前記周辺演奏音符の演奏音高と前記楽譜音符の楽譜音高との一致度である音高一致度を算出し、その算出された音高一致度と前記時刻一致度とをもとに、前記個別音符一致度を算出してもよい。
このように時刻一致度と音高一致度とが用いられることで、個別一致度を高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【0021】
前記第1の算出部は、確率分布関数を用いて前記音高一致度を算出してもよい。
確率分布関数を用いることで高い精度で音高一致度を算出することができる。
【0022】
本発明の一形態に係る情報処理方法は、コンピュータにより実行される情報処理方法であって、楽曲を構成する複数の楽譜音符を記憶することを含む。
前記楽曲の演奏により生成される複数の演奏音符が入力される。
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符が設定される。
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符が選択される。
前記選択された複数の候補対応音符の中の1つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度が算出される。
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度が判定される。
前記検出対象音符と前記候補対応音符との一致度である音符一致度が、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出される。
前記複数の候補対応音符の中から、前記音符一致度が最大となるものが前記最適対応音符として選択される。
【0023】
本発明の一形態に係るプログラムは、コンピュータに以下のステップを実行させる。
楽曲を構成する複数の楽譜音符を記憶するステップ。
前記楽曲の演奏により生成される複数の演奏音符を入力するステップ。
前記入力された複数の演奏音符の中から、対応する楽譜音符を検出する対象となる検出対象音符を設定するステップ。
前記設定された検出対象音符に対応する楽譜音符である最適対応音符の複数の候補として、前記複数の楽譜音符の中から複数の候補対応音符を選択するステップ。
前記選択された複数の候補対応音符の中の1つを前記最適対応音符と仮定した場合の、前記検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、前記複数の楽譜音符の各々との一致度である個別音符一致度を算出すステップ。
前記複数の周辺演奏音符の各々について、前記複数の楽譜音符の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定するステップ。
前記検出対象音符と前記候補対応音符との一致度である音符一致度を、当該候補対応音符を前記最適対応音符と仮定した場合の、前記複数の周辺演奏音符の各々について判定された前記最大個別音符一致度をもとに算出するステップ。
前記複数の候補対応音符の中から、前記音符一致度が最大となるものを前記最適対応音符として選択するステップ。
【発明の効果】
【0024】
以上のように、本発明によれば、和音が演奏される場合や演奏中にミスタッチが生じた場合でも、演奏位置を高い精度で検出することが可能となる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【発明を実施するための形態】
【0026】
以下、図面を参照しながら、本発明の実施形態を説明する。
【0027】
[演奏認識装置の構成]
図1は、本発明の一実施形態に係る情報処理装置として機能する演奏認識装置のハードウェア構成例を示すブロック図である。演奏認識装置としては、例えばPC(Personal Computer)等のコンピュータが用いられる。
【0028】
演奏認識装置100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、入出力インタフェース105、及び、これらを互いに接続するバス104を備える。
【0029】
入出力インタフェース105には、表示部106、操作部107、記憶部108、通信部109、ドライブ部110、I/F(インタフェース)部112等が接続される。
【0030】
表示部106は、例えば液晶、EL(Electroluminescence)等を用いた表示デバイスである。操作部107は、例えばキーボード、ポインティングデバイス、その他の操作装置である。操作部107がタッチパネルを含む場合、そのタッチパネルは表示部106と一体となり得る。
【0031】
記憶部108は、不揮発性の記憶デバイスであり、例えばHDD(Hard Disk Drive)、フラッシュメモリ、その他の固体メモリである。ドライブ部110は、例えば光学記録媒体、磁気記録テープ等、リムーバブルの記録媒体111を駆動することが可能なデバイスである。
【0032】
通信部109は、LAN(Local Area Network)、WAN(Wide Area Network)等に接続可能な、他のデバイスと通信するためのモデム、ルータ、その他の通信機器である。通信部109は、有線及び無線のどちらを利用して通信するものであってもよい。
【0033】
I/F部112は、シリアルまたはパラレル通信端子、ディスプレイ接続端子、又はネットワーク端子等の、他のデバイスや種々のケーブルを接続するためのインタフェースである。表示部106、操作部107、通信部109等が、I/F部112を介して演奏認識装置100に接続されてもよい。
【0034】
本実施形態では、I/F部112を介して、演奏認識装置100に演奏データが入力される。そのために必要なインタフェースがI/F部112に接続されてもよい。
【0035】
演奏認識装置100による情報処理は、記憶部108またはROM102等に記憶されたソフトウェアと、演奏認識装置100のハードウェア資源との協働により実現される。具体的には、CPU101が記憶部108等に記憶された、ソフトウェアを構成するプログラムをRAM103にロードして実行することにより、所定の情報処理が実行される。
【0036】
プログラムは、例えば記録媒体111を介して演奏認識装置100にインストールされる。またはネットワークを介してインストールが行われてもよい。
【0037】
図2は、演奏認識装置100の機能的な構成例を示すブロック図である。各ブロックは、電子回路等などハードウェアとして実装されてもよいし、コンピュータ上で動作するソフトウェアとして実装されてもよい。
【0038】
演奏認識装置100は、演奏データ入力部120と、演奏データ記録部121と、楽譜データ入力部123と、楽譜データ記録部124と、マッチング部125と、出力部126とを有する。
【0039】
演奏データ入力部120は、例えば電子ピアノ等の電子楽器が演奏されることで出力される演奏データを受信する。演奏データは、例えばMIDI(登録商標)(Musical Instrument Digital Interface)規格に基づいたデータであり、演奏された音のそれぞれについて、少なくとも音高及び時刻の情報を含む。その他、ベロシティ等の情報を含んでもよい。音高は演奏された音の高さであり、時刻は演奏された時刻である。またベロシティは、演奏された音の強弱を表し「押鍵速度」とも呼ばれる。
【0040】
演奏データ入力部120は、受信した演奏データから、各演奏音についての音高、時刻、及びベロシティ等を取得して、演奏データ記録部121に記録する。なお演奏データは、MIDI(登録商標)データに限定されない。例えばマイク等から入力された演奏音や歌声等から上記した音高や時刻等が抽出されてもよい。
【0041】
楽譜データ入力部123は、楽譜データ122を読み出して楽譜データ記録部124へ記録する。楽譜データ122は、例えばMIDI(登録商標)ファイルの形式で記録されたデータであり、楽曲を構成する理想的な音符の配列を表すデータである。楽譜データ122は、各音符についての音高及び時刻の情報を少なくとも含む。その他、各音符についてのベロシティ等の情報を含んでもよい。また楽譜データ122は、音符を演奏すべきテンポの情報を含む。楽譜データ122は、例えば記録媒体111から読み出されてもよいし、ネットワーク上のサーバ等からダウンロードされてもよい。
【0042】
本開示では、楽譜データ122に含まれる複数の音符データを、楽曲を構成する複数の楽譜音符と記載する。そして各楽譜音符が有する音高及び時刻の情報を、楽譜音高及び楽譜時刻と記載する。また演奏すべきテンポの情報を、複数の楽譜音符に対する演奏のテンポを示す楽譜テンポと記載する。
【0043】
また演奏データに含まれる複数の演奏音のデータを、楽曲の演奏により生成される複数の演奏音符と記載する。そして各演奏音符が有する音高及び時刻の情報を、演奏音高及び演奏時刻と記載する。
【0044】
図3は、楽譜時刻及び演奏時刻について説明するための図である。楽譜時刻は、所定の時点としての原点O1を基準とした時間軸である楽譜時間軸A1上において、楽譜音符10に対する演奏のタイミングを示す時刻である。原点O1は、典型的には、演奏を開始すべき時点であり、例えば楽譜の最初のビート(拍)の時点が設定される。なお楽譜時間軸の基準となる所定の時点として、その他の点が採用されてもよい。
【0045】
例えば原点O1を0sec(秒)とする楽譜時間軸A1が設定された場合、その楽譜時間軸A1上の各楽譜音符10を演奏すべき時刻が、楽譜時刻となる。楽譜時刻は、基準となる原点O1との時間的な差ともいえる。
【0046】
演奏時刻は、楽譜時間軸A1上の原点O1に対応する時点O2を基準とした、演奏音符15を生成する演奏が行われた時刻である。原点O1として演奏を開始すべき時点が設定された場合、それに対応する時点O2としては、実際に演奏を開始した時点が設定される。例えば
図3Aに示すように、楽譜時間軸A1上の原点O1に楽譜音符10が存在する場合には、当該楽譜音符10を演奏した時点が、原点O1に対応する時点O2となる。そして演奏開始時点を0secとする演奏時間軸A2が設定される。また演奏開始時点を基準として、以後演奏が行われた時刻が、当該演奏により生成された演奏音符15の演奏時刻となる。
【0047】
例えばこのような設定により、原点O1及びこれに対応する時点O2をともに0secとする楽譜時間軸A1及び演奏時間軸A2がそれぞれ設定される。
【0048】
図3Bに示すように、原点O1に楽譜音符10が存在しない場合、メトロノーム等のガイドGが出力されてもよい。この場合、ガイドされる時点(O1及びO2)が0secとなるように、楽譜時間軸A1と演奏時間軸A2とがそれぞれ設定されればよい。
【0049】
楽譜時刻は、抽象的な時間の情報であり、楽譜音符10は楽譜時間軸A1上にあらかじめ決められた間隔で配置される。例えば、毎分150拍のテンポで毎拍ごとに配置された音符は正確に400msecの間隔で並んでいる。一方、演奏時刻は、実時間に即して設定されるものであり、各演奏音符15はユーザの演奏に応じて演奏時間軸A2上に揺らぎを含んだ時刻を持って配置される。なお、本実施形態における「1拍」の時間は例えば四分音符の時間であるがこれに限定されず、八分音符や十六分音符など様々な時間であってもよい。
【0050】
楽譜時間軸A1の基準となる上記の所定の時点が、ユーザにより設定可能であってもよい。例えば曲の途中のビートや所定の楽譜音符の楽譜時刻が、楽譜時間軸の基準となる所定の時点として設定されてもよい。この場合、その時点を演奏の開始時点として、本技術を適用することが可能となる。
【0051】
マッチング部125は、演奏データ記録部121及び楽譜データ記録部124から音符データを取り出し、所定の演奏音符15に対応する楽譜音符10である最適対応音符を選択し、出力部126に出力する。本技術により、ユーザの演奏により入力された演奏音符15に対応する最適対応音符をリアルタイムで検出することが可能である。
【0052】
図4は、マッチング部125の詳細な構成例を示すブロック図である。マッチング部125は、検出対象音符設定部(設定部)130と、候補対応音符選択部(第1の選択部)131と、個別音符一致度算出部(第1の算出部)132と、最大個別音符一致度判定部(判定部)133と、音符一致度算出部(第2の算出部)134と、最適対応音符選択部(第2の選択部)135とを有する。またマッチング部125は、時刻変換部(第1の変換部、第2の変換部)136と、確率分布発生部137と、ビート判定部(ビート時刻算出部)138と、ビート履歴記録部139と、テンポ算出部140とを有する。
【0053】
検出対象音符設定部130は、入力された複数の演奏音符15の中から、対応する楽譜音符10を検出する対象となる検出対象音符を設定する。典型的には、新たに入力された演奏音符15が順次検出対象音符として設定される。これによりリアルタイムで、演奏位置を検出することができる。
【0054】
候補対応音符選択部131は、設定された検出対象音符に対応する楽譜音符10である最適対応音符の複数の候補として、複数の楽譜音符の中から複数の候補対応音符を選択する。
【0055】
個別音符一致度算出部132は、選択された複数の候補対応音符の中の1つを最適対応音符と仮定した場合の、検出対象音符の周辺で演奏された複数の周辺演奏音符の各々と、複数の楽譜音符の各々との一致度である個別音符一致度を算出する。1つの周辺演奏音符に対して、複数の楽譜音符の各々に対応する複数の個別音符一致度が算出される。
【0056】
最大個別音符一致度判定部133は、複数の周辺演奏音符の各々について、複数の楽譜音符10の各々との間で算出された複数の個別音符一致度の中から最大個別音符一致度を判定する。上記したように1つの周辺演奏音符に対して、複数の楽譜音符10の各々に対応する複数の個別音符一致度が算出される。この複数の個別音符一致度の中の最大値が、最大個別音符一致度となる。
【0057】
音符一致度算出部134は、検出対象音符と候補対応音符との一致度である音符一致度を算出する。音符一致度は、当該候補対応音符を最適対応音符と仮定した場合の、複数の周辺演奏音符の各々について判定された最大個別音符一致度をもとに算出する。
【0058】
最適対応音符選択部135は、複数の候補対応音符の中から、音符一致度が最大となるものを最適対応音符として選択する。
【0059】
時刻変換部136は、演奏音符15が有する演奏時間軸A2上の演奏時刻を、楽譜時間軸A1上の時刻に変換する。本実施形態では、第1の変換部として機能する時刻変換部136により、複数の周辺演奏音符の各々が有する演奏時刻が、第1の変換時刻にそれぞれ変換される。また第2の変換部として機能する時刻変換部136により、検出対象音符の演奏時刻が、第2の変換時刻に変換される。第1及び第2の変換時刻は、楽譜時間軸A1上の時刻に変換された後の時刻である。
【0060】
確率分布発生部137は、個別音符一致度を算出する際に用いられる確率分布関数を出力する。本実施形態では、音高一致度を算出するための第1の確率分布関数と、時刻一致度を算出するための第2の確率分布関数とが出力される。各確率分布関数は、記憶部108等に記憶されており、適宜読み出される。あるいは所定の確率分布関数がリアルタイムで生成されて出力されてもよい。
【0061】
ビート判定部138は、楽譜時間軸A1上のビートの時刻であるビート楽譜時刻と、そのビート楽譜時刻に対応するビート演奏時刻とを算出する。ビート楽譜時刻は楽譜時間軸A1上の定まった時刻であり、ビート演奏時刻はそれに対応する演奏時間軸A2上の時刻である。ビート楽譜時刻及びこれに対応するビート演奏時刻は、紐づけられてビート履歴記録部139に記録される。テンポ算出部140は、検出対象音符に応じた演奏テンポを算出する。
【0062】
[演奏認識装置の動作]
図5は、演奏認識装置100の動作例を示すフローチャートである。まず演奏データが入力されたか否かが判定される(ステップ101)。入力があった場合(YES)、新しく入力された演奏データ内の演奏音符15が取得され、演奏データ記録部121に記録される(ステップ102)。
【0063】
本実施形態では、入力された演奏音符15が順次検出対象音符として設定され、演奏データ記録部121から読み出される。そしてマッチング部125により、楽譜マッチングが行われる(ステップ103)。この楽譜マッチングにより、楽譜データ記録部124に記録された複数の楽譜音符10の中から、最適対応音符が検出される。
【0064】
最適対応音符が検出された演奏音符15については、その旨及びペアとなる楽譜音符10の情報が、演奏データ記録部121に記録される。この情報は、ビート判定部138にも出力され、ビート判定に用いられる(ステップ104)。
【0065】
ビート判定部138は、楽譜時間軸A1上のビートの時刻であるビート楽譜時刻を算出する。典型的には、楽譜時間軸A1上の原点O1を楽譜の最初のビート(拍)として、1拍分の時間(ビート間の時間)で割り切れる時刻が、ビート楽譜時刻として算出される。楽譜時間軸A1の基準となる所定の時点がその他の時点に設定された場合でも、楽譜の拍子や楽譜テンポをもとに、ビート楽譜時刻は算出可能である。
【0066】
ビート判定部138は、最適対応音符として選択された楽譜音符10が、ビートの位置に存在するビート楽譜音符であるか否か判定する。この判定は、判定対象となる楽譜音符10の楽譜時刻と、上記したビート楽譜時刻とが比較されることで行われる。両者が一致する場合には、判定対象となる楽譜音符10がビート楽譜音符として判定される。そしてビート楽譜音符と判定された楽譜音符10を最適対応音符とする演奏音符15が、ビート演奏音符として判定され、その演奏時刻がビート演奏時刻として算出される。ビート楽譜時刻及びビート演奏時刻のペアは、ビート履歴記録部139に記録される。
【0067】
なおビートの位置に存在する音符が和音の場合には、その和音を構成する複数の楽譜音符10の全てがビート楽譜音符となる。そしてこれらの楽譜音符10とそれぞれペア(演奏音符及び最適対応音符のペア)となる、和音として演奏された複数の演奏音符15がビート演奏音符となる。和音を構成するビート楽譜音符の楽譜時刻は互いに完全に一致する。しかしながら和音を構成する複数のビート演奏音符は、微妙にずれて演奏されるので、各演奏時刻は互いに異なるものとなる。このように複数の演奏音符15がともにビート演奏音符と判定された場合には、各ビート演奏音符の演奏時刻の平均値が、ビート演奏時刻として記録される。
【0068】
ビート履歴記録部139に、ビート楽譜時刻及びビート演奏時刻のペアが記録されると、テンポ算出部140により、その情報をもとに演奏テンポが算出される(ステップ106)。本実施形態では、記録されたビート演奏時刻までの過去n拍分のビート演奏時刻をもとに演奏テンポが算出される。
【0069】
具体的には、過去n拍分のビート演奏音符が演奏されるのにかかった時間を拍数nで除算することで1拍分の平均時間が算出され、この値で1分(60秒)を除算することによって演奏テンポ(BPM:Beats Per Minute)が算出される。過去n拍分のnの値は限定されず、1以上の値が適宜設定される。
【0070】
演奏テンポは、ビート履歴記録部139にビート楽譜時刻及びビート演奏時刻のペアが記録されるたびに算出される。そして次に新しい演奏テンポが算出されるまではその値が利用される。このようにビート履歴記録部139に記録されたビート楽譜時刻及びビート演奏時刻が用いられることで、高い精度で演奏テンポを算出することが可能となる。
【0071】
本実施形態において、「検出対象音符20に応じた演奏テンポ」とは、検出対象音符20が入力された際に、上記のようにして算出されている演奏テンポを意味する。従って「検出対象音符20に応じた演奏テンポ」は、検出対象音符20の演奏時刻の直前のビート演奏時刻までの過去n拍分のビート演奏時刻をもとに算出される。すなわちテンポ算出部140は、検出対象音符20の演奏時刻の直前のビート演奏時刻を含む複数のビート演奏時刻をもとに、「検出対象音符20に応じた演奏テンポ」を算出する。
【0072】
ビートの判定は、演奏データの入力がない場合でも一定時間間隔で呼び出される(ステップ101のNoからステップ105のYes)。例えば休符が続く場合や、演奏すべき音符をユーザが弾き損なってしまう場合等により、数拍分すなわち複数のビートにわたって演奏音符が入力されない場合があり得る。本実施形態では、そのような場合でも、ビート楽譜時刻に対応するビート演奏時刻を算出することができる。
【0073】
本実施形態では、ビート楽譜時刻及びビート演奏時刻が記録されると、それぞれに1拍分の時間を加えた次のビート楽譜時刻と次の推定ビート演奏時刻が算出される。具体的には、記録されたビート楽譜時刻に楽譜テンポから算出された1拍分の時間を加えた時刻が、次のビート楽譜時刻として算出される。また記録されたビート演奏時刻に演奏テンポから算出された1拍分の時間を加えた時刻が、次の推定ビート演奏時刻として算出される。
【0074】
その後、算出された推定ビート演奏時刻の時間的周辺で次の演奏音符が入力されない場合には、推定ビート演奏時刻が次のビート演奏時刻として、またそれに対応するビート楽譜時刻が次のビート楽譜時刻としてビート履歴部139に記録される(
図14の白丸T2)。
【0075】
このように本実施形態では、ビートの位置に楽譜音符が存在しない場合、あるいは存在するが演奏が入力されなかった場合でも、ビート楽譜時刻及びビート演奏時刻のペアが算出されて記録される。各ビートにおいてこれらのペアが記録されるので、ビート履歴に基づいた演奏時刻から楽譜時刻への変換を高い精度で行うことができる。
【0076】
なお演奏テンポの算出方法は限定されず、他の方法が用いられてもよい。例えばビート履歴を使わず、複数の演奏音符の時刻とそれに対応づけられた楽譜音符の時刻から1拍あたりの時間を導くことによって演奏テンポを算出してもよい。また「検出対象音符に応じた演奏テンポ」の算出についても、上記した方法とは異なる方法が用いられてもよい。
【0077】
ステップ105にて、一定時間が経過していないと判定された場合(No)、最後の楽譜音符が有する楽譜時刻が経過したか否かが判定される(ステップ107)。終了していないと判定された場合は(No)、ステップ101に戻る。終了したと判定された場合は(Yes)、処理を終了する。
【0078】
図6は、楽譜マッチングの一例を示すフローチャートである。
図7は、このフローチャートを説明するための模式的な図である。まず検出対象音符20の演奏時刻が、楽譜時間軸A1上の第2の変換時刻R
2に変換される(ステップ201)。本実施形態では、検出対象音符20の演奏時刻と、直前のビート演奏時刻と、直前のビート演奏時刻に対応するビート楽譜時刻とをもとに、以下の式により、第2の変換時刻R
2が算出される。
【0080】
R
2 …第2の変換時刻
T
org …検出対象音符20の演奏時刻
T
beat …直前のビート演奏時刻
R
beat …直前のビート楽譜時刻
TempoS…演奏テンポ
TempoR…楽譜テンポ
【0081】
すなわち第2の変換時刻R
2は、検出対象音符20の演奏時刻及び直前のビート演奏時刻の差と、直前のビート楽譜時刻と、楽譜テンポ及び演奏テンポの比とをもとに算出可能である。なお第2の変換時刻R
2の算出方法は限定されず、例えばビート演奏時刻、ビート楽譜時刻の代わりに、対応が取れている他の演奏時間軸上の時刻、楽譜時間軸上の時刻を使って算出されてもよい。例えば原点O1及び時点O2の組や、入力された演奏音符及びそれに対応付けられた楽譜音符の時刻の組等を使って、第2の変換時刻R
2が算出されてもよい。
【0082】
次に複数の候補対応音符25が選択される。本実施形態では、変換された後の第2の変換時刻R
2を基準とする所定時間の範囲L内に含まれる複数の楽譜音符10が、複数の候補対応音符25として選択される。所定時間の範囲Lは、例えば±1secの範囲であるが、これに限定されない。
図6では、楽譜音符10が1つずつ取得され(ステップ202)、取得された楽譜音符10の楽譜時刻と、第2の変換時刻R
2との差が一定値以内か否かが判定される(ステップ203)。このようにして複数の候補対応音符25が選択されてもよい。
【0083】
なお
図7では、所定時間の範囲L内に和音を構成する音符10a及び10bが含まれている。このように和音を構成する音符10a及び10bも、その1つ1つが独立した楽譜音符10として処理される。すなわちこれらの楽譜音符10a及び10bは、楽譜時刻が一致し、かつ楽譜音高が異なるもの同士となる。和音が演奏されて生成される複数の演奏音符15も、1つ1つが独立した演奏音符15として処理される。そして各演奏音符15が順次検出対象音符20として設定され、最適対応音符の検出が実行される。
【0084】
候補対応音符25ごとに、音符一致度が算出される(ステップ204)。音符一致度は、当該候補対応音符25を最適対応音符と仮定した場合に算出される評価値である。この音符一致度の算出については、後に詳しく説明する。
【0085】
候補対応音符25ごとに算出された音符一致度は、その最大値が記録される。そしてこれまでよりも大きい値が算出された場合には、最大音符一致度が更新される。(ステップ205、ステップ206)。全ての楽譜音符10について処理が終わったら(ステップ207のYes)、最大音符一致度を与える候補対応音符25が、最適対応音符として出力される(ステップ208)。
【0086】
なお最大音符一致度に関して閾値が設定されてもよい。最大音符一致度が閾値を超えない場合には、検出対象音符に対応する最適対応音符はない旨の信号が出力される。これにより例えばミスタッチにより生成される演奏音符や、ユーザのアドリブによる楽譜にない音符の演奏等に十分に対応することが可能となる。
【0087】
図8は、音符一致度算出(ステップ204)の一例を示すフローチャートである。
図9は、このフローチャートを説明するための模式的な図である。この処理は、候補対応音符25のうちの1つが最適対応音符であると仮定された状態で実行される処理である。
【0088】
まず合計値レジスタが0にリセットされる(ステップ301)。検出対象音符20に時間的に最も近い演奏音符15aがひとつ取得される(ステップ302)。本実施形態では、新しく入力される演奏音符15が検出対象音符20として設定されるので、最も近い演奏音符15aとして、過去に入力された演奏音符15が取得される。
【0089】
取得された演奏音符15aについて、最大個別音符一致度D1が算出される(ステップ303)。算出された最大個別音符一致度D1は、合計値レジスタに加算される(ステップ304)。なお最大個別音符一致度D1は、最適対応音符であると仮定された候補対応音符25を基準として、演奏音符15aと楽譜音符10との間で算出される個別音符一致度の最大値である。最大個別音符一致度D1が算出された楽譜音符10は、取得された演奏音符15aに対応する個別対応音符30となる。
【0090】
図9では、矢印Z1により、演奏音符15と個別対応音符30とのペアが表現されている。また矢印Z2により、検出対象音符20と、最適対応音符であると仮定された候補対応音符25とのペアが表現されている。
【0091】
一定数の演奏音符15を処理したか否かが判定され、満たしていない場合には(ステップ305のNo)、ステップ302に戻る。そしてすでに取得された演奏音符15を除いた中で、検出対象音符20に最も近い演奏音符15aが取得される。このように時間的に近い順で演奏音符15が取得され、各演奏音符15について最大個別音符一致度D1が算出される。一定数の演奏音符15が処理された場合は(ステップ305のYes)、合計値レジスタの値が音符一致度D2として出力される(ステップ306)。
【0092】
図8に示す処理例では、検出対象音符20に近い順に所定の数の演奏音符15が取得された。これら取得された所定の数の演奏音符15が、本実施形態に係る周辺演奏音符35に相当する。周辺演奏音符35は、検出対象音符20の時間的周辺に位置する演奏音符15であり、その選択方法は限定されない。
図8に示すような方法の他、例えば検出対象音符20の演奏時刻を基準とする所定時間の範囲内に含まれる複数の演奏音符15が、周辺演奏音符35として選択されてもよい。
【0093】
また
図8に示す処理例では、周辺演奏音符35について算出された最大個別音符一致度D1の総和が音符一致度D2として出力された。これに限定されず、最大個別音符一致度D1をすべて乗じた値や、平均値等が音符一致度D2として出力されてもよい。
【0094】
図10は、最大個別音符一致度算出(ステップ303)の一例を示すフローチャートである。
図11は、このフローチャートを説明するための模式的な図である。この処理は、周辺演奏音符35が1つ選択された状態で実行される処理である。例えば
図11に示す周辺演奏音符35が選択された状態であるとする。
【0095】
まず、楽譜音符10が1つ取得される(ステップ401)。周辺演奏音符35と楽譜音符10との個別音符一致度が算出される(ステップ402)。
図11に示すように、各楽譜音符10との間で個別音符一致度が算出され、その最大値が記録(更新)される(ステップ403、ステップ404)。全ての楽譜音符10について処理が終わったら(ステップ405のYes)、最大個別音符一致度D1が出力される(ステップ406)。
【0096】
なお最大個別音符一致度D1に関して閾値が設定されてもよい。最大個別音符一致度D1が閾値を超えない場合には、個別対応音符30はない旨の信号が出力される。これにより明らかに対応してない音符同士の評価値(個別音符一致度)を除外することができる。
【0097】
また全ての楽譜音符10との間で個別音符一致度が算出されるので、最適対応音符であると仮定された候補対応音符25との間でも個別音符一致度が算出される。その個別音符一致度が最大となる場合には、その値が最大個別音符一致度D1となる。
【0098】
また1つの楽譜音符10が、複数の異なる周辺演奏音符35に対する個別対応音符となる場合もあり得る。すなわち本技術では、最大個別音符一致度D1を与える個別対応音符の重複が許容されている。これによりユーザのミスタッチが発生した場合でも、高い精度で演奏位置を検出することが可能となる。
【0099】
図12は、個別音符一致度算出(ステップ402)の一例を示すフローチャートである。
図13は、このフローチャートを説明するための模式的な図である。この処理は、算出の対象となる周辺演奏音符35と、楽譜音符10とがそれぞれ選択された状態で行われる。例えば
図13に示す周辺演奏音符35と、楽譜音符10とが選択された状態であるとする。
【0100】
個別音符一致度を算出するために、本実施形態では、周辺演奏音符35の演奏時刻と楽譜音符10の楽譜時刻との一致度である時刻一致度が算出される。また周辺演奏音符35の演奏音高と楽譜音符10の楽譜音高との一致度である音高一致度が算出される。
【0101】
これらの算出のために、まず第1の確率分布関数f
1(x)と、第2の確率分布関数f
2(x)とが読み出される、あるいは生成される(ステップ501)。第1の確率分布関数f
1(x)は音高一致度を算出するための関数である。また第2の確率分布関数f
2(x)は、時刻一致度(タイミング一致度)を算出するための関数である。確率分布関数としては、以下に示すガウシアン関数が用いられる。
【0103】
第1及び第2の確率分布関数f
1(x)及びf
2(x)として、標準偏差σが適宜設定されたものが用いられる。なお他の確率分布関数が用いられてもよい。
【0104】
演奏の対象となる楽譜音符10に対し、対応する演奏音符が実際に入力される確率は、楽譜音符10の楽譜時刻に対応する演奏時間軸上の時刻にて最も高くなり、また楽譜音符10の楽譜音高にて最も高くなると考えられる。そしてそれらの時刻及び音高からのずれが大きくなるほど、当該楽譜音符10に対応する演奏音符が入力される確率は小さくなる。すなわち、時刻及び音高のずれが小さいほど楽譜音符10と演奏音符15は対応するペアである可能性が高く、ずれが大きいほど対応する可能性は低くなる。これらのことを鑑み、確率分布関数から導かれる音高及び時刻のずれに応じた出現確率を、演奏音符15と楽譜音符10との一致度を表す評価値として用いる。確率分布関数を用いることで、高い精度で簡単に音高一致度及び時刻一致度をそれぞれ算出することができる。
【0105】
さらに時刻一致度を算出するために、周辺演奏音符35の演奏時刻が、第1の変換時刻R
1に変換される(ステップ502)。この変換は、検出対象音符20の演奏時刻と最適対応音符であると仮定された候補対応音符25の楽譜時刻とをもとに実行される。具体的には、第1の変換時刻R
1は、以下の式で算出される。
【0107】
R
1 …第1の変換時刻
T…周辺演奏音符35の演奏時刻
T
org …検出対象音符20の演奏時刻
R
org …候補対応音符25の楽譜時刻
TempoS…演奏テンポ
TempoR…楽譜テンポ
【0108】
すなわち第1の変換時刻R
1は、検出対象音符20の演奏時刻及び周辺演奏音符35の演奏時刻の差と、最適対応音符であると仮定された候補対応音符25の楽譜時刻と、楽譜テンポ及び演奏テンポの比とをもとに算出可能である。
【0109】
従って第1の変換時刻R
1は、最適対応音符であると仮定された候補対応音符25が変更されると、それに伴って変化する値となる。この点が、最適対応音符であると仮定された候補対応音符25の楽譜時刻を基準として時刻一致度を算出するという点に対応する。本技術では、第1の変換時刻R
1を用いて時刻一致度を高い精度で算出することができる。
【0110】
なお上記で説明した実施形態では、周辺演奏音符35と楽譜音符10との間の個別音符一致度を全ての楽譜音符10に対して計算しているが、第1の変換時刻R
1を基準とする所定時間の範囲内に含まれる楽譜音符10に対してのみ計算してもよい。
【0111】
音高一致度及び時刻一致度が算出される(ステップ503)。音高一致度S
nは、以下の式で算出される。
【0113】
S
nmax …音高が完全に一致した場合の一致度
d
n …音高の差
σ
n …音高一致度算出のために設定された標準偏差
【0114】
時刻一致度S
tは、以下の式で算出される。
【0116】
S
tmax …時刻が完全に一致した場合の一致度
d
t …時刻の差(第1の変換時刻R
1と楽譜時刻との差)
σ
t …時刻一致度算出のために設定された標準偏差
【0117】
これら算出された音高一致度S
n及び時刻一致度S
tをもとに、個別音符一致度Sが算出される(ステップ504)。個別音符一致度Sは、例えば以下の式により算出される。
【0119】
個別音符一致度Sの算出方法として、音高一致度S
n及び時刻一致度S
tの和や、その他の演算が用いられてもよい。音高一致度S
n及び時刻一致度S
tが用いられることで、個別音符一致度Sを高い精度で算出することができる。その結果、演奏位置を高い精度で検出することが可能となる。
【0120】
以上、本技術に係る演奏認識装置100では、候補対応音符25の1つが最適対応音符であると仮定され、その仮定のもとに、複数の周辺演奏音符35の各々について、最大個別音符一致度D1が判定される。そして当該最大個別音符一致度D1をもとに、検出対象音符20と候補対応音符25との音符一致度D2が算出される。これにより検出対象音符20に対応する最適対応音符を精度よく選択することが可能となる。この結果、演奏位置を高い精度で検出することが可能となる。
【0121】
図7等にも示すように、検出対象音符20の演奏時刻が楽譜時間軸A1上の第2の変換時刻R
2に変換されるので、演奏上のテンポの揺れ等に関わらず、最適対応音符を精度よく検出することが可能となる。
【0122】
対応する楽譜音符の検出方法として、1つ1つ入力された演奏音符に対して、順次楽譜音符をあてはめる方法が用いられた場合、ミスタッチによる音符の弾き損ねや余分な音の演奏等があると、正確な検出は非常に難しい。本技術では、複数の周辺演奏音符35の各々について最大個別音符一致度D1が判定され、それをもとに音符一致度D2が算出される。すなわち周辺の演奏音符15を俯瞰的にとらえて音符一致度D2が算出される。この結果、演奏中にミスタッチが生じた場合でも、高い精度で最適対応音符を検出することができる。
【0123】
また入力された順に楽譜音符があてはめられる場合には、楽譜音符があらかじめ1音ずつ定められた順番で並んでいることを前提としているため、認識できるのは単音の演奏のみとなり、和音を含む演奏に対応することが難しい。これに対して本技術では、和音を構成する演奏音符15及び楽譜音符10の1つ1つが全て独立した音符として処理される。この結果、単音での演奏であろうと和音での演奏であろうと高い精度で演奏位置を検出することができる。
【0124】
検出された最適対応音符の情報は、例えばディスプレイ等に表示された楽譜上の演奏位置を示す場合や、自動的に楽譜のページを更新する譜めくり等のために用いられる。またユーザの演奏に同期させて、映像、音声、静止画像、文字を表示する場合にも用いられる。またユーザの演奏に合わせて、楽曲の他のパートの自動演奏等を実行する場合にも用いられる。
【0125】
例えば本技術に用いることで、ユーザがアドリブでテンポを変動させたり、途中で楽譜にない音符のアドリブ演奏が行われたとしても、その演奏に同期させて高い精度で音声や映像等を出力させることができる。またユーザの演奏が途中でつっかえてしまった場合でも、バックの演奏は続けられ、ユーザはその演奏に合わせた位置から演奏を再開する、といったことも可能となる。
【0126】
<その他の実施形態>
本発明は、以上説明した実施形態に限定されず、他の種々の実施形態を実現することができる。
【0127】
図14は、周辺演奏音符の演奏時刻を第1の変換時刻に変換する方法の、他の実施形態を説明するための模式的な図である。
【0128】
例えば
図14に示す周辺演奏音符35の演奏時刻を楽譜時間軸A1上の第1の変換時刻R
1に変換するとする。またビート履歴記録部139には、ビート履歴として、ビート演奏音符40aの演奏時刻T1と、推定されたビート演奏時刻T2と、ビート演奏音符40bの演奏時刻T3と、ビート演奏音符40cの演奏時刻T4とが記録されているとする。なおビート演奏音符40a、40b、40cは、ビート楽譜音符45a、45b、45cとそれぞれペアとなっている。
【0129】
このような場合に、周辺演奏音符35に最も近いビート演奏時刻T1と、それに対応するビート楽譜時刻を用いて、以下の式により、第1の変換時刻R
1が算出されてもよい。
【0131】
R
1 …第1の変換時刻
T…周辺演奏音符35の演奏時刻
T
org …検出対象音符20の演奏時刻
R
org …候補対応音符25の楽譜時刻
T
beat …最も近いビート演奏時刻(T1)
R
beat …最も近いビート楽譜時刻
【0132】
すなわち、周辺演奏音符35の演奏時刻に最も近いビート演奏時刻T1及び検出対象音符20の演奏時刻の差と、最も近いビート演奏時刻T1に対応するビート楽譜時刻及び最適対応音符であると仮定された候補対応音符25の楽譜時刻の差との比を用いて、第1の変換時刻R
1が算出されてもよい。ビート履歴の情報を用いることで、さらに精度よく第1の変換時刻R
1を算出することが可能となる。この結果、時刻一致度の算出精度も向上する。
【0133】
図15は、時刻一致度を算出するための第2の確率分布関数f
2(x)の生成に関する、他の実施形態を説明するための模式的な図である。
図15に示すように、検出対象音符20から時間的に離れた周辺演奏音符35については、演奏テンポの揺らぎ等により、算出される時刻一致度が小さくなりすぎてしまう場合があり得る。従って周辺演奏音符35の演奏時刻と、検出対象音符20の演奏時刻との差が大きいほど、第2の確率分布関数確率分布関数f
2(x)の標準偏差σ
tの値(分散σ
t 2の値)を大きくする。そして確率分布曲線の幅を大きくして、時刻のずれに対する許容度を上げる。これにより時刻一致度の値が小さくなりすぎてしまうことを防ぐことができる。
【0134】
このように周辺演奏音符35の演奏時刻及び検出対象音符20の演奏時刻の差をもとに、第2の確率分布関数f
2(x)が生成されてもよい。
【0135】
上記では、時刻一致度及び音高一致度をもとに個別音符一致度が算出された。これに代えて、時刻一致度のみを用いて、これを個別音符一致度として算出してもよい。この場合、演奏音符の音高は考慮されないので、適当な鍵盤(例えば「ド」の鍵盤のみ)を指一本でリズミカルに叩くだけでそのテンポを検出し、機械が曲を演奏するというようなアプリケーションが可能となる。このアプリケーションにより、例えばピアノ等を弾けないユーザが自分の好きなテンポで曲を演奏することが可能となる。
【0136】
また、時刻と音高に加えて、演奏音符のベロシティ情報(鍵盤を叩く強さの情報)が用いられてもよい。個別音符一致度の算出にベロシティ情報も利用するようにすれば、例えばある程度の強さで弾いた演奏音符は一致度を大きめに、弱く弾いた演奏音符はミスタッチの可能性が高いので一致度を小さめに重み付けする、といったことが可能となる。この結果、高い精度での位置検出が可能となる。
【0137】
上記では、新しく入力される演奏音符が検出対象音符として設定されるので、周辺演奏音符として、過去に入力された演奏音符が選択された。しかしながら全ての演奏音符が演奏データ記録部に記録された後に、非リアルタイムで演奏位置が検出される場合等には、周辺演奏音符として、過去に入力された演奏音符のみならず、後に入力された演奏音符が選択されてもよい。
【0138】
電子ピアノ等の電子楽器に、上記で説明した演奏認識装置の機能が備えられてもよい。この場合、当該電子楽器が、本技術に係る情報処理装置として機能する。
【0139】
以上説明した各形態の特徴部分のうち、少なくとも2つの特徴部分を組み合わせることも可能である。また上記で記載した種々の効果は、あくまで例示であって限定されるものではなく、また他の効果が発揮されてもよい。