説明

楽曲テンポ抽出方法、装置及びプログラム

【課題】サンプリング音声データに生じやすいピーク検出誤差に影響されずに、正確にテンポの抽出を可能にする。
【解決手段】任意の楽曲のサンプリング音声データから複数のピークを検出する(ステップS14)。この検出した複数のピークのピーク発生時間で並んだ移動前の第1のピーク列と、前記第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後の第2のピーク列とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間(t)の関数となるピーク間距離関数を算出する(ステップS16)。このピーク間距離関数は、前記第1のピーク列の間隔の周期性に対応して周期的に変化するため、ピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出することができる(ステップS18)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は楽曲テンポ抽出方法、装置及びプログラムに係り、特に任意の楽曲のサンプリング音声データからその楽曲のテンポを抽出する技術に関する。
【背景技術】
【0002】
従来、楽曲を格納するデジタル音声データを解析して、テンポ/リズム/アクセントなど、その楽曲のさまざまな特徴量を自動算出する技術が広く開発されている。
【0003】
なかでも、楽曲の特徴量の一つである「テンポ」を自動抽出する技術のうち、MIDIなどのいわゆる譜面情報形式の楽譜データ(非波形データ)ではなく、WAV/MP3などのサンプリング音声データを扱うものとして、特許文献1〜3に記載のものがある。
【0004】
特許文献1に記載のテンポ抽出装置は、音声データから小節時間長を算出し、この算出した小節時間長と1小節あたりの拍子数とに基づいてテンポを算出するようにしている。ただし、1小節あたりの拍子数をユーザーが指定するという条件が必要である。
【0005】
特許文献2に記載のテンポデータ生成方法は、最適な2つのピーク値を選択し、その選択したピーク値の間隔からテンポを算出するようにしているが、最適な2つのピーク値を選択するアルゴリズムの正当性に不明な点があるほか、そもそも隣り合うピークだけに注目しているため、テンポ算出の精度に問題がある。
【0006】
特許文献3に記載の拍数検出装置は、低域成分のピーク位置の間隔を用いてテンポを算出しているが、テンポ(BPM(Beat Per Minute))が100〜150の曲のみを対象としている。
【特許文献1】特開平5−27751号公報
【特許文献2】特開平7−64544号公報
【特許文献3】特開平8−201542号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上記特許文献1〜3に記載の技術は、いずれも、ある周波数帯域の波形データからピークを検出して、隣り合うピーク同士の距離(時間間隔)からテンポを求めるものであり、大枠として現在のテンポ抽出技術の一般的な手法である。
【0008】
これらは、ピーク同士の距離が整数比になるという前提で計算されているので、ピークの位置にずれが生じたとき、整数比で計算すると、徐々にずれが大きくなるという欠点がある。
【0009】
一般に、サンプリング音声データには多数の音が混ざっているため、ピーク検出時に誤差が生じやすい。上記従来の方法では、サンプリング音声データに生じやすいピーク検出誤差に起因して、正確にテンポを検出できない可能性が高い。
【0010】
また、従来の方法は、対象とする音源の条件(楽器、周波数、テンポ)をある程度限定するものが多い。
【0011】
本発明はこのような事情に鑑みてなされたもので、サンプリング音声データに生じやすいピーク検出誤差に影響されずに、正確にテンポを抽出することができるとともに、対象音源を特定しない高いロバスト性を実現することができる楽曲テンポ抽出方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
前記目的を達成するために請求項1に係る楽曲テンポ抽出方法は、任意の楽曲のサンプリング音声データを入力する音声データ入力ステップと、前記入力したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出ステップと、前記検出した複数のピークがピーク発生時間で並んだ移動前の第1のピーク列と、前記第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後の第2のピーク列とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間(t)の関数となるピーク間距離関数を算出するピーク間距離関数算出ステップと、前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出ステップと、を含むことを特徴としている。
【0013】
即ち、任意の楽曲のサンプリング音声データから時間順に並んだ複数のピークを検出する。そして、複数のピークがピーク発生時間で並んだピーク列を元にして、本発明で新規に導入したピーク間距離関数を算出する。このピーク間距離関数は、複数のピークがピーク発生時間で並んだ移動前のピーク列(第1のピーク列)と、この第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後のピーク列(第2のピーク列)とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である。また、このピーク間距離関数は、前記時間(t)の関数であり、前記第1のピーク列の間隔の周期性に対応して周期的に変化する。したがって、ピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出することができる。この方法によれば、ピーク検出にわずかな誤差があっても複数のピークの情報を元に算出されるピーク間距離関数の周期には影響がなく、正確にテンポを抽出することができる。
【0014】
請求項2に示すように請求項1に記載の楽曲テンポ抽出方法において、前記ピーク検出ステップは、前記複数のピークのピーク発生時間とともに、各ピークのピーク値を検出し、その検出したピーク値に基づいて該ピーク値の小さいものを前記第1のピーク列から除去することを特徴としている。即ち、ピーク間距離関数にかける前に、ピークの強度でフィルタリングする。これにより、強度の弱いピークを取り除き、ノイズを減らしてテンポ算出の精度を上げるようにしている。
【0015】
請求項3に示すように請求項1又は2に記載の楽曲テンポ抽出方法において、前記ピーク検出ステップは、前記ピークを検出する前に、前記サンプリング音声データからテンポを正確に取りやすい帯域を自動選択することを特徴としている。これにより、規則的にリズムを刻んでいる楽器の音の帯域のデータが抽出され、以後のテンポ抽出の精度を上げることができる。
【0016】
請求項4に示すように請求項1又は2に記載の楽曲テンポ抽出方法において、前記ピーク検出ステップは、前記ピークを検出する前に、前記サンプリング音声データを複数に区分された帯域別にフィルタリングするステップと、前記フィルタリングされた各帯域のデータの自己相関関数を算出するステップと、前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択することを特徴としている。
【0017】
請求項5に示すように請求項1乃至4のいずれかに記載の楽曲テンポ抽出方法において、前記テンポ算出ステップは、前記算出したピーク間距離関数が最初に極小値となるときの前記時間(t)、又は隣接する極小値の間の時間に基づいて前記ピーク間距離関数の周期を求めることを特徴としている。
【0018】
請求項6に示すように請求項1乃至5のいずれかに記載の楽曲テンポ抽出方法において、前記テンポ算出ステップは、前記算出したテンポが倍テンポ、又は2分の1テンポであるかを判断するステップを含み、その判断結果に基づいてテンポを補正することを特徴としている。
【0019】
請求項7に係る楽曲テンポ抽出装置は、任意の楽曲のサンプリング音声データを入力する音声データ入力手段と、前記サンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出手段と、前記検出した複数のピークがピーク発生時間で並んだ移動前の第1のピーク列と、前記第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後の第2のピーク列とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間(t)の関数となるピーク間距離関数を算出するピーク間距離関数算出手段と、前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出手段と、を備えたことを特徴としている。
【0020】
請求項8に係る楽曲テンポ抽出プログラムは、請求項1乃至6のいずれかに記載の楽曲テンポ抽出方法をコンピュータに実現させることを特徴としている。
【発明の効果】
【0021】
本発明によれば、サンプリング音声データに生じやすいピーク検出誤差に影響されずに、正確にテンポを抽出することができる。
【発明を実施するための最良の形態】
【0022】
以下、添付図面に従って本発明に係る楽曲テンポ抽出方法、装置及びプログラムの好ましい実施の形態について説明する。
【0023】
図1は本発明に係る楽曲テンポ抽出装置としての機能を備えたパソコンのハードウェア構成例を示すブロック図である。
【0024】
図1に示すようにパソコン1は、主として各構成要素の動作を制御する中央処理装置(CPU)10と、装置の制御プログラムが格納されたり、プログラム実行時の作業領域となる主メモリ12と、パソコン1のオペレーティングシステム(OS)、パソコン1に接続された周辺機器のデバイスドライバ、本発明に係る楽曲テンポ抽出プログラムを含む各種のアプリケーションソフト、WAV/MP3などのサンプリング音声データ等が格納されるハードディスク装置14と、CD−ROM装置16と、表示用データを一時記憶する表示メモリ18と、この表示メモリ18からの画像データ、文字データ等により画像や文字等を表示するCRTモニタや液晶モニタ等のモニタ装置20と、サウンド・カード22と、スピーカ24と、キーボード26と、位置入力装置としてのマウス28、マウス28の状態を検出してモニタ装置20上のマウスポインタの位置やマウス28の状態等の信号をCPU10に出力するマウスコントローラ30と、USB(Universal Serial Bus)などのインターフェース32と、上記各構成要素を接続するバス34とから構成されている。
【0025】
尚、上記構成のパソコン1は、ハードディスク装置14に格納されている、本発明に係る楽曲テンポ抽出プログラムを除いて周知のものであるため、各構成要素の詳細な説明については省略する。この楽曲テンポ抽出プログラムは、該プログラムが記録されたCD−ROMをパソコン1のCD−ROM装置16にセットすることにより、又は図示しない通信手段を介してネットワークを通じてパソコン1にインストールすることができる。
【0026】
図2は上記パソコン1における楽曲テンポ抽出装置としての機能を示す機能ブロック図である。
【0027】
同図に示すように、この楽曲テンポ抽出装置は、楽曲データ入力装置50と、記憶装置52と、操作手段54と、テンポ抽出手段56とから構成されている。
【0028】
楽曲データ入力装置50は、テンポ抽出の対象となる楽曲の楽曲データ(サンプリング音声データ)を入力するための手段であり、例えば、図1のCD−ROM装置16などが考えられる。
【0029】
記憶装置52は、入力したサンプリング音声データを一時的に記憶するためのものであり、図1の主メモリ12やハードディスク装置14などが考えられる。
【0030】
操作手段54は、ユーザーからの操作を受け付け、テンポを抽出する楽曲を選択したり、テンポ抽出の指示を行ったりするもので、図1のキーボード26やマウス28などが考えられる。
【0031】
テンポ抽出手段56は、本発明に係るテンポ抽出を実行する手段であり、図1のハードディスク装置14に格納された楽曲テンポ抽出プログラムと、そのプログラムを実行するCPU10などが考えられる。
【0032】
次に、上記テンポ抽出手段56でのテンポ抽出処理等について詳細に説明する。
【0033】
図3は主としてテンポ抽出手段56の処理の流れを示すフローチャートである。
【0034】
同図において、テンポ抽出手段56は、テンポ抽出する対象となる楽曲データを入力する(ステップS10)。入力する楽曲データは、MIDIなど楽譜情報をもった非波形データではなく、図4に示すようにWAV/MP3などのサンプリング音声データとする。この実施の形態では、10数秒間のサンプリング音声データを取り込むようにしている。
【0035】
続いて、テンポ抽出手段56は、入力したサンプリング音声データを平滑化する(ステップS12)。図5は、サンプリング音声データを平滑化した、プラス側のデータを示すグラフである。平滑化の方法は、移動平均法(ある区間に含まれる点の平均値を計算する手法)など公知の方法でよい。
【0036】
尚、平滑化を行う前のタイミングで、不要な帯域のデータを除去し、以後の精度を上げるために、必要に応じて入力音源の波形データをフィルタリングしてもよい。フィルタリングの手法は、FFT(フーリエ変換)や、FIR、IIRフィルタなどを使用した公知の技術でよい。
【0037】
次に、テンポ抽出手段56は、平滑化された波形データの山の頂点をピークとして検出する(ステップS14)。図6は10数秒間の間に検出された複数のピークのピーク発生位置(時間)とピークの強度(ピーク値)とを示している。
【0038】
この検出したピークを、後述の「ピーク間距離関数」にかける前に、ピークの強度でフィルタリングする。このフィルタリングにより、強度の弱いピーク(図6上で、〇印Aで囲まれた弱いピーク)を取り除く。このフィルタリングの方法は、一定の閾値以下のピーク値を有するピークを取り除く方法であってもよいし、強度の最も強いものから順に、一定個数を満たすピークを拾う方法であってもよい。
【0039】
続いて、テンポ抽出手段56は、検出したピークを元に、独自の「ピーク間距離関数」を用いてテンポ抽出に必要な計算処理を実施する(ステップS16)。ここで用いる方法はオリジナルで、この発明の特徴的なポイントである。
【0040】
次に、「ピーク間距離関数」について説明する。
【0041】
例えば、図7(A)に示すようにピークが検出されたと仮定する。ここで、説明を簡単にするために、ピークの数を3つとし、かつピーク同士は概ね等間隔に配置されているものとする。
【0042】
この3つのピーク(ピーク列)の位置関係(時間間隔)を保ったまま、このピーク列を、所定の移動量(時間)t(=0.1秒)だけ図7上で右に移動させると、移動前のピーク列(第1のピーク列)と、移動後のピーク列(第2のピーク列)との関係は、図7(B)に示すようになる。
【0043】
そして、第1のピーク列と第2のピーク列との間で、それぞれ最も近いピーク間の「距離の総和」を算出する。この場合は、「距離の総和」=0.1×3=0.3(sec)である。ここで、「距離」とは、時間を意味している。
【0044】
移動量tを少しずつ増加させていくと、移動後のあるピークは、移動前の別のピークに近づくことがある。図7(C)は第1のピーク列に対して第2のピーク列が、1.0秒だけ右に移動した場合に関して示している。
【0045】
このように、第2のピーク列を移動させた結果、最も近いピークが隣のピークになると、その隣のピークとの「距離」を採用した上で、「距離の総和」を算出する。この場合は、「距離の総和」=(3.1−2.5)+(4.6−4.1)+(5.6−4.6)=0.6+0.5+1.0=2.1(sec)となる。
【0046】
このように、第2のピーク列を移動させたときの移動量tに対する「距離の総和」を、ピーク間距離関数PD(t)と呼ぶ。
【0047】
仮に、ピーク列のピーク位置に周期があるならば、ピーク間距離関数PD(t)も周期を持つ。
【0048】
図8は上記のようにして算出されるピーク間距離関数PD(t)を示しており、ピークとピークとの距離が0.5(sec)で一定になっている(図8上で横軸はm secである)。
【0049】
最後に、テンポ抽出手段56は、上記のようにして算出したピーク間距離関数から楽曲のテンポを算出する(ステップS18)。
【0050】
ピークの連続に規則性があると仮定すると、ピークをずらしていったときにピーク間距離関数が極小となった点が、元のピーク列の並びと同じところであると予想できる。つまり、スタートからピーク間距離関数が極小になるまでの移動量tが、拍の単位となるはずであるため、拍の単位の区間と、実時間からテンポを計算できる。
【0051】
図8に示したピーク間距離関数は、0.5 (sec)を周期として極小値をもつことが分かる。この周期0.5 (sec)を用いてテンポを計算すると、テンポ(BPM)は、次式により算出することができ、正しい結果が得られることが分かる。
[数1]
Tempo=60÷0.5=120
尚、ピーク間距離関数の周期としては、ピーク間距離関数が最初に極小値となる移動量tから求めてもよいし、隣接する極小値の間隔から求めてもよい。
【0052】
本発明による楽曲テンポ抽出方法では、ピーク列全体を1つの塊としてスライドさせていき、塊全体の規則性を判断するため、個別のピークに生じる誤差(位置のずれ)が精度に対して影響しない。また、この方法では、対象とする楽曲データに対して、周波数帯域・テンポ・拍子数など従来技術が限定しているような条件の特定が不要であり、高いロバスト性を発揮することができる。
【0053】
次に、図3に示したピーク検出ステップにおいて、最もテンポを正確に検出しやすい帯域の波形データを自動選択する方法について説明する。
【0054】
図9のフローチャートに示すように、まず、テンポ抽出する対象となる楽曲データを入力する(ステップS20)。このステップS20は、図3に示したステップS10と同じである。
【0055】
続いて、楽曲全体の波形データを、ある帯域に注目し、フィルタリングを行う(ステップS22)。例えば、1オクターブを単位とし、高音域から低音域まで数種類の帯域データをフィルタリングする。
【0056】
次に、フィルタリングした各帯域の波形データに自己相関関数(ACF)を適応する(ステップS24)。
【0057】
ステップS24で求めた各帯域の自己相関関数を比較し、最も規則性のある自己相関関数(振幅が大きく、同様な繰り返し成分があるもの)が得られた帯域を、テンポ抽出に使用する帯域として決定する(ステップS28)。
【0058】
これにより、例えば、ドラムなど規則的にリズムを刻んでいる楽器の音の帯域のデータが抽出され、以後のテンポ抽出の精度を上げることができる。
【0059】
次に、図3に示したテンポ算出ステップにおいて、倍テンポ、2分の1テンポといったテンポの検出ミスを防ぎ、正しくテンポを補正する方法について説明する。
【0060】
図10のフローチャートに示すように、ステップS30では、テンポ算出を行う。このテンポ算出ステップS30は、図3のステップS18と同様にピーク間距離関数の結果を元にテンポを算出する。
【0061】
次に、前記算出したテンポが倍テンポ、2分の1倍テンポであるかどうかの判断を行い、その判断結果に基づいてテンポの補正を行う(ステップS32)。
【0062】
この補正の方法は任意であり、例えば、特開2005−274708号公報に記載の方法のように、楽曲のスピード感Sという値を求め、その値が、上限の閾値よりも高い場合、即ち、スピード感がある楽曲の場合には、2倍にテンポを補正し、一方、下限の閾値よりも低い場合、即ち、スピード感がない楽曲の場合には、2分の1倍テンポに補正するという操作を行う。
【0063】
尚、補正の方法如何によっては、スピード感Sのように別の音声特徴量が必要な場合があり、その特徴量は、テンポ抽出の適切なタイミングで予め算出するようにして、全体の演算時間を減らす工夫をしてもよい。
【0064】
また、この実施の形態では、10数秒のサンプリング音声データを入力するようにしたが、入力するサンプリング音声データの長さはこれに限定されず、要はピーク検出の誤差の影響が生じない程度の数のピーク検出が可能な長さであればよい。更に、この実施の形態では、パソコンを例にソフトウエアで楽曲のテンポ抽出を行う場合について説明したが、ハードウエアで実現するようにしてもよい。
【図面の簡単な説明】
【0065】
【図1】図1は本発明に係る楽曲テンポ抽出装置としての機能を備えたパソコンのハードウエア構成例を示すブロック図である。
【図2】図2は上記パソコンにおける楽曲テンポ抽出装置としての機能を示す機能ブロック図である。
【図3】図3は図2に示したテンポ抽出手段の処理の流れを示すフローチャートである。
【図4】図4は入力したサンプリング音声データの一例を示すグラフである。
【図5】図5は平滑化されたサンプリング音声データの一例を示すグラフである。
【図6】図6は検出された複数のピークのピーク発生位置(時間)とピークの強度(ピーク値)とを示すグラフである。
【図7】図7はピーク間距離関数を説明するために用いた図である。
【図8】図8はピーク間距離関数の一例を示すグラフである。
【図9】図9は最もテンポを正確に検出しやすい帯域の波形データを自動選択する方法を説明するために用いたフローチャートである。
【図10】図10は倍テンポ、2分の1テンポなどを補正する方法を説明するために用いたフローチャートである。
【符号の説明】
【0066】
1…パソコン、10…中央処理装置(CPU)、12…主メモリ、14…ハードディスク装置、16…CD−ROM、20…モニタ装置、26…キーボード、28…マウス、50…楽曲データ入力装置、52…記憶装置、54…操作手段、56…テンポ抽出手段

