(57)【特許請求の範囲】
【請求項１】
入力オーディオ信号から複数種類の基本特徴量を抽出する基本特徴量抽出部と、
上記基本特徴量抽出部で抽出された上記複数種類の基本特徴量を重み付け加算して加算信号を得る重み付け加算部と、
上記重み付け加算部で得られた上記加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するテンポ検出部と、
上記基本特徴量抽出部で抽出された上記複数種類の基本特徴量に基づいて、上記テンポ検出部で検出された上記ＢＰＭを修正するテンポ修正部を備え、
上記テンポ修正部は、
上記複数種類の基本特徴量に基づいて、正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあるか否かを判断するための第１のスピード感を得ると共に、上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあるか否かを判断するための第２のスピード感を得、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあると判断するとき、上記テンポ検出部で検出されたＢＰＭを２倍にしてＢＰＭ出力とし、
上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあると判断するとき、上記テンポ検出部で検出されたＢＰＭを１／２倍してＢＰＭ出力とし、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがないと判断し、かつ上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがないと判断するとき、上記テンポ検出部で検出されたＢＰＭをそのままＢＰＭ出力とする
テンポ検出装置。
【請求項２】
上記基本特徴量抽出部は、
上記入力オーディオ信号を所定数のサンプルデータを含むフレームに分割し、フレーム毎に上記複数種類の基本特徴量を抽出する
請求項１に記載のテンポ検出装置。
【請求項３】
上記基本特徴量抽出部は、
上記入力オーディオ信号のフレーム毎に短時間フーリエ変換を行う短時間フーリエ変換部と、
上記短時間フーリエ変換部から出力される上記フレーム毎の周波数スペクトルに基づいて、上記複数種類の基本特徴量を計算する基本特徴量計算部とを有する
請求項２に記載のテンポ検出装置。
【請求項４】
上記テンポ検出部は、
上記重み付け加算部で得られる上記フレーム毎の加算信号に対して高速フーリエ変換を行う高速フーリエ変換部と、
上記高速フーリエ変換部から出力される周波数軸上の各サンプルを、正解ＢＰＭが存在すると仮定した周波数領域を含み、低域側に隣接する周波数領域は１／２倍で高域側に隣接する周波数領域は２倍となる、所定数の連続した周波数領域に分割し、周波数領域毎かつサンプル毎に、各サンプルデータのレベルに対応したスコアを算出するスコア算出部と、
上記スコア算出部で算出された上記周波数領域毎かつサンプル毎のスコアに基づいて、各周波数領域のサンプルのスコアを、各周波数領域のサンプル数を一致させて、対応するサンプル毎に加算するスコア加算部と、
上記スコア加算部で加算されて得られたサンプル毎のスコア加算値のうち、最大のスコア加算値のサンプルに対応した上記正解ＢＰＭが存在すると仮定した周波数領域内の周波数に対応したＢＰＭを、上記テンポを示すＢＰＭとして決定するＢＰＭ決定部とを有する
請求項３に記載のテンポ検出装置。
【請求項５】
上記基本特徴量抽出部は、上記入力オーディオ信号を所定数のサンプルデータを含むフレームに分割し、フレーム毎に上記複数種類の基本特徴量を抽出し、
上記テンポ修正部は、
所定数のフレームが含まれるブロック毎に上記第１のスピード感および上記第２のスピード感を得る構成とされ、
上記所定数のフレームの上記複数種類の基本特徴量の平均および標準偏差を、予め学習により得られた第１の係数群により重み付け加算して上記第１のスピード感を得、
上記所定数のフレームの上記複数種類の基本特徴量の平均および標準偏差を、予め学習により得られた第２の係数群により重み付け加算して上記第２のスピード感を得る
請求項１に記載のテンポ検出装置。
【請求項６】
入力オーディオ信号から複数種類の基本特徴量を抽出する基本特徴量抽出ステップと、
上記基本特徴量抽出ステップで抽出された上記複数種類の基本特徴量を重み付け加算して加算信号を得る重み付け加算ステップと、
上記重み付け加算ステップで得られた上記加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するテンポ検出ステップと、
上記基本特徴量抽出ステップで抽出された上記複数種類の基本特徴量に基づいて、上記テンポ検出ステップで検出された上記ＢＰＭを修正するテンポ修正ステップを有し、
上記テンポ修正ステップでは、
上記複数種類の基本特徴量に基づいて、正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあるか否かを判断するための第１のスピード感を得ると共に、上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあるか否かを判断するための第２のスピード感を得、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあると判断するとき、上記テンポ検出ステップで検出されたＢＰＭを２倍にしてＢＰＭ出力とし、
上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあると判断するとき、上記テンポ検出ステップで検出されたＢＰＭを１／２倍してＢＰＭ出力とし、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがないと判断し、かつ上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがないと判断するとき、上記テンポ検出ステップで検出されたＢＰＭをそのままＢＰＭ出力とする
テンポ検出方法。
【請求項７】
コンピュータを、
入力オーディオ信号から複数種類の基本特徴量を抽出する基本特徴量抽出手段と、
上記基本特徴量抽出手段で抽出された上記複数種類の基本特徴量を重み付け加算して加算信号を得る重み付け加算手段と、
上記重み付け加算手段で得られた上記加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するテンポ検出手段と、
上記基本特徴量抽出手段で抽出された上記複数種類の基本特徴量に基づいて、上記テンポ検出手段で検出された上記ＢＰＭを修正するテンポ修正手段として機能させ、
上記テンポ修正手段は、
上記複数種類の基本特徴量に基づいて、正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあるか否かを判断するための第１のスピード感を得ると共に、上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあるか否かを判断するための第２のスピード感を得、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあると判断するとき、上記テンポ検出手段で検出されたＢＰＭを２倍にしてＢＰＭ出力とし、
上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあると判断するとき、上記テンポ検出手段で検出されたＢＰＭを１／２倍してＢＰＭ出力とし、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがないと判断し、かつ上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがないと判断するとき、上記テンポ検出手段で検出されたＢＰＭをそのままＢＰＭ出力とする
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、テンポ検出装置、テンポ検出方法およびプログラムに関し、特に、楽曲のオーディオ信号を処理してその楽曲のテンポを検出するテンポ検出装置等に関する。
【背景技術】
【０００２】
楽曲のテンポは楽曲進行の速さを示し、この楽曲のテンポを表す指標としてＢＰＭ（Beat Per Minute：１分間あたりの４分音符の数）がよく使われている。楽曲のＢＰＭを検出する技術として、従来、以下の技術が開示されている。
【０００３】
特許文献１には、音楽波形信号の自己相関を算出し、それに基づいて音楽のビート構造を解析し、その解析結果に基づいて音楽のテンポを抽出することが開示されている。また、特許文献２には、入力オーディオ信号を複数の周波数帯域に分割し、各周波数帯域の入力オーディオ信号のピークを検出し、ピーク位置の時間間隔を算出し、発生頻度の多い時間間隔に基づいてテンポを検出することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２２１２４０号公報
【特許文献２】特開２００７−０３３８５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載される手法は、ポータブル機器向けの組み込みプロセッサ上において短時間で解析することを考えると、演算量が大きすぎるという問題があった。また、特許文献２に記載される手法は、低演算量を意図したものであるが、ピークの時間間隔がそのままＢＰＭに対応しないケースも多く、検出性能が十分高くないという問題があった。特に、ＢＰＭを倍もしくは半分に間違えてしまうケースが多いと考えられる手法である。例えば、正解ＢＰＭが６０の場合にＢＰＭ＝１２０と検出するケースや、正解ＢＰＭが１００の場合にＢＰＭ＝５０と検出するケースである。
【０００６】
この発明の目的は、楽曲のテンポ検出を低演算量で、かつ高性能に行い得るようにすることにある。
【課題を解決するための手段】
【０００７】
この発明の概念は、
入力オーディオ信号から複数種類の基本特徴量を抽出する基本特徴量抽出部と、
上記基本特徴量抽出部で抽出された上記複数種類の基本特徴量を重み付け加算して加算信号を得る重み付け加算部と、
上記重み付け加算部で得られた上記加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するテンポ検出部と、
上記基本特徴量抽出部で抽出された上記複数種類の基本特徴量に基づいて、上記テンポ検出部で検出された上記ＢＰＭを修正するテンポ修正部を備え、
上記テンポ修正部は、
上記複数種類の基本特徴量に基づいて、正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあるか否かを判断するための第１のスピード感を得ると共に、上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあるか否かを判断するための第２のスピード感を得、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあると判断するとき、上記テンポ検出部で検出されたＢＰＭを２倍にしてＢＰＭ出力とし、
上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあると判断するとき、上記テンポ検出部で検出されたＢＰＭを１／２倍してＢＰＭ出力とし、
上記第１のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがないと判断し、かつ上記第２のスピード感により上記正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがないと判断するとき、上記テンポ検出部で検出されたＢＰＭをそのままＢＰＭ出力とする
テンポ検出装置にある。
【０００８】
この発明において、基本特徴量抽出部により入力オーディオ信号から複数種類の基本特徴量が抽出される。例えば、基本特徴量抽出部では、入力オーディオ信号が所定数のサンプルデータを含むフレームに分割され、フレーム毎に、複数種類の基本特徴量が抽出される。例えば、入力オーディオ信号のサンプリング周波数が２２．０５０ｋＨｚである場合、１０２４個のサンプルデータを含むフレームに分割される。
【０００９】
例えば、基本特徴量抽出部は、短時間フーリエ変換部と、基本特徴量計算部とを有する構成とされる。短時間フーリエ変換部では、入力オーディオ信号のフレーム毎に短時間フーリエ変換が行われる。また、基本特徴量計算部では、短時間フーリエ変換部から出力されるフレーム毎の周波数スペクトルに基づいて、複数種類の基本特徴量、例えば、Spectrum Flux、Spectrum CentroidおよびRoll-Offが計算される。
【００１０】
重み付け加算部により、基本特徴量抽出部で抽出された複数種類の基本特徴量が重み付け加算されて加算信号が得られる。ここで、重み係数は、例えば手作業で決定されるが、学習などで自動的に決定されてもよい。そして、テンポ検出部により、重み付け加算部で得られた加算信号に含まれる周期成分が検出され、この周期成分に基づいてテンポを示すＢＰＭが検出される。
【００１１】
例えば、テンポ検出部は、高速フーリエ変換部と、スコア算出部と、ＢＰＭ決定部とを有する構成とされる。高速フーリエ変換部では、フレーム毎の加算信号に対して高速フーリエ変換による周期性解析が行われる。
【００１２】
スコア算出部では、高速フーリエ変換部から出力される周波数軸上の各サンプルが、正解ＢＰＭが存在すると仮定した周波数領域を含み、低域側に隣接する周波数領域は１／２倍で高域側に隣接する周波数領域は２倍となる、所定数の連続した周波数領域に分割される。そして、このスコア算出部では、周波数領域毎かつサンプル毎に、各サンプルデータのレベルに対応したスコアが算出される。
【００１３】
ＢＰＭ決定部は、スコア加算部と、最大値サーチ部とを有する構成とされる。スコア加算部では、スコア算出部で算出された周波数領域毎かつサンプル毎のスコアに基づいて、各周波数領域のサンプルのスコアが、各周波数領域のサンプル数を一致させて、対応するサンプル毎に加算される。最大値サーチ部では、スコア加算部で加算されて得られたサンプル毎のスコア加算値のうち、最大値を取るサンプルに対応する周波数を、正解ＢＰＭが存在すると仮定した周波数領域から算出し、その周波数に対応するＢＰＭがテンポを示すＢＰＭとして決定される。
【００１４】
このように、この発明においては、入力オーディオ信号から複数種類の基本特徴量を抽出し、この複数種類の基本特徴量を重み付け加算して加算信号を得、この加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するものであり、楽曲のテンポ検出を低演算量でかつ高性能に行うことが可能となる。
【００１５】
この発明において、例えば、基本特徴量抽出部で抽出された複数種類の基本特徴量に基づいて、テンポ検出部で検出されたＢＰＭを修正するテンポ修正部をさらに備え、テンポ修正部は、複数種類の基本特徴量に基づいて、正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあるか否かを判断するための第１のスピード感を得ると共に、正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあるか否かを判断するための第２のスピード感を得、第１のスピード感により正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがあると判断するとき、テンポ検出部で検出されたＢＰＭを２倍にしてＢＰＭ出力とし、第２のスピード感により正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがあると判断するとき、テンポ検出部で検出されたＢＰＭを１／２倍にしてＢＰＭ出力とし、第１のスピード感により正解ＢＰＭが存在すると仮定した周波数領域より高域側に正解ＢＰＭがないと判断し、かつ第２のスピード感により正解ＢＰＭが存在すると仮定した周波数領域より低域側に正解ＢＰＭがないと判断するとき、テンポ検出部で検出されたＢＰＭをそのままＢＰＭ出力とする、ようにしてもよい。
【００１６】
この場合、複数種類の基本特徴量に基づいて正解ＢＰＭが存在すると仮定した周波数領域より高域側、低域側に正解ＢＰＭがあるか否かを判断するための第１、第２のスピード感を求めてＢＰＭの修正処理を行うものであり、正解ＢＰＭが存在すると仮定した周波数領域より高域側あるいは低域側に正解ＢＰＭが存在する場合に、ＢＰＭの修正を適切に行うことができる。また、この場合、基本特徴量抽出部で抽出された複数種類の基本特徴量を利用でき、余分な基本特徴量計算を行わないで済む。
【００１７】
また、この発明において、例えば、基本特徴量抽出部は、入力オーディオ信号を所定数のサンプルデータを含むフレームに分割し、フレーム毎に複数種類の基本特徴量を抽出し、テンポ修正部は、所定数のフレームが含まれるブロック毎に第１のスピード感および第２のスピード感を得る構成とされ、所定数のフレームの複数種類の基本特徴量の平均および標準偏差を、予め学習により得られた第１の係数群により重み付け加算して第１のスピード感を得、所定数のフレームの複数種類の基本特徴量の平均および標準偏差を、予め学習により得られた第２の係数群により重み付け加算して第２のスピード感を得る、ようにしてもよい。例えば、複数種類の基本特徴量は、ＺＣＲ、Spectrum Flux、Spectrum CentroidおよびRoll-Offである。
【発明の効果】
【００１８】
この発明によれば、入力オーディオ信号から複数種類の基本特徴量を抽出し、この複数種類の基本特徴量を重み付け加算して加算信号を得、この加算信号に含まれる周期成分に基づいてテンポを示すＢＰＭを検出するものであり、楽曲のテンポ検出を低演算量でかつ高性能に行うことができる。
【図面の簡単な説明】
【００１９】
【図１】この発明の第１の実施の形態としての楽曲テンポ検出装置の構成例を示すブロック図である。
【図２】楽曲テンポ検出装置を構成する基本特徴量抽出部の構成例を示すブロック図である。
【図３】楽曲テンポ検出装置を構成する仮ＢＰＭ算出部の構成例を示すブロック図である。
【図４】仮ＢＰＭ算出部を構成する周期成分解析部の構成例を示すブロック図である。
【図５】複数種類の基本特徴量の重み付け加算信号を高速フーリエ変換して得られた結果の一例を示す図である。
【図６】高速フーリエ変換の結果を用いた各周波数領域のスコア計算例を示す図である。
【図７】ＢＰＭ算出部におけるブロック毎のＢＰＭ決定処理の手順を示すフローチャートである。
【図８】この発明の第２の実施の形態としての楽曲解析システムの構成例を示すブロック図である。
【図９】ソフトウェアで楽曲テンポ検出、楽曲分類などの処理を実行するコンピュータ装置の構成例を示す図である。
【発明を実施するための形態】
【００２０】
以下、発明を実施するための形態（以下、「実施の形態」とする）について説明する。なお、説明を以下の順序で行う。
１．第１の実施の形態
２．第２の実施の形態
３．変形例
【００２１】
＜１．第１の実施の形態＞
［楽曲テンポ検出装置の構成例］
図１は、第１の実施の形態としての楽曲テンポ検出装置１０の構成例を示している。この楽曲テンポ検出装置１０は、オーディオ信号の所定期間毎、例えば３０秒毎に楽曲のテンポを示すＢＰＭ（Beat Per Minute）を検出する。この楽曲テンポ検出装置１０は、オーディオ信号の時間軸および周波数軸のデータから得られる各種基本特徴量の値およびその周期性を利用して、楽曲のテンポを示すＢＰＭを検出する。この楽曲テンポ検出装置１０は、基本特徴量抽出部１００と、仮ＢＰＭ算出部２００と、ＢＰＭ算出部３００とを有している。
【００２２】
基本特徴量抽出部１００は、入力オーディオ信号（ＰＣＭ信号）から、フレーム毎に、複数種類の基本特徴量を算出する。この実施の形態において、複数種類の基本特徴量は、「ＺＣＲ（Zero Crossing Rate）」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」である。これらの基本特徴量は、例えば、文献「George Tzanetakis and Perry Cook. Musical genre classification ofaudio signals. IEEE Transactions on Speech and Audio Processing, 10(5):293-302,July 2002.」で提示されている。
【００２３】
「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量は、概略的には、以下のような意味合いを持っている。「ＺＣＲ」は、入力オーディオ信号の時間波形が単位時間中に横軸を交差する回数である。「Spectrum Flux」は、フレーム毎の周波数スペクトルのパワー変動である。「SpectrumCentroid」は、フレーム毎の周波数スペクトルの重心である。「Roll-Off」は、フレーム毎の周波数スペクトルの総和の８５％に達する周波数である。
【００２４】
仮ＢＰＭ算出部２００は、基本特徴量抽出部１００で抽出されたフレーム毎の複数種類の基本特徴量を時系列データとみなし、この複数種類の基本特徴量の重み付け加算信号に含まれる周期成分（繰り返し成分）を検出することで、仮ＢＰＭを算出する。仮ＢＰＭ算出部２００は、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量を使用する。この仮ＢＰＭ算出部２００は、重み付け加算部およびテンポ検出部を構成している。
【００２５】
ここで、仮ＢＰＭはＢＰＭ０〜ＢＰＭ０＊２を取り、ＢＰＭ０は約７５が用いられる。仮ＢＰＭ算出部２００は、正解ＢＰＭがＢＰＭ０〜ＢＰＭ０＊２の間にない場合であっても、仮ＢＰＭとしてＢＰＭ０〜ＢＰＭ０＊２の間の値を出力する。例えば、正解ＢＰＭが１８０の場合、仮ＢＰＭ算出部２００は、仮ＢＰＭとして９０を出力する。また、例えば、正解ＢＰＭが５０の場合、仮ＢＰＭ算出部２００は、仮ＢＰＭとして１００を出力する。
【００２６】
ＢＰＭ算出部３００は、基本特徴量抽出部１００で抽出された基本特徴量に基づいてスピード感を計算し、正解ＢＰＭが１５０を超えるＢＰＭ（高ＢＰＭ）であるか、また、正解ＢＰＭがＢＰＭ０未満（約７５）のＢＰＭ（低ＢＰＭ）であるかを判定する。ＢＰＭ算出部３００は、スピード感を計算する際に、「ＺＣＲ（Zero Crossing Rate）」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量を使用する。
【００２７】
ＢＰＭ算出部３００は、高ＢＰＭであると判定するとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭを２倍にしてＢＰＭとする。また、ＢＰＭ算出部３００は、低ＢＰＭであると判定するとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭを１／２倍にしてＢＰＭとする。さらに、ＢＰＭ算出部３００は、高ＢＰＭでもなく、低ＢＰＭでもないと判定するとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭをそのままＢＰＭとする。このＢＰＭ算出部３００は、テンポ修正部を構成している。
【００２８】
図１に示す楽曲テンポ検出装置１０の動作を説明する。入力オーディオ信号（ＰＣＭ信号）は、基本特徴量抽出部１００に供給される。この基本特徴量抽出部１００では、入力オーディオ信号から、フレーム毎に、「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量が抽出される。
【００２９】
基本特徴量抽出部１００で抽出されたフレーム毎の「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量は、仮ＢＰＭ算出部２００に供給される。この仮ＢＰＭ算出部２００では、基本特徴量抽出部１００で抽出されたフレーム毎の各基本特徴量が時系列データとみなされ、重み付け加算される。そして、この仮ＢＰＭ算出部２００では、重み付け加算信号に含まれる周期成分（繰り返し成分）が抽出され、仮ＢＰＭが算出される。この仮ＢＰＭはＢＰＭ０〜ＢＰＭ０＊２（ＢＰＭ０は約７５）の間の値とされる。
【００３０】
仮ＢＰＭ算出部２００で算出された仮ＢＰＭは、ＢＰＭ算出部３００に供給される。この仮ＢＰＭは、ＢＰＭ０〜ＢＰＭ０＊２（ＢＰＭ０は約７５）の間の値とされている。すなわち、仮ＢＰＭ算出部２００では、正解ＢＰＭがＢＰＭ０〜ＢＰＭ０＊２の間にない場合であっても、仮ＢＰＭとしてＢＰＭ０〜ＢＰＭ０＊２の間の値が出力される。また、ＢＰＭ算出部３００には、基本特徴量抽出部１００で抽出されたフレーム毎の「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量が供給される。
【００３１】
ＢＰＭ算出部３００では、基本特徴量抽出部１００で抽出された「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量に基づいてスピード感が計算される。ＢＰＭ算出部３００では、この計算されたスピード感に基づいて、正解ＢＰＭが、ＢＰＭ０＊２（ＢＰＭ０は約７５）を超えるＢＰＭ（高ＢＰＭ）であるか、ＢＰＭ０未満のＢＰＭ（低ＢＰＭ）であるかが判定される。
【００３２】
そして、ＢＰＭ算出部３００では、高ＢＰＭであると判定されるとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭが２倍にされ、ＢＰＭとして出力される。また、ＢＰＭ算出部３００では、低ＢＰＭであると判定されるとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭが１／２倍にされ、ＢＰＭとして出力される。さらに、ＢＰＭ算出部３００では、高ＢＰＭでもなく、低ＢＰＭでもないと判定されるとき、仮ＢＰＭ算出部２００で算出された仮ＢＰＭが、そのままＢＰＭとして出力される。
【００３３】
［基本特徴量算出部の説明］
基本特徴量算出部１００の詳細を説明する。この基本特徴量算出部１００は、上述したように、仮ＢＰＭ算出部２００での周期成分抽出処理、およびＢＰＭ算出部３００でのスピード感計算処理において用いられる複数種類の基本特徴量を算出する。この複数種類の基本特徴量は、上述したように、「ＺＣＲ（Zero Crossing Rate）」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」である。
【００３４】
基本特徴量抽出部１００は、入力オーディオ信号から「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」を抽出する。この入力オーディオ信号は、モノラルかつサンプリング周波数２２．０５０ｋＨｚになるように、チャンネル変換およびサンプリング周波数変換が行われたものである。基本特徴量抽出部１００は、この入力オーディオ信号を１０２４サンプル（約４６ｍｓｅｃ）のフレームに分割し、フレーム毎に基本特徴量を計算し、その結果をバッファに保持する。
【００３５】
図２は、基本特徴量抽出部１００の構成例を示している。この抽出部１００は、短時間フーリエ変換部１０１と、フラックス（flux）計算部１０２と、セントロイド（centroid）計算部１０３と、ロールオフ（roll-off）計算部１０４と、ＺＣＲ計算部１０５と、バッファ１０６〜１０９を有している。
【００３６】
ＺＣＲ計算部１０５は、入力オーディオ信号、つまり時間軸上のデータを使用して、フレーム（１０２４サンプル）毎に、以下の（１）式により、「ＺＣＲ」を計算する。そして、ＺＣＲ計算部１０５は、この計算結果を、この「ＺＣＲ」の基本特徴量に決定された正規化係数で０から１に収まるように正規化して、バッファ１０９に格納する。ここで、“ｘt”はフレームｔにおける入力オーディオ信号のサンプルデータ、“ｎ”は時間軸方向のインデックスを表す。“sign”は信号の正負を判定する関数であり、信号が正の場合に１を返し、負の場合に−１を返す関数である。“Ｚt”は、フレームｔにおける「ＺＣＲ」である。
【００３７】
【数１】
0005569228.tif 000002
【００３８】
短時間フーリエ変換部１０１は、入力オーディオ信号、つまり時間軸上のデータに対して、フレーム毎に、短時間フーリエ変換（ＳＴＦＴ：Short-time Fourier Transform）を行う。この短時間フーリエ変換部１０１から出力されるフレーム毎の周波数スペクトルは、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」のフレーム毎の基本特徴量を計算するために用いられる。
【００３９】
フラックス（flux）計算部１０２は、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルを使用して、フレーム毎に、以下の（２）式により、「Spectrum Flux」を計算する。そして、フラックス計算部１０２は、この計算結果を、この「Spectrum Flux」の基本特徴量に決定された正規化係数で０から１に収まるように正規化して、バッファ１０６に格納する。ここで、“Ｎ”はフレームｔにおける入力オーディオ信号の周波数スペクトル（パワーの総和で正規化されている）、“Ｍ”は総スペクトル本数、“ｎ”は周波数軸方向のインデックスを表す。“Ｆt”は、フレームｔにおける「Spectrum Flux」である。
【００４０】
【数２】
0005569228.tif 000003
【００４１】
ロールオフ（roll-off）計算部１０４は、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルを使用して、フレーム毎に、「Roll-Off」を計算し、計算結果をバッファ１０８に格納する。このロールオフ計算部１０４は、以下の（３）式を満たす最小のＲtとして、「Roll-Off」を計算する。そして、ロールオフ計算部１０４は、この計算結果を、この「Roll-Off」の基本特徴量に決定された正規化係数で０から１に収まるように正規化して、バッファ（バッファ４）１０８に格納する。ここで、“Ｘ”はフレームｔにおける入力オーディオ信号の周波数スペクトル、“Ｍ”は総スペクトル本数、“ｎ”は周波数軸方向のインデックスを表す。
【００４２】
【数３】
0005569228.tif 000004
【００４３】
セントロイド（centroid）計算部１０３は、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルを使用して、フレーム毎に、以下の（４）式により、「Spectrum Centroid」を計算する。そして、セントロイド計算部１０３は、この計算結果を、この「Spectrum Centroid」の基本特徴量に決定された正規化係数で０から１に収まるように正規化して、バッファ１０６に格納する。ここで、“Ｘ”はフレームｔにおける入力信号の周波数スペクトル、“Ｍ”は総スペクトル数、“ｎ”は周波数軸方向のインデックスを表す。“Ｃt”は、フレームｔにおける「Spectrum Centroid」である。
【００４４】
【数４】
0005569228.tif 000005
【００４５】
図２に示す基本特徴量抽出部１００の動作を簡単に説明する。入力オーディオ信号（ＰＣＭ信号）は、短時間フーリエ変換部１０１およびＺＣＲ計算得１０５に供給される。この入力オーディオ信号は、モノラルかつサンプリング周波数２２．０５０ｋＨｚになるように、予めチャンネル変換およびサンプリング周波数変換が行われている。
【００４６】
ＺＣＲ計算部１０５では、入力オーディオ信号、つまり時間軸上のデータが使用されて、フレーム（１０２４サンプル）毎に、「ＺＣＲ」の基本特徴量が計算される（（１）式参照）。この計算結果は、この「ＺＣＲ」の基本特徴量に決定された正規化係数で０から１に収まるように正規化されて、ＺＣＲ格納バッファとしてのバッファ１０９に格納される。
【００４７】
また、短時間フーリエ変換部１０１では、入力オーディオ信号、つまり時間軸上のデータに対して、フレーム毎に、短時間フーリエ変換が行われる。この短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルは、フラックス（flux）計算部１０２と、セントロイド（centroid）計算部１０３と、ロールオフ（roll-off）計算部１０４に供給される。
【００４８】
フラックス（flux）計算部１０２では、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルが使用されて、フレーム毎に、「Spectrum Flux」の基本特徴量が計算される（（２）式参照）。この計算結果は、この「Spectrum Flux」の基本特徴量に決定された正規化係数で０から１に収まるように正規化されて、flux格納バッファとしてのバッファ１０６に格納される。
【００４９】
ロールオフ（roll-off）計算部１０４では、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルが使用されて、フレーム毎に、「Roll-Off」の基本特徴量が計算される（（３）式参照）。この計算結果は、この「Roll-Off」の基本特徴量に決定された正規化係数で０から１に収まるように正規化されて、roll-off格納バッファとしてのバッファ１０８に格納される。
【００５０】
セントロイド（centroid）計算部１０３では、短時間フーリエ変換部１０１で得られたフレーム毎の周波数スペクトルが使用されて、フレーム毎に、「Spectrum Centroid」の基本特徴量が計算される（（４）式参照）。この計算結果は、この「Spectrum Centroid」の基本特徴量に決定された正規化係数で０から１に収まるように正規化されて、centroid格納バッファとしてのバッファ１０７に格納される。
【００５１】
［仮ＢＰＭ算出部の説明］
仮ＢＰＭ算出部２００の詳細を説明する。この仮ＢＰＭ算出部２００は、上述したように、フレーム毎の複数種類の基本特徴量を時系列データとみなし、この複数種類の基本特徴量の重み付け加算信号に含まれる周期成分（繰り返し成分）を抽出することで、仮ＢＰＭを算出する。
【００５２】
図３は、仮ＢＰＭ算出部２００の構成例を示している。この仮ＢＰＭ算出部２００は、重み付け加算部２１０と、周期成分解析部２２０を有している。重み付け加算部２１０は、バッファ１０６，１０７，１０８からフレーム毎の「Spectrum Flux」、「Spectrum Centroid」、「Roll-Off」の基本特徴量を順次取り出して重み付け加算し、重み付け加算信号を得る。
【００５３】
重み付け加算部２１０は、乗算器２１１〜２１３と、加算器２１４とから構成されている。乗算器２１１は、バッファ１０６から取り出された「Spectrum Flux」に、重み係数ｗ1を乗算して、重み付けを行う。また、乗算器２１２は、バッファ１０７から取り出された「Spectrum Centroid」に、重み係数ｗ2を乗算して、重み付けを行う。また、乗算器２１３は、バッファ１０８から取り出された「Roll-Off」に、重み係数ｗ3を乗算して、重み付けを行う。
【００５４】
加算器２１４は、乗算器２１１，２１２，２１３でそれぞれ重み付けされたフレーム毎の「Spectrum Flux」、「Spectrum Centroid」、「Roll-Off」の基本特徴量を加算して、各フレームの重み付け加算信号を順次出力する。なお、重み係数ｗ1，ｗ2，ｗ3は、周期成分の検出が良好に行われるように、予め、手作業で決定されるか、あるいは学習などで自動的に決定されたものである。
【００５５】
「SpectrumFlux」、「Spectrum Centroid」、「Roll-Off」の基本特徴量は、いずれも、アタック性の信号が発生する箇所で立ち上がる傾向にある。個別の基本特徴量をみた際には、着目している周期成分以外のところでも立ち上がりが発生するため、周期成分の検出の際にノイズとなるケースが多く、周期成分の誤検出の要因となる。重み付け加算信号においては、全ての基本特徴量で同時に変化している箇所が強調されるため、ノイズを低減でき、周期成分の検出性能を向上できる。
【００５６】
周期成分解析部２２０は、重み付け加算部２１０で得られた重み付け加算信号に含まれる周期成分（繰り返し成分）を検出し、この周期成分に基づいて仮ＢＰＭを検出する。この周期成分解析部２２０は、テンポ検出部を構成している。図４は、周期成分解析部２２０の構成例を示している。周期成分解析部２２０は、高速フーリエ変換部２２１と、スコア算出部２２２〜２２５と、加算部２６と、最大値サーチ部２２７を有している。
【００５７】
高速フーリエ変換部２２１は、重み付け加算部２１０から順次出力される各フレームの重み付け加算信号（時系列データ）に対して高速フーリエ変換（ＦＦＴ：Fast Fourie Transform）を行う。ＦＦＴサイズは、例えば、１０２４サンプルとされる。この場合、時系列データにおいて、１秒あたりのフレーム数は  ２２０５０／１０２４  であるため、時系列データをＦＦＴした際のサンプリング周波数は２２０５０／１０２４Ｈｚとなる。その際のナイキスト周波数は２２０５０／（２＊１０２４）  Ｈｚ  となる。ＦＦＴサイズとして、１０２４サンプルを用いた場合、１０２４サンプルの周波数データが得られ、１サンプルは（２２０５０／１０２４）／１０２４Ｈｚに相当する。ＢＰＭは１分あたりの繰り返し数に相当するので、換算するとスペクトル１本あたり、６０＊（２２０５０／１０２４）／１０２４  ＢＰＭに相当する。
【００５８】
重み付け加算信号に周期成分がある場合、高速フーリエ変換の結果得られた周波数軸上の各サンプルデータのうち、対応する周波数位置のサンプルデータのレベルがピークとなって現れる。図５は、重み付け加算信号の高速フーリエ変換の結果例を示している。この図において、横軸は、周波数に対応するＢＰＭ（Beat Per Minute）が用いられている。
【００５９】
スコア算出部２２２〜２２５は、仮ＢＰＦを検出するためのスコアを算出する。高速フーリエ変換の結果には、図５の結果例からも明らかなように、いくつかのピークが現れる。最大値をとる周波数位置が正解ＢＰＭとは限らない。例えば、１６分音符の成分が強い場合、正解ＢＰＭの４倍の位置に強いピークが現れる。
【００６０】
仮ＢＰＭ算出部２００は、正確なＢＰＭ検出を行う前に、仮ＢＰＭとして、正解ＢＰＭがＢＰＭ０〜ＢＰＭ０＊２(ＢＰＭ０は約７５)であると仮定したときのＢＰＭを検出する。スコア検出部２２２〜２２５は、仮ＢＰＭの算出のために、ＢＰＭ０〜ＢＰＭ０＊２のＢＰＭのなかで、どれが最も仮ＢＰＭらしいかを表すスコアを、高速フーリエ変換の結果から算出する。
【００６１】
ＢＰＭ＝１００の楽曲を処理した場合、ＢＰＭ＝１００に相当する周波数にピークが発生するだけでなく、ＢＰＭ＝５０、ＢＰＭ＝２００、ＢＰＭ＝４００に相当する周波数位置にもピークが発生する傾向がある。これを前提にして、周期成分解析部２２０は、周波数領域を、以下の４つの領域に分割して、それぞれの領域でスコアを算出する。この周波数分割においては、低域側に隣接する周波数領域は１／２倍とされ、高域側に隣接する周波数領域は２倍とされる。
【００６２】
仮ＢＰＭの下限値をＢＰＭ０とした場合、
周波数領域１：  ＢＰＭ０／２  ＜  ＢＰＭ  ≦  ＢＰＭ０に相当する周波数領域
周波数領域２：  ＢＰＭ０  ＜  ＢＰＭ  ≦  ＢＰＭ０*2に相当する周波数領域
周波数領域３：  ＢＰＭ０＊２  ＜  ＢＰＭ  ≦  ＢＰＭ０＊4に相当する周波数領域
周波数領域４：  ＢＰＭ０＊４  ＜  ＢＰＭ  ≦  ＢＰＭ０＊8に相当する周波数領域
となる。仮ＢＰＭの範囲を約７５〜約１５０とすると、ＢＰＭ０は６０＊（２２０５０／１０２４）／１０２４＊６０となる
【００６３】
スコア算出部２２２は、周波数領域１に存在する各サンプルデータに基づいて、この周波数領域１のスコアを算出する。スコア算出部２２３は、周波数領域２に存在する各サンプルデータに基づいて、この周波数領域２のスコアを算出する。スコア算出部２２４は、周波数領域３に存在する各サンプルデータに基づいて、この周波数領域３のスコアを算出する。また、スコア算出部２２５は、周波数領域４に存在する各サンプルデータに基づいて、この周波数領域４のスコアを算出する。
【００６４】
図６は、高速フーリエ変換の結果（図５参照）を用いた、各周波数領域のスコア計算例を示している。周波数領域１の信号は、周波数が倍の位置に相当する仮ＢＰＭの半分の成分とみなされる。つまり、この周波数領域１の信号は、仮ＢＰＭを４分音符とみなした場合の、２分音符の成分となる。そのため、周波数領域１のスコアを算出するスコア算出部２２２は、この周波数領域１に存在するサンプルデータ毎に、そのレベルを周波数が倍の位置のサンプルのスコアとする。例えば、ＢＰＭが６０の位置にあるサンプルデータのレベルは、ＢＰＭ＝１２０に相当するサンプルのスコアとして扱われる。
【００６５】
周波数領域２の信号は、仮ＢＰＭの成分と見なされる。つまり、この周波数領域２の信号は、仮ＢＰＭを４分音符とみなした場合の、４分音符の成分となる。そのため、周波数領域２のスコアを算出するスコア算出部２２３は、この周波数領域２に存在するサンプルデータ毎に、そのレベルを周波数が同じ位置のサンプルのスコアとする。
【００６６】
周波数領域３の信号は、周波数が半分の位置に相当する仮ＢＰＭの２倍の成分とみなされる。つまり、この周波数領域３の信号は、仮ＢＰＭを４分音符とみなした場合の、８分音符の成分となる。そのため、周波数領域３のスコアを算出するスコア算出部２２４は、この周波数領域３に存在するサンプルデータ毎に、そのレベルを周波数が半分の位置のサンプルのスコアとする。例えば、ＢＰＭが２４０の位置にあるサンプルデータのレベルは、ＢＰＭ＝１２０に相当するサンプルのスコアとして扱われる。
【００６７】
周波数領域４の信号は、周波数が１／４の位置に相当する仮ＢＰＭの４倍の成分とみなされる。つまり、この周波数領域４の信号は、仮ＢＰＭを４分音符とみなした場合の、１６分音符の成分となる。そのため、周波数領域４のスコアを算出するスコア算出部２２５は、この周波数領域４に存在するサンプルデータ毎に、そのレベルを周波数が１／４の位置のサンプルのスコアとする。例えば、ＢＰＭが４８０の位置にあるサンプルデータのレベルは、ＢＰＭ＝１２０に相当するサンプルのスコアとして扱われる。
【００６８】
図４に戻って、加算部２２６は、スコア算出部２２２〜２２５で算出された各周波数領域のスコアを、各周波数領域のサンプル数を一致させて、対応するサンプル毎に加算する。この加算部２２６は、スコア加算部を構成している。加算部２２６は、例えば、サンプル数が最も少ない周波数領域１に合わせるように、その他の周波数領域のサンプルの間引きを行う。
【００６９】
上述したようにフレーム周波数が２２．０５０ｋＨｚ／１０２４で、ＦＦＴサイズが１０２４サンプルである場合、フーリエ変換部２２１では、サンプリング周波数が２２．０５０ｋＨｚ／１０２４で、サンプル数（データ数）が１０２４の周波数表現が得られる。この場合、周波数領域１のサンプル数は３０個、周波数領域２のサンプル数は６０個、周波数領域３のサンプル数は１２０個、周波数領域４のサンプル数は２４０個となる（図５参照）。
【００７０】
周波数領域２におけるサンプルの間引きは以下のように行われる。周波数領域１のサンプル数が３０個であるのに対して周波数領域２のサンプル数は６０個である。そのため、加算部２２６は、この周波数領域２に関しては、２サンプルごと３０個のブロックに分割し、各ブロックの最大値のみを残すことで、３０サンプルに間引きする。
【００７１】
また、周波数領域３におけるサンプルの間引きは以下のように行われる。周波数領域１のサンプル数が３０個であるのに対して周波数領域３のサンプル数は１２０個である。そのため、加算部２２６は、この周波数領域３に関しては、４サンプルごと３０個のブロックに分割し、各ブロックの最大値のみを残すことで、３０サンプルに間引きする。
【００７２】
また、周波数領域４におけるサンプルの間引きは以下のように行われる。周波数領域１のサンプル数が３０個であるのに対して周波数領域４のサンプル数は２４０個である。そのため、加算部２２６は、この周波数領域４に関しては、８サンプルごと３０個のブロックに分割し、各ブロックの最大値のみを残すことで、３０サンプルに間引きする。
【００７３】
最大値サーチ部２２７は、加算部２２６で加算されて得られた各サンプルのスコア加算値から、図６に示すように、最大値をサーチする。そして、最大のスコア加算値のサンプルに対応した、周波数領域２内の周波数に対応したＢＰＭを、仮ＢＰＭとする。ここで、周波数領域２（ＢＰＭ０  ＜  ＢＰＭ  ≦  ＢＰＭ０＊２に相当する周波数領域）は、上述したように、正解ＢＰＭが存在すると仮定した周波数領域である。
【００７４】
図３に示す仮ＢＰＭ算出部２００の動作を簡単に説明する。バッファ１０６，１０７，１０８に格納されている、フレーム毎の「Spectrum Flux」、「Spectrum Centroid」、「Roll-Off」の基本特徴量が順次取り出されて、重み付け加算部２１０に供給される。乗算器２１１では、バッファ１０６から取り出された「Spectrum Flux」に、重み係数ｗ1が乗算されて、重み付けが行われる。また、乗算器２１２では、バッファ１０７から取り出された「Spectrum Centroid」に、重み係数ｗ2が乗算されて、重み付けが行われる。また、乗算器２１３では、バッファ１０８から取り出された「Roll-Off」に、重み係数ｗ3が乗算されて、重み付けが行われる。
【００７５】
各乗算器２１１〜２１３の出力信号は加算機２１４に供給される。加算器２１４では、乗算器２１１〜２１３でそれぞれ重み付けされたフレーム毎の「Spectrum Flux」、「Spectrum Centroid」、「Roll-Off」の基本特徴量が加算されて、各フレームの重み付け加算信号が順次得られる。この重み付け加算信号は、周期成分解析部２２０供給される。
【００７６】
周期成分解析部２２０では、重み付け加算部２１０で得られた重み付け加算信号に含まれる周期成分（繰り返し成分）が検出され、この周期成分に基づいて仮ＢＰＭが検出される。すなわち、周期成分解析部２２０のフーリエ変換部２２１では（図４参照）、重み付け加算部２１０から順次出力される各フレームの重み付け加算信号（時系列データ）に対して高速フーリエ変換が行われる。この高速フーリエ変換の結果（図５参照）は、スコア算出部２２２〜２２５に供給される。
【００７７】
スコア算出部２２２〜２２５では、仮ＢＰＦを検出するためのスコアが算出される（図６参照）。スコア算出部２２２では、周波数領域１（ＢＰＭ０／２  ＜  ＢＰＭ  ≦  ＢＰＭ０に相当する周波数領域）に存在する各サンプルデータに基づいて、この周波数領域１のスコアが算出される。この場合、この周波数領域１に存在するサンプルデータ毎に、そのレベルが、周波数が倍の位置のサンプルのスコアとされる。
【００７８】
スコア算出部２２３では、周波数領域２（ＢＰＭ０  ＜  ＢＰＭ  ≦  ＢＰＭ０＊２に相当する周波数領域）に存在する各サンプルデータに基づいて、この周波数領域２のスコアが算出される。この周波数領域２は、正解ＢＰＭが存在すると仮定した周波数領域である。この場合、周波数領域２に存在するサンプルデータ毎に、そのレベルが、周波数が同じ位置のサンプルのスコアとされる。
【００７９】
スコア算出部２２４では、周波数領域３（ＢＰＭ０＊２  ＜  ＢＰＭ  ≦  ＢＰＭ０＊４に相当する周波数領域）に相当する周波数領域に存在する各サンプルデータに基づいて、この周波数領域３のスコアが算出される。この場合、この周波数領域３に存在するサンプルデータ毎に、そのレベルが、周波数が半分の位置のサンプルのスコアとされる。
【００８０】
スコア算出部２２５では、周波数領域４（ＢＰＭ０＊４  ＜  ＢＰＭ  ≦  ＢＰＭ０＊８に相当する周波数領域）に相当する周波数領域に存在する各サンプルデータに基づいて、この周波数領域４のスコアが算出される。この場合、この周波数領域４に存在するサンプルデータ毎に、そのレベルが、周波数が１／４の位置のサンプルのスコアとされる。
【００８１】
スコア算出部２２２〜２２５で算出された各周波数領域のスコアは加算部２２６に供給される。この加算部２２６では、各周波数領域のスコアが、各周波数領域のサンプル数を一致させて、対応するサンプル毎に加算される。この場合、例えば、サンプル数が最も少ない周波数領域１に合わせるように、その他の周波数領域のサンプルの間引きが行われる。
【００８２】
加算部２２６で得られた各サンプルのスコア加算値（図６参照）は、最大値サーチ部２２７に供給される。最大値サーチ部２２７では、各サンプルのスコア加算値から、最大値がサーチされる。そして、最大値サーチ部２２７では、最大のスコア加算値のサンプルに対応した、周波数領域２内の周波数に対応したＢＰＭが、仮ＢＰＭとされる。
【００８３】
［ＢＰＭ算出部の説明］
ＢＰＭ算出部２００の詳細を説明する。このＢＰＭ算出部２００は、基本特徴量抽出部１００で抽出された基本特徴量に基づいてスピード感を計算し、仮ＢＰＭ算出部２００で算出された仮ＢＰＭの修正が必要かどうかの判定を行う。仮ＢＰＭ算出部２００は、ＢＰＭがＢＰＭ０〜ＢＰＭ０＊２に収まるという仮定に基づいて、仮ＢＰＭを算出している。ＢＰＭ算出部３００は、高ＢＰＭ判定（ＢＰＭがＢＰＭ０＊２を超えるか否かの判定）および低ＢＰＭ判定（ＢＰＭがＢＰＭ０未満か否かの判定）を行って、より正確なＢＰＭを取得する。
【００８４】
楽曲テンポ検出装置１０は、上述したように、オーディオ信号の例えば３０秒毎に楽曲のテンポを示すＢＰＭを検出する。ＢＰＭ算出部３００は、３０秒間の信号をさらに数１００ｍｓｅｃ毎のブロックに分割し、ブロック毎に、高ＢＰＭ判定および低ＢＰＭ判定を行う。ＢＰＭ算出部３００は、これらの判定に、基本特徴量抽出部１００で抽出された「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量を使用する。
【００８５】
基本特徴量抽出部１００は、上述したように、入力オーディオ信号（ＰＣＭ信号）から、フレーム毎に、「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量を抽出する。ＢＰＭ算出部３００は、ブロック毎に、各基本特徴量の平均および標準偏差を計算し、ブロックを代表する特徴量とする。結果として、ＢＰＭ算出部３００は、特徴量として、（f0,f1,f2,f3,f4,f5,f6,f7）の８次元の特徴ベクトルを取得する。ＢＰＭ算出部３００は、この特徴ベクトルと、重み係数との内積計算を行うことで、高ＢＰＭ判定および低ＢＰＭ判定の判定を行う。
【００８６】
ＢＰＭ算出部３００は、まず、高ＢＰＭ判定、つまりＢＰＭがＢＰＭ０＊２を超えるか否かの判定を行う。ＢＰＭ算出部３００は、上述した８次元の特徴ベクトルと、高ＢＰＭ判定用の重み係数とを用いて、高ＢＰＭ判定を行うための「スピード感１」を計算する。
【００８７】
この高ＢＰＭ判定用の重み係数は、事前に学習によって算出される。学習は、例えば、以下のように行われる。すなわち、人間が聞いたときに、ＢＰＭがＢＰＭ０＊２を超えると感じるグループの楽曲と、ＢＰＭがＢＰＭ０＊２以下と感じるグループの楽曲が用意され、それぞれのグループ内のすべての楽曲に対して、上述の特徴量（８次元の特徴ベクトル）が算出される。そして、フィッシャー（Ｆｉｓｈｅｒ）の線形判別基準が用いられ、２つのグループを分離するために最適な射影が算出される。この結果得られた係数が、高ＢＰＭ判定用の重み係数として利用される。
【００８８】
「スピード感１」は、人間が聞いてＢＰＭがＢＰＭ０＊２を超えると感じる度合いに対応するものである。ＢＰＭ算出部３００は、ブロックｋにおける「スピード感１」を、以下の（５）式により、上述の特徴量（８次元の特徴ベクトル）と、高ＢＰＭ判定用の重み係数との内積計算を行うことで求める。ここで、“a”は「スピード感１」を算出するめの高ＢＰＭ判定用の重み係数、“f”はブロックｋにおける特徴量である。
【００８９】
【数５】
0005569228.tif 000006
【００９０】
ＢＰＭ算出部３００は、上述したように計算した「スピード感１」を事前に決定した閾値Ａと比較し、「スピード感１」＞閾値Ａであるとき、ＢＰＭを仮ＢＰＭの２倍、すなわち「仮ＢＰＭ＊２」に決定する。ＢＰＭ算出部３００は、「スピード感１」＞閾値Ａでないとき、低ＢＰＭ判定に移る。なお、閾値Ａは、上述した高ＢＰＭ判定用の重み係数の学習時に決定される。
【００９１】
ＢＰＭ算出部３００は、低ＢＰＭ判定、つまりＢＰＭがＢＰＭ０未満か否かの判定を行うために、上述した８次元の特徴ベクトルと、低ＢＰＭ判定用の重み係数とを用いて、「スピード感２」を計算する。
【００９２】
この低ＢＰＭ判定用の重み係数は、事前に学習によって算出される。学習は、例えば、以下のように行われる。すなわち、人間が聞いたときに、ＢＰＭがＢＰＭ０未満と感じるグループの楽曲と、ＢＰＭがＢＰＭ０以上と感じるグループの楽曲が用意され、それぞれのグループ内のすべての楽曲に対して、上述の特徴量（８次元の特徴ベクトル）が算出される。そして、フィッシャー（Fisher）の線形判別基準が用いられ、２つのグループを分離するために最適な射影が算出される。この結果得られた係数が、低ＢＰＭ判定用の重み係数として利用される。
【００９３】
「スピード感２」は、人間が聞いてＢＰＭがＢＰＭ０未満と感じる度合いに対応するものである。ＢＰＭ算出部３００は、ブロックｋにおける「スピード感２」を、以下の（６）式により、上述の８次元の特徴ベクトルと、低ＢＰＭ判定用の重み係数との内積計算を行うことで求める。ここで、“ｂ”は「スピード感２」を算出するめの低ＢＰＭ判定用の重み係数、“f”はブロックｋにおける特徴量である。
【００９４】
【数６】
0005569228.tif 000007
【００９５】
ＢＰＭ算出部３００は、上述したように計算した「スピード感２」を事前に決定した閾値Ｂと比較し、「スピード感２」＞閾値Ｂであるとき、ＢＰＭを仮ＢＰＭの１／２倍、すなわち「仮ＢＰＭ／２」に決定する。ＢＰＭ算出部３００は、「スピード感２」＞閾値Ｂでないとき、ＢＰＭを仮ＢＰＭそのものに決定する。
【００９６】
図７のフローチャートは、ＢＰＭ算出部３００における、上述したブロック毎のＢＰＭ決定処理の手順を示している。ＢＰＭ算出部３００は、ステップＳＴ１において、処理を開始し、その後にステップＳＴ２の処理に移る。このステップＳＴ２において、ＢＰＭ算出部３００は、特徴量（８次元の特徴ベクトル）と、高ＢＰＭ判定用の重み係数との内積計算を行って、高ＢＰＭ判定を行うための「スピード感１」を計算する（（５）式参照）。
【００９７】
次に、ＢＰＭ算出部３００は、ステップＳＴ３において、「スピード感１」が閾値Ａより大きいか否か、つまり「スピード感１」＞閾値Ａであるか否かを判定する。「スピード感１」＞閾値Ａであるとき、ＢＰＭ算出部３００は、ステップＳＴ４において、ＢＰＭを仮ＢＰＭの２倍、すなわち「仮ＢＰＭ＊２」に決定し、その後、ステップＳＴ５において、処理を終了する。
【００９８】
ステップＳＴ３で「スピード感１」＞閾値Ａでないとき、ＢＰＭ算出部３００は、ステップＳＴ６の処理に移る。このステップＳＴ６において、ＢＰＭ算出部３００は、特徴量（８次元の特徴ベクトル）と、低ＢＰＭ判定用の重み係数との内積計算を行って、低ＢＰＭ判定を行うための「スピード感２」を計算する（（６）式参照）。
【００９９】
次に、ＢＰＭ算出部３００は、ステップＳＴ７において、「スピード感２」が閾値Ｂより大きいか否か、つまり「スピード感２」＞閾値Ｂであるか否かを判定する。「スピード感２」＞閾値Ｂであるとき、ＢＰＭ算出部３００は、ステップＳＴ８において、ＢＰＭを仮ＢＰＭの１／２倍、すなわち「仮ＢＰＭ／２」に決定し、その後、ステップＳＴ５において、処理を終了する。
【０１００】
ステップＳＴ７で「スピード感２」＞閾値Ｂでないとき、ＢＰＭ算出部３００は、ステップＳＴ９の処理に移る。このステップＳＴ９において、ＢＰＭ算出部３００は、ＢＰＭを仮ＢＰＭそのものに決定し、その後、ステップＳＴ５において、処理を終了する。
【０１０１】
ＢＰＭ算出部３００は、上述したように、３０秒間の信号を数１００ｍｓｅｃ毎のブロックに分割し、ブロック毎に、高ＢＰＭ判定および低ＢＰＭ判定を行って、ＢＰＭを決定する。ＢＰＭ算出部３００は、さらに、全ブロックのなかで、最も頻度が高いものを現在処理している３０秒間の入力オーディオ信号のＢＰＭとして出力する。
【０１０２】
なお、ＢＰＭ算出部３００の上述の高ＢＰＭ判定および低ＢＰＭ判定において、複数の判定器を組み合わせることも可能である。例えば、いずれかの判定器で閾値以上の値となった場合に、ＢＰＭ０＊２以上とみなしてＢＰＭを２倍に修正するシステム、あるいは、全ての判定器で閾値以上になった場合にＢＰＭ０未満とみなしてＢＰＭを１／２倍に修正するするシステムなどが考えられる。
【０１０３】
また、上述の楽曲テンポ検出装置１０においては、上述したように、オーディオ信号の所定期間毎、例えば３０秒毎に楽曲のテンポを示すＢＰＭを検出する。そのため、曲全体のＢＰＭを決めるためには、３０秒ごとの結果を統合する必要がある。この処理は、例えば、３０秒毎のＢＰＭをみて、最も出現回数が多いＢＰＭを楽曲全体のＢＰＭとみなすことで実現される。
【０１０４】
上述したように、図１の楽曲テンポ検出装置１０において、仮ＢＰＭ算出部２００では、入力オーディオ信号から抽出された「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量が重み付け加算される。そして、この重み付け加算信号に基づいてテンポを示す仮ＢＰＭが算出される。重み付け加算信号においては、全ての基本特徴量で同時に変化している箇所が強調されるため、ノイズを低減でき、周期成分の検出性能を向上できる。したがって、仮ＢＰＭ算出部２００では、仮ＢＰＦの算出を低演算量で高性能に行うことが可能となる
【０１０５】
また、図１の楽曲テンポ検出装置１０において、ＢＰＭ算出部３００では、「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量から「スピード感１」、「スピード感２」が計算される。そして、これら「スピード感１」、「スピード感２」に基づいて、仮ＢＰＭ算出部２００で算出された仮ＢＰＭが、適宜修正される。また、このＢＰＭ算出部３００で使用される「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量は、基本特徴量抽出部１００で抽出されたものである。したがって、ＢＰＭ算出部３００では、低演算量で精度よくＢＰＭを得ることができる。
【０１０６】
また、図１の楽曲テンポ検出装置１０においては、低演算量で精度よくＢＰＭを検出できるため、低リソースのプロセッサしか搭載することができないポータブル機器上でも、高精度に楽曲のテンポ検出を行うことができる。従って、ＰＣアプリケーションが利用できない環境においても、テンポに基づく楽曲検索などの、楽曲テンポを利用した機能を提供することが可能となる。
【０１０７】
＜２．第２の実施の形態＞
［楽曲解析システム］
図８は、第２の実施の形態としての楽曲解析システム５の構成例を示している。この図８において、図１と対応する部分には同一符号を付して示している。
【０１０８】
この楽曲解析システム５は、楽曲の分類と、楽曲のテンポ検出を同時に実行する。楽曲の分類においては、入力オーディオ信号に基づいて、楽曲をクラシック、ロック、ジャズなどのジャンル、および楽しい曲、悲しい曲などのムードから構成されるクラスに分類し、分類クラス「output class」を出力する。楽曲のテンポ検出では、上述の第１の実施の形態と同様に、入力オーディオ信号に基づいて、楽曲のテンポを示すＢＰＭを検出して出力する。
【０１０９】
楽曲解析システム５は、楽曲分類装置４０と、楽曲テンポ検出装置１０Ａとで構成されている。最初に楽曲分類装置４０を説明する。この楽曲分類装置４０は、基本特徴量抽出部５１０と、類似度推定部５２０と、出力クラス決定部５３０とを有している。
【０１１０】
基本特徴量抽出部５１０は、入力オーディオ信号（ＰＣＭ信号）から、フレーム毎に、複数種類の基本特徴量を算出する。この基本特徴量抽出部５１０は、詳細説明は省略するが、図１に示す楽曲テンポ検出装置１０の基本特徴量抽出部１００と同様に構成されている。
【０１１１】
類似度推定部５２０は、基本特徴量抽出部５１０で抽出されたフレーム毎の基本特徴量を使って、分類クラスを表すモデルとの類似度計算を行う。ここでは、類似度計算として、ＧＭＭ(Gaussian Mixture Model)を利用した尤度計算が行われる。尤度計算を行うために、事前に学習データとして各クラスに分類されるべき楽曲からなるデータベースが作成される。
【０１１２】
学習時には、学習データに対して特徴量計算を行った後、各クラスに対してＧＭＭを用いたモデル化が行われる。モデル生成には、ＥＭアルゴリズムが利用可能である。これらのモデル生成はオフラインで行っておけばよく、類似度推定部５２０には、各モデルを表すパラメータが格納されている。
【０１１３】
類似度推定部５２０は、各クラスを表すＧＭＭのパラメータを用いて、フレームごとにモデルに対する対数尤度を計算する。全フレームの処理が終了した後、全フレームの対数尤度の総和を取り、これを各ムード、ジャンルに対するスコアとする。出力クラス決定部５３０は、最もスコアが大きい値をとるクラスを、処理結果、つまり分類クラス「output class」として出力する。
【０１１４】
次に、楽曲テンポ検出装置１０Ａを説明する。この楽曲テンポ検出装置１０Ａは、仮ＢＰＭ算出部２００と、ＢＰＭ算出部３００を有している。詳細説明は省略するが、仮ＢＰＭ算出部２００およびＢＰＭ算出部３００は、図１の楽曲テンポ検出装置１０の仮ＢＰＭ算出部２００およびＢＰＭ算出部３００と同様のものである。
【０１１５】
楽曲テンポ検出装置１０Ａの仮ＢＰＭ算出部２００は、楽曲分類装置４０の基本特徴量抽出部５１０で抽出された「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量を重み付け加算する。そして、仮ＢＰＭ算出部２００は、この重み付け加算信号に基づいてテンポを示す仮ＢＰＭを算出する。
【０１１６】
また、楽曲テンポ検出装置１０ＡのＢＰＭ算出部３００は、楽曲分類装置４０の基本特徴量抽出部５１０で抽出された基本特徴量に基づいて「スピード感１」、「スピード感２」を計算する。この場合、「ＺＣＲ」、「Spectrum Flux」、「Spectrum Centroid」および「Roll-Off」の基本特徴量が使用される。ＢＰＭ算出部３００は、これら「スピード感１」、「スピード感２」に基づいて、仮ＢＰＭ算出部２００で算出された仮ＢＰＭを適宜修正して、ＢＰＭを出力する。
【０１１７】
図８に示す楽曲解析システム５において、楽曲テンポ検出装置１０Ａは、図１に示す楽曲検出装置１０と同様に構成されているので、同様の効果を得ることができる。また、楽曲解析システム５において、楽曲分類装置４０の基本特徴量抽出部５１０で抽出された基本特徴量を、楽曲テンポ検出装置１０Ａでも有効利用する構成となっている。そのため、全体の演算量を少なくできる。
【０１１８】
なお、図８には示していないが、楽曲テンポ検出装置３００の解析結果であるＢＰＭを、楽曲分類装置４０において、特徴量として使用することも可能である。例えば、クラスごとにＢＰＭの下限値、上限値を決めておき、出力クラス決定部５３０において、この範囲内に収まる楽曲のみ、最終的にその分類クラス「output class」を出力することが考えられる。
【０１１９】
＜３．変形例＞
なお、上述した楽曲テンポ検出装置１０および楽曲解析システム５は、ハードウェアで構成できる他、同様の処理をソフトウェアで行うこともできる。図９は、ソフトウェアで処理を行うコンピュータ装置５０の構成例を示している。このコンピュータ装置５０は、ＣＰＵ１８１、ＲＯＭ１８２、ＲＡＭ１８３およびデータ入出力部（データＩ／Ｏ）１８４により構成されている。
【０１２０】
ＲＯＭ１８２には、ＣＰＵ１８１の処理プログラム、重み係数、閾値等の必要なデータが格納されている。ＲＡＭ１８３は、ＣＰＵ１８１のワークエリアとして機能する。ＣＰＵ１８１は、ＲＯＭ１８２に格納されている処理プログラムを必要に応じて読み出し、読み出した処理プログラムをＲＡＭ１８３に転送して展開し、当該展開された処理プログラムを読み出して、楽曲テンポ検出、楽曲分類などの処理を実行する。
【０１２１】
このコンピュータ装置５０においては、楽曲のオーディオ信号（ＰＣＭ信号）は、データＩ／Ｏ１８４を介して入力され、ＲＡＭ１８３に蓄積される。このＲＡＭ１８３に蓄積された入力オーディオ信号に対して、ＣＰＵ１８１により、楽曲テンポ検出、楽曲分類などの処理が行われる。そして、処理結果（ＢＰＭ、output class）は、必要に応じて、データＩ／Ｏ１８４を介して外部に出力される。
【０１２２】
なお、上述実施の形態においては、楽曲テンポ検出装置１０および楽曲解析システム５のみを示している。これら楽曲テンポ検出装置１０および楽曲解析システム５は、例えば、音声記録再生機能を有する携帯通信機器・端末、携帯情報機器・端末等のポータブル機器に組み込んで使用される。
【産業上の利用可能性】
【０１２３】
この発明は、例えば、音声記録再生機能を有する携帯通信機器・端末、携帯情報機器・端末等のポータブル機器などに適用できる。
【符号の説明】
【０１２４】
５・・・楽曲解析装置
１０，１０Ａ・・・楽曲テンポ検出装置
４０・・・楽曲分類装置
５０・・・コンピュータ装置
１００・・・基本特徴量算出部
１０１・・・短時間フーリエ変換部
１０２・・・フラックス（flux）計算部
１０３・・・セントロイド（centroid）計算部
１０４・・・ロールオフ（roll-off）計算部
１０５・・・ＺＣＲ（Zero Crossing Rate）計算部
１０６〜１０９・・・バッファ
２００・・・仮ＢＰＭ算出部
２１０・・・重み付け加算部
２１１〜２１３・・・乗算器
２１４・・・加算器
２２０・・・周期成分解析部
２２１・・・高速フーリエ変換部
２２２〜２２５・・・スコア算出部
２２６・・・加算部
２２７・・・最大値サーチ部
５１０・・・基本特徴量抽出部
５２０・・・類似度推定部
５３０・・・出力クラス決定部
【図１】
0005569228.tif 000008
【図２】
0005569228.tif 000009
【図３】
0005569228.tif 000010
【図４】
0005569228.tif 000011
【図５】
0005569228.tif 000012
【図６】
0005569228.tif 000013
【図７】
0005569228.tif 000014
【図８】
0005569228.tif 000015
【図９】
0005569228.tif 000016