(57)【特許請求の範囲】
【請求項１】
任意の楽曲のサンプリング音声データを入力する音声データ入力ステップと、
前記入力したサンプリング音声データを複数に区分された帯域別にフィルタリングするステップと、
前記フィルタリングされた各帯域のデータの自己相関関数を算出するステップと、
前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択するステップと、
前記選択したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出ステップと、
前記検出した複数のピークがピーク発生時間で並んだ移動前の第１のピーク列と、前記第１のピーク列のピーク発生時間を所定の時間（ｔ）移動させた移動後の第２のピーク列とに基づいて、前記第１のピーク列と第２のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間（ｔ）の関数となるピーク間距離関数を算出するピーク間距離関数算出ステップと、
前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出ステップと、
を含むことを特徴とする楽曲テンポ抽出方法。
【請求項２】
前記ピーク検出ステップは、前記複数のピークのピーク発生時間とともに、各ピークのピーク値を検出し、その検出したピーク値に基づいて該ピーク値の小さいものを前記第１のピーク列から除去することを特徴とする請求項１に記載の楽曲テンポ抽出方法。
【請求項３】
前記テンポ算出ステップは、前記算出したピーク間距離関数が最初に極小値となるときの前記時間（ｔ）、又は隣接する極小値の間の時間に基づいて前記ピーク間距離関数の周期を求めることを特徴とする請求項１又は２に記載の楽曲テンポ抽出方法。
【請求項４】
前記テンポ算出ステップは、前記算出したテンポが倍テンポ、又は２分の１テンポであるかを判断するステップを含み、その判断結果に基づいてテンポを補正することを特徴とする請求項１乃至３のいずれかに記載の楽曲テンポ抽出方法。
【請求項５】
任意の楽曲のサンプリング音声データを入力する音声データ入力手段と、
前記入力したサンプリング音声データを複数に区分された帯域別にフィルタリングする手段と、
前記フィルタリングされた各帯域のデータの自己相関関数を算出する手段と、
前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択する手段と、
前記選択したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出手段と、
前記検出した複数のピークがピーク発生時間で並んだ移動前の第１のピーク列と、前記第１のピーク列のピーク発生時間を所定の時間（ｔ）移動させた移動後の第２のピーク列とに基づいて、前記第１のピーク列と第２のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間（ｔ）の関数となるピーク間距離関数を算出するピーク間距離関数算出手段と、
前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出手段と、
を備えたことを特徴とする楽曲テンポ抽出装置。
【請求項６】
請求項１乃至４のいずれかに記載の楽曲テンポ抽出方法をコンピュータに実現させることを特徴とする楽曲テンポ抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は楽曲テンポ抽出方法、装置及びプログラムに係り、特に任意の楽曲のサンプリング音声データからその楽曲のテンポを抽出する技術に関する。
【背景技術】
【０００２】
従来、楽曲を格納するデジタル音声データを解析して、テンポ／リズム／アクセントなど、その楽曲のさまざまな特徴量を自動算出する技術が広く開発されている。
【０００３】
なかでも、楽曲の特徴量の一つである「テンポ」を自動抽出する技術のうち、ＭＩＤＩなどのいわゆる譜面情報形式の楽譜データ（非波形データ）ではなく、ＷＡＶ／ＭＰ３などのサンプリング音声データを扱うものとして、特許文献１〜３に記載のものがある。
【０００４】
特許文献１に記載のテンポ抽出装置は、音声データから小節時間長を算出し、この算出した小節時間長と１小節あたりの拍子数とに基づいてテンポを算出するようにしている。ただし、１小節あたりの拍子数をユーザーが指定するという条件が必要である。
【０００５】
特許文献２に記載のテンポデータ生成方法は、最適な２つのピーク値を選択し、その選択したピーク値の間隔からテンポを算出するようにしているが、最適な２つのピーク値を選択するアルゴリズムの正当性に不明な点があるほか、そもそも隣り合うピークだけに注目しているため、テンポ算出の精度に問題がある。
【０００６】
特許文献３に記載の拍数検出装置は、低域成分のピーク位置の間隔を用いてテンポを算出しているが、テンポ（ＢＰＭ(Beat Per Minute)）が１００〜１５０の曲のみを対象としている。
【特許文献１】特開平５−２７７５１号公報
【特許文献２】特開平７−６４５４４号公報
【特許文献３】特開平８−２０１５４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記特許文献１〜３に記載の技術は、いずれも、ある周波数帯域の波形データからピークを検出して、隣り合うピーク同士の距離（時間間隔）からテンポを求めるものであり、大枠として現在のテンポ抽出技術の一般的な手法である。
【０００８】
これらは、ピーク同士の距離が整数比になるという前提で計算されているので、ピークの位置にずれが生じたとき、整数比で計算すると、徐々にずれが大きくなるという欠点がある。
【０００９】
一般に、サンプリング音声データには多数の音が混ざっているため、ピーク検出時に誤差が生じやすい。上記従来の方法では、サンプリング音声データに生じやすいピーク検出誤差に起因して、正確にテンポを検出できない可能性が高い。
【００１０】
また、従来の方法は、対象とする音源の条件（楽器、周波数、テンポ）をある程度限定するものが多い。
【００１１】
本発明はこのような事情に鑑みてなされたもので、サンプリング音声データに生じやすいピーク検出誤差に影響されずに、正確にテンポを抽出することができるとともに、対象音源を特定しない高いロバスト性を実現することができる楽曲テンポ抽出方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
前記目的を達成するために請求項１に係る楽曲テンポ抽出方法は、任意の楽曲のサンプリング音声データを入力する音声データ入力ステップと、前記入力したサンプリング音声データを複数に区分された帯域別にフィルタリングするステップと、前記フィルタリングされた各帯域のデータの自己相関関数を算出するステップと、前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択するステップと、前記選択したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出ステップと、前記検出した複数のピークがピーク発生時間で並んだ移動前の第１のピーク列と、前記第１のピーク列のピーク発生時間を所定の時間（ｔ）移動させた移動後の第２のピーク列とに基づいて、前記第１のピーク列と第２のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間（ｔ）の関数となるピーク間距離関数を算出するピーク間距離関数算出ステップと、前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出ステップと、を含むことを特徴としている。
【００１３】
即ち、任意の楽曲のサンプリング音声データから時間順に並んだ複数のピークを検出する。そして、複数のピークがピーク発生時間で並んだピーク列を元にして、本発明で新規に導入したピーク間距離関数を算出する。このピーク間距離関数は、複数のピークがピーク発生時間で並んだ移動前のピーク列（第１のピーク列）と、この第１のピーク列のピーク発生時間を所定の時間（ｔ）移動させた移動後のピーク列（第２のピーク列）とに基づいて、前記第１のピーク列と第２のピーク列との間でそれぞれ最も近いピーク間の時間の総和である。また、このピーク間距離関数は、前記時間（ｔ）の関数であり、前記第１のピーク列の間隔の周期性に対応して周期的に変化する。したがって、ピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出することができる。この方法によれば、ピーク検出にわずかな誤差があっても複数のピークの情報を元に算出されるピーク間距離関数の周期には影響がなく、正確にテンポを抽出することができる。
【００１４】
請求項２に示すように請求項１に記載の楽曲テンポ抽出方法において、前記ピーク検出ステップは、前記複数のピークのピーク発生時間とともに、各ピークのピーク値を検出し、その検出したピーク値に基づいて該ピーク値の小さいものを前記第１のピーク列から除去することを特徴としている。即ち、ピーク間距離関数にかける前に、ピークの強度でフィルタリングする。これにより、強度の弱いピークを取り除き、ノイズを減らしてテンポ算出の精度を上げるようにしている。
【００１７】
請求項３に示すように請求項１又は２に記載の楽曲テンポ抽出方法において、前記テンポ算出ステップは、前記算出したピーク間距離関数が最初に極小値となるときの前記時間（ｔ）、又は隣接する極小値の間の時間に基づいて前記ピーク間距離関数の周期を求めることを特徴としている。
【００１８】
請求項４に示すように請求項１乃至３のいずれかに記載の楽曲テンポ抽出方法において、前記テンポ算出ステップは、前記算出したテンポが倍テンポ、又は２分の１テンポであるかを判断するステップを含み、その判断結果に基づいてテンポを補正することを特徴としている。
【００１９】
請求項５に係る楽曲テンポ抽出装置は、任意の楽曲のサンプリング音声データを入力する音声データ入力手段と、前記入力したサンプリング音声データを複数に区分された帯域別にフィルタリングする手段と、前記フィルタリングされた各帯域のデータの自己相関関数を算出する手段と、前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択する手段と、前記選択したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出手段と、前記検出した複数のピークがピーク発生時間で並んだ移動前の第１のピーク列と、前記第１のピーク列のピーク発生時間を所定の時間（ｔ）移動させた移動後の第２のピーク列とに基づいて、前記第１のピーク列と第２のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間（ｔ）の関数となるピーク間距離関数を算出するピーク間距離関数算出手段と、前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出手段と、を備えたことを特徴としている。
【００２０】
請求項６に係る楽曲テンポ抽出プログラムは、請求項１乃至４のいずれかに記載の楽曲テンポ抽出方法をコンピュータに実現させることを特徴としている。
【発明の効果】
【００２１】
本発明によれば、サンプリング音声データに生じやすいピーク検出誤差に影響されずに、正確にテンポを抽出することができる。
【発明を実施するための最良の形態】
【００２２】
以下、添付図面に従って本発明に係る楽曲テンポ抽出方法、装置及びプログラムの好ましい実施の形態について説明する。
【００２３】
図１は本発明に係る楽曲テンポ抽出装置としての機能を備えたパソコンのハードウェア構成例を示すブロック図である。
【００２４】
図１に示すようにパソコン１は、主として各構成要素の動作を制御する中央処理装置（ＣＰＵ）１０と、装置の制御プログラムが格納されたり、プログラム実行時の作業領域となる主メモリ１２と、パソコン１のオペレーティングシステム（ＯＳ）、パソコン１に接続された周辺機器のデバイスドライバ、本発明に係る楽曲テンポ抽出プログラムを含む各種のアプリケーションソフト、ＷＡＶ／ＭＰ３などのサンプリング音声データ等が格納されるハードディスク装置１４と、ＣＤ−ＲＯＭ装置１６と、表示用データを一時記憶する表示メモリ１８と、この表示メモリ１８からの画像データ、文字データ等により画像や文字等を表示するＣＲＴモニタや液晶モニタ等のモニタ装置２０と、サウンド・カード２２と、スピーカ２４と、キーボード２６と、位置入力装置としてのマウス２８、マウス２８の状態を検出してモニタ装置２０上のマウスポインタの位置やマウス２８の状態等の信号をＣＰＵ１０に出力するマウスコントローラ３０と、ＵＳＢ（Universal Serial Bus）などのインターフェース３２と、上記各構成要素を接続するバス３４とから構成されている。
【００２５】
尚、上記構成のパソコン１は、ハードディスク装置１４に格納されている、本発明に係る楽曲テンポ抽出プログラムを除いて周知のものであるため、各構成要素の詳細な説明については省略する。この楽曲テンポ抽出プログラムは、該プログラムが記録されたＣＤ−ＲＯＭをパソコン１のＣＤ−ＲＯＭ装置１６にセットすることにより、又は図示しない通信手段を介してネットワークを通じてパソコン１にインストールすることができる。
【００２６】
図２は上記パソコン１における楽曲テンポ抽出装置としての機能を示す機能ブロック図である。
【００２７】
同図に示すように、この楽曲テンポ抽出装置は、楽曲データ入力装置５０と、記憶装置５２と、操作手段５４と、テンポ抽出手段５６とから構成されている。
【００２８】
楽曲データ入力装置５０は、テンポ抽出の対象となる楽曲の楽曲データ（サンプリング音声データ）を入力するための手段であり、例えば、図１のＣＤ−ＲＯＭ装置１６などが考えられる。
【００２９】
記憶装置５２は、入力したサンプリング音声データを一時的に記憶するためのものであり、図１の主メモリ１２やハードディスク装置１４などが考えられる。
【００３０】
操作手段５４は、ユーザーからの操作を受け付け、テンポを抽出する楽曲を選択したり、テンポ抽出の指示を行ったりするもので、図１のキーボード２６やマウス２８などが考えられる。
【００３１】
テンポ抽出手段５６は、本発明に係るテンポ抽出を実行する手段であり、図１のハードディスク装置１４に格納された楽曲テンポ抽出プログラムと、そのプログラムを実行するＣＰＵ１０などが考えられる。
【００３２】
次に、上記テンポ抽出手段５６でのテンポ抽出処理等について詳細に説明する。
【００３３】
図３は主としてテンポ抽出手段５６の処理の流れを示すフローチャートである。
【００３４】
同図において、テンポ抽出手段５６は、テンポ抽出する対象となる楽曲データを入力する（ステップＳ１０）。入力する楽曲データは、ＭＩＤＩなど楽譜情報をもった非波形データではなく、図４に示すようにＷＡＶ／ＭＰ３などのサンプリング音声データとする。この実施の形態では、１０数秒間のサンプリング音声データを取り込むようにしている。
【００３５】
続いて、テンポ抽出手段５６は、入力したサンプリング音声データを平滑化する（ステップＳ１２）。図５は、サンプリング音声データを平滑化した、プラス側のデータを示すグラフである。平滑化の方法は、移動平均法（ある区間に含まれる点の平均値を計算する手法）など公知の方法でよい。
【００３６】
尚、平滑化を行う前のタイミングで、不要な帯域のデータを除去し、以後の精度を上げるために、必要に応じて入力音源の波形データをフィルタリングしてもよい。フィルタリングの手法は、ＦＦＴ（フーリエ変換）や、ＦＩＲ、ＩＩＲフィルタなどを使用した公知の技術でよい。
【００３７】
次に、テンポ抽出手段５６は、平滑化された波形データの山の頂点をピークとして検出する（ステップＳ１４）。図６は１０数秒間の間に検出された複数のピークのピーク発生位置（時間）とピークの強度（ピーク値）とを示している。
【００３８】
この検出したピークを、後述の「ピーク間距離関数」にかける前に、ピークの強度でフィルタリングする。このフィルタリングにより、強度の弱いピーク（図６上で、〇印Ａで囲まれた弱いピーク）を取り除く。このフィルタリングの方法は、一定の閾値以下のピーク値を有するピークを取り除く方法であってもよいし、強度の最も強いものから順に、一定個数を満たすピークを拾う方法であってもよい。
【００３９】
続いて、テンポ抽出手段５６は、検出したピークを元に、独自の「ピーク間距離関数」を用いてテンポ抽出に必要な計算処理を実施する（ステップＳ１６）。ここで用いる方法はオリジナルで、この発明の特徴的なポイントである。
【００４０】
次に、「ピーク間距離関数」について説明する。
【００４１】
例えば、図７（Ａ）に示すようにピークが検出されたと仮定する。ここで、説明を簡単にするために、ピークの数を３つとし、かつピーク同士は概ね等間隔に配置されているものとする。
【００４２】
この３つのピーク（ピーク列）の位置関係（時間間隔）を保ったまま、このピーク列を、所定の移動量（時間）ｔ（＝０．１秒）だけ図７上で右に移動させると、移動前のピーク列（第１のピーク列）と、移動後のピーク列（第２のピーク列）との関係は、図７（Ｂ）に示すようになる。
【００４３】
そして、第１のピーク列と第２のピーク列との間で、それぞれ最も近いピーク間の「距離の総和」を算出する。この場合は、「距離の総和」＝０．１×３＝０．３(sec)である。ここで、「距離」とは、時間を意味している。
【００４４】
移動量ｔを少しずつ増加させていくと、移動後のあるピークは、移動前の別のピークに近づくことがある。図７（Ｃ）は第１のピーク列に対して第２のピーク列が、１．０秒だけ右に移動した場合に関して示している。
【００４５】
このように、第２のピーク列を移動させた結果、最も近いピークが隣のピークになると、その隣のピークとの「距離」を採用した上で、「距離の総和」を算出する。この場合は、「距離の総和」＝（３．１−２．５）＋（４．６−４．１）＋（５．６−４．６）＝０．６＋０．５＋１．０＝２．１(sec)となる。
【００４６】
このように、第２のピーク列を移動させたときの移動量ｔに対する「距離の総和」を、ピーク間距離関数ＰＤ（ｔ）と呼ぶ。
【００４７】
仮に、ピーク列のピーク位置に周期があるならば、ピーク間距離関数ＰＤ（ｔ）も周期を持つ。
【００４８】
図８は上記のようにして算出されるピーク間距離関数ＰＤ（ｔ）を示しており、ピークとピークとの距離が０．５(sec)で一定になっている（図８上で横軸はm secである）。
【００４９】
最後に、テンポ抽出手段５６は、上記のようにして算出したピーク間距離関数から楽曲のテンポを算出する（ステップＳ１８）。
【００５０】
ピークの連続に規則性があると仮定すると、ピークをずらしていったときにピーク間距離関数が極小となった点が、元のピーク列の並びと同じところであると予想できる。つまり、スタートからピーク間距離関数が極小になるまでの移動量ｔが、拍の単位となるはずであるため、拍の単位の区間と、実時間からテンポを計算できる。
【００５１】
図８に示したピーク間距離関数は、０．５ (sec)を周期として極小値をもつことが分かる。この周期０．５ (sec)を用いてテンポを計算すると、テンポ（ＢＰＭ）は、次式により算出することができ、正しい結果が得られることが分かる。
［数１］
Tempo＝６０÷０．５＝１２０
尚、ピーク間距離関数の周期としては、ピーク間距離関数が最初に極小値となる移動量ｔから求めてもよいし、隣接する極小値の間隔から求めてもよい。
【００５２】
本発明による楽曲テンポ抽出方法では、ピーク列全体を１つの塊としてスライドさせていき、塊全体の規則性を判断するため、個別のピークに生じる誤差（位置のずれ）が精度に対して影響しない。また、この方法では、対象とする楽曲データに対して、周波数帯域・テンポ・拍子数など従来技術が限定しているような条件の特定が不要であり、高いロバスト性を発揮することができる。
【００５３】
次に、図３に示したピーク検出ステップにおいて、最もテンポを正確に検出しやすい帯域の波形データを自動選択する方法について説明する。
【００５４】
図９のフローチャートに示すように、まず、テンポ抽出する対象となる楽曲データを入力する（ステップＳ２０）。このステップＳ２０は、図３に示したステップＳ１０と同じである。
【００５５】
続いて、楽曲全体の波形データを、ある帯域に注目し、フィルタリングを行う（ステップＳ２２）。例えば、１オクターブを単位とし、高音域から低音域まで数種類の帯域データをフィルタリングする。
【００５６】
次に、フィルタリングした各帯域の波形データに自己相関関数（ＡＣＦ）を適応する（ステップＳ２４）。
【００５７】
ステップＳ２４で求めた各帯域の自己相関関数を比較し、最も規則性のある自己相関関数（振幅が大きく、同様な繰り返し成分があるもの）が得られた帯域を、テンポ抽出に使用する帯域として決定する（ステップＳ２８）。
【００５８】
これにより、例えば、ドラムなど規則的にリズムを刻んでいる楽器の音の帯域のデータが抽出され、以後のテンポ抽出の精度を上げることができる。
【００５９】
次に、図３に示したテンポ算出ステップにおいて、倍テンポ、２分の１テンポといったテンポの検出ミスを防ぎ、正しくテンポを補正する方法について説明する。
【００６０】
図１０のフローチャートに示すように、ステップＳ３０では、テンポ算出を行う。このテンポ算出ステップＳ３０は、図３のステップＳ１８と同様にピーク間距離関数の結果を元にテンポを算出する。
【００６１】
次に、前記算出したテンポが倍テンポ、２分の１倍テンポであるかどうかの判断を行い、その判断結果に基づいてテンポの補正を行う（ステップＳ３２）。
【００６２】
この補正の方法は任意であり、例えば、特開２００５−２７４７０８号公報に記載の方法のように、楽曲のスピード感Ｓという値を求め、その値が、上限の閾値よりも高い場合、即ち、スピード感がある楽曲の場合には、２倍にテンポを補正し、一方、下限の閾値よりも低い場合、即ち、スピード感がない楽曲の場合には、２分の１倍テンポに補正するという操作を行う。
【００６３】
尚、補正の方法如何によっては、スピード感Ｓのように別の音声特徴量が必要な場合があり、その特徴量は、テンポ抽出の適切なタイミングで予め算出するようにして、全体の演算時間を減らす工夫をしてもよい。
【００６４】
また、この実施の形態では、１０数秒のサンプリング音声データを入力するようにしたが、入力するサンプリング音声データの長さはこれに限定されず、要はピーク検出の誤差の影響が生じない程度の数のピーク検出が可能な長さであればよい。更に、この実施の形態では、パソコンを例にソフトウエアで楽曲のテンポ抽出を行う場合について説明したが、ハードウエアで実現するようにしてもよい。
【図面の簡単な説明】
【００６５】
【図１】図１は本発明に係る楽曲テンポ抽出装置としての機能を備えたパソコンのハードウエア構成例を示すブロック図である。
【図２】図２は上記パソコンにおける楽曲テンポ抽出装置としての機能を示す機能ブロック図である。
【図３】図３は図２に示したテンポ抽出手段の処理の流れを示すフローチャートである。
【図４】図４は入力したサンプリング音声データの一例を示すグラフである。
【図５】図５は平滑化されたサンプリング音声データの一例を示すグラフである。
【図６】図６は検出された複数のピークのピーク発生位置（時間）とピークの強度（ピーク値）とを示すグラフである。
【図７】図７はピーク間距離関数を説明するために用いた図である。
【図８】図８はピーク間距離関数の一例を示すグラフである。
【図９】図９は最もテンポを正確に検出しやすい帯域の波形データを自動選択する方法を説明するために用いたフローチャートである。
【図１０】図１０は倍テンポ、２分の１テンポなどを補正する方法を説明するために用いたフローチャートである。
【符号の説明】
【００６６】
１…パソコン、１０…中央処理装置（ＣＰＵ）、１２…主メモリ、１４…ハードディスク装置、１６…ＣＤ−ＲＯＭ、２０…モニタ装置、２６…キーボード、２８…マウス、５０…楽曲データ入力装置、５２…記憶装置、５４…操作手段、５６…テンポ抽出手段
【図１】
0004632136.tif 000002
【図２】
0004632136.tif 000003
【図３】
0004632136.tif 000004
【図４】
0004632136.tif 000005
【図５】
0004632136.tif 000006
【図６】
0004632136.tif 000007
【図７】
0004632136.tif 000008
【図８】
0004632136.tif 000009
【図９】
0004632136.tif 000010
【図１０】
0004632136.tif 000011