【特許請求の範囲】
【請求項1】
任意の楽曲のサンプリング音声データを入力する音声データ入力ステップと、
前記入力したサンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出ステップと、
前記検出した複数のピークがピーク発生時間で並んだ移動前の第1のピーク列と、前記第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後の第2のピーク列とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間(t)の関数となるピーク間距離関数を算出するピーク間距離関数算出ステップと、
前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出ステップと、
を含むことを特徴とする楽曲テンポ抽出方法。
【請求項2】
前記ピーク検出ステップは、前記複数のピークのピーク発生時間とともに、各ピークのピーク値を検出し、その検出したピーク値に基づいて該ピーク値の小さいものを前記第1のピーク列から除去することを特徴とする請求項1に記載の楽曲テンポ抽出方法。
【請求項3】
前記ピーク検出ステップは、前記ピークを検出する前に、前記サンプリング音声データからテンポを正確に取りやすい帯域を自動選択することを特徴とする請求項1又は2に記載の楽曲テンポ抽出方法。
【請求項4】
前記ピーク検出ステップは、前記ピークを検出する前に、前記サンプリング音声データを複数に区分された帯域別にフィルタリングするステップと、前記フィルタリングされた各帯域のデータの自己相関関数を算出するステップと、前記算出した自己相関関数のうちで最も規則性のある自己相関関数が得られる帯域のサンプリング音声データを選択することを特徴とする請求項1又は2に記載の楽曲テンポ抽出方法。
【請求項5】
前記テンポ算出ステップは、前記算出したピーク間距離関数が最初に極小値となるときの前記時間(t)、又は隣接する極小値の間の時間に基づいて前記ピーク間距離関数の周期を求めることを特徴とする請求項1乃至4のいずれかに記載の楽曲テンポ抽出方法。
【請求項6】
前記テンポ算出ステップは、前記算出したテンポが倍テンポ、又は2分の1テンポであるかを判断するステップを含み、その判断結果に基づいてテンポを補正することを特徴とする請求項1乃至5のいずれかに記載の楽曲テンポ抽出方法。
【請求項7】
任意の楽曲のサンプリング音声データを入力する音声データ入力手段と、
前記サンプリング音声データの複数のピークを検出し、その検出した複数のピークのピーク発生時間を検出するピーク検出手段と、
前記検出した複数のピークがピーク発生時間で並んだ移動前の第1のピーク列と、前記第1のピーク列のピーク発生時間を所定の時間(t)移動させた移動後の第2のピーク列とに基づいて、前記第1のピーク列と第2のピーク列との間でそれぞれ最も近いピーク間の時間の総和である、前記時間(t)の関数となるピーク間距離関数を算出するピーク間距離関数算出手段と、
前記算出したピーク間距離関数の周期に基づいて前記任意の楽曲のテンポを算出するテンポ算出手段と、
を備えたことを特徴とする楽曲テンポ抽出装置。
【請求項8】
請求項1乃至6のいずれかに記載の楽曲テンポ抽出方法をコンピュータに実現させることを特徴とする楽曲テンポ抽出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−272118(P2007−272118A)
【公開日】平成19年10月18日(2007.10.18)
【国際特許分類】
【出願番号】特願2006−100456(P2006−100456)
【出願日】平成18年3月31日(2006.3.31)
【出願人】(306037311)富士フイルム株式会社 (25,513)
【Fターム(参考)】