(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
(第1実施形態)
本発明の第1実施形態に係る音響信号分析装置10について説明する。音響信号分析装置10は、以下説明するように、楽曲を表わす音響信号を入力して、その楽曲のテンポを検出するとともに、前記検出したテンポに同期するように所定の制御対象(外部機器EXT、内蔵された演奏装置など)を動作させる。音響信号分析装置10は、
図1に示すように、入力操作子11、コンピュータ部12、表示器13、記憶装置14、外部インターフェース回路15及びサウンドシステム16を備えており、これらがバスBSを介して接続されている。
【0017】
入力操作子11は、オン・オフ操作に対応したスイッチ(例えば数値を入力するためのテンキー)、回転操作に対応したボリューム又はロータリーエンコーダ、スライド操作に対応したボリューム又はリニアエンコーダ、マウス、タッチパネルなどから構成される。これらの操作子は、演奏者の手によって操作されて、分析対象の楽曲の選択、音響信号の分析開始又は停止、楽曲の再生又は停止(後述するサウンドシステム16からの出力又は停止)、音響信号の分析に関する各種パラメータの設定などに用いられる。入力操作子11が操作されると、その操作内容を表す操作情報が、バスBSを介して、後述するコンピュータ部12に供給される。
【0018】
コンピュータ部12は、バスBSにそれぞれ接続されたCPU12a、ROM12b及びRAM12cからなる。CPU12aは、詳しくは後述する音響信号分析プログラム及びそのサブルーチンをROM12bから読み出して実行する。ROM12bには、音響信号分析プログラム及びそのサブルーチンに加えて、初期設定パラメータ、表示器13に表示される画像を表わす表示データを生成するための図形データ及び文字データなどの各種データが記憶されている。RAM12cには、音響信号分析プログラムの実行時に必要なデータが一時的に記憶される。
【0019】
表示器13は、液晶ディスプレイ(LCD)によって構成される。コンピュータ部12は、図形データ、文字データなどを用いて表示すべき内容を表わす表示データを生成して表示器13に供給する。表示器13は、コンピュータ部12から供給された表示データに基づいて画像を表示する。例えば分析対象の楽曲の選択時には、楽曲のタイトルリストが表示される。
【0020】
また、記憶装置14は、HDD、FDD、CD−ROM、MO、DVDなどの大容量の不揮発性記録媒体と、同各記録媒体に対応するドライブユニットから構成されている。記憶装置14には、複数の楽曲をそれぞれ表わす複数の楽曲データが記憶されている。楽曲データは、楽曲を所定のサンプリング周期(例えば44.1kHz)でサンプリングして得られた複数のサンプル値からなり、各サンプル値が記憶装置14における連続するアドレスに順に記録されている。楽曲のタイトルを表わすタイトル情報、楽曲データの容量を表わすデータサイズ情報なども楽曲データに含まれている。楽曲データは予め記憶装置14に記憶されていてもよいし、後述する外部インターフェース回路15を介して外部から取り込んでもよい。記憶装置14に記憶されている楽曲データは、CPU12aによって読み込まれ、楽曲における拍点及びテンポの推移が分析される。
【0021】
外部インターフェース回路15は、音響信号分析装置10を電子音楽装置、パーソナルコンピュータ、照明装置などの外部機器EXTに接続可能とする接続端子を備えている。音響信号分析装置10は、外部インターフェース回路15を介して、LAN(Local Area Network)、インターネットなどの通信ネットワークにも接続可能である。
【0022】
サウンドシステム16は、楽曲データをアナログ音信号に変換するD/A変換器、変換したアナログ音信号を増幅するアンプ、及び増幅されたアナログ音信号を音響信号に変換して出力する左右一対のスピーカを備えている。サウンドシステム16は、楽曲の楽音にエフェクト(音響的効果)を付与するエフェクト装置も備えている。楽音に付与される効果の種類、その効果の強度などは、CPU12aによって制御される。
【0023】
つぎに、上記のように構成した音響信号分析装置10の第1実施形態における動作について説明する。ユーザが音響信号分析装置10の図示しない電源スイッチをオンにすると、CPU12aは、
図2に示す音響信号分析プログラムをROM12bから読み出して実行する。
【0024】
CPU12aは、ステップS10にて音響信号分析処理を開始し、ステップS11にて、記憶装置14に記憶されている複数の楽曲データにそれぞれ含まれるタイトル情報を読み込んで、楽曲のタイトルをリスト形式で表示器13に表示する。ユーザは、入力操作子11を用いて、表示器13に表示された楽曲の中から分析対象の楽曲データを選択する。なお、ステップS11にて分析対象の楽曲データを選択する際、選択しようとする楽曲データが表す楽曲の一部又は全部を再生して楽曲データの内容を確認できるように構成してもよい。
【0025】
つぎに、CPU12aは、ステップS12にて、音響信号分析のための初期設定を実行する。具体的には、分析対象の楽曲データの一部を読み込む記憶領域、前記楽曲データのうちの読み込み開始アドレスを表す読み込み開始ポインタRP、検出したテンポの値を一時的に記憶しておくテンポ値バッファBF1〜BF4、テンポの安定性(テンポが変化しているか否か)を表す安定性フラグSFなどの記憶領域をRAM12c内にそれぞれ確保する。そして、前記確保した記憶領域に所定の値を初期値として書き込む。例えば、読み込み開始ポインタRPの値を楽曲の先頭を表す「0」に設定する。また、安定性フラグSFの値を、テンポが安定していることを表す「1」に設定する。
【0026】
つぎに、CPU12aは、ステップS13にて、読み込み開始ポインタRPで示されるアドレスを先頭として時系列的に連続する所定数(例えば、256個)のサンプル値をRAM12cに読み込み、読み込み開始ポインタRPを前記所定数に相当するアドレス分だけ進める。つぎに、CPU12aは、ステップS14にて、前記読み込んだサンプル値をサウンドシステム16に送信する。サウンドシステム16は、CPU12aから受信したサンプル値をサンプリング周期の逆数で表される時間間隔で、それらの時系列順にアナログ信号に変換するとともに増幅し、スピーカから放音する。後述するように、ステップS13乃至ステップS20からなる一連の処理が繰り返し実行される。したがって、ステップS13が実行されるごとに前記所定数分のサンプル値が楽曲の先頭側から末尾側へ向かって順に読み込まれる。そして、前記読み込まれた前記所定数分のサンプル値に相当する楽曲の区間(以下、単位区間と言う)がステップS14にて再生される。これにより、楽曲がその先頭から末尾まで滞りなく再生される。
【0027】
つぎに、CPU12aは、ステップS15にて、上記非特許文献1に記載と同様の計算手順で、前記読み込んだ所定数のサンプル値から構成される単位区間又は前記単位区間を含む区間における拍点及びテンポ(1分間あたりの拍の数(BPM))を計算する。つぎに、CPU12aは、ステップS16にて、
図3に示すテンポ安定性判定プログラムをROM12bから読み出して実行する。テンポ安定性判定プログラムは、音響信号分析プログラムのサブルーチンである。
【0028】
CPU12aは、ステップS16aにてテンポ安定性判定処理を開始する。CPU12aは、ステップS16bにて、テンポ値バッファBF2〜BF4にそれぞれ記憶されている値をテンポ値バッファBF1〜BF3にそれぞれ書き込み、前記ステップS15にて計算したテンポの値をテンポ値バッファBF4に書き込む。後述するように、ステップS13乃至ステップS20は繰り返し実行されるので、テンポ値バッファBF1〜BF4には、連続する4つの単位区間のテンポ値がそれぞれ記憶されている。したがって、テンポ値バッファBF1〜BF4に記憶されているテンポ値を用いれば、前記連続する4つの単位区間のテンポの安定性を判定できる。以下の説明では、前記連続する4つの単位区間を判定対象区間と呼ぶ。
【0029】
つぎに、CPU12aは、ステップS16cにて、判定対象区間におけるテンポの安定性を判定する。具体的には、テンポ値バッファBF1とテンポ値バッファBF2の値の差df
12(=|BF1−BF2|)を計算する。また、テンポ値バッファBF2とテンポ値バッファBF3の値の差df
23(=|BF2−BF3|)、及びテンポ値バッファBF3とテンポ値バッファBF4の値の差df
34(=|BF3−BF4|)を計算する。そして、CPU12aは、差df
12、差df
23及び差df
34が所定の基準値df
s(例えば、df
s=4)以下であるか否かを判定する。差df
12、差df
23及び差df
34の全てが基準値df
s以下である場合には、CPU12aは、「Yes」と判定して、ステップS16dにて、安定性フラグSFの値を、テンポが安定していることを表わす「1」に設定する。一方、差df
12、差df
23、及び差df
34のうちの少なくとも1つが基準値df
sより大きい場合には、CPU12aは、「No」と判定して、ステップS16eにて、安定性フラグSFの値を、テンポが不安定である(つまり、判定対象区間においてテンポが大きく変化している)ことを表わす「0」に設定する。そして、CPU12aは、ステップS16fにて、テンポ安定性判定処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS17に進める。
【0030】
再び音響信号分析処理の説明に戻る。CPU12aは、ステップS17にて、テンポの安定性に応じて、つまり安定性フラグSFの値に応じて次に実行するステップを決定する。安定性フラグSFの値が「1」であるときには、CPU12aは、制御対象を第1の態様で動作させるために、その処理をステップS18に進め、ステップS18にて、テンポが安定しているときの所定の処理を実行する。例えば、外部インターフェース回路15を介して接続された照明装置を、ステップS15にて計算されたテンポ(以下、現在のテンポという)で点滅させたり、色を変化させたりする。この場合、例えば、拍点に合わせて照明の明度を高くする。また、例えば、照明装置を一定の明度及び色で点灯させておいてもよい。また、例えば、サウンドシステム16にて再生中の楽音に、現在のテンポに応じた種類のエフェクトを付与する。この場合、例えば、楽音を遅延させるエフェクトが選択されているときには、その遅延量を現在のテンポに応じた値に設定するとよい。また、例えば、複数の画像を、現在のテンポで切り替えながら表示器13に表示する。また、例えば、外部インターフェース回路15を介して接続された電子音楽装置(電子楽器)を現在のテンポで制御する。この場合、例えば、CPU12aは、判定対象区間のコード(和音)を分析し、そのコードを表わすMIDI信号を電子音楽装置に送信して、電子音楽装置にそのコードに対応する楽音を放音させるとよい。また、この場合、例えば、1つ又は複数の楽器音からなるフレーズを表わす一連のMIDI信号を現在のテンポで電子音楽装置に送信してもよい。さらに、この場合、楽曲の拍点と前記フレーズの拍点を合致させるとよい。これにより、前記フレーズが現在のテンポで演奏される。また、例えば、1つ又は複数の楽器を所定のテンポで演奏したフレーズをサンプリングして、そのサンプル値をROM12b、外部記憶装置15などに記憶しておき、CPU12aは、前記フレーズを表わすサンプル値を、現在のテンポに応じた読み出しレートで順に読み出し、サウンドシステム16に送信する。これにより、前記フレーズが現在のテンポで再生される。
【0031】
一方、安定性フラグSFの値が「0」であるときには、CPU12aは、制御対象を第2の態様で動作させるために、その処理をステップS19に進め,ステップS19にて、テンポが不安定であるときの所定の処理を実行する。例えば、外部インターフェース回路15を介して接続された照明装置の点滅を停止させたり、色の変化を停止させたりする。また、テンポが安定であるときに照明装置を一定の明度及び色で点灯させる場合には、テンポが不安定であるときに照明装置を点滅させたり、色を変化させたりしてもよい。また、例えば、サウンドシステム16にて再生中の楽音に付与するエフェクトを、テンポが不安定になる直前に付与していたエフェクトに設定する。また、例えば、複数の画像の切り替えを停止させる。この場合、所定の画像(例えば、テンポが不安定であることを表わすメッセージ)を表示してもよい。また、例えば、CPU12aは、電子音楽装置へのMIDI信号の送信を停止して、電子音楽装置の伴奏を停止させる。また、例えば、CPU12aは、サウンドシステム16による前記フレーズの再生を停止させる。
【0032】
つぎにCPU12aは、ステップS20にて、読み込みポインタRPが楽曲の末尾に達したか否かを判定する。読み込みポインタRPが楽曲の末尾に達していない場合には、CPU12aは、「No」と判定して、その処理をステップS13に進め、ステップS13〜S20からなる一連の処理を再び実行する。一方、読み込みポインタRPが楽曲の末尾に達した場合には、CPU12aは、「Yes」と判定して、ステップS21にて音響信号分析処理を終了する。
【0033】
上記の第1実施形態によれば、判定対象区間におけるテンポの安定性が判定され、その結果に応じて外部機器EXT、サウンドシステム16などの制御対象が制御される。したがって、判定対象区間においてテンポが不安定であるとき、楽曲のリズムと制御対象の動作が合致しないという事態を回避できる。これにより、制御対象の動作が不自然に感じられることを防止できる。また、楽曲の所定の区間を再生しつつ、その区間における拍点及びテンポを検出するので、楽曲を選択した後すぐに再生を開始できる。
【0034】
(第2実施形態)
つぎに、本発明の第2実施形態について説明する。第2実施形態に係る音響信号分析装置の構成は、音響信号分析装置10の構成と同様であるので、その説明を省略する。第2実施形態の動作は、第1実施形態とは異なる。すなわち、第2実施形態では、実行されるプログラムが第1実施形態とは異なる。第1実施形態では、楽曲の一部の区間のサンプル値を読み込んで再生しつつ、判定対象区間のテンポの安定性を分析し、その分析結果を用いて外部機器EXT、サウンドシステム16などを制御するという一連の処理(ステップS13〜ステップS20)を繰り返している。しかし、第2実施形態では、まず、楽曲を構成する全てのサンプル値を読み込んで、楽曲における拍点及びテンポの推移を分析する。そして、その分析の終了後、その楽曲を再生開始するとともに、前記分析結果を用いて外部機器EXT、サウンドシステム16などを制御する。
【0035】
つぎに、音響信号分析装置10の第2実施形態における動作について説明する。まず、その概略について説明する。分析対象の楽曲は複数のフレームt
i{i=0,1,・・・,last}に分割される。そして、拍の存在に関する特徴を表すオンセット特徴量XO及びテンポに関する特徴を表すBPM特徴量XBがフレームt
iごとに計算される。各フレームt
iにおける拍周期bの値(テンポの逆数に比例する値)及び次の拍までのフレーム数nの値の組み合わせに応じて分類された状態q
b,nの系列Qとして記述された確率モデル(隠れマルコフモデル)のうち、観測値としてのオンセット特徴量XO及びBPM特徴量XBが同時に観測される確率を表わす観測尤度の系列が最も尤もらしい確率モデルが選択される(
図4参照)。これにより、分析対象の楽曲における拍点及びテンポの推移が検出される。なお、拍周期bは、フレームの数によって表わされる。したがって、拍周期bの値は「1≦b≦b
max」を満たす整数であり、拍周期bの値が「β」である状態では、フレーム数nの値は「0≦n<β」を満たす整数である。また、フレームt
iにおいて拍周期bの値が「β」(1≦n<b
max)である確率を表わす「BPMらしさ」が計算され、この「BPMらしさ」を用いて「BPMらしさの分散」が計算される。そして、この「BPMらしさの分散」に基づいて、外部機器EXT、サウンドシステム16などが制御される。
【0036】
つぎに、音響信号分析装置10の第2実施形態における動作について具体的に説明する。ユーザが音響信号分析装置10の図示しない電源スイッチをオンにすると、CPU12aは、
図5に示す音響信号分析プログラムをROM12bから読み出して実行する。
【0037】
CPU12aは、ステップS100にて音響信号分析処理を開始し、ステップS110にて、記憶装置14に記憶されている複数の楽曲データにそれぞれ含まれるタイトル情報を読み込んで、楽曲のタイトルをリスト形式で表示器13に表示する。ユーザは、入力操作子11を用いて、表示器13に表示された楽曲の中から分析対象の楽曲データを選択する。なお、ステップS110にて分析対象の楽曲データを選択する際、選択しようとする楽曲データが表す楽曲の一部又は全部を再生して楽曲データの内容を確認できるように構成してもよい。
【0038】
つぎに、CPU12aは、ステップS120にて、音響信号分析のための初期設定を実行する。具体的には、前記選択された楽曲データのデータサイズ情報に応じた記憶領域をRAM12c内に確保し、前記確保した記憶領域に前記選択された楽曲データを読み込む。また、分析結果を表す拍・テンポ情報リスト、オンセット特徴量XO、BPM特徴量XBなどを一時的に記憶する領域をRAM12c内に確保する。
【0039】
詳しくは後述するが、本プログラムによる分析結果は、記憶装置14に保存される(ステップS220)。前記選択された楽曲が本プログラムによって過去に分析されたことがあれば、記憶装置14にその分析結果が保存されている。そこで、CPU12aは、ステップS130にて、前記選択された楽曲の分析に関する既存のデータ(以下、単に既存データと呼ぶ)を検索する。既存データが有れば、CPU12aは、ステップS140にて「Yes」と判定して、ステップS150にて既存データをRAM12cに読み込み、後述するステップS190に処理を進める。一方、既存データが無ければ、CPU12aは、ステップS140にて「No」と判定して、その処理をステップS160に進める。
【0040】
CPU12aは、ステップS160にて、
図6に示す特徴量計算プログラムをROM12bから読み出して実行する。特徴量計算プログラムは、音響信号分析プログラムのサブルーチンである。
【0041】
CPU12aは、ステップS161にて特徴量計算処理を開始する。つぎに、CPU12aは、ステップS162にて、
図7に示すように、前記選択された楽曲を所定の時間間隔をおいて区切り、複数のフレームt
i{i=0,1,・・・,last}に分割する。各フレームの長さは共通である。説明を簡単にするために、本実施形態では各フレームの長さを125msとする。上記のように、各楽曲のサンプリング周波数は44.1kHzであるので、各フレームは、約5000個のサンプル値から構成されている。そして、以下説明するように、フレームごとに、オンセット特徴量XO及びBPM(beats per minute(1分間あたりの拍数))特徴量XBを計算する。
【0042】
つぎに、CPU12aは、ステップS163にて、フレームごとに短時間フーリエ変換を実行して、
図6に示すように、各周波数ビンf
j{j=1,2・・・}の振幅A(f
j,t
i)を計算する。そして、CPU12aは、ステップS164にて、振幅A(f
1,t
i),A(f
2,t
i)・・・を周波数ビンf
jごとに設けられたフィルタバンクFBO
jによってフィルタ処理することにより、所定の周波数帯域w
k{k=1,2,・・・}の振幅M(w
k,t
i)を計算する。周波数ビンf
j用のフィルタバンクFBO
jは、
図9に示すように、通過帯域の中心周波数が互いに異なる複数のバンドパスフィルタBPF(w
k,f
j)からなる。フィルタバンクFBO
jを構成する各バンドパスフィルタBPF(w
k,f
j)の中心周波数は、対数周波数軸上で等間隔であり、かつ各バンドパスフィルタBPF(w
k,f
j)の通過帯域幅は、対数周波数軸上で共通である。各バンドパスフィルタBPF(w
k,f
j)は、通過帯域の中心周波数から通過帯域の下限周波数側及び上限周波数側へ向かうに従って徐々にゲインがそれぞれ小さくなるように構成されている。CPU12aは、
図6のステップS164に示すように、周波数ビンf
jごとに振幅A(f
j,t
i)とバンドパスフィルタBPF(w
k,f
j)のゲインとを積算する。そして、前記周波数ビンf
jごとに計算した積算結果を全ての周波数ビンf
jについて合算して振幅M(w
k,t
i)とする。上記のようにして計算された振幅Mの系列を
図10に例示する。
【0043】
つぎに、CPU12aは、ステップS165にて、振幅Mの時間変化に基づいてフレームt
iのオンセット特徴量XO(t
i)を計算する。具体的には、
図6のステップS165に示すように、周波数帯域w
kごとに、フレームt
i−1からフレームt
iへの振幅Mの増加量R(w
k,t
i)を計算する。ただし、フレームt
i―1の振幅M(w
k,t
i−1)とフレームt
iの振幅M(w
k,t
i)とが同じである場合、又はフレームt
iの振幅M(w
k,t
i)がフレームt
i―1の振幅M(w
k,t
i−1)よりも小さい場合は、増加量R(w
k,t
i)は「0」とする。そして、周波数帯域w
kごとに計算した増加量R(w
k,t
i)を全ての周波数帯域w
1,w
2,・・・について合算してオンセット特徴量XO(t
i)とする。上記のようにして計算されたオンセット特徴量XOの系列を
図11に例示する。一般に、楽曲においては、拍が存在する部分の音量が大きい。したがって、オンセット特徴量XO(t
i)が大きいほど、フレームt
iに拍が存在する可能性が高い。
【0044】
つぎに、CPU12aは、オンセット特徴量XO(t
0),XO(t
1)・・・を用いて、BPM特徴量XBをフレームt
iごとに計算する。なお、フレームt
iのBPM特徴量XB(t
i)は、拍周期bごとに計算されたBPM特徴量XB
b=1,2・・・(t
i)の集合として表わされる(
図13参照)。まず、CPU12aは、ステップS166にて、オンセット特徴量XO(t
0),XO(t
1)・・・をこの順にフィルタバンクFBBに入力してフィルタ処理する。フィルタバンクFBBは、拍周期bの値に応じてそれぞれ設けられた複数のコムフィルタD
bからなる。コムフィルタD
b=βは、フレームt
iのオンセット特徴量XO(t
i)を入力すると、前記入力したオンセット特徴量XO(t
i)と「β」だけ先行するフレームt
i−βのオンセット特徴量XO(t
i−β)に対する出力としてのデータXD
b=β(t
i−β)とを所定の比率で加算してフレームt
iのデータXD
b=β(t
i)として出力する(
図12参照)。すなわち、コムフィルタD
b=βは、データXD
b=βをフレーム数βに相当する時間だけ保持する保持手段としての遅延回路d
b=βを有する。上記のようにして、オンセット特徴量XOの系列XO(t){=XO(t
0),XO(t
1),・・・}をフィルタバンクFBBに入力することにより、データXD
bの系列XD
b(t){=XD
b(t
0),XD
b(t
1)・・・}が計算される。
【0045】
つぎに、CPU12aは、ステップS167にて、データXD
bの系列XD
b(t)を時系列的に逆にしたデータ列をフィルタバンクFBBに入力することにより、BPM特徴量の系列XB
b(t){=XB
b(t
0),XB
b(t
1)・・・}が得られる。これにより、オンセット特徴量XO(t
0),XO(t
1)・・・の位相とBPM特徴量XB
b(t
0),XB
b(t
1)・・・の位相のずれを「0」にすることができる。上記のようにして計算されたBPM特徴量XB(t
i)を
図13に例示する。上記のように、BPM特徴量XB
b(t
i)は、オンセット特徴量XO(t
i)と拍周期bの値に相当する時間(すなわち、フレーム数b)だけ遅延させたBPM特徴量XB
b(t
i―b)とを所定の比率で加算して計算されるので、オンセット特徴量XO(t
0),XO(t
1)・・・が拍周期bの値に相当する時間間隔をおいてピークを有する場合、BPM特徴量XB
b(t
i)の値が大きくなる。楽曲のテンポは、1分間あたりの拍数で表されるから、拍周期bは1分間あたりの拍数の逆数に比例する。例えば、
図13に示す例では、拍周期bの値が「4」であるときのBPM特徴量XB
bの値(BPM特徴量XB
b=4)が最も大きい。したがって、この例では拍が4フレームおきに存在する可能性が高い。本実施形態では、1フレームの時間の長さを125msとしたので、この場合の拍の間隔は0.5sである。すなわち、テンポは120BPM(=60s/0.5s)である。
【0046】
つぎに、CPU12aは、ステップS168にて、特徴量計算処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS170に進める。
【0047】
CPU12aは、ステップS170にて、
図14に示す対数観測尤度計算プログラムをROM12bから読み出して実行する。対数観測尤度計算プログラムは、音響信号分析プログラムのサブルーチンである。
【0048】
CPU12aは、ステップS171にて対数観測尤度計算処理を開始する。そして、以下説明するように、オンセット特徴量XO(t
i)の尤度P(XO(t
i)|Z
b,n(t
i))、及びBPM特徴量XB(t
i)の尤度P(XB(t
i)|Z
b,n(t
i))を計算する。なお、上記の「Z
b=β,n=η(t
i)」は、フレームt
iにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」である状態q
b=β,n=ηのみが生起していることを表わす。フレームt
iにおいて状態q
b=β,n=ηと状態q
b≠β,n≠ηとが同時に生起することはない。したがって、尤度P(XO(t
i)|Z
b=β,n=η(t
i))は、フレームt
iにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」であるという条件のもとでオンセット特徴量XO(t
i)が観測される確率を表わす。また、尤度P(XB(t
i)|Z
b=β,n=η(t
i))は、フレームt
iにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」であるという条件のもとでBPM特徴量XB(t
i)が観測される確率を表わす。
【0049】
まず、CPU12aは、ステップS172にて、尤度P(XO(t
i)|Z
b,n(t
i))を計算する。次の拍までのフレーム数nの値が「0」であるとき、オンセット特徴量XOは、平均値が「3」であって、且つ分散が「1」である第1の正規分布に従って分布するものとする。すなわち、第1の正規分布の確率変数としてオンセット特徴量XO(t
i)を代入した値を尤度P(XO(t
i)|Z
b,n=0(t
i))として計算する。また、拍周期bの値が「β」であり、次の拍までのフレーム数nの値が「β/2」であるとき、オンセット特徴量XOは、平均値が「1」であって、且つ分散が「1」である第2の正規分布に従って分布するものとする。すなわち、第2の正規分布の確率変数としてオンセット特徴量XO(t
i)を代入した値を尤度P(XO(t
i)|Z
b=β,n=β/2(t
i))として計算する。また、次の拍までのフレーム数nの値が「0」及び「β/2」のうちのいずれの値とも異なるとき、オンセット特徴量XOは、平均値が「0」であって、且つ分散が「1」である第3の正規分布に従って分布するものとする。すなわち、第3の正規分布の確率変数としてオンセット特徴量XO(t
i)を代入した値を尤度P(XO(t
i)|Z
b,n≠0,β/2(t
i))として計算する。
【0050】
オンセット特徴量XOの系列が{10,2,0.5,5,1,0,3,4,2}であるときの尤度P(XO(t
i)|Z
b=6,n(t
i))の対数を計算した結果を、
図15に例示する。同図に示すように、オンセット特徴量XOの値が大きいフレームt
iほど、尤度P(XO(t
i)|Z
b,n=0(t
i))が尤度P(XO(t
i)|Z
b,n≠0(t
i))に比べて大きい。このように、オンセット特徴量XOの値が大きいフレームt
iほど、フレーム数nの値が「0」であるときに拍が存在する可能性が高くなるように、確率モデル(第1乃至第3の正規分布、及びそれらのパラメータ(平均値及び分散))が設定されている。なお、第1乃至第3の正規分布のパラメータの値は、上記実施形態に限られない。これらのパラメータの値は、実験を繰り返して決定してもよいし、機械学習を用いて決定してもよい。なお、この例では、オンセット特徴量XOの尤度Pを計算するための確率分布関数として正規分布を用いているが、確率分布関数として他の関数(例えば、ガンマ分布、ポアソン分布など)を用いても良い。
【0051】
つぎに、CPU12aは、ステップS173にて、尤度P(XB(t
i)|Z
b,n(t
i))を計算する。尤度P(XB(t
i)|Z
b=γ,n(t
i))は、
図16に示すテンプレートTP
γ{γ=1,2・・・}に対するBPM特徴量XB(t
i)の適合度に相当する。具体的には、尤度P(XB(t
i)|Z
b=γ,n(t
i))は、BPM特徴量XB(t
i)とテンプレートTP
γ{γ=1,2・・・}との内積に相当する(
図14のステップS173の演算式を参照)。なお、この演算式におけるκ
bは、オンセット特徴量XOに対するBPM特徴量XBの重みを決定する係数である。つまり、κ
bを大きく設定するほど、結果的に、後述する拍・テンポ同時推定処理においてBPM特徴量XBが重視される。また、この演算式におけるZ(κ
b)は、κ
bに依存する正規化係数である。テンプレートTP
γは、
図16に示すように、BPM特徴量XB(t
i)を構成するBPM特徴量XB
b(t
i)にそれぞれ乗算される係数δ
γ,bからなる。テンプレートTP
γは、その係数δ
γ,γが最大であり、係数δ
γ,2γ,係数δ
γ,3γ・・・,係数δ
γ,(「γ」の整数倍),・・・がそれぞれ極大となるように設定されている。すなわち、例えば、テンプレートTP
γ=2は、2フレームおきに拍が存在する楽曲に適合するように構成されている。なお、この例では、BPM特徴量XBの尤度Pを計算するためにテンプレートTPを用いているが、これに代えて確率分布関数(例えば、多項分布、ディリクレ分布、多次元正規分布、多次元ポアソン分布など)を用いても良い。
【0052】
BPM特徴量XB(t
i)が
図13に示すような値であった場合に、
図16に示すテンプレートTP
γ{γ=1,2・・・}を用いて尤度P(XB(t
i)|Z
b,n(t
i))を計算し、その対数を計算した結果を
図17に例示する。この例では、尤度P(XB(t
i)|Z
b=4,n(t
i))が最も大きいので、BPM特徴量XB(t
i)は、テンプレートTP
4に最も適合している。
【0053】
つぎに、CPU12aは、ステップS174にて、尤度P(XO(t
i)|Z
b,n(t
i))の対数と尤度P(XB(t
i)|Z
b,n(t
i))の対数をそれぞれ加算し、その結果を対数観測尤度L
b,n(t
i)とする。なお、尤度P(XO(t
i)|Z
b,n(t
i))と尤度P(XB(t
i)|Z
b,n(t
i))とを積算した結果の対数を対数観測尤度L
b,n(t
i)としても同じ結果が得られる。つぎに、CPU12aは、ステップS175にて、対数観測尤度計算処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS180に進める。
【0054】
つぎに、CPU12aは、ステップS180にて、
図18に示す拍・テンポ同時推定プログラムをROM12bから読み出して実行する。拍・テンポ同時推定プログラムは、音響信号分析プログラムのサブルーチンである。この拍・テンポ同時推定プログラムは、ビタビアルゴリズムを用いて最尤の状態の系列Qを計算するプログラムである。ここで、その概略について説明する。CPU12aは、まず、フレームt
0からフレームt
iまでオンセット特徴量XO及びBPM特徴量XBを観測したときにフレームt
iの状態q
b,nの尤度が最大となるような状態の系列を選択した場合の状態q
b,nの尤度を尤度C
b,n(t
i)とするとともに、各状態q
b,nに遷移する1つ前のフレームの状態(遷移元の状態)を状態I
b,n(t
i)として記憶する。つまり、遷移後の状態が状態q
b=βe,n=ηeであって、遷移元の状態が状態q
b=βs,n=ηsであるとき、状態I
b=βe,n=ηe(t
i)は、状態q
b=βs,n=ηsである。CPU12aは、上記のようにして尤度C及び状態Iをフレームt
lastまで計算し、その結果を用いて最尤の状態の系列Qを選択する。
【0055】
なお、後述する具体例では、その説明を簡単にするために、分析対象の楽曲の拍周期bの値が「3」、「4」及び「5」のうちのいずれかであるものとする。すなわち、対数観測尤度L
b,n(t
i)が
図19に例示するように計算された場合の拍・テンポ同時推定処理の手順を具体例として説明する。この例では、拍周期bの値が「3」、「4」及び「5」以外である状態の観測尤度が十分に小さいものとし、
図19乃至
図21では、拍周期bの値が「3」、「4」及び「5」以外である状態の観測尤度の図示を省略する。また、この例では、拍周期bの値が「βs」であり、且つフレーム数nの値が「ηs」である状態から、拍周期bの値が「βe」であり、且つフレーム数nの値が「ηe」である状態への対数遷移確率Tの値は、次のように設定されている。「ηe=0」、「βe=βs」、かつ「ηe=βe−1」のとき、対数遷移確率Tの値は、「−0.2」である。また、「ηs=0」、「βe=βs+1」、かつ「ηe=βe−1」のとき、対数遷移確率Tの値は、「−0.6」である。また、「ηs=0」、「βe=βs−1」、かつ「ηe=βe−1」のとき、対数遷移確率Tの値は、「−0.6」である。また、「ηs>0」、「βe=βs」、かつ「ηe=ηs−1」のとき、対数遷移確率Tの値は、「0」である。上記以外の対数遷移確率Tの値は、「−∞」である。すなわち、フレーム数nの値が「0」である状態(ηs=0)から次の状態へ遷移するとき、拍周期bの値は「1」だけ増減され得る。このとき、フレーム数nの値は、遷移後の拍周期bの値より「1」だけ小さい値に設定される。また、フレーム数nの値が「0」でない状態(ηs≠0)から次の状態へ遷移するとき、拍周期bの値は変更されず、フレーム数nの値が「1」だけ減少する。
【0056】
以下、拍・テンポ同時推定処理について具体的に説明する。CPU12aは、ステップS181にて拍・テンポ同時推定処理を開始する。つぎに、ユーザは、ステップS182にて、入力操作子11を用いて、
図20に示すような、各状態q
b,nに対応した、尤度Cの初期条件CS
b,nを入力する。なお、初期条件CS
b,nがROM12bに記憶されていて、CPU12aがROM12bから初期条件CS
b,nを読み込むようにしてもよい。
【0057】
つぎに、CPU12aは、ステップS183にて、尤度C
b,n(t
i)及び状態I
b,n(t
i)を計算する。フレームt
0において拍周期bの値が「βe」であって、フレーム数nの値が「ηe」である状態q
b=βe,n=ηeの尤度C
b=βe,n=ηe(t
0)は、初期条件CS
b=βe,n=ηeと対数観測尤度L
b=βe,n=ηe(t
0)とを加算することにより計算される。
【0058】
また、状態q
b=βs,n=ηsから状態q
b=βe,n=ηeに遷移したとき、尤度C
b=βe,n=ηe(t
i){i>0}は次のように計算される。状態q
b=βs,n=ηsのフレーム数nが「0」でないとき(すなわち、ηs≠0)、尤度C
b=βe,n=ηe(t
i)は、尤度C
b=βe,n=ηe+1(t
i−1)と対数観測尤度L
b=βe,n=ηe(t
i)と対数遷移確率Tを加算して計算される。ただし、本実施形態では、遷移元の状態のフレーム数nが「0」でないときの対数遷移確率Tは「0」であるので、尤度C
b=βe,n=ηe(t
i)は、実質的には、尤度C
b=βe,n=ηe+1(t
i−1)と対数観測尤度L
b=βe,n=ηe(t
i)とを加算することにより計算される(C
b=βe,n=ηe(t
i)=C
b=βe,n=ηe+1(t
i−1)+L
b=βe,n=ηe(t
i))。また、この場合、状態I
b=βe,n=ηe(t
i)は、状態q
βe,ηe+1である。例えば、尤度Cが
図20に示すように計算された例では、尤度C
4,1(t
2)の値は「−0.3」であり、対数観測尤度L
4,0(t
3)の値は「1.1」であるので、尤度C
4,0(t
3)の値は「0.8」である。また、
図21に示すように、状態I
4,0(t
3)は、状態q
4,1である。
【0059】
また、状態q
b=βs,n=ηsのフレーム数nが「0」のとき(ηs=0)の尤度C
b=βe,n=ηe(t
i)は次のように計算される。この場合、状態の遷移に伴って拍周期bの値が増減され得る。そこで、まず、尤度C
βe−1,0(t
i−1)、尤度C
βe,0(t
i−1)、及び尤度C
βe+1,0(t
i−1)に対数遷移確率Tをそれぞれ加算し、そのうちの最大値に対数観測尤度L
b=βe,n=ηe(t
i)を加算した結果が尤度C
b=βe,n=ηe(t
i)である。また、状態I
b=βe,n=ηe(t
i)は、状態q
βe−1,0、状態q
βe,0、及び状態q
βe+1,0のうち、それらの尤度C
βe−1,0(t
i−1)、尤度C
βe,0(t
i−1)、及び尤度C
βe+1,0(t
i−1)に対数遷移確率Tをそれぞれ加算した値が最大となる状態qである。なお、厳密には、尤度C
b,n(t
i)は正規化される必要があるが、正規化されていなくても、拍点及びテンポの推移の推定に関しては、数理上同一の結果が得られる。
【0060】
例えば、尤度C
4,3(t
3)は、次のように計算される。遷移元の状態が状態q
3,0である場合、尤度C
3,0(t
2)の値は「0.0」であり、対数遷移確率Tは「−0.6」であるので、尤度C
3,0(t
2)と対数遷移確率Tとを加算した値は、「−0.6」である。また、遷移元の状態が状態q
4,0である場合、遷移元の尤度C
4,0(t
2)の値は「−1.2」であり、対数遷移確率Tは「−0.2」であるので、尤度C
4,0(t
2)と対数遷移確率Tとを加算した値は、「−1.4」である。また、遷移元の状態が状態q
5,0である場合、遷移元の尤度C
5,0(t
2)の値は「−1.2」であり、対数遷移確率Tは「−0.6」であるので、尤度C
5,0(t
2)と対数遷移確率Tとを加算した値は、「−1.8」である。したがって、尤度C
3,0(t
2)に対数遷移確率Tを加算した値が最も大きい。また、対数観測尤度L
4,3(t
3)の値は、「−1.1」である。よって、尤度C
4,3(t
3)の値は「―1.7」(=−0.6+(−1.1))であり、状態I
4,3(t
3)は、状態q
3,0である。
【0061】
上記のようにして、全てのフレームt
iについて、全ての状態q
b,nの尤度C
b,n(t
i)及び状態I
b,n(t
i)を計算し終えると、CPU12aはステップS184にて、最尤の状態の系列Q(={q
max(t
0),q
max(t
1)・・・,q
max(t
last)})を次のようにして決定する。まず、CPU12aは、フレームt
lastにおける尤度C
b,n(t
last)が最大である状態q
b,nを、状態q
max(t
last)とする。ここで、状態q
max(t
last)の拍周期bの値を「βm」と表記し、フレーム数nの値を「ηm」と表記する。このとき、状態I
βm,ηm(t
last)がフレームt
lastの1つ前のフレームt
last−1の状態q
max(t
last−1)である。フレームt
last−2、フレームt
last−3、・・・の状態q
max(t
last−2)、状態q
max(t
last−3)・・・も状態q
max(t
last−1)と同様に決定される。すなわち、フレームt
i+1の状態q
max(t
i+1)の拍周期bの値を「βm」と表記し、フレーム数nの値を「ηm」と表記したときの状態I
βm,ηm(t
i+1)がフレームt
i+1の1つ前のフレームt
iの状態q
max(t
i)である。上記のようにして、CPU12aは、フレームt
last−1からフレームt
0へ向かって順に状態q
maxを決定して、最尤の状態の系列Qを決定する。
【0062】
例えば、
図20及び
図21に示す例では、フレームt
last=77においては、状態q
5,1の尤度C
5,1(t
last=77)が最大である。したがって、状態q
max(t
last=77)は、状態q
5,1である。
図21によれば、状態I
5,1(t
77)は状態q
5,2であるから、状態q
max(t
76)は状態q
5,2である。また、状態I
5,2(t
76)は状態q
5,3であるから、状態q
max(t
75)は状態q
5,3である。状態q
max(t
74)乃至状態q
max(t
0)も状態q
max(t
76)及び状態q
max(t
75)と同様に決定する。このようにして
図20に矢印で示す最尤の状態の系列Qが決定される。この例では、拍の周期bの値は最初「3」であるが、フレームt
40付近で「4」に遷移し、さらにフレームt
44付近で「5」に遷移する。また、系列Qのうち、フレーム数nの値が「0」である状態q
max(t
0),q
max(t
3),・・・に対応するフレームt
0,t
3,・・・に拍が存在すると推定される。
【0063】
つぎに、CPU12aは、ステップS185にて、拍・テンポ同時推定処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS190に進める。
【0064】
CPU12aは、ステップS190にて、フレームt
iごとに「BPMらしさ」、「BPMらしさの平均」、「BPMらしさの分散」、「観測に基づく確率」、「拍らしさ」、「拍が存在する確率」及び「拍が存在しない確率」を計算(
図23に示す演算式を参照)する。「BPMらしさ」は、フレームt
iにおけるテンポの値が拍周期bに対応した値である確率を意味し、尤度C
b,n(t
i)を正規化するとともにフレーム数nについて周辺化することにより計算される。具体的には、拍周期bの値が「β」である場合の「BPMらしさ」は、フレームt
iにおける全ての状態の尤度Cの合計に対する、拍周期bの値が「β」である状態の尤度Cの合計の割合である。また、「BPMらしさの平均」は、フレームt
iにおける拍周期bに対応する「BPMらしさ」と拍周期bの値とをそれぞれ乗算し、それぞれの乗算結果を合算した値をフレームt
iにおける全ての「BPMらしさ」の合計値で除することにより計算される。また、「BPMらしさの分散」は、次のようにして計算される。まず、拍周期bの値からフレームt
iにおける「BPMらしさの平均」をそれぞれ減算し、それぞれの減算結果を二乗するとともに拍周期bの値に対応する「BPMらしさ」の値を乗算する。そして、それぞれの乗算結果を合算した値をフレームt
iにおける全ての「BPMらしさ」の合計値で除することにより「BPMらしさの分散」が計算される。上記のようにして計算された「RPMらしさ」、「BPMらしさの平均」、及び「BPMらしさの分散」の値を
図22に例示する。また、「観測に基づく確率」は、観測値(すなわちオンセット特徴量XO)に基づいて計算された、拍がフレームt
iに存在する確率を意味する。具体的には、所定の基準値XO
baseに対するオンセット特徴量XO(t
i)の割合である。また、「拍らしさ」は、すべてのフレーム数nの値についてのオンセット特徴量XO(t
i)の尤度P(XO(t
i)|Z
b,n(t
i))を合算した値に対する尤度P(XO(t
i)|Z
b,0(t
i))の割合である。また、「拍が存在する確率」及び「拍が存在しない確率」は、いずれも尤度C
b,n(t
i)を拍周期bについて周辺化することにより計算される。具体的には、「拍が存在する確率」は、フレームt
iにおける全ての状態の尤度Cの合計に対する、フレーム数nの値が「0」である状態の尤度Cの合計の割合である。また、「拍が存在しない確率」は、フレームt
iにおける全ての状態の尤度Cの合計に対する、フレーム数nの値が「0」でない状態の尤度Cの合計の割合である。
【0065】
CPU12aは、「BPMらしさ」、「観測に基づく確率」、「拍らしさ」、「拍が存在する確率」及び「拍が存在しない確率」を用いて、
図23に示す拍・テンポ情報リストを表示器13に表示する。同リスト中の「テンポの推定値(BPM)」の欄には、前記計算した「BPMらしさ」のうち最も確率の高い拍周期bに対応するテンポの値(BPM)が表示される。また、前記決定した状態q
max(t
i)のうちフレーム数nの値が「0」であるフレームの「拍の存在」の欄には「○」が表示され、その他のフレームの「拍の存在」の欄には「×」が表示される。また、CPU12aは、テンポの推定値(BPM)を用いて、
図24に示すようなテンポの推移を表わすグラフを表示器13に表示する。
図24の例では、テンポの推移を棒グラフで表わしている。
図20及び
図21を用いて説明した例では、最初、拍周期bの値が「3」であり、フレームt
40にて拍周期bの値が「4」に遷移しさらに、フレームt
44にて拍周期bの値が「5」に遷移する。これにより、ユーザは、テンポの推移を視覚的に認識することができる。また、CPU12aは、前記計算した「拍が存在する確率」を用いて、
図25に示すような拍点を表わすグラフを表示器13に表示する。さらに、CPU12aは、前記計算した「オンセット特徴量XO」、「BPMらしさの分散」及び「拍の存在」を用いて、
図26に示すようなテンポの安定性を表わすグラフを表示器13に表示する。
【0066】
また、音響信号分析処理のステップS130にて既存データを検索した結果、既存データが存在する場合には、CPU12aは、ステップS150にてRAM12cに読み込んだ前回の分析結果に関する各種データを用いて、拍・テンポ情報リスト、テンポの推移を表わすグラフ、拍点、及びテンポの安定性を表わすグラフを表示器13に表示する。
【0067】
次に、CPU12aは、ステップS200にて、楽曲の再生を開始するか否かを表すメッセージを表示器13に表示して、ユーザからの指示を待つ。ユーザは入力操作子11を用いて楽曲の再生を開始するか、後述の拍・テンポ情報修正処理を実行するかのいずれかを指示する。例えば、マウスを用いて図示しないアイコンをクリックする。
【0068】
ステップS200にて、拍・テンポ情報修正処理を実行するように指示された場合には、CPU12aは「No」と判定して、ステップS210にて、拍・テンポ情報修正処理を実行する。まず、CPU12aは、ユーザが修正情報の入力を終了するまで待機する。ユーザは、入力操作子11を用いて「BPMらしさ」、「拍が存在する確率」などの修正値を入力する。例えば、マウスを用いて修正するフレームを選択し、テンキーを用いて修正値を入力する。修正された項目の右側に配置された「F」の表示形態(例えば色)が変更され、その値が修正されたことが明示される。ユーザは、複数の項目について修正値を入力可能である。ユーザは修正値の入力を完了すると、入力操作子11を用いて修正情報の入力を完了したことを指示する。例えば、マウスを用いて図示しない修正完了を表わすアイコンをクリックする。CPU12aは、前記入力された修正値に応じて尤度P(XO(t
i)|Z
b,n(t
i))及び尤度P(XB(t
i)|Z
b,n(t
i))のうちのいずれか一方又は両方を更新する。例えば、フレームt
iにおける「拍が存在する確率」が高くなるように修正された場合であって、修正された値に関するフレーム数nの値が「ηe」であるときには、尤度P(XB(t
i)|Z
b,n≠ηe(t
i))を十分に小さい値に設定する。これにより、フレームt
iでは、フレーム数nの値が「ηe」である確率が相対的に最も高くなる。また、例えば、フレームt
iにおける「BPMらしさ」のうち、拍周期bの値が「βe」である確率が高くなるように修正された場合には、拍周期bの値が「βe」でない状態の尤度P(XB(t
i)|Z
b≠βe,n(t
i))を十分に小さい値に設定する。これにより、フレームt
iでは、拍周期bの値が「βe」である確率が相対的に最も高くなる。そして、CPU12aは、拍・テンポ情報修正処理を終了して、その処理をステップS180に進め、修正された対数観測尤度Lを用いて、拍・テンポ同時推定処理を再度実行する。
【0069】
一方、ユーザから楽曲の再生を開始するよう指示された場合には、CPU12aは「Yes」と判定してステップS220にて尤度C、状態I、拍・テンポ情報リストなどの分析結果に関する各種データを楽曲のタイトルと関連付けて記憶装置14に記憶する。
【0070】
つぎに、CPU12aは、ステップS230にて、
図27に示す再生・制御プログラムをROM12bから読み出して実行する。再生・制御プログラムは、音響信号分析プログラムのサブルーチンである。
【0071】
CPU12aは、ステップS231にて再生・制御処理を開始する。CPU12aは、ステップS232にて、再生するフレームを表わすフレーム番号iを「0」に設定する。つぎに、CPU12aは、ステップS233にて、フレームt
iのサンプル値をサウンドシステム16に送信する。サウンドシステム16は、第1実施形態と同様に、CPU12aから受信したサンプル値を用いて楽曲のフレームt
iに相当する区間を再生する。CPU12aは、ステップS234にて、フレームt
iにおける「BPMらしさの分散」が所定の基準値σ
s2(例えば0.5)より小さいか否か判定する。「BPMらしさの分散」が基準値σ
s2より小さい場合には、CPU12aは「Yes」と判定して、ステップS235にて、BPMが安定しているときの所定の処理を実行する。一方、「BPMらしさの分散」が基準値σ
s2以上である場合には、CPU12aは「No」と判定して、ステップS236にて、BPMが不安定であるときの所定の処理を実行する。ステップS235及びステップS236の処理は、第1実施形態のステップS18及びS19とそれぞれ同様であるので、それらの説明を省略する。
図26の例では、フレームt
39〜フレームt
53に亘って、「BPMらしさの分散」が基準値σ
2s以上である。したがって、
図26の例では、フレームt
40〜フレームt
53においては、CPU12aは、ステップS236にて、BPMが不安定であるときの所定の処理を実行する。なお、先頭の数フレームにおいては、拍周期bの値が一定であっても「BPMらしさの分散」が基準値σ
s2より大きくなる傾向にある。そこで、先頭の数フレームにおいては、ステップS235にて、BPMが安定であるときの所定の処理を実行するように構成してもよい。
【0072】
つぎに、CPU12aは、ステップS237にて、現在の処理対象のフレームが最終フレームであるか否かを判定する。すなわち、フレーム番号iの値が「last」であるか否かを判定する。現在の処理対象のフレームが最終フレームでなければ、CPU12aは「No」と判定して、ステップS238にてフレーム番号iをインクリメントした後、その処理をステップS233に進め、以下、ステップS233〜S238からなる一連の処理を再び実行する。一方、現在の処理対象のフレームが最終フレームであれば、CPU12aは、「Yes」と判定して、ステップS239にて再生・制御処理を終了し、音響信号分析処理(メインルーチン)に戻り、ステップS240にて、音響信号分析処理を終了する。これにより、楽曲が先頭から末尾まで滞りなく再生されるとともに、外部機器EXT、サウンドシステム16などが制御される。
【0073】
上記の第2実施形態によれば、拍点に関するオンセット特徴量XO及びテンポに関するBPM特徴量XBを用いて計算された対数観測尤度Lの系列が最も尤もらしい確率モデルが選択され、楽曲における拍点及びテンポの推移が同時に推定される。したがって、楽曲における拍点を計算し、その計算結果を用いてテンポを計算する場合に比べて、テンポの推定精度を向上させることができる。
【0074】
また、「BPMらしさの分散」の値に応じて制御対象が制御される。すなわち、「BPMらしさの分散」の値が基準値σ
s2以上であるときには、そのテンポ値の信頼性が低いと判定し、テンポが不安定であるときの所定の処理を実行する。したがって、テンポが不安定であるときに、楽曲のリズムと制御対象の動作が合致しないという事態を回避できる。これにより、制御対象の動作が不自然に感じられることを防止できる。
【0075】
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【0076】
例えば、第1及び第2実施形態では、音響信号分析装置10が楽曲を再生しているが、外部機器が楽曲を再生するように構成しても良い。
【0077】
また、第1及び第2実施形態では、テンポの安定性を、安定であるか不安定であるかという2段階で評価しているが、テンポの安定性をより多段階で評価してもよい。この場合、テンポの安定性の各段階(安定度)に応じて制御対象を制御すればよい。
【0078】
また、第1実施形態では、4つの単位区間を判定対象区間としているが、判定対象区間は、より多くの単位区間から構成されてもよいし、より少ない単位区間から構成されてもよい。また、判定対象区間として選択される単位区間は時系列的に連続していなくてもよい。例えば、単位区間を時系列的に1つおきに選択してもよい。
【0079】
また、第1実施形態では、隣り合う単位区間同士のテンポの差に基づいてテンポの安定性を判定しているが、判定対象区間におけるテンポの最大値と最小値の差に基づいてテンポの安定性を判定してもよい。
【0080】
また、第2実施形態では、観測値としてのオンセット特徴量XO及びBPM特徴量XBが同時に観測される確率を表わす観測尤度の系列が最も尤もらしい確率モデルが選択される。しかし、確率モデルの選択基準は、上記実施形態に限られない。例えば、事後分布が最大となるような確率モデルを選択してもよい。
【0081】
また、第2実施形態では、各フレームの「BPMらしさの分散」に基づいて各フレームのテンポの安定性を判定しているが。推定した各フレームのテンポの値を用いて、第1実施形態と同様に、複数のフレームにおけるテンポの変化量を計算し、その計算結果に基づいて制御対象を制御してもよい。
【0082】
また、第2実施形態では、最尤の状態の系列Qを計算して、各フレームにおける拍の存在及びテンポの値を決定している。しかし、フレームt
iにおける尤度Cのうち、その値が最大である尤度Cに対応する状態q
b,nの拍周期b及びフレーム数nの値に基づいて、各フレームにおける拍の存在及びテンポの値を決定してもよい。これによれば、最尤の状態の系列Qを計算しないので、分析時間を短縮できる。
【0083】
また、第2実施形態では、説明を簡単にするために、各フレームの長さを125msとしたが、より短く(例えば、5ms)してもよい。これによれば、拍点及びテンポの推定に関する分解能を向上させることができる。例えば、テンポを1BPM刻みで推定できる。