(57)【特許請求の範囲】
【請求項１】
オーディオ信号を処理する信号処理装置において：
前記オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出部と；
前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための下記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、下記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出部と；
を備える、信号処理装置。
【数１】
0004640407.tif 000013
【数２】
0004640407.tif 000014
上記式（１１）及び式（１２）において、
Ｚ：テンポ
Ｐ（Ｚ）：テンポＺの確率分布
ｌｏｇＰ（Ｘ，Ｚ│Ｑ’）：対数尤度
Ｑ’：補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長
である。
【請求項２】
前記ビート長算出部は、前記オーディオ信号のレベルの時間変化の自己相関関数に基づいて、前記オーディオ信号のテンポＺの初期確率分布Ｐ０（Ｚ）を求め、当該テンポＺの初期確率分布Ｐ０（Ｚ）を、前記式（１１）の前記補助関数Ｇ（Ｑ，Ｑ’）に含まれる前記テンポＺの確率分布Ｐ（Ｚ）の初期値として用いる、請求項１記載の信号処理装置。
【請求項３】
前記ビート長算出部により求められた前記ビート長Ｑと、前記発音時刻間隔Ｘとに基づいて、前記オーディオ信号のテンポＺを求めるテンポ算出部
をさらに備える、請求項１記載の信号処理装置。
【請求項４】
オーディオ信号を処理する信号処理方法において：
前記オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出ステップと；
前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための下記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、下記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出ステップと；
を含む、信号処理方法。
【数３】
0004640407.tif 000015
【数４】
0004640407.tif 000016

