(57)【特許請求の範囲】
【請求項１】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
入力した音楽データに対して、前後の推定範囲で一部重複し、その位置が互いに異なるような、複数の異なる前記推定範囲を設定するステップと、
前記推定範囲ごとに前記音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記複数の推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【請求項２】
請求項１に記載の音楽データのテンポ推定方法において、
前記推定範囲は、互いに幅が異なる複数の推定範囲であることを特徴とする音楽データのテンポ推定方法。
【請求項３】
請求項１または２の何れか１つに記載の音楽データのテンポ推定方法において、
前記複数の推定範囲の各テンポ値の統合は、前記音楽データから抽出された拍位置を基準に統合を行なうものであることを特徴とする音楽データのテンポ推定方法。
【請求項４】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
一部重複した前記音楽データ上の２つの推定範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記重複部分に関して、前記２つの推定範囲が重ならないように、前記２つの推定範囲のうちのスコア値の小さい方の推定範囲を修正するステップと、
修正された前記２つの推定範囲の各テンポ値を統合して、前記音楽データの時間的に変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【請求項５】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
連続的に接合しようとする２つの推定範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、ビート位置とテンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記重複部分に関して、前記２つの推定範囲が重ならないように、前記２つの推定範囲のうちのスコア値の小さい方の推定範囲を修正するステップと、
前記２つの推定範囲のビート位置が接合部で互いにずれないように、前記２つの推定範囲のうちの前方の推定範囲のテンポ値を修正するステップと、
修正された前記２つの推定範囲のテンポ値を統合して、前記音楽データの時間的に変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【請求項６】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
前記音楽データの時間軸上の複数の範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記複数の範囲のうち、隣合う範囲間の距離が所定幅以下で、かつ、それらの各範囲で推定されたテンポ値の差が所定値以下であるような複数の範囲をグループ化し、各グループの期待テンポを決定するステップと、
前記各グループの存在する範囲について、その範囲の音楽データを分析してテンポを推定しテンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記各グループで得られたテンポ値と前記各グループの期待テンポとを比較し、その差が所定値以下の場合は、当該グループに属する複数範囲を統合し、統合された推定範囲のテンポ値及びスコア値を当該グループで得られたテンポ値及びスコア値とするステップと、
前記複数の推定範囲及び統合された推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【請求項７】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
前記音楽データ上の異なる位置に第１の幅を有する第１フレームを複数設定し、各位置の第１フレームごとにテンポを推定し、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記音楽データ上の異なる位置に前記第１の幅より小さい第２の幅を有する第２フレームを複数設定し、各位置の第２フレームごとにテンポを推定し、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記複数の第１フレーム及び第２フレームで得られたスコア値に基づいて、前記複数の第１フレームで得られたテンポ値と、前記複数の第２フレームで得られたテンポ値を統合して、前記音楽データの変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【請求項８】
音楽データのテンポ推定方法において、
推定対象の音楽データを入力するステップと、
前記音楽データを所定の区間に分け、各区間ごとにテンポ値の期待範囲を設定するステップと、
入力した音楽データに対して、前後の推定範囲で一部重複し、その位置が互いに異なるような、複数の異なる前記推定範囲を設定するステップと、
前記推定範囲ごとに前記音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、
前記各区間について、前記推定されたテンポ値が前記期待範囲に入る前記推定範囲を残し、期待範囲に入らない前記推定範囲を除外するステップと、
前記複数の推定範囲のうちの除外されていない推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップと
を備えることを特徴とする音楽データのテンポ推定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、音楽データのテンポ推定方法に関し、特に曲の途中でテンポが変化するような音楽データであっても正確にテンポを推定できる方法および装置に関する。
【０００２】
【従来の技術】
従来より、ビート感のあるフレーズのオーディオデータを、テンポを一定とみなしてビート検出（およびテンポ推定）する技術が存在する。例えば、特開昭６２−２０５３９７号、特開昭６３−８６９７号、特開昭６３−７０２９３号、特開昭６３−７０２９４号、特開平５−２７７５１号、特開平７−６４５４４号、特開２０００−２２１９７９号などには、音響信号からテンポを抽出する装置が記載されている。
【０００３】
【発明が解決しようとする課題】
上記の従来技術は、何れもテンポが一定のフレーズからビート検出しテンポを推定するものである。したがって、曲の途中でテンポが変化するような音楽データのテンポ推定には適用することができない。無理に適用しても、テンポが変化する位置を正確に認識できず、結果としてテンポを正確に推定できないという問題があった。
【０００４】
この発明は、上記従来技術における問題点に鑑み、テンポが途中で変化するような音楽データを処理対象とする場合であってもテンポを正確に推定することを可能にする音楽データのテンポ推定方法および装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
この目的を達成するため、請求項１に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、入力した音楽データに対して、前後の推定範囲で一部重複し、その位置が互いに異なるような、複数の異なる前記推定範囲を設定するステップと、前記推定範囲ごとに前記音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記複数の推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップとを備えることを特徴とする。
【０００６】
請求項２に係る発明は、請求項１に記載の音楽データのテンポ推定方法において、前記推定範囲は、互いに幅が異なる複数の推定範囲であることを特徴とする。
【０００９】
請求項３に係る発明は、請求項１または２の何れか１つに記載の音楽データのテンポ推定方法において、前記複数の推定範囲の各テンポ値の統合は、前記音楽データから抽出された拍位置を基準に統合を行なうものであることを特徴とする。
【００１０】
請求項４に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、一部重複した前記音楽データ上の２つの推定範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記重複部分に関して、前記２つの推定範囲が重ならないように、前記２つの推定範囲のうちのスコア値の小さい方の推定範囲を修正するステップと、修正された前記２つの推定範囲の各テンポ値を統合して、前記音楽データの時間的に変動するテンポ値を得るステップとを備えることを特徴とする。
【００１１】
請求項５に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、連続的に接合しようとする２つの推定範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、ビート位置とテンポ値と推定の信頼度を示すスコア値とを得るステップと、前記重複部分に関して、前記２つの推定範囲が重ならないように、前記２つの推定範囲のうちのスコア値の小さい方の推定範囲を修正するステップと、前記２つの推定範囲のビート位置が接合部で互いにずれないように、前記２つの推定範囲のうちの前方の推定範囲のテンポ値を修正するステップと、修正された前記２つの推定範囲のテンポ値を統合して、前記音楽データの時間的に変動するテンポ値を得るステップとを備えることを特徴とする。
【００１２】
請求項６に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、前記音楽データの時間軸上の複数の範囲について、それぞれ、その推定範囲の音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記複数の範囲のうち、隣合う範囲間の距離が所定幅以下で、かつ、それらの各範囲で推定されたテンポ値の差が所定値以下であるような複数の範囲をグループ化し、各グループの期待テンポを決定するステップと、前記各グループの存在する範囲について、その範囲の音楽データを分析してテンポを推定しテンポ値と推定の信頼度を示すスコア値とを得るステップと、前記各グループで得られたテンポ値と前記各グループの期待テンポとを比較し、その差が所定値以下の場合は、当該グループに属する複数範囲を統合し、統合された推定範囲のテンポ値及びスコア値を当該グループで得られたテンポ値及びスコア値とするステップと、前記複数の推定範囲及び統合された推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップとを備えることを特徴とする。
【００１３】
請求項７に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、前記音楽データ上の異なる位置に第１の幅を有する第１フレームを複数設定し、各位置の第１フレームごとにテンポを推定し、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記音楽データ上の異なる位置に前記第１の幅より小さい第２の幅を有する第２フレームを複数設定し、各位置の第２フレームごとにテンポを推定し、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記複数の第１フレーム及び第２フレームで得られたスコア値に基づいて、前記複数の第１フレームで得られたテンポ値と、前記複数の第２フレームで得られたテンポ値を統合して、前記音楽データの変動するテンポ値を得るステップとを備えることを特徴とする。
【００１４】
請求項８に係る発明は、音楽データのテンポ推定方法において、推定対象の音楽データを入力するステップと、前記音楽データを所定の区間に分け、各区間ごとにテンポ値の期待範囲を設定するステップと、入力した音楽データに対して、前後の推定範囲で一部重複し、その位置が互いに異なるような、複数の異なる前記推定範囲を設定するステップと、前記推定範囲ごとに前記音楽データを分析してテンポを推定し、その推定範囲ごとに、テンポ値と推定の信頼度を示すスコア値とを得るステップと、前記各区間について、前記推定されたテンポ値が前記期待範囲に入る前記推定範囲を残し、期待範囲に入らない前記推定範囲を除外するステップと、前記複数の推定範囲のうちの除外されていない推定範囲の各テンポ値を前記各スコア値に基づいて該スコア値の高いテンポ値を優先させて統合し、前記音楽データの時間的に変動するテンポ値を得るステップとを備えることを特徴とする。
【００１５】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
【００１６】
図１は、この発明の実施の形態に係る波形テンポ推定システムの全体構成を示す。このシステムは、中央処理装置（ＣＰＵ）１０１、リードオンリメモリ（ＲＯＭ）１０２、ランダムアクセスメモリ（ＲＡＭ）１０３、ドライブ装置１０４、ＭＩＤＩインターフェース１０６、パネルスイッチ１０７、パネル表示器１０８、書込回路１１１、アクセス管理部１１２、波形メモリ１１３、音源１１４、サウンドシステム１１５、およびバスライン１２０を備える。
【００１７】
ＣＰＵ１０１は、このシステムの全体の動作を制御する処理装置である。ＲＯＭ１０２は、ＣＰＵ１０１が実行する各種の制御プログラムおよび定数データなどを格納した不揮発性メモリである。ＲＡＭ１０３は、ＣＰＵ１０１が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。ドライブ装置１０４は、ＣＤ−ＲＯＭあるいはハードディスク（ＨＤ）などの外部記憶装置１０５を接続する装置である。ＭＩＤＩインターフェース１０６は、外部のＭＩＤＩ機器と接続するためのインターフェースである。パネルスイッチ１０７は、このシステムの外部パネル上に設けられた各種の操作子である。パネル表示器１０８は、このシステムの外部パネル上に設けられた各種の情報を表示するためのディスプレイである。
【００１８】
書込回路１１１は、外部から入力した波形データを波形メモリ１１３に書き込む処理を行なう回路である。アクセス管理部１１２は、書込回路１１１、ＣＰＵ１０１、および音源１１４からの波形メモリ１１３に対するアクセス要求を調停する制御を行なう。波形メモリ１１３は、外部から入力した波形データを記憶する記憶装置である。音源１１４は、ＣＰＵ１０１の指示に応じて波形メモリ１１３にアクセスし所定の波形データを読み出して楽音信号を生成する。サウンドシステム１１５は、音源１１４から出力される楽音信号に基づいて放音する。
【００１９】
図１のシステムは、鍵盤などを備えた電子楽器として構成してもよいし、汎用のパーソナルコンピュータに音源ボードなどを接続して構成することもできる。
【００２０】
図２は、図１のシステムにおける楽音波形データのテンポを推定する操作の手順の概要を示す。ステップ２０１で、テンポを推定する対象であるオーディオデータ（波形データ）を用意する。オーディオデータは、ユーザが録音スイッチなどを操作して指示を与えることにより外部から入力（録音）した波形データや、外部記憶装置１０５に記憶されている波形データから選択してもよい。処理対象のオーディオデータは、ＲＡＭ１０３上のワーク領域に格納して処理するが、波形メモリ１１３上のデータを直接処理するようにしてもよい。ステップ２０２で、操作子の操作により、推定されるテンポの上限値と下限値を入力する。ユーザは、処理対象のオーディオデータについて大体この程度であろうというテンポの範囲を認識していることが少なくないのでその範囲を入力させる。処理対象のオーディオデータ全体に対して１つのテンポ値の範囲を指定してもよいし、区間分けして、区間ごとにテンポ値範囲を指定してもよい。ステップ２０３では、テンポ推定ボタンを操作してテンポ推定処理の開始を指示する。テンポ推定処理については、後で詳細に説明する。ステップ２０４で、テンポ推定の結果がパネル表示器１０８に表示されるので、それを確認して、テンポ推定の結果を保存する操作などを行なって、テンポ推定結果を受け取る。
【００２１】
次に、ステップ２０３で実行されるテンポ推定処理について詳細に説明する。
【００２２】
図３は、テンポ推定処理の手順およびデータの流れを示す図である。テンポ推定処理は、［分析１］→［統合１］→［分析２］→［統合２］→［分析３］→［統合３］の順に処理を行なうことにより実行される。
【００２３】
各処理の概要を説明する。［分析１］では、入力オーディオデータ全体にわたりフレーム（入力オーディオデータ中でその時間軸に沿って処理対象のデータを切り出すための枠）をデータの最初から最後まで移動させながら、各フレーム内のデータにビート位置検出処理を適用する。ビート位置検出処理により、そのフレーム内のビート位置が検出できる。これらのビート位置検出の結果を単純に寄せ集めたものが分析結果１である。［統合１］では、分析結果１の各区間の分析結果を統合して、入力オーディオデータ全体のテンポ情報としてまとめる。分析がうまくいかない区間もあるので、再度細かく分析を行なった方がよいと判断される区間を集めて、区間リスト１として［分析２］に渡す。後の統合過程で利用するデータは中間結果１として［統合２］に渡す。
【００２４】
［分析２］では、区間リスト１に含まれている区間一つ一つに対し、フレームを移動させながら各フレーム内のデータにビート位置検出処理を適用する。［分析１］と比べて、フレームの幅と移動ステップを小さくする。これらのビート位置検出の結果を単純に寄せ集めたものが分析結果２である。［統合２］では、中間結果１と分析結果２の各区間の分析結果を統合して入力オーディオデータ全体のテンポ情報としてまとめる。同じ結果なのに分析区間が細切れになったり、真ん中の非常に短い区間だけ左右とは異なる結果になったりする分析区間もあるので、分析区間を広くした方がよいと判断される区間を集めて区間リスト２として［分析３］に渡す。後の統合過程で利用するデータは中間結果２として［統合３］に渡す。
【００２５】
［分析３］では、区間リスト２に含まれている区間一つ一つに対し、フレームでデータを切り出したりせずに直接ビート位置検出処理を施す。これらのビート位置検出の結果を単純に寄せ集めたものが分析結果３である。［統合３］では、中間結果２と分析結果３の各区間の分析結果を比較・統合して入力オーディオデータ全体のテンポ情報としてまとめる。その結果が最終結果である。これが本実施の形態のシステムの最終的な出力になる。この出力は、具体的には図１７（ｄ）にその構成単位を示すテンポリストという形式で得られるものである。このデータについては、後に詳述する。
【００２６】
次に、各処理について詳しく説明する。
【００２７】
まず、ビート位置検出処理について説明する。ビート位置検出処理は、［分析１］、［分析２］、および［分析３］の中で、設定された分析範囲（フレーム）に対して行なう処理である。ビート位置検出処理により、その分析範囲中のビート位置が検出できる。
【００２８】
図４は、ビート位置検出処理の手順の一例を示す。ステップ４０１で、フレーム中のオーディオデータをフィルタ処理し、必要な帯域（ビートを検出するのに有効な周波数帯域成分）を抽出する。ステップ４０２で、抽出した帯域のオーディオデータから音量エンベロープを抽出する。ステップ４０３で、その音量エンベロープを微分処理する。ステップ４０４で、微分された音量エンベロープが所定の閾値ＢＴ１より大きくなる位置とそのピーク値を検出する。ステップ４０５では、ステップ４０４で検出された位置とピーク値を列挙したリストＢＰＬを作成する。
【００２９】
図１７（ａ）は、上記ビート位置検出処理で得たリストＢＰＬを示す図である。なお、ここではプログラミング言語Ｃの構造体の宣言文の書き方に準じた表記法で各種のデータを表すものとする。例えば、図１７（ａ）において、｛ビート位置ＢＰ１、ピーク値ＰＶ１｝は、ビート位置ＢＰ１のデータとピーク値ＰＶ１のデータとの組データを示す。これは「ビート位置ＢＰ１」で示す位置に「ピーク値ＰＶ１」で示すピーク値のピークがあることを示している。リストＢＰＬは、このようなビート位置ＢＰとその位置におけるピーク値ＰＶとの組データの並びである。並びの順序は、入力オーディオデータの時間軸に沿う方向（すなわちビート位置の昇順）とする。
【００３０】
次に、［分析１］、［統合１］、［分析２］、［統合２］、［分析３］、および［統合３］の各処理について、それぞれ詳しく説明する。
【００３１】
［分析１］について説明する。図５は、［分析１］で行なうビート検出処理の手順を示す。
【００３２】
ステップ５０１で、処理対象の入力オーディオデータの最初の分析範囲であるフレームを準備する。次に、ステップ５０２で、そのフレーム内のオーディオデータに対して図４で説明したビート位置検出処理を行ない、ビート位置リストＵＢＰＬを作成する。ビート位置リストＵＢＰＬのデータフォーマットは、図１７（ａ）のリストＢＰＬと同じである。ステップ５０３で、各ビート間の時間間隔を算出し、その時間間隔をグループ分けして各グループの投票を行なう。これは、ビート間の時間間隔をその値に応じてグループ分けし、どの程度の時間間隔が何回出現しているかを数える処理である。ステップ５０４で、投票結果のピーク位置およびピーク間隔に基づいて、当該フレームのテンポ値ＵＴＶを決定する。
【００３３】
次に、ステップ５０５で、投票結果のピークのレベルおよびピーク間隔の分散を求め、そのレベルおよび分散からスコア値ＵＳＶを算出する。スコア値は、推定の信頼度の信頼度の指標、すなわちビート検出の成功／失敗の度合いを示す指標となる値であり、投票結果のピークのレベルが大きければ（このとき、そのピーク位置でビートが刻まれたことはより確実と認められるので）スコア値は大きくなり、ピーク間隔の分散が大きければ（このとき、ピーク間の時間間隔がばらばらであると認められるので）スコア値は小さくなる。
【００３４】
ステップ５０６では、次の分析範囲であるフレームを準備する。これは、現フレームから所定量だけフレームを進める処理である。ステップ５０７で、次のフレームが準備できたかを判別し、準備できないとき（すなわち、処理対象の入力オーディオデータの最後まで分析が終了したとき）、処理を終了する。次のフレームがある場合は、ステップ５０２に戻って、次のフレームを現フレームとしてビート検出処理を続ける。
【００３５】
図１７（ｂ）は、１つのフレームに対してステップ５０２〜５０５の処理を行なった結果、得られるデータのフォーマットを示す。開始点ＵＳＰと終了点ＵＥＰは、このフレームの位置を示す。すなわち、入力オーディオデータ中の開始点ＵＳＰから終了点ＵＥＰまでを分析した結果、以下のデータが得られたことを示している。ビート位置のリストＵＢＰＬは、ステップ５０２で作成したリストであり、当該フレーム内のビート位置とその位置のピーク値とを並べたデータ（図１７（ａ）のフォーマット）である。スコア値ＵＳＶは、ステップ５０５で算出したスコア値である。テンポ値ＵＴＶは、ステップ５０５で算出したテンポ値である。なお、ビート位置については、図４の分析時には分析開始点であるフレーム先頭からの相対位置（オフセット）で表現されているが、図１７（ｂ）のリストＵＢＰＬでは入力オーディオデータ全体における絶対位置に変換しておくものとする。
【００３６】
図６は、フレームを進めながら図５の［分析１］のビート検出処理を行なう様子を示す。ｗｉｄｔｈ１はフレームの幅で、ｈｏｐ１はあるフレームから次のフレームに進めるときの移動の距離である。図では、４〜５個程度のビートが１フレームに含まれるように描いているが、実際には、フレームの幅ｗｉｄｔｈ１はビートが１０〜２０個以上検出されるような値とするのが好ましい。例えば、テンポ１２０［ｂｐｍ］のフレーズ４小節分の長さ（８［ｓｅｃ］相当）程度をｗｉｄｔｈ１、その半分の長さをｈｏｐ１などとしておけばよい。なお、［ｂｐｍ］は、１分間に４分音符が何個刻まれるかで表現したテンポの単位である。
【００３７】
入力オーディオデータ６０１に対し、まず点線で示すフレーム６０２を設定し、この範囲でステップ５０２〜５０５の処理を行ない、図１７（ｂ）に示すフォーマットの単位データＵＤを得る。次に、このフレームをｈｏｐ１に示す量だけ進めて実線で示す次のフレーム６０３を設定する。このフレーム６０３についても同様にステップ５０２〜５０５の処理を行ない、図１７（ｂ）に示すフォーマットの単位データＵＤを得る。これを繰り返して、入力オーディオデータの全体に対して、フレーム単位で図１７（ｂ）に示す単位データＵＤを得る。得られたデータ（分析結果ＡＲ１（AR:  Analysis  Result）と呼ぶ）が、図３の分析結果１に相当するデータである。
【００３８】
次に、［統合１］について説明する。［統合１］では、［分析１］で得た分析結果ＡＲ１の各分析結果（すなわちビート検出結果の単位ＵＤ）の統合と、次の［分析２］のための準備を行なう。この統合方法の特徴は、簡単にいえば、▲１▼スコア値が高いほどその分析結果を採用する区間を長くする点（２つのデータＵＤの範囲が重なっている範囲について、スコア値の高いデータＵＤを優先させる）、▲２▼分析結果の統合位置をビート位置のいずれかに一致させる点（各データＵＤの開始点と終了点は、必ずビート位置と一致するように調整される）にある。
【００３９】
図７は、［統合１］で行なわれる統合処理の手順を示すフローチャートである。
【００４０】
ステップ７０１で、分析結果ＡＲ１から条件に合わないデータＵＤを除去する。これにより、分析結果ＡＲ１から、スコア値ＵＳＶがある閾値ＵＴ１以下であるか、あるいはテンポが設定範囲外であるような分析結果単位ＵＤを排除し、次のステップ以降の処理対象から外す。テンポの設定範囲とは、図２のステップ２０２でユーザが入力したテンポの範囲である。ステップ７０２では、各分析結果単位ＵＤの開始点ＵＳＰと終了点ＵＥＰをビート位置に補正する。この補正処理は、各データＵＤの開始点ＵＳＰと終了点ＵＥＰがビート位置に一致するように調整する処理である。具体的には、ステップ７０１で除去した後に残ったすべての分析結果単位ＵＤについて、それぞれ、図１７（ｃ）に示す端点補正済み検出結果の単位ＨＵＤに変換する。
【００４１】
図１７（ｃ）の端点補正済み検出結果の単位ＨＵＤは、図１７（ｂ）のビート検出結果の単位ＵＤをコピーして作成するが、開始点と終了点は、第一ビート位置と最終ビート位置に変換する。第一ビート位置ＵＳＰは、図１７（ｂ）のビート検出結果の単位ＵＤのビート位置リストＵＢＰＬから最初の要素（最初のビート位置）を取り出して設定する。最終ビート位置は、図１７（ｂ）のビート検出結果の単位ＵＤのビート位置リストＵＢＰＬから最後の要素（最後のビート位置）を取り出して設定する。ビート位置リストＵＢＰＬ自体は変更せずにそのままコピーすればよい。これにより、図１７（ｃ）の単位データＨＵＤでは、分析区間の区切りをビートの位置に合わせたデータが得られる。スコア値ＵＳＶおよびテンポ値ＵＴＶもそのままコピーすればよい。
【００４２】
次にステップ７０３で、得られたすべての端点補正済み検出結果の単位ＨＵＤを、スコア値ＵＳＶの昇順（スコア値の小さいものから大きいものの順）にソートする。ステップ７０４では、テンポリストＴＬ１を作成する。テンポリストの作成は、スコア値の小さいものから順に、端点補正済み検出結果の単位ＨＵＤ（図１７（ｃ））の内容をテンポリストＴＬに上書コピーしてゆく処理である。これにより、スコア値の高いデータほど後に上書きされ、より優先的にテンポ推定結果に反映されることになる。
【００４３】
図８に、［統合１］内のステップ７０４で行なわれるテンポリスト作成処理の手順を示す。まずステップ８０１で、新規のテンポリストＴＬを作成する。テンポリストＴＬは、テンポリスト構成単位ＴＵＤの並びからなる。
【００４４】
図１７（ｄ）に、テンポリスト構成単位ＴＵＤのフォーマットを示す。左端ＴＵＳＰと右端ＴＵＥＰは、入力オーディオデータ中の位置を示す。ビート位置のリストＴＵＢＰＬは、左端ＴＵＳＰから右端ＴＵＥＰまでの範囲中のビート検出結果のリスト（図１７（ａ）のフォーマット）である。テンポ値ＴＵＴＶは、左端ＴＵＳＰから右端ＴＵＥＰまでの範囲で推定されたテンポ値である。ステップ８０１で作成するテンポリストＴＬは、その要素であるテンポリスト構成単位ＴＵＤが無い空のリストである。
【００４５】
次に、ステップ８０２で、ソート済の端点補正済み検出結果の単位データＨＵＤ（図１７（ｃ））の一番最初のデータＨＵＤから、テンポリスト構成単位のデータＴＵＤ（図１７（ｄ））を作成する。具体的には、第一ビート位置ＵＳＰを左端ＴＵＳＰに、最終ビート位置ＵＥＰを右端ＴＵＥＰに、ビート位置リストＵＢＰＬをビート位置リストＴＵＢＰＬに、テンポ値ＵＴＶをテンポ値ＴＵＴＶに、それぞれコピーしてやればよい。スコア値ＵＳＶの昇順にソートしてあるので、ソート済データＵＤの最初のデータは最もスコア値ＵＳＶが小さいものである。ステップ８０２で作成したテンポリスト構成単位ＴＵＤが、最初のテンポリストＴＬへの追加（コピー）対象のデータである。
【００４６】
ステップ８０３では、追加対象の当該テンポリスト構成単位ＴＵＤについて、以下の＜case1＞〜＜case4＞の何れに該当するのかを判別する。以下、各＜case＞がどのような場合であり、そのときにどう処理するかについて、詳しく説明する。
【００４７】
＜case1＞は、コピー先のテンポリストＴＬの既存の構成単位ＴＵＤで覆う範囲（左端ＴＵＳＰから右端ＴＵＥＰまでの範囲）をすべて合わせた領域上で、いま追加しようとするステップ８０２で作成したテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰまでの範囲が、空である場合である。この図８のテンポリスト作成処理では、基本的に、ソート済データＨＵＤを順に取り出して、そのソート済データＨＵＤに基づくテンポリスト構成単位ＴＵＤをテンポリストＴＬに追加していく。テンポリスト構成単位ＴＵＤは、入力オーディオデータ中の左端ＴＵＳＰから右端ＴＵＥＰまでの範囲のテンポ値を規定するデータであるので、処理が進んでテンポリストＴＬ内のテンポリスト構成単位ＴＵＤが増えるにつれて、オーディオデータ中でテンポが規定される範囲が増えていくことになる。＜case1＞は、新たに追加しようとするテンポリスト構成単位ＴＵＤが、その左端ＴＵＳＰから右端ＴＵＥＰまでの範囲について初めてテンポ値を規定するデータである場合、言い替えると、それまでにテンポリストＴＬに追加されたテンポリスト構成単位ＴＵＤの中には、これから追加しようとするテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰまでの範囲に重なるものが皆無である場合である。
【００４８】
ステップ８０３で＜case1＞と判別された場合は、ステップ８０７を経て、ステップ８０８に進む。ステップ８０８では、追加対象のテンポリスト構成単位ＴＵＤをテンポリストＴＬに貼り付ける。この際、追加対象のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰが、その左隣のテンポリスト構成単位ＴＵＤの右端ＴＵＥＰと一致するときは、左隣の構成単位ＴＵＤの右端ＴＵＥＰの位置にあるビート（すなわちその範囲の最終ビート）を当該左隣の構成単位ＴＵＤのビート位置リストＴＵＢＰＬから削除する。また、追加対象のテンポリスト構成単位ＴＵＤの右端ＴＵＥＰが、その右隣のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰと一致するときは、追加対象の構成単位ＴＵＤの右端ＴＵＥＰの位置にあるビートを当該追加対象の構成単位ＴＵＤのビート位置リストＴＵＢＰＬから削除する。ステップ８０７は、このような左隣あるいは右隣の構成単位ＴＵＤと重なる場合の補正の処理（以下、端点処理という）を行なうものである。
【００４９】
なお、ステップ８０８でテンポリスト構成単位ＴＵＤをテンポリストＴＬに貼り付ける際には、適切な位置に挿入する形で追加するものとする。テンポリストＴＬは複数のテンポリスト構成単位ＴＵＤの並びであるが、それらのテンポリスト構成単位ＴＵＤは、左端ＴＵＳＰの値を第１キー、右端ＴＵＥＰの値を第２キーとして、昇順にソートされている。そこで、新たに貼り付けるテンポリスト構成単位ＴＵＤは、このソートの順で適切な位置に挿入するものとする。
【００５０】
次にステップ８０９では、ソート済の端点補正済み検出結果の次の単位データＨＵＤ（図１７（ｃ））を取り出し、その単位データＨＵＤから、次の追加対象のテンポリスト構成単位ＴＵＤ（図１７（ｄ））を作成する。ステップ８１０で、次の追加対象データＴＵＤがあるかどうかを判別する。次の追加対象がある場合はステップ８０３に戻り、ない場合はテンポリスト作成処理を終了する。
【００５１】
図９は、＜case1＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す。横軸方向はオーディオデータの時間方向を示す（図１０〜図１３も同様である）。９０１と９０２は、それぞれ、テンポリストＴＬ（ステップ８０８の貼り付け前の状態）内に既に貼り付けられているテンポリスト構成単位ＴＵＤを示す。その矩形の長さは、テンポリスト構成単位ＴＵＤの範囲、すなわちそのテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰの範囲を示す。いま、追加対象のテンポリスト構成単位ＴＵＤが、９０３に示す左端から右端の範囲を有するデータである場合、テンポリストＴＬのその範囲にはテンポリスト構成単位ＴＵＤが無いので、＜case1＞の場合となる。この場合は、コピー後として図示したように、そのまま追加対象のテンポリスト構成単位ＴＵＤをテンポリストに貼り付ければよい。ただし、追加対象のテンポリスト構成単位ＴＵＤの左端と右端についての端点処理（ステップ８０７の補正処理）を行なったデータを貼り付けるものとする。
【００５２】
次に＜case2＞について説明する。＜case2＞は、追加対象のテンポリスト構成単位ＴＵＤの範囲が、テンポリストＴＬ上の既存のテンポリスト構成単位ＴＵＤを完全に内包する場合である。すなわち、現時点のテンポリストＴＬの構成単位ＴＵＤの中に、いま追加しようとする追加対象のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰまでの範囲に完全に内包される構成単位ＴＵＤが既に存在する場合である。
【００５３】
ステップ８０３で＜case2＞と判別された場合は、ステップ８０４で、追加対象のテンポリスト構成単位ＴＵＤの貼り付け範囲に内包される既存のデータＴＵＤを削除して、ステップ８０７に進む。ステップ８０７以降の処理は、＜case1＞で説明したとおりである。
【００５４】
図１０は、＜case2＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す。１００１，１００２，１００３は、それぞれ、テンポリストＴＬ（ステップ８０８の貼り付け前の状態）内に既に貼り付けられているテンポリスト構成単位ＴＵＤを示す。いま、追加対象のテンポリスト構成単位ＴＵＤが、１００４に示す左端から右端の範囲を有するデータである場合、テンポリストＴＬのその範囲には１００２に示すテンポリスト構成単位が内包されているので、＜case2＞の場合となる。この場合は、コピー後として図示したように、１００２のデータを削除し、追加対象のテンポリスト構成単位ＴＵＤを１００４に示すようにテンポリストに貼り付ける。ただし、追加対象のテンポリスト構成単位ＴＵＤの左端と右端についての端点処理（ステップ８０７の補正処理）を行なったデータを貼り付けるものとする。
【００５５】
次に＜case3＞について説明する。＜case3＞は、追加対象のテンポリスト構成単位ＴＵＤの範囲が、テンポリストＴＬ上の既存のテンポリスト構成単位ＴＵＤの範囲と重なるが、完全に内包したり内包されたりする関係ではない場合である。すなわち、現時点のテンポリストＴＬの構成単位ＴＵＤの中に、いま追加しようとする追加対象のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰまでの範囲と部分的に重なる構成単位ＴＵＤが既に存在する場合である。
【００５６】
ステップ８０３で＜case3＞と判別された場合は、ステップ８０５で、既存の構成単位データＴＵＤを、当該追加対象のテンポリスト構成単位ＴＵＤの貼り付け範囲を除くデータＴＵＤに変換する。これは、部分的に重なった範囲についてはスコア値が高い後のデータを優先するため、既存のテンポリスト構成単位ＴＵＤからその重なった範囲を除くものである。ステップ８０５の後、ステップ８０７に進む。ステップ８０７以降の処理は、＜case1＞で説明したとおりである。
【００５７】
図１１（ａ）は、＜case3＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す。特に、追加対象のテンポリスト構成単位ＴＵＤの範囲の左側と既存のテンポリスト構成単位ＴＵＤの範囲の右側とが重なる場合を示す。１１０１，１１０２，１１０３は、それぞれ、テンポリストＴＬ（ステップ８０８の貼り付け前の状態）内に既に貼り付けられているテンポリスト構成単位ＴＵＤを示す。いま、追加対象のテンポリスト構成単位ＴＵＤが、１１０４に示す範囲のデータである場合、テンポリストＴＬのその範囲には１１０２に示すテンポリスト構成単位が存在し、部分的に重なっているので、＜case3＞の場合となる。この場合は、コピー後として図示したように、１１０２のデータを、重なる部分を削除する形で変換し、追加対象のテンポリスト構成単位ＴＵＤを１１０４に示すようにテンポリストに貼り付ける。追加対象のテンポリスト構成単位ＴＵＤについては、ステップ８０７の端点処理を行なって、貼り付けるものとする。
【００５８】
図１１（ｂ）は、図１１（ａ）に示したような場合に、既存のテンポリスト構成単位ＴＵＤから削除されるビートを示す図である。左端位置１１１１から右端位置１１１２は、図１１（ａ）のテンポリスト構成単位１１０２の範囲を示す。すなわち、このテンポリスト構成単位１１０２の左端ＴＵＳＰが位置１１１１で、右端ＴＵＥＰが位置１１１２である。図１１（ａ）に示すように、このテンポリスト構成単位１１０２の範囲と追加対象のテンポリスト構成単位１１０４の範囲とが重なると、テンポリスト構成単位１１０２の右端が修正される。図１１（ｂ）の１１１３は、修正後の右端の位置を示す。その右側のビートは、このテンポリスト構成単位１１０２からは削除されたことになる。
【００５９】
図１２（ａ）は、＜case3＞の場合の別のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す。特に、追加対象のテンポリスト構成単位ＴＵＤの範囲の右側と既存のテンポリスト構成単位ＴＵＤの範囲の左側とが重なる場合を示す。１２０１，１２０２，１２０３は、それぞれ、テンポリストＴＬ（ステップ８０８の貼り付け前の状態）内に既に貼り付けられているテンポリスト構成単位ＴＵＤを示す。いま、追加対象のテンポリスト構成単位ＴＵＤが、１２０４に示す範囲のデータである場合、テンポリストＴＬのその範囲には１２０２に示すテンポリスト構成単位が存在し、部分的に重なっているので、＜case3＞の場合となる。この場合は、コピー後として図示したように、１２０２のデータを、重なる部分を削除する形で変換し、追加対象のテンポリスト構成単位ＴＵＤを１２０４に示すようにテンポリストに貼り付ける。追加対象のテンポリスト構成単位ＴＵＤについては、ステップ８０７の端点処理を行なって、貼り付けるものとする。
【００６０】
図１２（ｂ）は、図１２（ａ）に示したような場合に、既存のテンポリスト構成単位ＴＵＤから削除されるビートを示す図である。左端位置１２１１から右端位置１２１２は、図１２（ａ）のテンポリスト構成単位１２０２の範囲を示す。すなわち、このテンポリスト構成単位１２０２の左端ＴＵＳＰが位置１２１１で、右端ＴＵＥＰが位置１２１２である。図１２（ａ）に示すように、このテンポリスト構成単位１２０２の範囲と追加対象のテンポリスト構成単位１２０４の範囲とが重なると、テンポリスト構成単位１２０２の左端が修正される。図１２（ｂ）の１２１３は、修正後の左端の位置を示す。その左側のビートは、このテンポリスト構成単位１２０２からは削除されたことになる。
【００６１】
次に＜case4＞について説明する。＜case4＞は、追加対象のテンポリスト構成単位ＴＵＤの範囲が、テンポリストＴＬ上の既存のテンポリスト構成単位ＴＵＤの範囲に完全に内包される場合である。すなわち、現時点のテンポリストＴＬの構成単位ＴＵＤの中に、いま追加しようとする追加対象のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰから右端ＴＵＥＰまでの範囲を完全に内包する構成単位ＴＵＤが既に存在する場合である。
【００６２】
ステップ８０３で＜case4＞と判別された場合は、ステップ８０６で、既存の構成単位データＴＵＤを、当該貼り付け範囲の前と後の２つのデータＴＵＤに変換する。これは、重なった範囲についてはスコア値が高い後のデータを優先するため、既存のテンポリスト構成単位ＴＵＤからその重なった範囲を除き、前側のデータと後側のデータを残すものである。ステップ８０６の後、ステップ８０７に進む。ステップ８０７以降の処理は、＜case1＞で説明したとおりである。
【００６３】
図１３は、＜case4＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す。１３０１，１３０２，１３０３は、それぞれ、テンポリストＴＬ（ステップ８０８の貼り付け前の状態）内に既に貼り付けられているテンポリスト構成単位ＴＵＤを示す。いま、追加対象のテンポリスト構成単位ＴＵＤが、１３０４に示す範囲のデータである場合、その範囲を完全に内包する１３０２に示すテンポリスト構成単位が既に存在するので、＜case4＞の場合となる。この場合は、コピー後として図示したように、１３０２のデータを前側と後側に２分割し、その間に追加対象のテンポリスト構成単位ＴＵＤを１００４に示すように貼り付ける。ただし、追加対象のテンポリスト構成単位ＴＵＤの左端と右端についての端点処理（ステップ８０７の補正処理）を行なったデータを貼り付けるものとする。
【００６４】
なお、テンポリスト構成単位ＴＵＤはオーディオデータ中のある範囲のテンポ値を規定するが、そのテンポ値は、その範囲のデータを分析した結果求めた計算値であるので、逆にその範囲でそのテンポ値に応じた理想的な拍を刻むビートを考えたとき、その理想的なビート位置と実際に検出されたビート位置とは、ずれる可能性がある。したがって、上述の各ケースで２つのテンポリスト構成単位ＴＵＤを（空き領域なしに）接合する場合、その接合位置は実際のビート存在位置に合わせるので、その接合位置がテンポ値に応じた理想的なビート位置とはずれてしまう可能性がある。このテンポの崩れを防ぐためには、接合される２つのテンポリスト構成単位ＴＵＤの両方ないし一方においてテンポ値ＴＵＴＶを適切に補正してやる必要がある。具体的には、２つのテンポリスト構成単位ＴＵＤのうち、前方のＴＵＤのテンポ値ＴＵＴＶを補正するのが簡単である。前方のテンポリスト構成単位ＴＵＤの開始点からテンポ値ＴＵＴＶで理想的なビートを刻んでいき、その何番目かのビートが後方のテンポリスト構成単位ＴＵＤの開始点に一致するように、該テンポ値ＴＵＴＶの値を増減する。すなわち、各単位ＴＵＤには、ビートが必ず整数個入るようにする。
【００６５】
なお、この実施の形態では、図７の統合処理で図１７（ｃ）の単位データＨＵＤからデータをコピーして図１７（ｄ）のテンポリスト構成単位データＴＵＤを作成しているが、単位データＨＵＤをそのままテンポリスト構成単位ＴＵＤとしてテンポリストＴＬに組み入れてしまってもよい。この場合は、上述の各ケースに応じた修正を単位データＨＵＤに対して行なう。このようにすれば、［統合１］における修正結果がそのまま［統合２］に引き継がれるので、［統合２］における処理量は減る。ただし、検出結果１は失われる。
【００６６】
再び図７に戻って、上述したようにステップ７０４のテンポリストＴＬの作成が終了したら、ステップ７０５で、次に分析を行なう区間のリストである区間リスト１を作成する。これは、ステップ７０４で作成したテンポリストＴＬ１から、空の区間｛左端，右端｝だけを集めてリストを作る処理である。この空の区間は、［分析１］の処理で、スコア値が一定値以下で、テンポ値が取得できなかった区間である。これを次に分析を行なう区間のリストである区間リストＳＬ１（SL:  Section  List）とする。
【００６７】
図１４に、区間リストＳＬ１のデータ例を示す。図１４（ａ）のテンポリストの中で網掛けで図示した範囲（例えば、位置ｐ１〜ｐ２の範囲、位置ｐ３〜ｐ４の範囲、位置ｐ４〜ｐ５の範囲、位置ｐ６〜ｐ７の範囲など）は、テンポリスト構成単位ＴＵＤが存在しその範囲のテンポ値が取得されている範囲を示す。その間の空白の範囲はテンポ値が取得されていない範囲であり、この範囲を区間リストＳＬ１に登録する。図１４（ｂ）は、区間リストＳＬ１のデータフォーマットを示す。区間リストＳＬ１は、テンポ値が取得されていない範囲の開始位置と終了位置との組データをリストとして並べたデータである。
【００６８】
再び図７に戻って、次にステップ７０６で、次回の統合処理のための準備を行なう。これは、ステップ７０２の出力結果、すなわち端点補正済み検出結果の単位ＨＵＤ（図１７（ｃ））からデータをコピーして作成したリストである。このリストが中間結果ＩＲ１（IR:  Interim  Result）である。
【００６９】
図１８（ａ）は、中間結果ＩＲ１を構成する要素である単位データＩＲ１ＵＤのデータフォーマットを示す。図１７（ｃ）の単位データと図１８（ａ）の単位データとでは、対応するデータ要素は同じ記号で表している。例えば、第１ビート位置ＵＳＰと開始点ＵＳＰなどである。
【００７０】
以上で、［統合１］の処理を終える。［統合１］により、次に分析すべき範囲のリストである区間リストＳＬ１（図１４）と、分析で得られた結果を格納した端点補正済み検出結果の単位ＨＵＤ（図１７（ｃ））をコピーした中間結果ＩＲ１（図１８（ａ））のリストが得られる。また、入力オーディオデータ中でテンポ値が取得できた範囲のリストであるテンポリストＴＬ（その要素は図１７（ｄ））が得られる。図３の「区間リスト１」が区間リストＳＬ１であり、「中間結果１」が中間結果ＩＲ１である。
【００７１】
次に、［分析２］について説明する。［分析２］では、［統合１］で得た区間リストＳＬ１で指定された各区間に対し再度ビート検出処理を施す。ビート検出処理の手順は、図５で説明したのと同じである。ただし、［分析１］では入力オーディオデータの先頭から最後まで所定のフレームを少しずつずらしながら分析したが、［分析２］では区間リストＳＬ１の各区間を対象とし、その第１の区間の先頭から最後まで所定のフレームを少しずつずらしながら分析し、次に第２の区間の先頭から最後まで所定のフレームを少しずつずらしながら分析し、…というように分析を進める。分析にかける各区間の幅は少し拡げておいても構わない。
【００７２】
また、［分析２］で用いるフレームの幅ｗｉｄｔｈ２やフレームの移動ステップｈｏｐ２は、ｗｉｄｔｈ２＜ｗｉｄｔｈ１，ｈｏｐ２＜ｈｏｐ１であればどのような値でもよいが、通常はｗｉｄｔｈ２＝ｗｉｄｔｈ１／２，ｈｏｐ２＝ｈｏｐ１／２としておけばよい。例えば、ｗｉｄｔｈ２＝１小節、ｈｏｐ２＝１／４小節とする。また、ビート抽出の閾値ＢＴ２は、ＢＴ１と同じでも良い。［分析２］では、［分析１］のときより小さいフレームの幅ｗｉｄｔｈ２および移動ステップｈｏｐ２を用いるので、より厳密な分析が行なえる。
【００７３】
［分析１］と同様、ビート検出結果の単位をリストにまとめたものが分析結果ＡＲ２である。図１８（ｂ）は、分析結果ＡＲ２の構成要素である単位データＡＲ２ＵＤのデータフォーマットを示す。この単位データＡＲ２ＵＤのデータ要素は、図１７（ｂ）の単位データＵＤのデータ要素と同じである。ただし、単位データＡＲ２ＵＤは、区間リストＳＬ１の各区間を分析した結果を表すものである。図３の「分析結果２」が分析結果ＡＲ２である。
【００７４】
次に、［統合２］について説明する。［統合２］では、各分析結果の統合と［分析３］のための準備を行なう。統合の方法は［統合１］で説明した図７と同じである。ただし、［分析３］のための準備は［統合１］と大きく異なる。
【００７５】
図７のフローチャートに沿って［統合２］の処理手順を説明する。ステップ７０１では、ビート検出に失敗したデータを排除する。この処理は、［統合１］での同ステップの処理と同様に、分析結果ＡＲ２（図１８（ｂ））からスコア値ＵＳＶがある閾値以下であるか、あるいはテンポ値ＵＴＶが設定範囲外であるような分析結果を排除する処理である。閾値ＵＴ２は、［統合１］で用いた値ＵＴ１と同じでもよいし異なる値でもよい。
【００７６】
ステップ７０２で、分析結果の端点をビート位置に補正する。この処理も［統合１］での同じ処理と同様である。この結果、各分析結果は、図１７（ｃ）に示した端点補正済み検出結果の単位データＨＵＤに変換される。ステップ７０３では、その結果をスコア値ＵＳＶに基づいてソートする。その結果と中間結果１（［統合１］で得られている結果であり、その構成単位は図１８（ａ）に示した）をマージし、マージしたすべての構成単位データを、スコア値ＵＳＶをキーとして昇順に整列する。ステップ７０４で、ソートされたデータに基づいてテンポリストＴＬ２を作成する。この処理も［統合１］での同じ処理と同様である。テンポリストＴＬ２のデータフォーマットは、図１７（ｄ）に示すのと同じである。。
【００７７】
次にステップ７０５で、次に分析を行なう区間のリストである区間リストＳＬ２を作成する。これは、［分析１］と［分析２］で細かく分析し過ぎた区間を探すため、テンポリストＴＬ２から次の条件１および条件２を両方満たすテンポリスト構成単位ＴＵＤの一続きをすべて見つける処理である。一続きとは、テンポリスト構成単位ＵＤの二つ以上の組であって、リストの要素という意味においてすべてが連続しているもののことをいう。領域という意味では構成単位の間に空きがあっても構わない。
【００７８】
▲１▼条件１（空き領域の幅の条件）：一続きに含まれるすべての（「リスト要素」という意味において）隣り合うテンポリスト構成単位ＴＵＤ同士の間の幅が、ある閾値ＷＴ（WT:  Width  Threshold）以下の幅であること。隣り合うテンポリスト構成単位ＴＵＤ同士の間の幅とは、第１のテンポリスト構成単位ＴＵＤの右端ＴＵＥＰとその右隣の第２のテンポリスト構成単位ＴＵＤの左端ＴＵＳＰからＴＵＳＰ−ＴＵＥＰで計算する。
【００７９】
▲２▼条件２（テンポ一定の条件）：一続きに含まれるテンポリスト構成単位ＴＵＤのテンポ値の最大値と最小値の差が、ある許容誤差ＥＴ（ET:  Error  Threshold）以下であること。許容誤差ＥＴの値はテンポに応じて決めてもよい。例えば、テンポ６０［ｂｐｍ］辺りは許容誤差２［ｂｐｍ］、テンポ１８０［ｂｐｍ］辺りは許容誤差６［ｂｐｍ］というようにしてもよい。
【００８０】
これらの条件の根拠は、同じテンポと推定されて隣り合う区間は同じフレーズを構成する可能性が高いということ、および、同じテンポと推定された区間に挟まれた十分小さな区間はたまたまその区間だけ分析に失敗しただけで実はその区間も左右の区間と同じフレーズの一部である可能性があるということである。
【００８１】
図１５（ａ）は、ステップ７０５の処理で上記の条件１，２を満たす場合と満たさない場合の例を示す。ｕ１，ｕ２，ｕ３，…はそれぞれテンポリスト構成単位ＵＤに対応し、その矩形の長さはそのテンポリスト構成単位ＵＤの範囲（左端ＴＵＳＰから右端ＴＵＥＰまでの範囲）を示す。矩形内の数字は、そのテンポリスト構成単位ＵＤのテンポ値ＴＵＴＶを示す。例えば、ｕ１はこの範囲はテンポ１２０であることを示す。条件１の幅の閾値ＷＴは１５０１に示す幅とし、条件２の許容誤差ＥＴは２［ｂｐｍ］とする。
【００８２】
ｕ１とｕ２は隣り合っているが、それらの間の幅が閾値ＷＴ１５０１より大きい。したがって、条件１を満たさないので、区間リストＳＬ２には入れない。
【００８３】
ｕ３，ｕ４，ｕ５は、ｕ３とｕ４との間の幅およびｕ４とｕ５との間の幅は何れも閾値ＷＴ１５０１以下であるので条件１を満たす。また、ｕ３，ｕ４，ｕ５のテンポ値は１０２，１００，１０１であり、その最大値と最小値の差は２となり許容誤差ＥＴ以下であるから、条件２を満たす。したがって、ｕ３の左端からｕ５の右端の区間は、区間リストＳＬ２に入れる。
【００８４】
ｕ６，ｕ７は、それらの間の幅が閾値ＷＴ１５０１以下であるので条件１を満たす。しかし、テンポ値が１００と８０でその差が２０となり許容誤差ＥＴを超えているから条件２を満たさず、区間リストＳＬ２には入れない。同様にして、テンポリスト構成単位ＴＵＤの一続きを見つけていく。ここでは、ｕ１０とｕ１１が一続きの範囲と認められ、またｕ１３とｕ１４とｕ１５が一続きの範囲と認められる。
【００８５】
図１５（ｂ）は、図１５（ａ）のような各構成要素を含むテンポリストに対してステップ７０５の処理を施して作成した区間リストＳＬ２を示す。区間リストＳＬ２のフォーマットは、図１４で説明した区間リストＳＬ１と同じである。
【００８６】
再び図７に戻って、ステップ７０５で上述した区間リストＳＬ２を作成したら、ステップ７０６で、次回の統合のための準備として中間結果２を作成する。まず、区間リストＳＬ２の要素である各区間に「期待されるテンポの値」を付加して、チェック用区間リスト２を作成する。期待されるテンポの値とは、その区間のテンポ値として大体この程度の値が期待されるであろうという値である。これは、［分析３］で予想外の分析結果が得られた場合をチェックする目的で付加される。期待されるテンポの値としては、ステップ７０５の条件２における最大値と最小値の中間値や、同ステップ７０５で一続きと判断された複数のテンポリスト構成単位ＵＤのテンポ値の平均値などに設定しておけばよい。
【００８７】
図１８（ｃ）に、チェック用区間リスト２の構成単位データＣＳＬ２ＵＤのフォーマットを示す。この単位データは、区間リストＳＬ２の要素である各区間の左端および右端のデータに、その区間の期待されるテンポ値のデータを付加したものである。例えば、図１５（ｂ）に示す区間リストＳＬ２の内容から作成したチェック用区間リスト２は、図１８（ｄ）に示すようなデータになる。
【００８８】
このチェック用区間リストＣＳＬ２と、ステップ７０４の出力であるテンポリストＴＬ２が、中間結果ＩＲ２である。中間結果ＩＲ２は、図３の中間結果２に相当する。
【００８９】
次に、［分析３］について説明する。［分析３］では、［統合２］で得た区間リストＳＬ２（チェック用区間リストＣＳＬ２を用いても同じ）で指定された各区間に対し再度ビート検出処理を施す。ビート検出処理の手順は、図５で説明したのと同じである。ただし、［分析１］や［分析２］とは異なり、フレームで切り出したりせず区間リストＳＬ２で指定された各区間をそのまま分析にかける。区間リストＳＬ２で指定された各区間は、上述の条件１および２を満たす一続きの区間であり、当該区間で１つのテンポ値が決定できる区間である。ここで、ビート抽出の閾値ＢＴ３は、ＢＴ１またはＢＴ２と同じでも良い。［分析１］および［分析２］と同様、ビート検出結果の単位をリストにまとめたものが分析結果ＡＲ３である。分析結果ＡＲ３のデータフォーマットは、図１８（ｂ）で説明した分析結果ＡＲ２と同じである。以下、分析結果ＡＲ３の構成単位をＡＲ３ＵＤで表す。図３の「分析結果３」が分析結果ＡＲ３である。
【００９０】
次に、［統合３］について説明する。［統合３］では、分析結果ＡＲ３と中間結果ＩＲ２を比較して、最終結果を得る。特に、分析結果ＡＲ３が期待通りのテンポを推定できている区間は、分析結果ＡＲ３のデータが最終結果に採用される。また、分析結果ＡＲ３が期待通りのテンポを推定できていない区間は、中間結果ＩＲ２のテンポリストＴＬ２のデータが最終結果に採用される。
【００９１】
図１６は、［統合３］の処理手順を示すフローチャートである。
【００９２】
ステップ１６０１で、分析結果ＡＲ３からビート検出に失敗した区間を排除する。これは、［統合１］および［統合２］のステップ７０１で説明したのと同様に、分析結果ＡＲ３からスコア値ＵＳＶがある閾値ＵＴ３以下であるか、あるいはテンポが設定範囲外であるような分析結果を排除する処理である。閾値ＵＴ３は、上述の閾値ＵＴ１，ＵＴ２と異なる値でも構わない。
【００９３】
次にステップ１６０２で、分析結果ＡＲ３から、期待通りのテンポが推定できていない区間を排除する。これは、ステップ１６０１でビート検出に失敗した区間を排除した分析結果ＡＲ３と中間結果ＩＲ２のチェック用区間リストＣＳＬ２とを、対応する区間ごとに比較し、分析結果ＡＲ３の構成単位のテンポ値ＵＴＶとチェック用区間リストＣＳＬ２の構成単位の期待されるテンポ値とが異なるような分析結果を排除する処理である。すなわち、ある区間の分析結果（ビート検出結果の構成単位）が
分析結果ＡＲ３の構成単位ＡＲ３ＵＤの分析開始点ＵＳＰ＝チェック用区間リストＣＳＬ２の構成単位ＣＳＬ２ＵＤの左端、かつ
分析結果ＡＲ３の構成単位ＡＲ３ＵＤの分析終了点ＵＥＰ＝チェック用区間リストＣＳＬ２の構成単位ＣＳＬ２ＵＤの右端
であるようなチェック用区間リストＣＳＬ２構成単位に対して、当該分析結果ＡＲ３の構成単位ＡＲ３ＵＤのテンポ値ＵＴＶとチェック用区間リストＣＳＬ２の構成単位ＣＳＬ２ＵＤの「期待されるテンポ値」との差の絶対値が、許容誤差ＴＥ（TE  :Tolerance  Error）の範囲内であるかどうかチェックし、その範囲内でないならば、その分析結果ＡＲ３の構成単位ＡＲ３ＵＤを削除する。この許容誤差ＴＥは、例えばステップ７０５の条件２の許容誤差の半分などにすればよい。
【００９４】
次にステップ１６０３で、最終結果とするテンポリストＦＲを作成する。この処理は、図７のステップ７０４および図８で説明したのと同じである。ただし、［統合１］および［統合２］では新規のテンポリストＴＬを作成し該テンポリストＴＬに構成単位データＴＵＤを上書きしていくが、ステップ１６０３で行なわれる図８の処理では、「新規のテンポリストＴＬ」の代わりに「中間結果ＩＲ２のテンポリストＴＬ２」を用い、このテンポリストＴＬ２に、ステップ１６０２の処理後の分析結果ＡＲ３の各構成単位ＡＲ３ＵＤから変換したテンポリスト構成単位ＴＵＤを上書きしていく。そのために、図８のステップ８０１では「新規のテンポリストＴＬ」の代わりに「中間結果ＩＲ２のテンポリストＴＬ２」を用意するものとし、ステップ８０２，８０９では分析結果ＡＲ３の各構成単位ＡＲ３ＵＤから次の追加対象のテンポリスト構成単位ＴＵＤを作成するものとする。図８の処理から明白であるが、必ず複数の区間を上書きすることになる。
【００９５】
なお、分析結果ＡＲ３の各構成単位ＡＲ３ＵＤからテンポリスト構成単位ＴＵＤを作成するステップ８０２，８０９の処理は以下のように行なう。ここで、分析結果ＡＲ３の構成単位ＡＲ３ＵＤのフォーマットは図１８（ｂ）の分析結果２のものと同じであり、テンポリスト構成単位ＴＵＤのフォーマットは図１７（ｄ）に示すとおりである。テンポリスト構成単位ＴＵＤの作成は、その左端ＴＵＳＰとして分析結果ＡＲ３の構成単位ＡＲ３ＵＤの分析開始点ＵＳＰを、右端ＴＵＥＰとして分析結果ＡＲ３の構成単位ＡＲ３ＵＤの分析終了点ＵＥＰを、そのビート位置のリストＴＵＢＰＬとして分析結果ＡＲ３の構成単位ＡＲ３ＵＤのビート位置のリストＵＢＰＬを、そのテンポ値ＴＵＴＶとして分析結果ＡＲ３の構成単位ＡＲ３ＵＤのテンポ値ＵＴＶを、それぞれコピーすることにより行なえばよい。
【００９６】
以上の処理により、完成したテンポリストＴＬ３が、最終的な出力ＦＲ（FR:  Final  Result）である。このテンポリストＴＬ３のフォーマットは図１７（ｄ）に示すとおりであり、各区間のテンポ値が推定されている。
【００９７】
上記実施の形態により、オーディオデータのテンポが曲の途中で変化する場合であっても区間ごとのテンポが正確に推定できる。これを用いて、例えばＭＩＤＩデータのテンポをオーディオデータのテンポに合わせることができる。すなわち、オーディオデータに上記実施形態の処理を施してそのテンポを推定し、オーディオデータのテンポが変化するタイミングでＭＩＤＩデータにテンポチェンジイベントを挿入すればよい。ＭＩＤＩデータ上の挿入位置は、オーディオデータのテンポの変わり目に相当するＭＩＤＩデータ上の位置を計算で求め、その位置にテンポチェンジを挿入する。なお、元からＭＩＤＩデータに存在するテンポチェンジイベントのうち、オーディオデータの再生区間に含まれてしまうテンポチェンジイベントは削除すればよい。
【００９８】
逆に上記実施の形態の方法を用いて、オーディオデータのテンポをＭＩＤＩデータのテンポに合わせることもできる。オーディオデータに上記実施の形態の処理を施してオーディオデータのテンポを計算し、計算した結果とＭＩＤＩデータのテンポ情報とを比較し、ＭＩＤＩデータのテンポに合わせるように、オーディオデータに対して区間ごとに異なる倍率でタイムストレッチの処理を施せばよい。タイムストレッチの方法としては、オーディオデータをビート位置でスライスしたときの各スライス片を再配置する方法などを用いればよい。
【００９９】
なお、上記実施の形態の方法でテンポ推定を行なったオーディオデータは、テンポを変えて再生する際のビート位置の計算が比較的容易である。「テンポの変化はビートの位置で起こる」とする考えに基づいてテンポ推定処理を行なっているからである。すなわち、従来方法ではビート位置でテンポ変化が起きるという考え方によらずにテンポ推定を行なっているため、ビート位置をはずれた位置でテンポが変化すると推定する場合がある。この場合、このオーディオデータをテンポを変えて再生しようとすると、テンポの変化点の位置の計算とテンポが変化した後のビート位置の再生開始位置の計算の両方を行なう必要がある。これに対し、上記実施の形態の推定方法ではビート位置がテンポ変化点に一致しているので、テンポを変えて再生する際にはテンポ変化点の位置の計算を行なえばそのビート位置の計算を行なったことになり、計算量が少ないというメリットがある。
【０１００】
上記実施の形態では、［分析１］、［分析２］、および［分析３］の中で、設定された分析範囲についてそれぞれ個別にビート位置検出処理（図４）を行なっているが、そうする代わりに［分析１］、［分析２］、および［分析３］に先立って入力オーディオデータ全体に対してビート位置検出処理を行なうようにしてもよい。その方が処理の無駄が少ない。また、分析フレーム間でビート検出位置を同じにすることができ（または容易に対応させることができ）、後でフレームの分析結果を合成するのに好都合である。この場合、図４のステップ４０４，４０５の処理では、複数の異なる閾値を用いてピーク値を検出し、各閾値に対応したリストを作成しておく。［分析１］、［分析２］、および［分析３］では、それぞれの処理で利用すべきリストを使って処理を行なえばよい。ただし、分析フレームごとにビート位置検出処理における波形処理のパラメータを設定したいなどの目的がある場合は、設定された分析範囲についてそれぞれ個別にビート位置検出の処理を行なうようにする。
【０１０１】
上記実施の形態では、最終的な出力であるテンポリストは、図１７（ｄ）に示すようにビートの情報（ビート位置のリスト）も含んでいる。これは、この結果を用いてオーディオデータをスライスすることなどを想定しているからであるが、必ずしもビートの情報を出力に含める必要はない。
【０１０２】
上記実施の形態では、テンポリストＴＬ３を最終出力としているが、テンポリストＴＬ１またはＴＬ２を最終出力としてもよい。
【０１０３】
上記実施の形態では、オーディオデータ（波形データ）に対してテンポ推定を行なっているが、テンポ推定対象は必ずしもオーディオデータには限らない。例えば、テンポクロックとは関係なく行なわれた演奏を記録した演奏データ（ノートオンイベントなどの各種のイベントデータで表現されているデータ）からその演奏データのテンポを推定するために本発明を適用することもできる。この場合は、図４のビート位置検出処理は、演奏データを解析してビート位置を検出する処理を行なうものとする。
【０１０４】
上記実施の形態では、各ビート検出時に、一定幅のフレームを使用しているが、波形データに応じて適応的に変化する幅のフレームでビート検出を行なってもよい。
【０１０５】
上記実施の形態では、まず長いフレーム幅でテンポ推定を行ない、その失敗した範囲について短いフレーム幅でテンポ推定を行なっているが、必ずしも２段階で行なう必要はない。１つのフレーム幅で１回だけテンポ推定を行なってもよいし、３つ以上のフレーム幅で３段階以上のテンポ推定を行なってもよい。
【０１０６】
また、２回目のテンポ推定を行なう範囲は、必ずしも１回目で失敗した範囲としなくてもよい。例えば、(1)採用されたもののうちスコア値の低かった構成単位ＨＵＤ（スコア値が所定の閾値以下のもの）の範囲を含めて２回目のテンポ推定を行なう、(2)２回目の「テンポ推定」も全範囲について行なう、(3)２つの構成単位ＨＵＤを接続した部分で、接続位置の大きな補正が必要だったその２つの単位ＨＵＤの範囲についても２回目のテンポ推定を行なう、というようにしてもよい。
【０１０７】
開始点、終了点、およびビート位置などの位置データは、時間を単位としてもよいし、サンプル数（小数部以下込みでもよい）を単位としてもよい。テンポ値も、小数点以下を含む値でもよい。テンポ値を小数点以下を含まないテンポ値とする場合は、小数部の丸め込みによるビート位置の誤差が累積されないように、テンポリストの各構成単位データＴＵＤのテンポ値に補正をかければよい。
【０１０８】
上記実施の形態では、構成単位データＨＵＤをスコアの昇順にソートしてテンポリストＴＬの作成を行なっているが、逆に、単位データＨＵＤをスコアの降順にソートしてテンポリストＴＬの作成を行なってもよい。その場合、テンポリスト作成処理では、テンポリストＴＬに先に貼り付けた単位データＴＵＤを優先させ、後から貼り付ける単位データＴＵＤをそれに重ならないように変形させればよい。
【０１０９】
また、ソートを行なわずにテンポリストの作成をすることもできる。その場合、複数の構成単位ＨＵＤを任意の順番で取り出してテンポリストＴＬに貼り付ける。そして、後から貼り付ける構成単位ＨＵＤが既に貼り付けた構成単位ＨＵＤに重なった時点で、スコアの高いほうを優先させ、スコアの低いほうの構成単位ＨＵＤから作成した構成単位ＴＵＤを変形させればよい。
【０１１０】
上記実施の形態では、図３に示す手順で処理を進めているが、［分析２］（すなわち［分析１］と［統合１］でテンポ値が求められなかった区間に対する再度の分析）については省略してもよい。その場合は、［分析１］と［統合１］の結果に対して［統合２］で説明したような細かくしすぎた区間を探して区間リストＳＬ２を作成する処理を施せばよい。
【０１１１】
また上記実施の形態では、［分析１］と［分析２］の２段階による分析にもかかわらず、［統合２］におけるステップ７０１で閾値以下と判断され、テンポ値の取得できない区間が残る場合がある。その区間について更なる分析を行なうようにしてもよい。あるいは、テンポが取得できなかった区間については、前後の区間のテンポや拍位置に基づいて補間を行ない、当該区間のテンポを決定するようにしてもよい。
【０１１２】
なお、本発明の実施態様として、下記のようなテンポ推定装置を実現できる。第１は、音楽データのテンポ推定装置であって、テンポを推定する対象の音楽データ上に分析対象とする部分的データを切り出すための所定幅のフレームを設定し、前記フレームにより切り出した音楽データを分析してテンポ値を求め、前記フレームの位置をずらしながらテンポ値を求める処理を繰り返して、フレームごとのテンポ値を集めたリストである第１の分析結果を取得する第１の分析手段と、前記第１の分析結果から、テンポ値を求めることができた範囲とその範囲のテンポ値とを並べたリストである第１のテンポリストを作成する手段と、前記第１の分析でテンポ値の検出に失敗した区間を並べたリストである第１の区間リストを作成する手段と、前記第１の区間リストの各区間に対して、再度、前記第１の分析のときより幅の狭いフレームを用いてテンポ値を求める処理を施し、それらの区間のテンポ値を並べたリストである第２の分析結果を取得する第２の分析手段と、前記第１の分析結果および第２の分析結果から、テンポ値を求めることができた範囲とその範囲のテンポ値とを並べたリストである第２のテンポリストを作成する手段と、前記第２のテンポリストから、隣合う複数の区間であって、隣合う区間と区間との間の距離が所定の閾値以下、かつ、それらの区間のテンポ値の最大値と最小値との差が所定の閾値以下である区間を、一続きの区間としてまとめ、それら一続きの区間のリストである第２の区間リストを作成する手段と、前記第２の区間リストの各区間について、フレームを設定することなく、再度、テンポ値を求める処理を施し、それらの区間のテンポ値を並べたリストである第３の分析結果を取得する第３の分析手段と、前記第２のテンポリストに対して、前記第３の分析により取得された各区間のテンポ値を反映させることにより、前記音楽データ中の同じテンポ値を有する範囲とその範囲のテンポ値とを並べたリストである最終的なテンポリストを取得する手段とを備えることを特徴とするものである。
【０１１３】
第２は、音楽データのテンポ推定装置であって、テンポを推定する対象の音楽データ上に分析対象とする部分的データを切り出すための所定幅のフレームを設定し、前記フレームにより切り出した音楽データを分析してテンポ値を求め、前記フレームの位置をずらしながらテンポ値を求める処理を繰り返して、フレームごとのテンポ値を集めたリストである第１の分析結果を取得する第１の分析手段と、前記分析結果から、テンポ値を求めることができた範囲とその範囲のテンポ値とを並べたリストであるテンポリストを作成する手段と、前記テンポリストから、隣合う複数の区間であって、隣合う区間と区間との間の距離が所定の閾値以下、かつ、それらの区間のテンポ値の最大値と最小値との差が所定の閾値以下である区間を、一続きの区間としてまとめ、それら一続きの区間のリストである区間リストを作成する手段と、前記区間リストの各区間について、フレームを設定することなく、再度、テンポ値を求める処理を施し、それらの区間のテンポ値を並べたリストである第２の分析結果を取得する第２の分析手段と、前記テンポリストに対して、前記第２の分析により取得された各区間のテンポ値を反映させることにより、前記音楽データ中の同じテンポ値を有する範囲とその範囲のテンポ値とを並べたリストである最終的なテンポリストを取得する手段とを備えることを特徴とするものである。
【０１１４】
第３は、上述の音楽データのテンポ推定装置において、前記テンポ値を求める際、そのテンポ値がどの程度信頼できる値であるかの指標となるスコア値を求め、前記分析結果から前記テンポリストを作成する場合に重なる区間で異なるテンポ値である分析結果があったときには、前記スコア値が高いテンポ値を優先させてテンポリストに反映させることを特徴とするものである。
【０１１５】
第４は、上述の音楽データのテンポ推定装置において、前記分析結果から前記テンポリストを作成する際には、前記音楽データ上でテンポ値を求めることができた範囲の開始位置と終了位置がビート位置に合うように範囲を調整する手段をさらに備えることを特徴とするものである。
【０１１６】
第５は、上述の音楽データのテンポ推定装置において、ユーザにより前記音楽データ上の所定区間内のテンポ値の期待範囲を入力する手段をさらに備え、該期待範囲をはずれる当該区間のテンポ値が検出された場合は、該検出されたテンポ値は排除して以後の処理対象からは外すことを特徴とするものである。
【０１１７】
【発明の効果】
以上説明したように、本発明によれば、テンポが途中で変化するような音楽データであってもそのテンポを正確に推定することができる。特に、異なる区間でテンポ推定を行ない、複数の推定結果を合成するので、各区間で推定したテンポは正確である。また、同じようなテンポ値の検出された区間を統合するので、広い範囲にわたるテンポを正しく検出することができる。さらに、第１フレーム長でテンポの推定を行ない、推定の失敗した区間について第１フレーム長より短い第２フレーム長で推定を行なうので、全体を短いフレーム長で分析する場合に比較して、少ない演算量で正確な推定ができる。また、あらかじめ各位置範囲ごとに期待範囲を指定しているので、突拍子もないテンポ値が推定されるのを防止することができる。推定時にテンポの変化のタイミングをビートのタイミングに合わせるので、テンポ推定後の処理（例えば、他のオーディオ信号／MIDI信号をビートに同期させて再生するための処理）が簡単になる。テンポ変化のタイミングをビートタイミングに合わせておくと、異なる区間で行なわれたテンポ推定の結果を合成する際に、補正処理が簡単になる。
【図面の簡単な説明】
【図１】この発明の実施の形態に係る波形テンポ推定システムの全体構成図である。
【図２】波形データのテンポを推定させる場合のユーザの操作手順を示す図である。
【図３】実施の形態のテンポ推定処理の手順および処理全体のデータの流れを示す図である。
【図４】ビート位置検出処理の手順の一例を示す図である。
【図５】分析１，２，３におけるビート検出処理の手順を示す図である。
【図６】フレームを進めながらビート検出処理を行なう様子を示す図である。
【図７】統合１，２における統合処理の手順を示す図である。
【図８】統合１，２，３におけるテンポリスト作成処理の手順を示す図である。
【図９】＜case1＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す図である。
【図１０】＜case2＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す図である。
【図１１】＜case3＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す図である。
【図１２】＜case3＞の場合の別のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す図である。
【図１３】＜case4＞の場合のコピー前のテンポリストおよびコピー後のテンポリストの様子を示す図である。
【図１４】区間リストＳＬ１のデータ例を示す図である。
【図１５】条件１，２を満たす場合と満たさない場合の例および区間リストＳＬ２のデータ例を示す図である。
【図１６】統合３の処理手順を示す図である。
【図１７】本実施の形態で使用する各種データ（その１）のフォーマットを示す図である。
【図１８】本実施の形態で使用する各種データ（その２）のフォーマットを示す図である。
【符号の説明】
１０１…中央処理装置（ＣＰＵ）、１０２…リードオンリメモリ（ＲＯＭ）、１０３…ランダムアクセスメモリ（ＲＡＭ）、１０４…ドライブ装置、１０６…ＭＩＤＩインターフェース、１０７…パネルスイッチ、１０８…パネル表示器、１１１…書込回路、１１２…アクセス管理部、１１３…波形メモリ、１１４…音源、１１５…サウンドシステム、１２０…バスライン。
【図１】
0003674950.tif 000002
【図２】
0003674950.tif 000003
【図３】
0003674950.tif 000004
【図４】
0003674950.tif 000005
【図５】
0003674950.tif 000006
【図６】
0003674950.tif 000007
【図７】
0003674950.tif 000008
【図８】
0003674950.tif 000009
【図９】
0003674950.tif 000010
【図１０】
0003674950.tif 000011
【図１１】
0003674950.tif 000012
【図１２】
0003674950.tif 000013
【図１３】
0003674950.tif 000014
【図１４】
0003674950.tif 000015
【図１５】
0003674950.tif 000016
【図１６】
0003674950.tif 000017
【図１７】
0003674950.tif 000018
【図１８】
0003674950.tif 000019