特許第6179140号(P6179140)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤマハ株式会社の特許一覧

特許6179140音響信号分析装置及び音響信号分析プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6179140
(24)【登録日】2017年7月28日
(45)【発行日】2017年8月16日
(54)【発明の名称】音響信号分析装置及び音響信号分析プログラム
(51)【国際特許分類】
   G10G 3/04 20060101AFI20170807BHJP
   G10L 25/51 20130101ALI20170807BHJP
【FI】
   G10G3/04
   G10L25/51 300
【請求項の数】5
【全頁数】24
(21)【出願番号】特願2013-51159(P2013-51159)
(22)【出願日】2013年3月14日
(65)【公開番号】特開2014-178395(P2014-178395A)
(43)【公開日】2014年9月25日
【審査請求日】2016年1月20日
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】110000213
【氏名又は名称】特許業務法人プロスペック特許事務所
(74)【代理人】
【識別番号】100168756
【弁理士】
【氏名又は名称】日比野 元彦
(72)【発明者】
【氏名】前澤 陽
【審査官】 大野 弘
(56)【参考文献】
【文献】 特開2010−026512(JP,A)
【文献】 特開2010−122629(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10G 3/04
G10L 25/51
(57)【特許請求の範囲】
【請求項1】
楽曲を表わす音響信号を入力する音響信号入力手段と、
前記入力した音響信号を用いて、前記楽曲における各区間のテンポをそれぞれ検出するテンポ検出手段と、
前記テンポの安定性を判定する判定手段と、
所定の制御対象を、前記判定手段による判定結果に応じて制御する制御手段と、
を備え
前記テンポ検出手段は、
拍の存在に関する特徴を表わす第1特徴量及びテンポに関する特徴を表わす第2特徴量を前記楽曲における区間ごとに計算する特徴量計算手段と、
前記各区間における拍の存在に関する物理量及びテンポに関する物理量の組み合わせにより分類された状態の系列として記述された複数の確率モデルのうち、前記第1特徴量及び前記第2特徴量が前記各区間において同時に観測される確率を表わす観測尤度の系列が所定の基準を満たす確率モデルを選択することにより、前記楽曲における拍点及びテンポの推移を同時に推定する推定手段と、
を備えたことを特徴とする音響信号分析装置。
【請求項2】
請求項1に記載の音響信号分析装置において、
前記判定手段は、複数の区間におけるテンポの変化量が所定の範囲内にあるとき、テンポが安定していると判定し、前記複数の区間におけるテンポの変化量が前記所定の範囲外にあるとき、テンポが不安定であると判定することを特徴とする音響信号分析装置。
【請求項3】
請求項1に記載の音響信号分析装置において、
前記判定手段は、前記楽曲の先頭から前記各区間までの前記第1特徴量及び前記第2特徴量をそれぞれ観測したときに前記各区間における各状態の尤度が前記所定の基準を満たす前記状態の系列を選択した場合の前記各区間の各状態の尤度をそれぞれ計算し、前記計算した各区間における各状態の尤度の分布に基づいて、前記各区間におけるテンポの安定性を判定することを特徴とする音響信号分析装置。
【請求項4】
請求項1乃至3のうちのいずれか1つに記載の音響信号分析装置において、
前記制御手段は、テンポが安定している区間において前記制御対象を所定の第1の態様で動作させ、テンポが不安定である区間において前記制御対象を所定の第2の態様で動作させることを特徴とする音響信号分析装置。
【請求項5】
コンピュータに、
楽曲を表わす音響信号を入力する音響信号入力ステップと、
前記入力した音響信号を用いて、前記楽曲における各区間のテンポをそれぞれ検出するテンポ検出ステップと、
前記テンポの安定性を判定する判定ステップと、
所定の制御対象を、前記判定手段による判定結果に応じて制御する制御ステップと、
を実行させることを特徴とする音響信号分析プログラムであって、
前記テンポ検出ステップは、
拍の存在に関する特徴を表わす第1特徴量及びテンポに関する特徴を表わす第2特徴量を前記楽曲における区間ごとに計算する特徴量計算ステップと、
前記各区間における拍の存在に関する物理量及びテンポに関する物理量の組み合わせにより分類された状態の系列として記述された複数の確率モデルのうち、前記第1特徴量及び前記第2特徴量が前記各区間において同時に観測される確率を表わす観測尤度の系列が所定の基準を満たす確率モデルを選択することにより、前記楽曲における拍点及びテンポの推移を同時に推定する推定ステップと、を含む音響信号分析プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、楽曲を表わす音響信号を分析して、楽曲における拍点(拍のタイミング)及びテンポを検出し、前記検出した拍点及びテンポに同期するように所定の制御対象を動作させる音響信号分析装置に関する。
【背景技術】
【0002】
従来から、例えば、下記非特許文献1に示されているように、楽曲のテンポを検出し、前記検出した拍点及びテンポに同期するように所定の制御対象を動作させる音響信号分析装置は知られている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「Journal of New Music Reserch」、2001年、Vol30、No.2、p.159−171
【発明の概要】
【0004】
上記非特許文献1の音響信号分析装置は、テンポがほぼ一定の楽曲を対象としており、テンポが途中で大きく変化する楽曲の場合には、テンポが変化する時間帯における拍点及びテンポを正しく検出することが困難である。そのため、テンポが変化する時間帯において、制御対象の動作が不自然になる。
【0005】
本発明は上記問題に対処するためになされたもので、その目的は、楽曲における拍点及びテンポを検出し、前記検出した拍点及びテンポに同期するように制御対象を動作させる音響信号分析装置であって、テンポが変化する時間帯に制御対象の動作が不自然になることを防止できる音響信号分析装置を提供することにある。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、実施形態の対応箇所の符号を括弧内に記載しているが、本発明の各構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。
【0006】
上記目的を達成するために、本発明の特徴は、楽曲を表わす音響信号を入力する音響信号入力手段(S13、S120)と、前記入力した音響信号を用いて、前記楽曲における各区間のテンポをそれぞれ検出するテンポ検出手段(S15、S180)と、前記テンポの安定性を判定する判定手段(S17、S234)と、所定の制御対象(EXT、16)を、前記判定手段による判定結果に応じて制御する制御手段(S18、S19、S235、S236)と、を備え、テンポ検出手段は、拍の存在に関する特徴を表わす第1特徴量(XO)及びテンポに関する特徴を表わす第2特徴量(XB)を前記楽曲における区間ごとに計算する特徴量計算手段(S165、S167)と、前記各区間における拍の存在に関する物理量(n)及びテンポに関する物理量(b)の組み合わせにより分類された状態(qb,n)の系列として記述された複数の確率モデルのうち、第1特徴量及び第2特徴量が前記各区間において同時に観測される確率を表わす観測尤度(L)の系列が所定の基準を満たす確率モデルを選択することにより、前記楽曲における拍点及びテンポの推移を同時に推定する推定手段(S170、S180)と、を備えたことにある。
【0007】
この場合、判定手段(S17)は、複数の区間におけるテンポの変化量が所定の範囲内にあるとき、テンポが安定していると判定し、前記複数の区間におけるテンポの変化量が前記所定の範囲外にあるとき、テンポが不安定であると判定するとよい。
【0008】
また、この場合、制御手段は、テンポが安定している区間において制御対象を所定の第1の態様(S18、S235)で動作させ、テンポが不安定である区間において前記制御対象を所定の第2の態様(S19、S236)で動作させるとよい。
【0009】
上記のように構成した音響信号分析装置によれば、楽曲のテンポの安定性が判定され、その結果に応じて制御対象が制御される。したがって、テンポが不安定である区間で楽曲のリズムと制御対象の動作が合致しないという事態を回避できる。これにより、制御対象の動作が不自然に感じられることを防止できる。
【0011】
また、拍の存在に関する特徴を表わす第1特徴量及びテンポに関する特徴を表わす第2特徴量を用いて計算された観測尤度の系列が所定の基準を満たす確率モデル(最も尤もらしい確率モデル、事後分布が最大となる確率モデルなど)が選択され、楽曲における拍点及びテンポの推移が同時に推定される。したがって、楽曲における拍点を計算し、その計算結果を用いてテンポを計算する場合に比べて、テンポの推定精度を向上させることができる。
【0012】
また、本発明の他の特徴は、判定手段は、楽曲の先頭から各区間までの第1特徴量及び第2特徴量をそれぞれ観測したときに前記各区間における各状態の尤度が前記所定の基準を満たす前記状態の系列を選択した場合の前記各区間の各状態の尤度(C)をそれぞれ計算し、前記計算した各区間における各状態の尤度の分布に基づいて、前記各区間におけるテンポの安定性を判定することにある。
【0013】
各区間における各状態の尤度の分布の分散が小さければ、そのテンポの値の信頼性が高く、テンポが安定していると考えられる。一方、各区間における各状態の尤度の分布の分散が大きければ、そのテンポの値の信頼性が低く、テンポが不安定であると考えられる。本発明によれば、各状態の尤度の分布に基づいて制御対象が制御されるので、テンポが不安定であるとき、楽曲のリズムと制御対象の動作が合致しないという事態を回避できる。これにより、制御対象の動作が不自然に感じられることを防止できる。
【0014】
さらに、本発明の実施にあたっては、音響信号分析装置の発明に限定されることなく、同装置に適用されるコンピュータプログラムの発明としても実施し得るものである。
【図面の簡単な説明】
【0015】
図1】本発明の第1及び第2実施形態に係る音響信号分析装置の全体構成を示すブロック図である。
図2】本発明の第1実施形態に係る音響信号分析プログラムのフローチャートである。
図3】テンポ安定性判定プログラムを表すフローチャートである。
図4】確率モデルの概念図である。
図5】本発明の第2実施形態に係る音響信号分析プログラムを表わすフローチャートである。
図6】特徴量計算プログラムを表わすフローチャートである。
図7】分析対象の音響信号の波形を表わすグラフである。
図8】1つのフレームを短時間フーリエ変換した音響スペクトル図である。
図9】バンドパスフィルタの特性図である。
図10】各周波数帯域の振幅の時間変化を示すグラフである。
図11】オンセット特徴量の時間変化を示すグラフである。
図12】コムフィルタのブロック図である。
図13】BPM特徴量の計算結果を示すグラフである。
図14】対数観測尤度計算プログラムを表わすフローチャートである。
図15】オンセット特徴量の観測尤度の計算結果を示す表である。
図16】テンプレートの構成を示す表である。
図17】BPM特徴量の観測尤度の計算結果を示す表である。
図18】拍・テンポ同時推定プログラムを表わすフローチャート
図19】対数観測尤度の計算結果を示す表である。
図20】先頭のフレームから各フレームまでオンセット特徴量及びBPM特徴量を観測したときに前記各フレームの各状態の尤度が最大となるような状態の系列を選択した場合の前記各状態の尤度の計算結果を示す表である。
図21】遷移元の状態の計算結果を示す表である。
図22】BPMらしさ、BPMらしさの平均及びBPMらしさの分散の計算結果の一例を示す表である。
図23】拍・テンポ情報リストの概略を示す概略図である。
図24】テンポの推移を示すグラフである。
図25】拍点を示すグラフである。
図26】オンセット特徴量、拍点及びBPMらしさの分散の推移を示すグラフである。
図27】再生・制御プログラムを表すフローチャートである。
【発明を実施するための形態】
【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の値の差df12(=|BF1−BF2|)を計算する。また、テンポ値バッファBF2とテンポ値バッファBF3の値の差df23(=|BF2−BF3|)、及びテンポ値バッファBF3とテンポ値バッファBF4の値の差df34(=|BF3−BF4|)を計算する。そして、CPU12aは、差df12、差df23及び差df34が所定の基準値df(例えば、df=4)以下であるか否かを判定する。差df12、差df23及び差df34の全てが基準値df以下である場合には、CPU12aは、「Yes」と判定して、ステップS16dにて、安定性フラグSFの値を、テンポが安定していることを表わす「1」に設定する。一方、差df12、差df23、及び差df34のうちの少なくとも1つが基準値dfより大きい場合には、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=0,1,・・・,last}に分割される。そして、拍の存在に関する特徴を表すオンセット特徴量XO及びテンポに関する特徴を表すBPM特徴量XBがフレームtごとに計算される。各フレームtにおける拍周期bの値(テンポの逆数に比例する値)及び次の拍までのフレーム数nの値の組み合わせに応じて分類された状態qb,nの系列Qとして記述された確率モデル(隠れマルコフモデル)のうち、観測値としてのオンセット特徴量XO及びBPM特徴量XBが同時に観測される確率を表わす観測尤度の系列が最も尤もらしい確率モデルが選択される(図4参照)。これにより、分析対象の楽曲における拍点及びテンポの推移が検出される。なお、拍周期bは、フレームの数によって表わされる。したがって、拍周期bの値は「1≦b≦bmax」を満たす整数であり、拍周期bの値が「β」である状態では、フレーム数nの値は「0≦n<β」を満たす整数である。また、フレームtにおいて拍周期bの値が「β」(1≦n<bmax)である確率を表わす「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=0,1,・・・,last}に分割する。各フレームの長さは共通である。説明を簡単にするために、本実施形態では各フレームの長さを125msとする。上記のように、各楽曲のサンプリング周波数は44.1kHzであるので、各フレームは、約5000個のサンプル値から構成されている。そして、以下説明するように、フレームごとに、オンセット特徴量XO及びBPM(beats per minute(1分間あたりの拍数))特徴量XBを計算する。
【0042】
つぎに、CPU12aは、ステップS163にて、フレームごとに短時間フーリエ変換を実行して、図6に示すように、各周波数ビンf{j=1,2・・・}の振幅A(f,t)を計算する。そして、CPU12aは、ステップS164にて、振幅A(f,t),A(f,t)・・・を周波数ビンfごとに設けられたフィルタバンクFBOによってフィルタ処理することにより、所定の周波数帯域w{k=1,2,・・・}の振幅M(w,t)を計算する。周波数ビンf用のフィルタバンクFBOは、図9に示すように、通過帯域の中心周波数が互いに異なる複数のバンドパスフィルタBPF(w,f)からなる。フィルタバンクFBOを構成する各バンドパスフィルタBPF(w,f)の中心周波数は、対数周波数軸上で等間隔であり、かつ各バンドパスフィルタBPF(w,f)の通過帯域幅は、対数周波数軸上で共通である。各バンドパスフィルタBPF(w,f)は、通過帯域の中心周波数から通過帯域の下限周波数側及び上限周波数側へ向かうに従って徐々にゲインがそれぞれ小さくなるように構成されている。CPU12aは、図6のステップS164に示すように、周波数ビンfごとに振幅A(f,t)とバンドパスフィルタBPF(w,f)のゲインとを積算する。そして、前記周波数ビンfごとに計算した積算結果を全ての周波数ビンfについて合算して振幅M(w,t)とする。上記のようにして計算された振幅Mの系列を図10に例示する。
【0043】
つぎに、CPU12aは、ステップS165にて、振幅Mの時間変化に基づいてフレームtのオンセット特徴量XO(t)を計算する。具体的には、図6のステップS165に示すように、周波数帯域wごとに、フレームti−1からフレームtへの振幅Mの増加量R(w,t)を計算する。ただし、フレームti―1の振幅M(w,ti−1)とフレームtの振幅M(w,t)とが同じである場合、又はフレームtの振幅M(w,t)がフレームti―1の振幅M(w,ti−1)よりも小さい場合は、増加量R(w,t)は「0」とする。そして、周波数帯域wごとに計算した増加量R(w,t)を全ての周波数帯域w,w,・・・について合算してオンセット特徴量XO(t)とする。上記のようにして計算されたオンセット特徴量XOの系列を図11に例示する。一般に、楽曲においては、拍が存在する部分の音量が大きい。したがって、オンセット特徴量XO(t)が大きいほど、フレームtに拍が存在する可能性が高い。
【0044】
つぎに、CPU12aは、オンセット特徴量XO(t),XO(t)・・・を用いて、BPM特徴量XBをフレームtごとに計算する。なお、フレームtのBPM特徴量XB(t)は、拍周期bごとに計算されたBPM特徴量XBb=1,2・・・(t)の集合として表わされる(図13参照)。まず、CPU12aは、ステップS166にて、オンセット特徴量XO(t),XO(t)・・・をこの順にフィルタバンクFBBに入力してフィルタ処理する。フィルタバンクFBBは、拍周期bの値に応じてそれぞれ設けられた複数のコムフィルタDからなる。コムフィルタDb=βは、フレームtのオンセット特徴量XO(t)を入力すると、前記入力したオンセット特徴量XO(t)と「β」だけ先行するフレームti−βのオンセット特徴量XO(ti−β)に対する出力としてのデータXDb=β(ti−β)とを所定の比率で加算してフレームtのデータXDb=β(t)として出力する(図12参照)。すなわち、コムフィルタDb=βは、データXDb=βをフレーム数βに相当する時間だけ保持する保持手段としての遅延回路db=βを有する。上記のようにして、オンセット特徴量XOの系列XO(t){=XO(t),XO(t),・・・}をフィルタバンクFBBに入力することにより、データXDの系列XD(t){=XD(t),XD(t)・・・}が計算される。
【0045】
つぎに、CPU12aは、ステップS167にて、データXDの系列XD(t)を時系列的に逆にしたデータ列をフィルタバンクFBBに入力することにより、BPM特徴量の系列XB(t){=XB(t),XB(t)・・・}が得られる。これにより、オンセット特徴量XO(t),XO(t)・・・の位相とBPM特徴量XB(t),XB(t)・・・の位相のずれを「0」にすることができる。上記のようにして計算されたBPM特徴量XB(t)を図13に例示する。上記のように、BPM特徴量XB(t)は、オンセット特徴量XO(t)と拍周期bの値に相当する時間(すなわち、フレーム数b)だけ遅延させたBPM特徴量XB(ti―b)とを所定の比率で加算して計算されるので、オンセット特徴量XO(t),XO(t)・・・が拍周期bの値に相当する時間間隔をおいてピークを有する場合、BPM特徴量XB(t)の値が大きくなる。楽曲のテンポは、1分間あたりの拍数で表されるから、拍周期bは1分間あたりの拍数の逆数に比例する。例えば、図13に示す例では、拍周期bの値が「4」であるときのBPM特徴量XBの値(BPM特徴量XBb=4)が最も大きい。したがって、この例では拍が4フレームおきに存在する可能性が高い。本実施形態では、1フレームの時間の長さを125msとしたので、この場合の拍の間隔は0.5sである。すなわち、テンポは120BPM(=60s/0.5s)である。
【0046】
つぎに、CPU12aは、ステップS168にて、特徴量計算処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS170に進める。
【0047】
CPU12aは、ステップS170にて、図14に示す対数観測尤度計算プログラムをROM12bから読み出して実行する。対数観測尤度計算プログラムは、音響信号分析プログラムのサブルーチンである。
【0048】
CPU12aは、ステップS171にて対数観測尤度計算処理を開始する。そして、以下説明するように、オンセット特徴量XO(t)の尤度P(XO(t)|Zb,n(t))、及びBPM特徴量XB(t)の尤度P(XB(t)|Zb,n(t))を計算する。なお、上記の「Zb=β,n=η(t)」は、フレームtにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」である状態qb=β,n=ηのみが生起していることを表わす。フレームtにおいて状態qb=β,n=ηと状態qb≠β,n≠ηとが同時に生起することはない。したがって、尤度P(XO(t)|Zb=β,n=η(t))は、フレームtにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」であるという条件のもとでオンセット特徴量XO(t)が観測される確率を表わす。また、尤度P(XB(t)|Zb=β,n=η(t))は、フレームtにおいて、拍周期bの値が「β」であり、且つ次の拍までのフレーム数nの値が「η」であるという条件のもとでBPM特徴量XB(t)が観測される確率を表わす。
【0049】
まず、CPU12aは、ステップS172にて、尤度P(XO(t)|Zb,n(t))を計算する。次の拍までのフレーム数nの値が「0」であるとき、オンセット特徴量XOは、平均値が「3」であって、且つ分散が「1」である第1の正規分布に従って分布するものとする。すなわち、第1の正規分布の確率変数としてオンセット特徴量XO(t)を代入した値を尤度P(XO(t)|Zb,n=0(t))として計算する。また、拍周期bの値が「β」であり、次の拍までのフレーム数nの値が「β/2」であるとき、オンセット特徴量XOは、平均値が「1」であって、且つ分散が「1」である第2の正規分布に従って分布するものとする。すなわち、第2の正規分布の確率変数としてオンセット特徴量XO(t)を代入した値を尤度P(XO(t)|Zb=β,n=β/2(t))として計算する。また、次の拍までのフレーム数nの値が「0」及び「β/2」のうちのいずれの値とも異なるとき、オンセット特徴量XOは、平均値が「0」であって、且つ分散が「1」である第3の正規分布に従って分布するものとする。すなわち、第3の正規分布の確率変数としてオンセット特徴量XO(t)を代入した値を尤度P(XO(t)|Zb,n≠0,β/2(t))として計算する。
【0050】
オンセット特徴量XOの系列が{10,2,0.5,5,1,0,3,4,2}であるときの尤度P(XO(t)|Zb=6,n(t))の対数を計算した結果を、図15に例示する。同図に示すように、オンセット特徴量XOの値が大きいフレームtほど、尤度P(XO(t)|Zb,n=0(t))が尤度P(XO(t)|Zb,n≠0(t))に比べて大きい。このように、オンセット特徴量XOの値が大きいフレームtほど、フレーム数nの値が「0」であるときに拍が存在する可能性が高くなるように、確率モデル(第1乃至第3の正規分布、及びそれらのパラメータ(平均値及び分散))が設定されている。なお、第1乃至第3の正規分布のパラメータの値は、上記実施形態に限られない。これらのパラメータの値は、実験を繰り返して決定してもよいし、機械学習を用いて決定してもよい。なお、この例では、オンセット特徴量XOの尤度Pを計算するための確率分布関数として正規分布を用いているが、確率分布関数として他の関数(例えば、ガンマ分布、ポアソン分布など)を用いても良い。
【0051】
つぎに、CPU12aは、ステップS173にて、尤度P(XB(t)|Zb,n(t))を計算する。尤度P(XB(t)|Zb=γ,n(t))は、図16に示すテンプレートTPγ{γ=1,2・・・}に対するBPM特徴量XB(t)の適合度に相当する。具体的には、尤度P(XB(t)|Zb=γ,n(t))は、BPM特徴量XB(t)とテンプレートTPγ{γ=1,2・・・}との内積に相当する(図14のステップS173の演算式を参照)。なお、この演算式におけるκは、オンセット特徴量XOに対するBPM特徴量XBの重みを決定する係数である。つまり、κを大きく設定するほど、結果的に、後述する拍・テンポ同時推定処理においてBPM特徴量XBが重視される。また、この演算式におけるZ(κ)は、κに依存する正規化係数である。テンプレートTPγは、図16に示すように、BPM特徴量XB(t)を構成するBPM特徴量XB(t)にそれぞれ乗算される係数δγ,bからなる。テンプレートTPγは、その係数δγ,γが最大であり、係数δγ,2γ,係数δγ,3γ・・・,係数δγ,(「γ」の整数倍),・・・がそれぞれ極大となるように設定されている。すなわち、例えば、テンプレートTPγ=2は、2フレームおきに拍が存在する楽曲に適合するように構成されている。なお、この例では、BPM特徴量XBの尤度Pを計算するためにテンプレートTPを用いているが、これに代えて確率分布関数(例えば、多項分布、ディリクレ分布、多次元正規分布、多次元ポアソン分布など)を用いても良い。
【0052】
BPM特徴量XB(t)が図13に示すような値であった場合に、図16に示すテンプレートTPγ{γ=1,2・・・}を用いて尤度P(XB(t)|Zb,n(t))を計算し、その対数を計算した結果を図17に例示する。この例では、尤度P(XB(t)|Zb=4,n(t))が最も大きいので、BPM特徴量XB(t)は、テンプレートTPに最も適合している。
【0053】
つぎに、CPU12aは、ステップS174にて、尤度P(XO(t)|Zb,n(t))の対数と尤度P(XB(t)|Zb,n(t))の対数をそれぞれ加算し、その結果を対数観測尤度Lb,n(t)とする。なお、尤度P(XO(t)|Zb,n(t))と尤度P(XB(t)|Zb,n(t))とを積算した結果の対数を対数観測尤度Lb,n(t)としても同じ結果が得られる。つぎに、CPU12aは、ステップS175にて、対数観測尤度計算処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS180に進める。
【0054】
つぎに、CPU12aは、ステップS180にて、図18に示す拍・テンポ同時推定プログラムをROM12bから読み出して実行する。拍・テンポ同時推定プログラムは、音響信号分析プログラムのサブルーチンである。この拍・テンポ同時推定プログラムは、ビタビアルゴリズムを用いて最尤の状態の系列Qを計算するプログラムである。ここで、その概略について説明する。CPU12aは、まず、フレームtからフレームtまでオンセット特徴量XO及びBPM特徴量XBを観測したときにフレームtの状態qb,nの尤度が最大となるような状態の系列を選択した場合の状態qb,nの尤度を尤度Cb,n(t)とするとともに、各状態qb,nに遷移する1つ前のフレームの状態(遷移元の状態)を状態Ib,n(t)として記憶する。つまり、遷移後の状態が状態qb=βe,n=ηeであって、遷移元の状態が状態qb=βs,n=ηsであるとき、状態Ib=βe,n=ηe(t)は、状態qb=βs,n=ηsである。CPU12aは、上記のようにして尤度C及び状態Iをフレームtlastまで計算し、その結果を用いて最尤の状態の系列Qを選択する。
【0055】
なお、後述する具体例では、その説明を簡単にするために、分析対象の楽曲の拍周期bの値が「3」、「4」及び「5」のうちのいずれかであるものとする。すなわち、対数観測尤度Lb,n(t)が図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に示すような、各状態qb,nに対応した、尤度Cの初期条件CSb,nを入力する。なお、初期条件CSb,nがROM12bに記憶されていて、CPU12aがROM12bから初期条件CSb,nを読み込むようにしてもよい。
【0057】
つぎに、CPU12aは、ステップS183にて、尤度Cb,n(t)及び状態Ib,n(t)を計算する。フレームtにおいて拍周期bの値が「βe」であって、フレーム数nの値が「ηe」である状態qb=βe,n=ηeの尤度Cb=βe,n=ηe(t)は、初期条件CSb=βe,n=ηeと対数観測尤度Lb=βe,n=ηe(t)とを加算することにより計算される。
【0058】
また、状態qb=βs,n=ηsから状態qb=βe,n=ηeに遷移したとき、尤度Cb=βe,n=ηe(t){i>0}は次のように計算される。状態qb=βs,n=ηsのフレーム数nが「0」でないとき(すなわち、ηs≠0)、尤度Cb=βe,n=ηe(t)は、尤度Cb=βe,n=ηe+1(ti−1)と対数観測尤度Lb=βe,n=ηe(t)と対数遷移確率Tを加算して計算される。ただし、本実施形態では、遷移元の状態のフレーム数nが「0」でないときの対数遷移確率Tは「0」であるので、尤度Cb=βe,n=ηe(t)は、実質的には、尤度Cb=βe,n=ηe+1(ti−1)と対数観測尤度Lb=βe,n=ηe(t)とを加算することにより計算される(Cb=βe,n=ηe(t)=Cb=βe,n=ηe+1(ti−1)+Lb=βe,n=ηe(t))。また、この場合、状態Ib=βe,n=ηe(t)は、状態qβe,ηe+1である。例えば、尤度Cが図20に示すように計算された例では、尤度C4,1(t)の値は「−0.3」であり、対数観測尤度L4,0(t)の値は「1.1」であるので、尤度C4,0(t)の値は「0.8」である。また、図21に示すように、状態I4,0(t)は、状態q4,1である。
【0059】
また、状態qb=βs,n=ηsのフレーム数nが「0」のとき(ηs=0)の尤度Cb=βe,n=ηe(t)は次のように計算される。この場合、状態の遷移に伴って拍周期bの値が増減され得る。そこで、まず、尤度Cβe−1,0(ti−1)、尤度Cβe,0(ti−1)、及び尤度Cβe+1,0(ti−1)に対数遷移確率Tをそれぞれ加算し、そのうちの最大値に対数観測尤度Lb=βe,n=ηe(t)を加算した結果が尤度Cb=βe,n=ηe(t)である。また、状態Ib=βe,n=ηe(t)は、状態qβe−1,0、状態qβe,0、及び状態qβe+1,0のうち、それらの尤度Cβe−1,0(ti−1)、尤度Cβe,0(ti−1)、及び尤度Cβe+1,0(ti−1)に対数遷移確率Tをそれぞれ加算した値が最大となる状態qである。なお、厳密には、尤度Cb,n(t)は正規化される必要があるが、正規化されていなくても、拍点及びテンポの推移の推定に関しては、数理上同一の結果が得られる。
【0060】
例えば、尤度C4,3(t)は、次のように計算される。遷移元の状態が状態q3,0である場合、尤度C3,0(t)の値は「0.0」であり、対数遷移確率Tは「−0.6」であるので、尤度C3,0(t)と対数遷移確率Tとを加算した値は、「−0.6」である。また、遷移元の状態が状態q4,0である場合、遷移元の尤度C4,0(t)の値は「−1.2」であり、対数遷移確率Tは「−0.2」であるので、尤度C4,0(t)と対数遷移確率Tとを加算した値は、「−1.4」である。また、遷移元の状態が状態q5,0である場合、遷移元の尤度C5,0(t)の値は「−1.2」であり、対数遷移確率Tは「−0.6」であるので、尤度C5,0(t)と対数遷移確率Tとを加算した値は、「−1.8」である。したがって、尤度C3,0(t)に対数遷移確率Tを加算した値が最も大きい。また、対数観測尤度L4,3(t)の値は、「−1.1」である。よって、尤度C4,3(t)の値は「―1.7」(=−0.6+(−1.1))であり、状態I4,3(t)は、状態q3,0である。
【0061】
上記のようにして、全てのフレームtについて、全ての状態qb,nの尤度Cb,n(t)及び状態Ib,n(t)を計算し終えると、CPU12aはステップS184にて、最尤の状態の系列Q(={qmax(t),qmax(t)・・・,qmax(tlast)})を次のようにして決定する。まず、CPU12aは、フレームtlastにおける尤度Cb,n(tlast)が最大である状態qb,nを、状態qmax(tlast)とする。ここで、状態qmax(tlast)の拍周期bの値を「βm」と表記し、フレーム数nの値を「ηm」と表記する。このとき、状態Iβm,ηm(tlast)がフレームtlastの1つ前のフレームtlast−1の状態qmax(tlast−1)である。フレームtlast−2、フレームtlast−3、・・・の状態qmax(tlast−2)、状態qmax(tlast−3)・・・も状態qmax(tlast−1)と同様に決定される。すなわち、フレームti+1の状態qmax(ti+1)の拍周期bの値を「βm」と表記し、フレーム数nの値を「ηm」と表記したときの状態Iβm,ηm(ti+1)がフレームti+1の1つ前のフレームtの状態qmax(t)である。上記のようにして、CPU12aは、フレームtlast−1からフレームtへ向かって順に状態qmaxを決定して、最尤の状態の系列Qを決定する。
【0062】
例えば、図20及び図21に示す例では、フレームtlast=77においては、状態q5,1の尤度C5,1(tlast=77)が最大である。したがって、状態qmax(tlast=77)は、状態q5,1である。図21によれば、状態I5,1(t77)は状態q5,2であるから、状態qmax(t76)は状態q5,2である。また、状態I5,2(t76)は状態q5,3であるから、状態qmax(t75)は状態q5,3である。状態qmax(t74)乃至状態qmax(t)も状態qmax(t76)及び状態qmax(t75)と同様に決定する。このようにして図20に矢印で示す最尤の状態の系列Qが決定される。この例では、拍の周期bの値は最初「3」であるが、フレームt40付近で「4」に遷移し、さらにフレームt44付近で「5」に遷移する。また、系列Qのうち、フレーム数nの値が「0」である状態qmax(t),qmax(t),・・・に対応するフレームt0,3,・・・に拍が存在すると推定される。
【0063】
つぎに、CPU12aは、ステップS185にて、拍・テンポ同時推定処理を終了し、その処理を音響信号分析処理(メインルーチン)のステップS190に進める。
【0064】
CPU12aは、ステップS190にて、フレームtごとに「BPMらしさ」、「BPMらしさの平均」、「BPMらしさの分散」、「観測に基づく確率」、「拍らしさ」、「拍が存在する確率」及び「拍が存在しない確率」を計算(図23に示す演算式を参照)する。「BPMらしさ」は、フレームtにおけるテンポの値が拍周期bに対応した値である確率を意味し、尤度Cb,n(t)を正規化するとともにフレーム数nについて周辺化することにより計算される。具体的には、拍周期bの値が「β」である場合の「BPMらしさ」は、フレームtにおける全ての状態の尤度Cの合計に対する、拍周期bの値が「β」である状態の尤度Cの合計の割合である。また、「BPMらしさの平均」は、フレームtにおける拍周期bに対応する「BPMらしさ」と拍周期bの値とをそれぞれ乗算し、それぞれの乗算結果を合算した値をフレームtにおける全ての「BPMらしさ」の合計値で除することにより計算される。また、「BPMらしさの分散」は、次のようにして計算される。まず、拍周期bの値からフレームtにおける「BPMらしさの平均」をそれぞれ減算し、それぞれの減算結果を二乗するとともに拍周期bの値に対応する「BPMらしさ」の値を乗算する。そして、それぞれの乗算結果を合算した値をフレームtにおける全ての「BPMらしさ」の合計値で除することにより「BPMらしさの分散」が計算される。上記のようにして計算された「RPMらしさ」、「BPMらしさの平均」、及び「BPMらしさの分散」の値を図22に例示する。また、「観測に基づく確率」は、観測値(すなわちオンセット特徴量XO)に基づいて計算された、拍がフレームtに存在する確率を意味する。具体的には、所定の基準値XObaseに対するオンセット特徴量XO(t)の割合である。また、「拍らしさ」は、すべてのフレーム数nの値についてのオンセット特徴量XO(t)の尤度P(XO(t)|Zb,n(t))を合算した値に対する尤度P(XO(t)|Zb,0(t))の割合である。また、「拍が存在する確率」及び「拍が存在しない確率」は、いずれも尤度Cb,n(t)を拍周期bについて周辺化することにより計算される。具体的には、「拍が存在する確率」は、フレームtにおける全ての状態の尤度Cの合計に対する、フレーム数nの値が「0」である状態の尤度Cの合計の割合である。また、「拍が存在しない確率」は、フレームtにおける全ての状態の尤度Cの合計に対する、フレーム数nの値が「0」でない状態の尤度Cの合計の割合である。
【0065】
CPU12aは、「BPMらしさ」、「観測に基づく確率」、「拍らしさ」、「拍が存在する確率」及び「拍が存在しない確率」を用いて、図23に示す拍・テンポ情報リストを表示器13に表示する。同リスト中の「テンポの推定値(BPM)」の欄には、前記計算した「BPMらしさ」のうち最も確率の高い拍周期bに対応するテンポの値(BPM)が表示される。また、前記決定した状態qmax(t)のうちフレーム数nの値が「0」であるフレームの「拍の存在」の欄には「○」が表示され、その他のフレームの「拍の存在」の欄には「×」が表示される。また、CPU12aは、テンポの推定値(BPM)を用いて、図24に示すようなテンポの推移を表わすグラフを表示器13に表示する。図24の例では、テンポの推移を棒グラフで表わしている。図20及び図21を用いて説明した例では、最初、拍周期bの値が「3」であり、フレームt40にて拍周期bの値が「4」に遷移しさらに、フレームt44にて拍周期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)|Zb,n(t))及び尤度P(XB(t)|Zb,n(t))のうちのいずれか一方又は両方を更新する。例えば、フレームtにおける「拍が存在する確率」が高くなるように修正された場合であって、修正された値に関するフレーム数nの値が「ηe」であるときには、尤度P(XB(t)|Zb,n≠ηe(t))を十分に小さい値に設定する。これにより、フレームtでは、フレーム数nの値が「ηe」である確率が相対的に最も高くなる。また、例えば、フレームtにおける「BPMらしさ」のうち、拍周期bの値が「βe」である確率が高くなるように修正された場合には、拍周期bの値が「βe」でない状態の尤度P(XB(t)|Zb≠βe,n(t))を十分に小さい値に設定する。これにより、フレームtでは、拍周期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のサンプル値をサウンドシステム16に送信する。サウンドシステム16は、第1実施形態と同様に、CPU12aから受信したサンプル値を用いて楽曲のフレームtに相当する区間を再生する。CPU12aは、ステップS234にて、フレームtにおける「BPMらしさの分散」が所定の基準値σ(例えば0.5)より小さいか否か判定する。「BPMらしさの分散」が基準値σより小さい場合には、CPU12aは「Yes」と判定して、ステップS235にて、BPMが安定しているときの所定の処理を実行する。一方、「BPMらしさの分散」が基準値σ以上である場合には、CPU12aは「No」と判定して、ステップS236にて、BPMが不安定であるときの所定の処理を実行する。ステップS235及びステップS236の処理は、第1実施形態のステップS18及びS19とそれぞれ同様であるので、それらの説明を省略する。図26の例では、フレームt39〜フレームt53に亘って、「BPMらしさの分散」が基準値σ以上である。したがって、図26の例では、フレームt40〜フレームt53においては、CPU12aは、ステップS236にて、BPMが不安定であるときの所定の処理を実行する。なお、先頭の数フレームにおいては、拍周期bの値が一定であっても「BPMらしさの分散」が基準値σより大きくなる傾向にある。そこで、先頭の数フレームにおいては、ステップ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らしさの分散」の値が基準値σ以上であるときには、そのテンポ値の信頼性が低いと判定し、テンポが不安定であるときの所定の処理を実行する。したがって、テンポが不安定であるときに、楽曲のリズムと制御対象の動作が合致しないという事態を回避できる。これにより、制御対象の動作が不自然に感じられることを防止できる。
【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における尤度Cのうち、その値が最大である尤度Cに対応する状態qb,nの拍周期b及びフレーム数nの値に基づいて、各フレームにおける拍の存在及びテンポの値を決定してもよい。これによれば、最尤の状態の系列Qを計算しないので、分析時間を短縮できる。
【0083】
また、第2実施形態では、説明を簡単にするために、各フレームの長さを125msとしたが、より短く(例えば、5ms)してもよい。これによれば、拍点及びテンポの推定に関する分解能を向上させることができる。例えば、テンポを1BPM刻みで推定できる。
【符号の説明】
【0084】
10・・・音響信号分析装置、11・・・入力操作子、XO・・・オンセット特徴量、XB・・・BPM特徴量、b・・・拍周期、n・・・フレーム数、FBB・・・フィルタバンク、TP・・・テンプレート
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27