上記式（１１）及び式（１２）において、
Ｚ：テンポ
Ｐ（Ｚ）：テンポＺの確率分布
ｌｏｇＰ（Ｘ，Ｚ│Ｑ’）：対数尤度
Ｑ’：補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長
である。
【請求項５】
コンピュータに、
オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出ステップと；
前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための下記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、下記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出ステップと；
を実行させるためのプログラム。
【数５】
0004640407.tif 000017
【数６】
0004640407.tif 000018
上記式（１１）及び式（１２）において、
Ｚ：テンポ
Ｐ（Ｚ）：テンポＺの確率分布
ｌｏｇＰ（Ｘ，Ｚ│Ｑ’）：対数尤度
Ｑ’：補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長
である。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号処理装置、信号処理方法及びプログラムに関する。
【背景技術】
【０００２】
楽曲などのオーディオ信号のテンポを検出する手法としては、例えば、オーディオ信号の発音開始時刻の自己相関関数のピーク部分とレベルを観察することにより、発音時刻の周期性を解析し、その解析結果から、１分間の４分音符の数であるテンポを検出する方法が知られている。例えば、特許文献１記載のような音楽解析技術では、オーディオ信号のパワー（信号レベル）の短時間平均の時間変化（以下「パワー包絡（ｐｏｗｅｒ  ｅｎｖｅｌｏｐｅ）」という。）を加工したレベル信号をフーリエ解析してパワースペクトルを求め、このパワースペクトルのピークを求めることでテンポを検出し、さらに、後処理としてパワースペクトルから得た特徴量を用いてテンポを２Ｎ倍に補正している。
【０００３】
【特許文献１】特開平２００５−２７４７０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１記載の音楽解析技術では、楽曲全体のテンポなど、少なくとも数十秒区間にわたる一定のテンポを求めるものであり、個々の音長（例えば０．２〜２秒程度）の変動までも考慮したより細かい範囲でのテンポやビートを推定することはできない。解析対象内の細かい範囲でのテンポやリズムなどは対象としておらず、また、数十秒程度の区間の中でテンポが変化する場合（例えば、１つの楽曲内でテンポが徐々に速くなる／遅くなる場合）には対応していない。
【０００５】
また、その他のテンポ推定手法としては、一定の時間長（数十秒程度）に渡る一定のテンポを求める手法がある。例えば、（１）オーディオ信号のパワーの時間変化の自己相関関数から求める手法がある。この手法は、当該自己相関関数をフーリエ変換したものがパワースペクトルであることを考慮すると、基本的には、上記の音楽解析技術と同様な手法でテンポを求めるものであることが分かる。また、（２）発音時刻の間隔で最も出現頻度が高い時間長をテンポと推定する手法もある。
【０００６】
しかし、以上の手法はいずれも、オーディオ信号が表す音楽のテンポが一定であることを前提としており、テンポが一定でない場合には対応できない。テンポが一定ではない、通常の人間の演奏家による生の音楽を録音したオーディオ信号には対応できず、したがって、適切なビートを求められない。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、オーディオ信号のテンポが変化する場合でも、オーディオ信号から適切なビートを求めることが可能な、新規かつ改良された信号処理装置、信号処理方法及びプログラムを提供することにある。｛ビートも変化することを言いたい。｝
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、オーディオ信号を処理する信号処理装置において： 前記オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出部と；前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための下記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、下記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出部と；を備える、信号処理装置が提供される。
【数１】
0004640407.tif 000002
【数２】
0004640407.tif 000003
上記式（１１）及び式（１２）において、
Ｚ：テンポ
Ｐ（Ｚ）：テンポＺの確率分布
ｌｏｇＰ（Ｘ，Ｚ│Ｑ’）：対数尤度
Ｑ’：補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長
である。
【００１１】
前記ビート長算出部は、前記オーディオ信号のレベルの時間変化の自己相関関数に基づいて、前記オーディオ信号のテンポＺの初期確率分布Ｐ０（Ｚ）を求め、当該テンポＺの初期確率分布Ｐ０（Ｚ）を、前記式（１１）の前記補助関数Ｇ（Ｑ，Ｑ’）に含まれる前記テンポＺの確率分布Ｐ（Ｚ）の初期値として用いるようにしてもよい。
【００１２】
前記ビート長算出部により求められた前記ビート長Ｑと、前記発音時刻間隔Ｘとに基づいて、前記オーディオ信号のテンポＺを求めるテンポ算出部をさらに備えるようにしてもよい。
【００１３】
また、上記課題を解決するために、本発明の別の観点によれば、オーディオ信号を処理する信号処理方法において：前記オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出ステップと；前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための上記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、上記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出ステップと；を含む、信号処理方法が提供される。
【００１４】
また、上記課題を解決するために、本発明の別の観点によれば、コンピュータに、オーディオ信号のレベルに基づいて発音時刻Ｔを検出する発音時刻検出ステップと；前記発音時刻Ｔの間隔である発音時刻間隔Ｘが与えられたときに当該発音時刻間隔Ｘがビート長Ｑに相当する確率を表す目的関数Ｐ（Ｑ｜Ｘ）を設定し、ＥＭアルゴリズムにより、前記目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるように前記ビート長Ｑを更新するための上記式（１１）の補助関数Ｇ（Ｑ，Ｑ’）を求めるＥステップと、上記式（１２）のように前記補助関数Ｇ（Ｑ，Ｑ’）を最大化するビート長Ｑ’を求めるＭステップとを繰り返すことにより、前記補助関数Ｇ（Ｑ，Ｑ’）を収束させて、前記ビート長Ｑを求めるビート長算出ステップと；を実行させるためのプログラムが提供される。
【００１５】
上記構成によれば、オーディオ信号のレベルに基づいて発音時刻Ｔが検出され、発音時刻の間隔Ｘが与えられたときにビート長Ｑである確率を表す目的関数Ｐ（Ｑ｜Ｘ）と、目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるビート長Ｑの更新を導く補助関数とが設定され、補助関数の最大化を繰り返すことにより補助関数を収束させて、ビート長Ｑが求められる。かかる構成により、オーディオ信号から検出した発音時刻の間隔について最も尤もらしいビート長を求めることによって、オーディオ信号からビートを確率的に推定できる。
【発明の効果】
【００１６】
以上説明したように本発明によれば、オーディオ信号のテンポが変化し、かつ、ビートも変動する場合でも、オーディオ信号から適切なビートを求めることができる。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１８】
（第１の実施形態）
以下に、本発明の第１の実施形態にかかる信号処理装置、信号処理方法及びプログラムについて説明する。
【００１９】
まず、本実施形態の概要について説明する。本実施形態は、テンポが変動する音楽のオーディオ信号（音響信号等を含む音声信号を意味する。）を解析処理して、音楽のビートの打点となる時刻と、ビートの時間間隔［秒／拍］を表すテンポを求めるビート解析処理を行う。
【００２０】
音楽のビートは、オーディオ信号が表す音楽（楽曲、音響等）の音楽的特徴を表す特徴量であって、音楽の推薦や検索などに用いる重要な特徴量として使用される。このビートは、複雑な音楽解析を行なうための前処理や、ロボットダンスや他のマルチメディアと音楽を同期させるためにも必要とされ、幅広い用途がある。
【００２１】
演奏された音の長さは、ビートとテンポという２つの音楽的な時間要素から決定される。したがって、演奏された音の長さからビートとテンポの両方を同時に決定することは、数理的には一意に解を決定することのできない不良設定問題である。さらに、テンポやビートとなる時刻が変動する場合は、ビートを精度良く求めることは困難である。
【００２２】
本実施形態では、音楽等のオーディオ信号からビートを求めるために、確率モデルを用いたビート解析を行う。このビート解析では、オーディオ信号から検出した発音時刻について最も尤もらしいビートを求めることによって、オーディオ信号からビートを確率的に推定する。即ち、本実施形態にかかるビート解析では、オーディオ信号の発音時刻に関する情報が与えられたときに、この発音時刻Ｔに対応する発音がオーディオ信号におけるビートである確率を目的関数として設定し、この目的関数を最大化するビートを求める。テンポの存在を確率的に扱う枠組みには、オーディオ信号のパワー包絡の自己相関関数から求められるテンポの確からしさを表す情報（テンポの確率分布）を取り入れることができるので、頑健な推定が行える。また、１つの楽曲内でテンポが徐々に速くなる／遅くなるなど、音楽のテンポが変化する場合であっても、当該音楽のテンポを推定できる。
【００２３】
また、本実施形態にかかる確率モデルでは、音楽中で演奏されるビートとその演奏で変動するテンポから発音時刻の系列が生成される過程を、確率的にモデル化する。テンポを隠れ変数として含む確率モデルを用いたビート推定において、隠れ変数であるテンポの値を一意に定めるのではなく、テンポの存在を確率的に考えて、上記目的関数の極大値（準最適解）を求める。これは、目的関数を増加させるビート更新を行うための補助関数を用いて実現する。補助関数（Ｑ関数）は、テンポを隠れ変数とし、隠れ変数の期待値から得られる事後確率の対数を単調増加させるビートの更新アルゴリズムであり、具体的には、例えばＥＭアルゴリズム(Expectation-Maximization)である。
【００２４】
このような確率モデルを用いたビート解析では、複数の要素（発音時刻、ビート、テンポなど）を確率という枠組みにより、複数のモデルとその目的関数を、論理的整合性をもって統合可能であるという利点がある。
【００２５】
次に、図１を参照して、本明細書における用語について定義する。図１は、ビートと発音時刻との関係を示す説明図である。
【００２６】
・「ビート解析」は、オーディオ信号が表す音楽演奏の音楽的な時刻（単位：［拍］）を求める処理である。
【００２７】
・「発音時刻（Onset time）」は、オーディオ信号に含まれる楽音の開始時刻であり、実時間軸上の時刻で表される。図１に示すように、「発音時刻」は、オーディオ信号に含まれる発音イベントの発生時刻を表す。以下では、オーディオ信号に含まれる個々の楽音の発音時刻をt[1],t[2],・・・, t[N]と称し、これらを総称して「発音時刻Ｔ」と称する（T= t[1], t[2],・・・, t[N]）。
【００２８】
・「発音時刻の間隔(IOI：Inter-Onset Interval)」は、上記発音時刻の実時間上の時間間隔（単位：［秒］）である。図１に示すように、「発音時刻の間隔」は、オーディオ信号に含まれる複数の発音イベントのうち、ビートに対応する大きな発音イベント間の時間を表す。以下では、オーディオ信号に含まれる個々の楽音の間の発音時刻の間隔をx[1],x[2],・・・, x[N]と称し、これらを総称して「発音時刻の間隔Ｘ（若しくは発音時刻間隔Ｘ）」と称する（X= x[1], x[2],・・・, x[N]）。
【００２９】
・「ビート（Beat）」は、オーディオ信号の基準点（例えば、音楽の演奏開始）から数えた拍によって指定される音楽的な時刻である。このビートは、オーディオ信号に含まれる楽音の音楽的時間軸上の開始時刻を表し、１拍、２拍、・・・といったように、音楽的な時刻の単位である拍によって指定される。
【００３０】
・「ビート長（Beat length）」は、ビートの間隔（ビートによって指定される音楽的な時点の間の長さ）であり、単位は［拍］である。このビート長は、音楽的時間上の時間間隔を表し、上述した実時間軸上の「発音時刻の間隔」に対応する。以下では、オーディオ信号に含まれる個々の楽音の間のビート長をq[1],
q[2],・・・, q[N]と称し、これらを総称して「ビート長Ｑ」と称する（Q= q[1],q[2],・・・, q[N]）。
【００３１】
・「テンポ（Tempo）」は、発音時刻の間隔［秒］をビート長［拍］で除算した値（単位：［秒／拍］）、又は、ビート長［拍］を発音時刻の間隔［秒］で除算した値［単位：拍／分］である。テンポは、発音時刻の間隔［秒］をビート長［拍］に変換するパラメータとして機能する。本実施形態では、前者を採用し、テンポの単位として［秒／拍］を用いるが、一般的には［BPM:
beats per minute］又は［拍／分］が用いられる。以下では、オーディオ信号に含まれる個々の楽音でのテンポを、z[1], z[2],・・・,
z[N]と称し、これらを総称して「テンポＺ」と称する（Z= z[1], z[2],・・・, z[N]）。
【００３２】
かかるテンポＺは、発音時刻間隔（ＩＯＩ）Ｘとビート長Ｑとの関係を表すパラメータとなる（Ｚ＝Ｘ／Ｑ）。発音時刻間隔Ｘとビート長ＱとテンポＺとの関係から分かるように、一般的に、ビート長Ｑは、発音時刻間隔Ｘ及びテンポＺの両者が与えられなければ求められない。しかし、一般にオーディオ信号から発音時刻間隔Ｘ及びテンポＺの両者を正確に求めることは難しい。そこで、本実施形態では、オーディオ信号から発音時刻間隔Ｘの候補として発音時刻Ｔを求めるとともに、テンポＺを所定の固定値に限定せずに、確率的にテンポＺの値を扱うことで、テンポの時間変化やビートの変動に対してより頑健なビート長Ｑの推定を可能にする。
【００３３】
次に、上記のビート解析処理を実行する信号処理装置の構成について説明する。本実施形態にかかる信号処理装置は、オーディオ信号を処理するためのプロセッサ、メモリ等を有する機器であれば、各種の電子機器に適用できる。具体例を挙げると、信号処理装置は、例えば、パーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、家庭用ゲーム機、ＤＶＤ／ＨＤＤレコーダー等の記録再生装置、テレビジョン受像器等の情報家電、或いは、携帯型音楽プレーヤ、ＡＶコンポ、携帯ゲーム機器、携帯電話、ＰＨＳ等の携帯端末、デジタルカメラ、ビデオカメラ、車載用オーディオ機器、ロボット、電子ピアノ等の電子楽器、無線／有線の通信機器などに適用できる。
【００３４】
また、この信号処理装置が取り扱うオーディオ信号コンテンツは、例えば、音楽（楽曲、音響など）、講演、ラジオ番組等の音声（Ａｕｄｉｏ）コンテンツに含まれるオーディオ信号のみならず、映画、テレビジョン番組、ビデオプログラム等の映像（Ｖｉｄｅｏ）コンテンツや、ゲーム、ソフトウェアに含まれるオーディオ信号であってもよい。また、信号処理装置に入力されるオーディオ信号は、例えば、音楽ＣＤ、ＤＶＤ、メモリカード等のリムーバブル記憶媒体や、ＨＤＤ、半導体メモリなど各種の記憶装置から読み出されたオーディオ信号であってもよいし、インターネット、電話回線網、衛星通信網、放送通信網等の公衆回線網や、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の専用回線網などのネットワークを介して受信されたオーディオ信号であってもよい。
【００３５】
ここで、図２を参照して、本実施形態にかかる信号処理装置１０のハードウェア構成について説明する。なお、図２では、信号処理装置１０が例えばパーソナルコンピュータで構成された例を示しているが、本発明の信号処理装置はかかる例に限定されるものではなく、上述した各種の電子機器に適用できる。
【００３６】
図２に示すように、信号処理装置１０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、ホストバス１０４と、ブリッジ１０５と、外部バス１０６と、インタフェース１０７と、入力装置１０８と、出力装置１０９と、ストレージ装置１１０（例えばＨＤＤ）と、ドライブ１１１と、接続ポート１１２と、通信装置１１３とを備える。
【００３７】
ＣＰＵ１０１は、演算処理装置および制御装置として機能し、各種プログラムに従って動作し、信号処理装置１０内の各部を制御する。このＣＰＵ１０１は、ＲＯＭ１０２に記憶されているプログラム、或いは、ストレージ装置１１０からＲＡＭ１０３にロードされたプログラムに従って、各種の処理を実行する。ＲＯＭ１０２は、ＣＰＵ１０１が使用するプログラムや演算パラメータ等を記憶するとともに、ＣＰＵ１０１からストレージ装置１１０へのアクセスを軽減するためのバッファーとしても機能する。ＲＡＭ１０３は、ＣＰＵ１０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはＣＰＵバスなどから構成されるホストバス１０４により相互に接続されている。ホストバス１０４は、ブリッジ１０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス１０６に接続されている。
【００３８】
入力装置１０８は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、レバーなどから構成される。信号処理装置１０のユーザは、この入力装置１０８を操作することにより、信号処理装置１０に対して各種のデータを入力したり、処理動作を指示したりすることができる。出力装置１０９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置などの表示装置と、スピーカ等の音声出力装置などで構成される。
【００３９】
ストレージ装置１１０は、各種のデータを格納するための装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。このストレージ装置１１０は、記憶媒体であるハードディスクと、ハードディスクを駆動するドライブとから構成され、ＣＰＵ１０１が実行するプログラムや各種データを格納する。ドライブ１１１は、リムーバブルメディア用の駆動装置であり、信号処理装置１０に内蔵、或いは外付けされる。このドライブ１１１は、信号処理装置１０に搭載されたＣＤ、ＤＶＤ、Ｂｌｕ−Ｒａｙディスク、メモリカード等のリムーバブルメディアに対して、各種のデータを書き込み／読み出しする。例えば、ドライブ１１１は、音楽ＣＤ、メモリカードなどに記録されている音楽コンテンツを読み出して、再生する。これにより、音楽コンテンツのオーディオ信号が信号処理装置１０に入力される。
【００４０】
接続ポート１１２は、外部周辺機器を接続するためのポート（例えばＵＳＢポート）であり、例えば、ＵＳＢ、ＩＥＥＥ１３９４等の接続端子を有する。接続ポート１１２は、インタフェース１０７、および外部バス１０６、ブリッジ１０５、ホストバス１０４等を介してＣＰＵ１０１等に接続されている。この接続ポート１１２には、例えば、ＵＳＢメモリ等のコネクタ付きリムーバブルメディアや、携帯型映像／音楽プレーヤ、ＰＤＡ、ＨＤＤ等の外部機器が接続される。この接続ポート１１２を介して、例えば、リムーバブルメディア又は外部機器などから転送された音楽コンテンツのオーディオ信号が信号処理装置１０に入力される。
【００４１】
通信装置１１３は、例えば、インターネット、ＬＡＮ等の各種のネットワーク５に接続するための通信インタフェースであり、通信方式は無線／有線通信を問わない。この通信装置１１３は、ネットワークを介して接続された外部機器との間で、各種データを送受信する。例えば、通信装置１１３は、コンテンツ配信サーバから、音楽コンテンツ、映画コンテンツ等を受信する。これにより、外部から受信した音楽コンテンツのオーディオ信号が信号処理装置１０に入力される。
【００４２】
次に、図３〜図５を参照して、本実施形態にかかる信号処理装置１０の機能構成について説明する。図３は、本実施形態にかかる信号処理装置１０の構成を示す機能ブロック図である。図４は、本実施形態にかかる信号処理装置１０により実行される信号処理方法（ビート及びテンポ解析方法）の概要を示す説明図である。図５は、オーディオ信号のパワー包絡の自己相関関数と、テンポの確率分布との関係を示す説明図である。
【００４３】
図３に示すように、本実施形態にかかる信号処理装置１０は、オーディオ信号の信号レベルに基づいて発音時刻Ｔを検出する発音時刻検出部１２と、フラッシュメモリ、ＲＡＭ等のメモリで構成された発音時刻記録部１４と、オーディオ信号の信号レベルに関する自己相関関数を用いてテンポＺの初期確率分布Ｐ０（Ｚ）を設定するテンポ確率分布設定部１６と、検出された発音時刻Ｔに関する情報（発音時刻の間隔Ｘ）とテンポＺの初期確率分布Ｐ０（Ｚ）とに基づいて、オーディオ信号が表す音楽のビート長を算出するビート長算出部１８と、上記推定されたビートと上記検出された発音時刻の間隔Ｘとに基づいて、オーディオ信号が表す音楽のテンポを算出するテンポ算出部２０と、フラッシュメモリ、ＲＡＭ等のメモリで構成された特徴量記録部２２と、ビート又はテンポＺ等の特徴量を利用する特徴量利用部２４とを備える。
【００４４】
発音時刻検出部１２は、図４に示すように、外部から入力されたオーディオ信号を解析して、オーディオ信号に含まれる複数の楽音（発音イベント）の発音時刻Ｔを検出する。例えば、発音時刻検出部１２は、オーディオ信号のパワー（信号レベル）の時間変化（即ち、オーディオ信号のパワー包絡）を求めて、オーディオ信号に含まれる複数のピークを抽出し、この各ピーク直前の時刻を発音時刻Ｔとして推定する。さらに、発音時刻検出部１２は、上記のようにして検出した発音時刻Ｔを、発音時刻記憶部１４に保存する。なお、かかる発音時刻検出部１２による発音時刻検出処理の詳細は後述する（図７等参照）。
【００４５】
テンポ確率分布設定部１６は、図４及び図５に示すように、オーディオ信号の信号レベルを解析することで、オーディオ信号のパワー包絡の自己相関関数を求める。このパワー包絡の自己相関関数において、自己相関の高い周期はテンポである確率が高い。従って、テンポ確率分布設定部１６は、この自己相関関数を用いてテンポＺの初期確率分布Ｐ０（Ｚ）を算出して、この初期確率分布Ｐ０（Ｚ）を後述のテンポＺの確率分布Ｐ（Ｚ）の初期値として設定する。なお、このテンポ確率分布設定部１６によるテンポＺの初期確率分布設定処理の詳細は後述する（図８等参照）。
【００４６】
ビート長算出部１８は、テンポＺを確率変数として含む確率モデルを用いたビート解析を行い、オーディオ信号のビート長Ｑを求める。図４に示すように、ビート長算出部１８は、オーディオ信号の発音時刻間隔Ｘについて、ＥＭアルゴリズムを利用して、最も尤もらしいビート長Ｑを確率的に推定する。オーディオ信号の各楽音（発音イベント）のビート長Ｑが得られれば、当該ビート長Ｑから、オーディオ信号の楽音の音楽的時刻であるビートを求めることができる。
【００４７】
かかるビート長算出部１８によるビート推定処理では、ビート長算出部１８は、発音時刻検出部１２により検出された複数の発音時刻Ｔの差分を計算することで、発音時刻の間隔Ｘを求める。さらに、ビート長算出部１８は、テンポ確率分布設定部１６により求められたテンポＺの初期確率分布Ｐ０（Ｚ）を用いて、発音時刻の間隔Ｘに対応する発音がオーディオ信号のビートである確率を表す目的関数Ｐ（Ｑ｜Ｘ）と、目的関数Ｐ（Ｑ｜Ｘ）を単調増加（単調非減少）させるビート長Ｑの更新を導く補助関数（Ｑ関数）とを設定する。そして、ビート長算出部１８は、補助関数（Ｑ関数）を用いて対数尤度
log P(X|Q）を極大値に導く更新を繰り返すことにより、目的関数Ｐ（Ｑ｜Ｘ）の準最適解を求める。ＥＭアルゴリズムは、Ｅステップ（Expectation
step）と、Ｍステップ(Maximization step)とを含む。Ｅステップでは、ビート長算出部１８は、隠れ変数であるテンポＺの確率分布Ｐ（Ｚ｜Ｘ，Ｑ）の推定処理を行い、補助関数（Ｑ関数）を求める。Ｍステップでは、ビート長算出部１８は、ビタビアルゴリズムなどにより補助関数（Ｑ関数）を最大化する。このＥステップ及びＭステップを繰り返すことで補助関数（Ｑ関数）を収束させ、収束したＱ関数からビート長Ｑを求める。
【００４８】
さらに、ビート長算出部１８は、上記のようにして推定したビート長Ｑを、特徴量記憶部２２に保存する。なお、かかるビート長算出部１８によるビート（ビート長Ｑ）の算出処理の詳細は後述する（図８等参照）。
【００４９】
テンポ算出部２０は、上記ビート長算出部１８により算出されたビート長Ｑと、発音時刻間隔Ｘとに基づいて、テンポＺを算出する。例えば、テンポ算出部２０は、オーディオ信号に含まれる各楽音の発音時刻間隔ｘ［秒］を、当該各楽音のビート長ｑ［拍］で除算することで、当該各楽音でのテンポｚ［秒／拍］を求める（ｚ＝ｘ／ｑ）。さらに、テンポ算出部２０は、上記のようにして算出したビート長Ｑを、特徴量記憶部２２に保存する。なお、かかるテンポ算出部２０によるテンポＺの算出処理の詳細は後述する（図９等参照）。
【００５０】
特徴量利用部２４は、上記特徴記憶部２２に記憶されたオーディオ信号の特徴量（ビート長Ｑ又はテンポＺなど）を利用して、電子機器のユーザに対して多様なアプリケーションを提供する。かかるビート長Ｑ又はテンポＺなどの特徴量の利用方法としては、例えば、音楽コンテンツに対するメタデータ付与、音楽コンテンツの検索、音楽コンテンツの推薦、楽曲の整理、ロボットを音楽のビートに合わせて踊らせるロボットダンスとの同期、写真のスライドショーとの同期、自動採譜、音楽解析など、多岐に渡る。なお、上記の特徴量は、オーディオ信号が表す音楽の特徴を表す情報であれば、上記ビート長Ｑ、テンポＺ以外にも、これらビート自体や、ビート長Ｑ、テンポＺなどを演算、加工して求められる任意の情報をも含む。
【００５１】
以上、本実施形態にかかる信号処理装置１０の機能構成について説明した。上述した発音時刻検出部１２、テンポ確率分布設定部１６と、ビート長算出部１８、テンポ算出部２０又は特徴量利用部２４の一部又は全部は、ソフトウェアで構成してもよいし、ハードウェアで構成してもよい。ソフトウェアで構成する場合には、上記各部の処理をコンピュータに実行させるコンピュータプログラムを信号処理装置１０にインストールすればよい。このプログラムは、例えば、任意の記憶媒体又は任意の通信媒体を介して信号処理装置１０に提供される。
【００５２】
次に、図６を参照して、本実施形態にかかる信号処理方法の一例であるビート解析方法について説明する。図６は、本実施形態にかかるビート解析方法を示すフローチャートである。
【００５３】
図６に示すように、本実施形態にかかるビート解析方法は、ビート推定処理の前処理としてオーディオ信号から発音時刻Ｔを検出する発音時刻検出処理（Ｓ１０）と、Ｓ１０で求めた発音時刻Ｔに基づいてビートを確率的に求めるビート推定処理（Ｓ２０）とを含む。
【００５４】
発音時刻検出処理（Ｓ１０）では、オーディオ信号を処理して、オーディオ信号が表す音楽（演奏されている楽音）の発音時刻Ｔを検出して、発音時刻間隔Ｘを求める。発音時刻Ｔを検出する手法は、従来でも様々な手法が提案されている。本実施形態にかかるビート解析方法では、このような発音時刻検出処理を前処理として使用し、発音時刻Ｔの検出処理Ｓ１０と、発音時刻Ｔからビートを求めるビート推定処理Ｓ２０とは独立した処理となっている。このため、本実施形態にかかるビート解析方法は、原理的に、発音時刻検出方法との組み合わせにより使用条件が限定されるものではない。
【００５５】
次に、図７を参照して、本実施形態にかかる発音時刻検出処理（図６のＳ１０）の具体例について詳細に説明する。図７は、図６の発音時刻検出処理Ｓ１０の例を示すフローチャートである。
【００５６】
図７に示すように、発音時刻検出処理Ｓ１０では、まず、信号処理装置１０の発音時刻検出部１２は、入力されたオーディオ信号のパワー（信号レベル）の時間変化（即ち、パワー包絡）を求め、そのパワーの時間変化のピークを抽出する（ステップＳ１１〜Ｓ１３）。より詳細には、発音時刻検出部１２は、例えば、オーディオ信号の短時間（例えば数十ミリ秒程度）ごとのエネルギーを計算することによって、当該短時間ごとのオーディオ信号のパワーの時間変化（即ち、パワー包絡）を表すレベル信号を生成する（ステップＳ１１）。次いで、発音時刻検出部１２は、オーディオ信号のパワーの時間変化（レベル信号）から無音区間を除去し（ステップＳ１２）、さらに、減衰部を平滑化する（ステップＳ１３）。その後、発音時刻検出部１２は、Ｓ１２及びＳ１３での処理後のレベル信号のピークを抽出し（ステップＳ１４）、そのピークの直前のレベル信号が極小値となる時刻を発音時刻Ｔ（＝t[1], t[2],・・・, t[N]）として推定する（ステップＳ１５）。そして、発音時刻検出部１２は、Ｓ１５で推定した発音時刻Ｔを、上記の発音時刻記憶部１４に保持する（ステップＳ１６）。
【００５７】
以上、発音時刻検出処理について説明した。上記のように検出された発音時刻Ｔの中には、ビートに対応する発音イベント（楽音）の発音時刻もあるが、一般的には、ビートに対応しない発音イベントの発音時刻が検出される場合や、或いは、本来ビートの存在する時刻に発音時刻が検出されない場合もある。従って、検出された発音時刻Ｔの中から、ビートに対応する適切な発音時刻Ｔを選別するとともに、本来ビートが存在する時刻に発音時刻Ｔを補完する必要がある。そこで、以下に説明するビート推定処理では、上記検出された発音時刻Ｔから求めた発音時刻の間隔Ｘ（単位：［秒］）を、適切なビート長（単位：［拍］）に変換するために、確率モデルを用いたビート解析を行う。
【００５８】
以下に、本実施形態にかかる確率モデルを用いたビート解析の原理について説明する。まず、上記発音時刻検出処理（Ｓ１０）で検出された複数の発音時刻Ｔ（＝t[0], t[1],・・・, t[N]）の差分を算出することで、発音時刻間隔（ＩＯＩ）Ｘ（＝ x[1], x[2],・・・, x[N]）が求められる。例えば、発音時刻t[0]と発音時刻t[1]との間の差分が、発音時刻間隔x[1]となる。次いで、ビートに対応しない発音時刻の存在や、逆にビートに対応する発音時刻が存在しない可能性も含めて、発音時刻間隔x[1],
…, x[N] （単位：［秒］）に対応するビート長ｑの時系列（単位：［拍］）を求める。
【００５９】
テンポＺやビートパターンや演奏の揺らぎを含む様々な変動を確率的に考慮した場合、オーディオ信号から得た発音時刻間隔Ｘ（ = x[1], …, x[N]）から、ビート長Ｑ（= q[1], …, q[N]）を求める問題を、検出されたＸに対して最も尤もらしいＱを求める問題として考えると、次の式（１）で定式化される。ここで、P(Q|X)
∝ P(X|Q)P(Q)であるので、以下、P(X|Q)P(Q)を与えるモデル化を行い、その最大化手法が得られれば、Ｑを求めることができる。
【００６０】
【数１】
0004640407.tif 000004
P(Q|X)：事後確率
P(X|Q)：尤度
P(Q)  ：事前確率
【００６１】
この推定手法は、事後確率最大化推定（ＭＡＰ：maximum a posteriori probability）と呼ばれ、P(Q|X)∝P(X|Q)P(Q)は、事後確率(posteriori
probability)と呼ばれる。以下、本実施形態にかかるビート解析において、発音時刻間隔Ｘからビート長Ｑを求めるモデル化と、このモデルを用いて実際にビートを求めるための計算手法について述べる。
【００６２】
ここで、実際には、各ビート長q[n]には、そのビートを演奏したテンポz[n]というもうひとつの音楽的要素が存在するため、テンポzを考えずに、発音時刻間隔（音長）x[n]とビート長q[n]の関係を考えることはできない。即ち、ビート長Ｑと発音時刻間隔Ｘの関係は、テンポを含んだモデルで考えなければモデル化できない。
【００６３】
モデル化できるのはP(X,Z|Q)であるが、本実施形態で求めたいのはP(X|Q)P(Q)である。（以下、記述を簡単にするために、「P(X|Q)P(Q)」の「P(Q)」を一時的に省略して表記する。このP(Q)は後で含めて扱うことにする。この場合、ＭＡＰ推定ではなく、最尤(ＭＬ：
maximum likelihood) 推定となる。）。本実施形態にかかるビート推定方法では、P(X,Z|Q)を与えるモデルを用いてP(X|Q)を最大化するＱを求める手法として、ＥＭアルゴリズムを適用する。ＥＭアルゴリズムは尤度関数P(X|Q)の推定手法として知られるが、この手法は事前確率P(Q)を含む確率モデルであっても使用することができ、本手法は、事前知識P(Q)を含む場合にＥＭアルゴリズムを適用する。
【００６４】
ＥＭアルゴリズムにおいては、次の関係式（２）で、あるビート長Ｑを仮定したときのテンポＺ（隠れ変数）の確率分布P(Z|X,Q)を用いて、log P(X,Z|Q’)の期待値を求めると、ビート長をＱからＱ’に更新したときの対数尤度の差「log
P(X|Q’) − log P(X|Q)」の期待値は、補助関数（Ｑ関数）を最大化するＱ’を求めると、必ず正（非負）となることが数学的に証明されている。補助関数であるＱ関数は、次の式（３）で表される。ＥＭアルゴリズムは、Ｑ関数を求めるＥステップ（Expectation
step）と、Ｑ関数を最大化するＭステップ（Maximization Step)ステップとを繰り返すことで、対数尤度log P(X|Q)を単調増加させて極大値に導くものである。
【００６５】
【数２】
0004640407.tif 000005
【００６６】
本実施形態では、上記のようなＥＭアルゴリズムをビート解析に適用する。以下、P(X,Z|Q)を与えるテンポＺとビート長Ｑと発音時刻間隔Ｘの関係を確率的に与えるモデルと、このモデルを用いたときのＱ関数、および、そのＱ関数を用いた場合のＥＭアルゴリズムの具体的な計算方法について述べる。
【００６７】
確率モデル化について、まずテンポＺの変動を確率的にモデル化する。テンポＺは緩やかに変動するという特性を有するが、この特性により、テンポＺが一定値となる確率が高いというようにモデル化できる。例えば、テンポＺの変動が０を中心とした確率分布 p(z[n]|z[n-1])（例えば、正規分布や対数正規分布）に従うマルコフ過程としてモデル化できる。ここで、z[n]はn番目の発音時刻t[n]でのテンポに相当する。
【００６８】
次に、発音時刻間隔Ｘ（＝ x[1], x[2],・・・, x[N]）の変動についてモデル化する。発音時刻間隔x[n]の変動は、テンポz[n]と、ビート長q[n]に依存した確率を与えられる。テンポが一定で発音時刻Ｔの変動や検出の誤差が全くない理想的な場合は、発音時刻間隔（音長）x[n](単位：［秒］)は、テンポ
z[n](単位：［秒／拍］)とビート長q[n]（単位：［拍］）の積に等しい（x[n] = z[n]・q[n]）。しかし、実際には、演奏者の演奏表現によるテンポＺや発音時刻Ｔの変動や、発音時刻の検出誤差を含むため、一般にはこの両者は等しくない。このときの誤差について確率的に考えることができる。確率分布p(x[n]
| q[n],z[n])は、例えば、正規分布や対数正規分布を用いてモデル化することができる。
【００６９】
さらに、発音時刻Ｔにおけるオーディオ信号の音量を考えると、一般には、音量が大きい音は、音量が小さい音よりも、ビートである傾向が高いと考えられる。そこで、この傾向も音量を特徴量のひとつに加えて、P（X｜Q,Z）に含めることができ、確率モデルに与えることができる。
【００７０】
以上の２つを組み合わせると、ビート長がQ = q[1],…q[N]であるときに、テンポが
Z = z[1],…, z[N]であり、かつ、発音時刻間隔（ＩＯＩ）Ｘが X = x[1],…,x[N]である確率P(X,Z|Q) を与えることができる。
【００７１】
また、ビート長のパターン q[1], …, q[N]についても、その出現確率を考えることができる。例えば、出現頻度の高いビート長パターンや、楽譜上は書けるが現実には現れないビート長パターンもあり、これらはそれぞれ、そのパターンの出現確率の高低で扱うことができると考えるのは自然である。従って、例えば、ｑの時系列をN-gramモデルによりモデル化するか、或いは、所定のビート長のテンプレートパターンの出現確率、又は、そのテンプレートパターンをN-gramモデルによりモデル化することによって、ビート長パターンを確率的にモデル化できる。このモデルによって与えられるビート長Ｑの確率をP(Q)とする。
【００７２】
このようにP(Q)を考えた場合、Ｑ関数は、尤度についてＥＭアルゴリズムを適用した場合のＱ関数に、log
P(Q) を加えたものにすることで、ＭＡＰ推定するときの事後確率Ｐ（Ｑ｜Ｘ）の対数の増加を導く補助関数として、当該Ｑ関数を用いることができる。
【００７３】
このモデルが与えるP(X,Z|Q)を用いると、テンポＺの確率分布P(Z|X,Q)は、次式（４）で与えることができる。以上から、先に述べたＱ関数を計算することができる。従って、この場合には、Ｑ関数は次式（５）で与えられる。
【００７４】
【数３】
0004640407.tif 000006
【００７５】
【数４】
0004640407.tif 000007
【００７６】
式（５）のＱ関数を最大にするＱ’を計算するためには、p(z[n]=z|X,Q)を具体的に計算する必要がある。以下、この隠れ変数（テンポｚ）の確率分布の計算手法（Ｅステップに相当）について述べる。
【００７７】
Ｑ関数を最大化するために必要となるp(z[n] =z |X,Q)は、以下のアルゴリズムにより求められる。これは、ＨＭＭ（hidden
Markov model）で“Baum-Welch algorithm”と呼ばれる手法を応用した手法である。次式（６）の前向き確率α_n(z)と、次式（７）の後ろ向き確率β_n(z)を用いると、p(z[n]=z|X,Q)は、次式（８）で計算できる。前向き確率α_n(z)、後ろ向き確率β_n(z)は、それぞれ次式（９）、（１０）を用いて、効率的な再帰計算により求められる。なお、ＨＭＭの“Baum-Welch
algorithm”と異なる点は、本モデルでは、遷移確率を求めることが目的ではなく、また、本モデルの隠れ変数は、隠れ変数は隠れ状態として扱われる離散化された変数ではなく、連続値をとる変数である点である。
【００７８】
【数５】
0004640407.tif 000008
【００７９】
次に、上記のようにして計算されるＱ関数 G(Q,Q’)を最大化するＱ’を求める（Ｍステップに相当）。このときに使用するアルゴリズムはP(Q)に依存し、マルコフモデルに基づく場合は、ビタビアルゴリズム(Viterbi
algorithm)のようにＤＰ(dynamic programming)に基づくアルゴリズムで最適化できる。Ｑ’が可変個のビート長Ｑからなるテンプレートのマルコフモデルである場合には、例えば、時間同期ビタビアルゴリズム(time
synchronous Viterbi search)又は２段ＤＰ(2-stage dynamic programming)など、P(Q)を与えるモデルに応じて適切なアルゴリズムを選ぶ。これにより、Ｑ関数を最大化するビート長Ｑを求めることができる。
【００８０】
以上から、ある発音時刻間隔ＩＯＩの系列Ｘが与えられた場合、前向き確率αと後ろ向き確率βを計算するＥステップと、このα及びβを基にＱ関数を最大化するＱを求めるＭステップとを繰り返すことにより、補助関数であるＱ関数を収束させて、各発音時刻Ｔに対応するビート長Ｑ（Q= q[1],q[2],・・・, q[M]）を求めることができる。
【００８１】
ところで、一般にＥＭアルゴリズムでは、収束解が、繰り返し演算を開始するために与える初期値に依存するので、初期値の与え方が性能に重要な影響を与える。ここでは、初期値を与える有望な手がかりを、ビートではなくテンポについて得ることができる。オーディオ信号のパワーの時間変化（パワー包絡）の自己相関関数を用いた場合、自己相関が大きい周期はその周期がテンポである確率が高いと考えられることから、自己相関の対象関係を確率の大小関係に反映させたテンポの確率分布を使用する。このテンポの初期確率分布
P0(Z)を初期値として利用して、上記ＥＭアルゴリズムを適用する。
【００８２】
また、上記のように求められたビート長Ｑ（= q[1],q[2],・・・,
q[M]）を用いて、１拍ごと又は２拍ごとの演奏されたビートを求めるためには、ビート長Ｑに基づき、必要に応じてビートの発音時刻を補間して、ビートを求めればよい。
【００８３】
以上、本実施形態にかかるビート解析法の原理について説明した。かかるビート解析法によれば、オーディオ信号のテンポＺが変化する場合でも、オーディオ信号の各位置での適切なビート長Ｑ（= q[1],q[2],・・・, q[M]）と、ビートを求めることができる。
【００８４】
次に、図８を参照して、以上のようなビート解析を利用したビート推定処理（図６のＳ２０）の例について詳細に説明する。図８は、図６のビート推定処理Ｓ２０の例を示すフローチャートである。このビート推定処理Ｓ２０は、上述した発音時刻検出処理（Ｓ１０）後の任意のタイミングで実行可能である。
【００８５】
図８に示すように、発音時刻検出処理Ｓ１０では、まず、信号処理装置１０のビート長算出部１８は、検出された発音時刻Ｔの間隔Ｘを算出する（ステップＳ２１）。詳細には、ビート長算出部１８は、上記発音時刻検出処理（Ｓ１０）で検出された複数の発音時刻Ｔ（＝t[1], t[2],・・・, t[N]）を、発音時刻記憶部１４から読み出し、それぞれの発音時刻ｔ相互の差分を算出して、発音時刻間隔（ＩＯＩ）Ｘ（＝
x[1], x[2],・・・, x[N]）を求める。例えば、発音時刻t[2]から発音時刻t[1]を減算することで、発音時刻間隔x[1]を求める。
【００８６】
次いで、テンポ確率分布設定部１６は、オーディオ信号のパワー包絡の自己相関関数（図５参照。）を求める（ステップＳ２２）。詳細には、テンポ確率分布設定部１６は、入力されたオーディオ信号のパワー（信号レベル）を解析することで、オーディオ信号のパワーの時間変化（即ち、オーディオ信号のパワー包絡）を生成する。このパワー包絡の生成処理は、例えば、図７のＳ１１と同様であるので、詳細説明は省略する。なお、テンポ確率分布設定部１６は、自らパワー包絡を求めずに、発音時刻検出部１２が求めたパワー包絡を利用してもよい。次いで、テンポ確率分布設定部１６は、オーディオ信号のパワー包絡の自己相関関数を求める。
【００８７】
さらに、テンポ確率分布設定部１６は、Ｓ２２で求めたオーディオ信号のパワー包絡の自己相関関数を用いて、隠れ変数であるテンポＺの初期確率分布Ｐ０（Ｚ）を算出し、このＰ０（Ｚ）をテンポＺの確率分布Ｐ（Ｚ）の初期値として設定する（ステップＳ２３）。上述したように、パワー包絡の自己相関が高い周期は、テンポＺである確率が高いことを利用して、テンポ確率分布設定部１６は、当該自己相関関数をテンポＺの初期確率分布Ｐ０（Ｚ）に変換する。
【００８８】
次いで、ビート長算出部１８は、目的関数Ｐ（Ｑ｜Ｘ）と、補助関数（Ｑ関数）を設定する（ステップＳ２４）。目的関数Ｐ（Ｑ｜Ｘ）は、オーディオ信号の表す音楽の発音時刻間隔Ｘが与えられたときに、発音時刻間隔Ｘが当該音楽のビート間のビート長Ｑに相当する確率である。換言すると、目的関数Ｐ（Ｑ｜Ｘ）は、音楽の発音時刻Ｔが与えられたときに、当該発音時刻Ｔが当該音楽のビートに相当する確率である。補助関数（Ｑ関数）は、目的関数Ｐ（Ｑ｜Ｘ）を単調増加（単調非減少）させるようなビート長Ｑの更新を導く関数である。詳細には、補助関数（Ｑ関数）は、テンポＺを隠れ変数とし、隠れ変数の期待値をとることにより得られる事後確率の対数を単調増加（単調非減少）させるビート長Ｑの更新アルゴリズムである。この補助関数（Ｑ関数）は、上記ＥＭアルゴリズムにより導出されるが（式（３））、例えば、上述したように、ビート解析に適合するよう修正した式（５）を用いることができる。
【００８９】
以下では、説明の便宜上、Ｑ関数を次の式（１１）で表す。式（１１）のＱ関数におけるテンポＺ（隠れ変数）の確率分布Ｐ（Ｚ）については、初期値として上記Ｓ２３で求められた初期確率分布Ｐ０（Ｚ）が用いられ、その後は、後述するＥＭアルゴリズムのＥステップＳ２６〜Ｓ２８で求められたＰ（Ｚ｜Ｘ，Ｑ）が用いられる。
【００９０】
【数６】
0004640407.tif 000009
【００９１】
次いで、ビート長算出部１８は、ＥＭアルゴリズムにより、補助関数（Ｑ関数）を用いて、対数尤度ｌｏｇＰ（Ｘ｜Ｑ）を極大値に導くビート長Ｑの更新を行う。このＥＭアルゴリズムは、Ｑ関数を最大化するＱを求めるＭステップＳ２５と、テンポＺの確率分布Ｐ（Ｚ）を推定してＱ関数を求めるＥステップＳ２６〜Ｓ２８と、を含む。
【００９２】
まず、Ｍステップでは、ビート長算出部１８は、例えば、ビタビアルゴリズム又は２段ＤＰなどにより、次式（１２）のように補助関数（Ｑ関数）を最大化する（ステップＳ２５）。Ｑ関数を最大化するＱを求めることで、与えられた発音時刻間隔Ｘに対応するビート長Ｑを推定できる。Ｓ２９でＱ関数が収束したと判定されるまでは、本ステップＳで求められるビート長Ｑには、ビートの脱落／挿入が含まれている。
【００９３】
【数７】
0004640407.tif 000010
次いで、ＥステップＳ２６〜Ｓ２８では、ビート長算出部１８は、前向き確率α及び後ろ向き確率βを用いて、Ｐ（Ｚｔ｜Ｘ，Ｑ）を効率的に計算する。まず、フォワードアルゴリズム（forward algorithm）により、次式（１３）に示す前向き確率αを計算し（ステップＳ２６）、次いで、バックワードアルゴリズム（backward
algorithm）により、次式（１４）に示す後ろ向き確率βを計算する（ステップＳ２７）。その後、ビート長算出部１８は、式（１５）のように前向き確率αと後ろ向き確率βを乗算して、Ｐ（Ｚｔ｜Ｘ，Ｑ）を求める。
【００９４】
【数８】
0004640407.tif 000011
【００９５】
その後、ビート長算出部１８は、Ｑ関数が収束しているか否かを判定し（ステップＳ２９）、収束していない場合には、Ｓ２５に戻り、Ｑ関数が収束するまで上記のＥＭアルゴリズムを繰り返す（Ｓ２５〜Ｓ２９）。Ｑ関数が収束している場合には、Ｓ３０に進み、収束したＱ関数をビート長Ｑとする（ステップＳ３０）。
【００９６】
次に、本実施形態にかかるテンポ解析方法について説明する。テンポＺは、上述したビート解析処理で求めたビート長Ｑと、発音時刻間隔Ｘを用いて算出できる。最適なテンポＺは、目的に応じて例えば以下の手法で求めることができる。
【００９７】
例えば、演奏の細かな変動を観測したい場合は、各発音時刻間隔Ｘを、それに対応するビート長Ｑで除算することで、ビート１拍ごとの時間としてテンポＺを厳密に求めることができる（Ｚ＝Ｘ／Ｑ）。
【００９８】
ここで、図９を参照して、本実施形態にかかる信号処理方法の一例であるテンポ解析方法について説明する。図９は、本実施形態にかかるテンポ解析方法を示すフローチャートである。
【００９９】
図９に示すように、まず、発音時刻検出処理を実行し（ステップＳ４０）、次いで、ビート推定処理を実行する（ステップＳ４１）。この発音時刻検出処理Ｓ４０は、図７の処理Ｓ１１〜Ｓ１６と同様であり、ビート推定処理Ｓ４１は、図８の処理Ｓ２１〜Ｓ３０と同様であるので、詳細説明は省略する。
【０１００】
次いで、発音時刻検出処理Ｓ４０で検出された発音時刻Ｔから求めた各発音時刻間隔Ｘ（= x[1], x[2],・・・, x[N]）を、ビート推定処理Ｓ４１で得られた各ビート長Ｑ（= q[1],q[2],・・・, q[N]）を除算して、各テンポＺ（=
z[1], z[2],・・・, z[N]）を求める（ステップＳ４２）。
【０１０１】
また、確率モデルがモデル化するテンポＺが滑らかに変動するという特性を仮定してテンポＺを求めるならば、モデルの中で最も尤もらしいテンポＺを、次式（１６）で求めることもできる。このようにテンポＺの変動をスムージングして求める方法以外にも、例えば、テンポが一定値又はテンプレートと一致するように二乗誤差を最小化するなど、多様な方法でテンポを求めることができる。
【０１０２】
【数９】
0004640407.tif 000012
【０１０３】
次に、図１０を参照して、本実施形態にかかる信号処理方法によるビートとテンポの解析結果の具体例について説明する。図１０Ａは、本実施形態にかかる信号処理装置１０の表示画面にビートとテンポの解析結果を表示した例を示す。図１０Ａは、前処理（発音時刻の検出後、テンポ色確率ビート解析前）後、ビート解析処理前の表示画面を示し、図１０Ｂは、ビート解析後の表示画面を示している。
【０１０４】
図１０Ａに示すように、ビート解析前の表示画面には、オーディオ信号のパワー包絡と、パワー包絡から検出された発音時刻Ｘと、パワー包絡の自己相関から求めたテンポＺの初期確率分布が表示されている。ビート解析前の図１０Ａの段階では、ビートの位置は表示されておらず、テンポの確率分布は、あまり明確でない（縦軸方向の濃淡で確率の高低が表現され、白い部分が黒い部分よりも確率が高い。）。
【０１０５】
一方、ビート解析後の表示画面には、上記ビート解析により推定されたビートの位置が、二点鎖線で表示されている。推定されたビートは、複数の発音時刻Ｘのうち、音楽のビートに対応する一部の発音時刻Ｘと合致している。また、推定されたテンポの確率分布については、図１０Ａと比べて、確率が高い白い部分が帯状に明確に表示されている。さらに、時間の経過とともにテンポが徐々に低下しており、数秒間でのテンポの変化を的確に捉えているといえる。さらに、このようにオーディオ信号のテンポが変化する場合であっても、このテンポ変化に追従して、ビートを適切に推定できているといえる。
【０１０６】
以上説明したように、本実施形態にかかるビート解析方法では、オーディオ信号の表す音楽からビートを求めるために、検出された発音時刻Ｔについて最も尤もらしいビートを求め、ビートを確率的に推定する。即ち、音楽の発音時刻間隔Ｘが与えられたときに、その音楽のビート間のビート長Ｑである確率を表す目的関数Ｐ（Ｑ｜Ｘ）と、この目的関数Ｐ（Ｑ｜Ｘ）を単調増加させるビート長Ｑの更新を導く補助関数とを設定する。そして、補助関数を用いて対数尤度ｌｏｇＰ（Ｘ｜Ｑ）を極大値に導く更新を繰り返すことにより、目的関数を最大化するビートを求める。これにより、音楽のビートを正確に求めることができる。
【０１０７】
また、オーディオ信号のパワー包絡の自己相関関数から求められるテンポＺの初期確率分布を、上記Ｑ関数に含まれるテンポＺの確率分布の初期値として適用するので、頑健なビート推定を行うことができる。
【０１０８】
さらに、１つの音楽（例えば１つの楽曲）で、テンポが徐々に速くなる／遅くなるなど、音楽のテンポが変化する場合であっても、そのテンポの変化に追従して、適切なビートを求めることができる。
【０１０９】
ビートとテンポは音楽の基本的な特徴量であり、本実施形態にかかるビート及びテンポ解析方法は、以下に例示するように様々な用途に有用である。
【０１１０】
（音楽のメタデータ付与）
大量の音楽コンテンツデータ（楽曲）があるとき、その楽曲のテンポを全てラベル付けすることは非常に煩雑な作業である。特に、一般にはテンポは曲の途中で変わるので、ビート毎又は小節毎にテンポをラベル付けすることは、大変な労力が要り、現実的には不可能である。本実施形態では、楽曲ごとのテンポや、楽曲内で変化するテンポを自動的に求めて、メタデータとして音楽コンテンツに負荷できるので、上記労力を軽減できる。
【０１１１】
（音楽検索）
例えば、上記のような「テンポの速い曲」、「８ビートの曲」など、上記ビート解析により求めたテンポやビートをクエリーとして、音楽コンテンツの検索に応用できる。
【０１１２】
（音楽推薦）
さらに、好みの曲をリスナーに推薦することに応用できる。例えば、ユーザの好みに合うプレイリストを作るときにも、テンポは、音楽の重要な特徴量として使用される。
【０１１３】
（楽曲の整理）
その他、テンポに基づいて、楽曲の類似度を計算することもできる。ユーザの所有する大量の楽曲を自動分類するためにも、テンポやビートの情報は必要である。
【０１１４】
（ダンスとの同期）
音楽のビートが分かることで、ロボットなどを音楽のビートに合わせて躍らせるようプログラムすることができる。例えば、音楽再生機能を有するロボットも開発されているが、このロボットは、音楽を再生しながら自動的に曲解析を行い、モーションを作成して動作しながら音楽再生する（モーション再生）。かかるロボットを音楽のビートに合わせて躍らせるためには、音楽のビートを検出する必要があり、実際にビート検出機能が含まれているソフトウェアが配布されている。本実施形態にかかるビート解析方法は、このような場面で使用されるビート検出をより頑健にすることが期待できる。
【０１１５】
（写真のスライドショーとの同期）
音楽に合わせて写真を提示するスライドショーでは、写真の切り替わるタイミングを、音楽の切り替わるタイミングと揃えたいという要求がある。本実施形態にかかるビート解析によれば、写真を切り替えるタイミングの候補として、ビートの発音時刻を提供できる。
【０１１６】
（自動採譜）
楽譜として記述する基本要素は、ピッチ（音符の高さ）とビート（音符の長さ）であるので、ピッチ抽出と本実施形態にかかるビート推定を組み合わせることで、音楽を楽譜に変換することも可能である。
【０１１７】
（音楽解析）
音楽解析技術のコード解析のように、ビートをオーディオ信号（音楽／音響信号）のトリガーとして、様々な音楽の特徴を解析することができる。例えば、本実施形態で推定されたビートを単位として、ピッチ抽出や音色などの特徴を解析して、サビや繰り返しパターンなどを含む楽曲の構造を解析することも可能である。
【０１１８】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【０１１９】
例えば、上記実施形態では、確率モデルを用いてＥＭアルゴリズムを適用する例について説明したが、本発明はかかる確率モデルの例に限定されるものでない。例えば、確率と同様にコストを正規化するパラメータ（確率に相当）と、そのモデルについて設定した目的関数（事後確率に相当）の凸性（対数関数に相当）に基づいて目的関数を単調増加（あるいは単調減少）させる補助関数（Ｑ関数に相当）を導出できるものであるならば、上記実施形態と同様に適用できる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１の実施形態にかかるビートと発音時刻との関係を示す説明図である。
【図２】同実施形態にかかる信号処理装置のハードウェア構成を示すブロック図である。
【図３】本実施形態にかかる信号処理装置の構成を示す機能ブロック図である。
【図４】本実施形態にかかる信号処理装置により実行される信号処理方法の概要を示す説明図である。
【図５】本実施形態にかかるオーディオ信号のパワー包絡の自己相関関数と、テンポの確率分布との関係を示す説明図である。
【図６】本実施形態にかかるビート解析方法を示すフローチャートである。
【図７】図６の発音時刻検出処理の例を示すフローチャートである。
【図８】図６のビート推定処理の例を示すフローチャートである。
【図９】本実施形態にかかるテンポ解析方法を示すフローチャートである。
【図１０Ａ】本実施形態にかかる信号処理装置による前処理後、ビート解析前の表示画面例である。
【図１０Ｂ】本実施形態にかかる信号処理装置によるビート解析後の表示画面例である。
【符号の説明】
【０１２１】
１０    信号処理装置
１２    発音時刻検出部
１４    発音時刻記憶部
１６    テンポ確率分布設定部
１８    ビート長算出部
２０    テンポ算出部
２２    特徴量記憶部
２４    特徴利用部
【図１】
0004640407.tif 000019
【図２】
0004640407.tif 000020
【図３】
0004640407.tif 000021
【図４】
0004640407.tif 000022
【図５】
0004640407.tif 000023
【図６】
0004640407.tif 000024
【図７】
0004640407.tif 000025
【図８】
0004640407.tif 000026
【図９】
0004640407.tif 000027
【図１０Ａ】
0004640407.tif 000028
【図１０Ｂ】
0004640407.tif 000029