以下に、本発明を実施するための形態を図面を参照して説明する。
(実施の形態1)
先ず、実施の形態1の音響信号分析装置1を図1を用いて説明する。図1は、実施の形態1の音響信号分析装置1の構成図である。実施の形態1の音響信号分析装置1は、図1に示すように、制御部11と、取得部12と、第1の特徴量算出部13と、第2の特徴量算出部14と、評価値算出部15と、特徴位置検出部16とを有する。
音響信号分析装置1は、音響信号2を取得し、特徴位置情報3を出力する。
音響信号2は、音楽に係る音響信号である。音響信号2はデジタル信号であってもよいし、アナログ信号であってもよい。音響信号2は、楽曲だけの信号ではなく、ラジオ又はテレビ等の音楽番組の音響信号のように、楽曲の他にDJ等の楽曲以外の音を含む信号であってもよい。音響信号2は音響信号分析装置1の外部に存在する。しかしながら、音響信号分析装置1に記憶部が設けられていれば、音響信号2はその記憶部に格納されて音響信号分析装置1の内部に存在していてもよい。
特徴位置情報3は、音響信号2の「総合的な音量」が大きい箇所を特定する情報である。その箇所は、楽曲のサビの位置又は楽曲の構成もしくは楽器の編成が大きく変化する箇所、すなわち楽曲の特徴的な箇所と一致する場合が多い。
音響信号分析装置1の制御部11は、音響信号分析装置1を構成する他の各部と情報を交換して各部を制御する。
取得部12は、音響信号2を取得し、取得した音響信号2から、サンプリング周期Ts(サンプリング周波数Fs=1/Ts)でサンプリングしたPCM(Pulse Code Modulation)データを生成する。取得部12は、音響信号2がアナログ信号である場合、アナログ信号をデジタル信号に変換してPCMデータを生成し、音響信号2がPCM以外のデジタル圧縮信号である場合、デジタル圧縮信号をデコードしてPCMデータを生成する。また、音響信号2がデジタル信号であって、そのサンプリング周期が上記のサンプリング周期Tsと異なる場合、取得部12は、サンプリングレートを変換してサンプリング周期TsのPCMデータを生成する。
以下の説明では、取得部12によって生成されるPCMデータを、音響データx[m](m=0〜M−1、Mは音響データのサンプル総数)、又は音響データと記載する。取得部12は、音響データの生成を終了すると、その旨を制御部11に通知する。
第1の特徴量算出部13は、取得部12によって生成された音響データから、音量に関する第1の特徴量を算出する。第1の特徴量算出部13は、比較的短い時間区間の音量に関する特徴量を算出する。第1の特徴量算出部13は、フレーム単位で処理を行う。しかしながら、処理の単位はそれに限定されない。
以下では、第1の特徴量算出部13によって処理される各フレームの時間長をTf1とし、フレームシフトの時間長をTg1とする。このとき、フレームのサンプル数N1=Tf1/Tsとなり、フレームシフトのサンプル数G1=Tg1/Tsとなる。なお、フレームシフトは、隣り合ったフレームの先頭の時間差である。隣り合ったフレームは、一部が重なっていてもよいし、重なっていなくてもよい。
図2を用いてフレームの時間長とフレームシフトの時間長について説明する。図2は、フレームの時間長Tf1と、フレームシフトの時間長Tg1との関係を示す図である。図2(a)は、隣り合ったフレームが重ならず、フレームの隙間もない場合を示す図である。図2(b)は、隣合ったフレームが一部重なる場合を示す図である。この場合、Tf1>Tg1となる。図2(c)は、隣り合ったフレームの間に隙間がある場合を示す図である。この場合、Tf1<Tg1となる。
第1の特徴量算出部13は、制御部11の指示に従って、図3のフローチャートに示す動作を開始する。図3は、第1の特徴量算出部13の動作の各ステップを示すフローチャートである。
第1の特徴量算出部13は、先ず、下記の式(1)に従って、フレームの総数H1を算出する(S100)。
floor( )は、小数点以下を切り捨てた整数を返す関数である。MとN1との関係は、M>N1である。
次に、第1の特徴量算出部13は、制御変数iに「0」をセットする(S110)。
次に、第1の特徴量算出部13は、i番目のフレームデータを生成する(S120)。i番目のフレームデータは、音響データx[i×G1]から音響データx[i×G1+N1−1]までのデータである。なお、第1の特徴量算出部13は、音響データx[i×G1]から音響データx[i×G1+N1−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。窓関数を用いない方法は、音響データに矩形窓を掛け合わせてi番目のフレームデータを生成する方法と同じ方法であると言える。
窓関数を用いる場合、通常はフレームの中央で窓関数の係数を最大とし、フレームの先頭と末尾で窓関数の係数を最小とするが、この他の方法を用いてもよい。例えば、フレームの先頭(x[i×G1])で窓関数の係数を最大とし、その後窓関数の係数を順次減少させ、フレームの末尾(x[i×G1+N1−1])で窓関数の係数を最小にするようにしてもよい。i番目のフレームデータを「D1[i][j](j=0〜ND1、ただしND1=N1−1)」と記載する。
次に、第1の特徴量算出部13は、i番目のフレームの第1の特徴量を、後述するいずれかの方法を用いて算出する(S130)。
次に、第1の特徴量算出部13は、制御変数iの値を「1」増やす(S140)。
次に、第1の特徴量算出部13は、制御変数iの値がH1未満であるか否かを判定する(S150)。第1の特徴量算出部13は、制御変数iの値がH1未満であれば(S150でYes)、ステップS120に戻ってステップS140までの処理を繰り返し、制御変数iの値がH1であれば(S150でNo)、処理を終了する。
第1の特徴量算出部13は、このようにして音量に関する第1の特徴量であるH1個の時系列データE1[i](i=0〜H1−1)を算出し、処理が終了したことを制御部11に通知する。
次に、第1の特徴量算出部13がステップS130においてi番目のフレームの第1の特徴量を算出する方法を説明する。
(1)特徴量の第1の算出方法は、音響データの振幅の絶対値を用いる方法である。具体的には、下記の式(2)に示すように、振幅の絶対値をフレームのサンプル数だけ加算した値(総和)を、i番目のフレームに対応する特徴量E1[i]とする。
なお、下記の式(3)に示すように、総和の代わりに平均値を用いてもよい。
(2)特徴量の第2の算出方法は、音響データの振幅の2乗を用いる方法である。具体的には、下記の式(4)に示すように、振幅の2乗の値をフレームのサンプル数だけ加算した値(総和)を、i番目のフレームに対応する特徴量E1[i]とする。
なお、下記の式(5)に示すように、総和の代わりに平均値を用いてもよい。また、式(4)又は式(5)の右辺の平方根をとった値を、i番目のフレームに対応する特徴量E1[i]としてもよい。第1及び第2の算出方法は、計算量が少なくなるという効果が得られる。
(3)特徴量の第3の算出方法は、特定の周波数成分を用いる方法である。i番目のフレームデータD1[i][j]に対して離散フーリエ変換(DFT)を行い、出力の実数部Re[k]と虚数部Im[k](k=0〜(N1/2))とを用いて、下記の式(6)又は式(7)式により、特徴量E1[i]を算出する。
式(6)は、音響データの振幅スペクトルの特定の周波数成分を用いて特徴量E1[i]を算出するための式であり、式(7)は、音響データのパワースペクトルの特定の周波数成分を用いて特徴量E1[i]を算出するための式である。これらの式において、FLは利用する周波数成分の下限を示す所定の定数であり、FHは利用する周波数成分の上限を示す所定の定数であって、0≦FL≦FH≦N1/2の関係が満たされており、FLとFHとの間の周波数成分の総和を算出して特徴量E1[i]としている。FL及びFHは、例えば、高い周波数成分(例えば8KHz以上)が除外されるように設定される。なお、下記の式(8)に示すように、周波数成分毎に定められた重み係数w[k]をスペクトルの周波数成分と掛け合わせて特徴量E1[i]を算出してもよい。
第3の方法では、特定の周波数成分のみを選択する。これにより、全周波数成分を使う場合に比べて、特徴量と人間の感じる音量感との対応性が向上するという効果が得られる。特に、聴覚特性に従って周波数成分毎の重み係数w[k]を設定することにより、音量感に近い特徴量が得られる。
上述した第3の算出方法では、離散フーリエ変換(DFT)を用いるが、これに限定される訳ではなく、DFTに代えて、例えば、デジタルフィルタやアナログフィルタを用いて特定の周波数成分を抽出してもよい。
(4)特徴量の第4の算出方法は、i番目のフレームデータを時間的に前と後の2つの部分区間(グループ)に分け、部分区間毎に算出した音量に関する数値の差を用いる方法である。各部分区間の音量に関する数値は、上述した第1から第3の算出方法を用いて算出する。
一例として、特徴量の第1の算出方法を用いる場合を説明する。先ず、i番目のフレームデータD1[i][j](j=0〜ND1)を時間的に前と後の2つの部分区間に分ける。時間的に前の部分区間1を「Da[i][j](j=0〜N1/2−1)」と記載し、時間的に後の部分区間2を「Db[i][j](j=N1/2〜ND1)」と記載する。次に、部分区間1及び部分区間2それぞれのデータを式(2)に代入する。ただし、式(2)において、j=0〜ND1の加算の範囲は、各部分区間の開始点と終了点に変更する。時間的に前の部分区間1を式(2)に代入した結果をEa[i]とし、時間的に後の部分区間2を式(2)に代入した結果をEb[i]として、それらの差を特徴量E1[i]とする。すなわち、E1[i]=Eb[i]−Ea[i]を特徴量として算出する。
なお、E1[i]が負の値になった場合、特徴量を「0」にする処理を行ってもよい。また、上記の例では、部分区間1と部分区間2との間に隙間は存在していないが、部分区間1と部分区間2との間に隙間があってもよい。また、部分区間1の一部と部分区間2の一部は重なっていてもよい。
また、上述したように、ハミング窓又はガウス窓等を用いてフレームデータを作ってもよい。その際に2つの部分区間を分ける境界点と、ハミング窓又はガウス窓等の中心点(係数が最大となる箇所)を一致させた上で、差を算出してもよい。この場合、2つの部分区間の境界近い音響データほど、大きな値の重み係数で重みづけしていることになる。つまり、上記の例のようにN1/2番目のサンプルデータの前後で部分区間を分ける場合、境界に最も近い(N1/2−1)及びN1/2に相当する音響データに最も大きな係数を掛け合わせ、境界から最も遠い0及びND1に相当する音響データに最も小さい係数を掛け合わせて差を算出していることになる。
(5)特徴量の第5の算出方法は、隣接する2つのフレームの音量を示す数値の差を用いる方法である。フレームの音量を示す数値は、上記の第1の算出方法から第3の算出方法のいずれかで得られる特徴量である。例えば、第1の算出方法により得られる特徴量を用いる場合、i−1番目のフレームに対応する音響データを式(2)に代入して得られた演算結果をE1’[i−1]として保持するとともに、i番目のフレームに対応する音響データを式(2)に代入して得られた演算結果をE1’[i]として保持する。そして、E1’[i]とE1’[i−1]との差を算出する。すなわち、E1[i]=E1’[i]−E1’[i−1]を特徴量として算出する。なお、第4及び第5の算出方法を用いると、音量が急激に変化する箇所を検出し易いという効果が得られる。
上記の第1から第5の算出方法において、例えば特徴量の最大値が1となり、最小値が0になるように、得られたデータを正規化してもよい。
ここで、音楽に係る音響信号の音量の特徴について説明する。音楽に係る音響信号の音量は、個々の音符、トレモロやビブラート等の音符の装飾音、拍、小節、フレーズ、イントロやサビ等の音楽の重層的な構造と密接に関係している。このような音楽の重層的な構造において、トレモロやビブラート等の音符の装飾音や個々の音符は、非常に短い時間単位の音量変化をもたらすのに対し、イントロやサビ等の音楽の大きな構成は、非常に長い時間単位の音量変化をもたらす。実施の形態1は、トレモロやビブラート等の音符の装飾音や個々の音符が非常に短い時間単位の音量変化をもたらし、イントロやサビ等の音楽の大きな構成が非常に長い時間単位の音量変化をもたらすという従来は考慮されていなかった特徴に着目している。
例えば、音楽に係る音響信号の音量に関連する特徴量は、1秒の区間毎に音量を算出する場合と、10秒の区間毎に音量を算出する場合とでは、音量が最大となる位置が全く異なることがある。従来のように1種類の区間毎に音量が最大となる位置を検出すると、サビ等の特徴箇所を誤検出することが多くなる。それに対して実施の形態1の音響信号分析装置1は、以下に述べるように2種類の異なる長さの区間についての音量に関する特徴量を算出する。
第1の特徴量算出部13は、上述した重層的な構造の内で、比較的短時間の音量を検出するように、フレームの時間長Tf1を設定する。例えば、第1の特徴量算出部13は、フレームの時間長Tf1を、ほぼ1つの音符の長さに相当する時間長に設定する。
例えば、音楽が4/4拍子である場合、一般的な音楽のテンポは1分間に60拍から240拍程度の範囲であることが多く、16分音符(1/4拍)から全音符(4拍)程度の音符が頻繁に使われる。その範囲の音符の時間長は、62.5msec(テンポ240の時の16分音符)から4sec(テンポ60の時の全音符)の範囲になるので、第1の特徴量算出部13は、その範囲でフレームの時間長Tf1を設定する。例えば、第1の特徴量算出部13は、フレームの時間長Tf1として、テンポ120の時の4分音符に相当する500msecを設定する。
次に、第2の特徴量算出部14について説明する。第2の特徴量算出部14は、音量に関する第2の特徴量を算出する。
第2の特徴量算出部14は、取得部12によって生成された音響データから、音量に関する第2の特徴量を算出する。第2の特徴量算出部14は、比較的長い時間区間の音量に関する特徴量を算出する。第2の特徴量算出部14によって処理されるフレームの時間長Tf2は、第1の特徴量算出部13によって処理されるフレームの時間長Tf1よりも長い。第2の特徴量算出部14によって処理されるフレームのサンプル数N2は、N2=Tf2/Tsであって、第1の特徴量算出部13によって処理されるフレームのサンプル数N1よりも多い。
第2の特徴量算出部14が動作する際のフレームシフトの時間長Tg2と、第1の特徴量算出部13が動作する際のフレームシフトの時間長Tg1とは、同じであってもよいし、異なっていてもよい。以下では、フレームシフトの時間長Tg2=Q×Tg1であり、第2の特徴量算出部14が動作する際のフレームシフトのサンプル数G2=Q×G1である(Qは1以上の整数)。しかしながら、フレームシフトの時間長Tg2、及びフレームシフトのサンプル数G2は、それらに限定されない。
第2の特徴量算出部14は、制御部11の指示に従って、図4のフローチャートに示す動作を開始する。図4は、第2の特徴量算出部14の動作の各ステップを示すフローチャートである。図4と図3とを比較すると明らかなように、第2の特徴量算出部14は、第1の特徴量算出部13と同様に動作する。
第2の特徴量算出部14は、先ず、上記の式(1)を用いてフレームの総数H2を算出する(S200)。すなわち、第2の特徴量算出部14は、式(1)のN1をN2に置き換え、G1をG2に置き換え、H1をH2に置き換えて、フレームの総数H2を算出する(S200)。MとN2との関係は、M>N2である。第2の特徴量算出部14が処理するフレーム総数H2は、第1の特徴量算出部13が処理するフレーム総数H1以下である。
次に、第2の特徴量算出部14は、制御変数iに「0」をセットする(S210)。
次に、第2の特徴量算出部14は、i番目のフレームデータを生成する(S220)。i番目のフレームデータは、音響データx[i×G2]から音響データx[i×G2+N2−1]までのデータである。なお、第2の特徴量算出部14は、音響データx[i×G2]から音響データx[i×G2+N2−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。窓関数を用いない方法は、音響データに矩形窓を掛け合わせてi番目のフレームデータを生成する方法と同じ方法であると言える。
窓関数を用いる場合、通常はフレームの中央で窓関数の係数を最大とし、フレームの先頭と末尾で窓関数の係数を最小とするが、この他の方法を用いてもよい。例えば、フレームの先頭(x[i×G2])で窓関数の係数を最大とし、その後窓関数の係数を順次減少させ、フレームの末尾(x[i×G2+N1−1])で窓関数の係数を最小にするようにしてもよい。i番目のフレームデータを「D2[i][j](j=0〜ND2、ただしND2=N2−1)」と記載する。
第1の特徴量算出部13が処理する(i×Q)番目のフレームデータの先頭D1[i×Q][0]と、第2の特徴量算出部14が処理するi番目のフレームデータの先頭D1[i][0]が、ともにx[i×G2]となって一致するが、必ずしもこのようにフレームの先頭を一致させなくてもよい。例えば、フレームの中央を一致させるようにしたり、フレームの最後を一致させるようにしてもよい。
次に、第2の特徴量算出部14は、i番目のフレームデータの特徴量を、第1の特徴量算出部13がi番目のフレームデータの特徴量を算出したようにして算出する(S230)。第2の特徴量算出部14は、第1の特徴量算出部13が用いるND1をND2に置き換え、D1をD2に置き換えて特徴量を算出する。
次に、第2の特徴量算出部14は、制御変数iの値を「1」増やす(S240)。
次に、第2の特徴量算出部14は、制御変数iの値がH2未満であるか否かを判定する(S250)。第2の特徴量算出部14は、制御変数iの値がH2未満であると判定すると(S250でYes)、ステップS220に戻ってステップS240までの処理を繰り返し、制御変数iの値がH2であると判定すると(S250でNo)、処理を終了する。
第2の特徴量算出部14は、上述した処理により、音量に関する特徴量であるH2個の時系列データE2[i](i=0〜H2−1)を算出し、処理が終了したことを制御部11に通知する。
次に、第2の特徴量算出部14が処理するフレームの時間長Tf2について説明する。上述したように、一般的な音楽では、様々な時間スケールを持つ重層的な構造に起因して音量が変化する。第2の特徴量算出部14は、比較的長時間の音量を検出するように、フレームの時間長Tf2を設定する。例えば、第2の特徴量算出部14は、フレームの時間長Tf2を、1小節以上の長さに設定する。
特に、音楽の聴きどころであるサビは、4から8小節程度の単位で繰り返されることが多く、サビの開始位置から4から8小節程度は音量が大きい可能性が高い。一般的な音楽のテンポは1分間に60拍から240拍の範囲であることが多いので、第2の特徴量算出部14は、フレームの時間長Tf2を4小節に相当する4秒から32秒の範囲に設定する。例えば、第2の特徴量算出部14は、フレームの時間長Tf2として、テンポ120の時の4小節に相当する8秒を設定する。
評価値算出部15は、第1の特徴量算出部13によって算出された第1の特徴量と、第2の特徴量算出部14によって算出された第2の特徴量とを用いて、評価値を算出する。評価値算出部15は、第1の特徴量が大きく、かつ第1の特徴量に時間的に対応する第2の特徴量が大きいほど大きな値になるように評価値を算出する。
制御部11は、第1の特徴量算出部13及び第2の特徴量算出部14の処理の終了を検知すると、評価値算出部15に対して動作を開始するように指示する。評価値算出部15は、図5のフローチャートに示す動作を開始する。図5は、評価値算出部15の動作の各ステップを示すフローチャートである。
評価値算出部15は、先ず、制御変数iに「0」をセットする(S300)。
次に、評価値算出部15は、下記の式(9)に従って、制御変数jにセットする値を算出する(S310)。
floor( )は、小数点以下を切り捨てた整数を返す関数である。Qは、第1の特徴量算出部13が動作する際のフレームシフト時間長に対する、第2の特徴量算出部14が動作する際のフレームシフト時間長の倍率であり、1以上の整数である。
次に、評価値算出部15は、後述する方法に従って、制御変数iに対応する評価値α[i]を算出する(S320)。
次に、評価値算出部15は、制御変数の値を「1」増やす(S330)。
次に、評価値算出部15は、制御変数iが、H2(第2の特徴量算出部14によって算出された特徴量の時系列データの個数)と、Qとの積の値(Q×H2)未満であるか否かを判定する(S340)。評価値算出部15は、制御変数iが(Q×H2)未満であると判定すると(S340でYes)、ステップS310に戻ってステップS330までの処理を繰り返し、制御変数iが(Q×H2)であると判定すると(S340でNo)、処理を終了する。
評価値算出部15は、上述した処理により、(Q×H2)個の時系列データである評価値α[i](i=0〜Q×H2−1)を算出し、処理を終了したことを制御部11に通知する。
評価値算出部15は、以下に示すいずれかの方法により評価値α[i]を算出する。
(1)評価値の第1の算出方法は、下記の式(10)に示すように、第1の特徴量算出部13によって算出された特徴量E1[i]と、特徴量E1[i]に時間的に対応する、第2の特徴量算出部14によって算出された特徴量E2[j]と加算する方法である。
なお、特徴量E1[i]と特徴量E1[i]に時間的に対応する特徴量E2[j]とを加算した値に所定値を乗算した値を評価値としてもよい。
(2)評価値の第2の算出方法は、下記の式(11)に示すように、特徴量E1[i]に係数β1を乗じた値と、特徴量E1[i]に時間的に対応する特徴量E2[j]に係数β2を乗じた値との加算値を用いる方法である。ただし、β1>0、β2>0である。第2の算出方法では、特徴量E1と特徴量E2に対して、各々重み付けを行なって加算していることになる。
(3)評価値の第3の算出方法は、下記の式(12)に示すように、特徴量E1[i]の対数値に係数β1を乗じた値と、特徴量E1[i]に時間的に対応する特徴量E2[j]の対数値に係数β2を乗じた値との加算値を用いる方法である。なお、第1から第3の算出方法は、E1とE2のどちらかが小さい箇所で、評価値をあまり小さくしたくない場合に用いる。第3の算出方法は、それに加えて、E1とE2のそれぞれの値の範囲が大きく異なる場合に適している。
(4)評価値の第4の算出方法は、下記の式(13)に示すように、特徴量E1[i]と特徴量E1[i]に時間的に対応する特徴量E2[j]との積を用いる方法である。なお、式(13)の右辺にさらに所定値を乗算した値を評価値としてもよい。
(5)評価値の第5の算出方法は、下記の式(14)に示すように、特徴量E1[i]を基数としてγ1を指数とした累乗値と、特徴量E1[i]に時間的に対応する特徴量E2[j]を基数としてγ2を指数とした累乗値との積を用いる方法である。第4及び第5の方法は、E1とE2のどちらかが小さければ、評価値も小さくしたい場合に用いる。第5の方法は、それに加えて、E1とE2の評価値への影響力に重みを付けたい場合に適している。なお、式(14)の右辺にさらに所定値を乗算した値を評価値としてもよい。
(6)評価値の第6の算出方法は、下記の式(15)に示すように、特徴量E1[i]を基数としてγ1を指数とした累乗値と係数β1の積と、特徴量E1[i]に時間的に対応する特徴量E2[j]を基数としてγ2を指数とした累乗値と係数β2の積との和を用いる方法である。なお、式(15)の右辺にさらに所定値を乗算した値を評価値としてもよい。
評価値算出部15は、E1[i]≧θ1かつE2[j]≧θ2(θ1、θ2は所定値)の条件が成立する場合、上述した第1から第6の算出方法を用いて評価値を算出し、その条件が成立しない場合、評価値を「0」に設定してもよい。また、評価値算出部15は、評価値α[i]を計算した後に、α[i]<θ3(θ3は所定値)である場合、α[i]を「0」にする処理を行ってもよい。
上述した方法によって算出される評価値α[i]は、第1の特徴量E1[i]が大きいほど、かつ第1の特徴量E1[i]に時間的に対応する第2の特徴量E2[j]が大きいほど大きな値となる。様々な時間スケールを持つ音楽の重層的な構造の中で、第1の特徴量の時間区間は、1音符や1拍といった時間スケールに対応しており、第2の特徴量の時間区間は、1小節以上の長さの時間スケールに対応している。サビの開始位置、曲調が大きく変わる変化点、試聴に適する位置、又は、リスナに強い印象を与える位置等の楽曲の「特徴位置」では、その先頭の音量が大きいとともに、そこから4から8小節の間は、平均的な音量が大きい場合が多いので、このような箇所の評価値は大きな値となる。従って、評価値の最大値又は極大値を検出することにより、サビの開始位置等の特徴位置を精度良く検出することができる。
制御部11は、評価値算出部15の処理が終了したことを検知すると、特徴位置検出部16に対して動作を開始するように指示する。
特徴位置検出部16は、評価値算出部15によって算出された評価値を用いて、音響信号2におけるサビの開始位置等の特徴的な位置を検出する。
特徴位置検出部16は、以下のいずれかの方法を用いて特徴位置を検出する。
(1)特徴位置の第1の検出方法は、評価値が最大となるフレーム(位置)を検出する方法である。評価値α[i](i=0〜Q×H2−1)の中で、最大となる評価値を探し、それに対応するインデックスImaxを検出する。そして、Imaxに対応する時間(Tg1×Imax)を特徴位置とする。
なお、算出された評価値全部を対象に最大値を探すのではなく、最大値を探す範囲を限定してもよい。つまり、音響信号2の連続する一部分について、評価値算出部15によって算出された評価値が最大となる位置を検出してもよい。具体的には、α[i](i=H3〜H4、ただしH3及びH4は、0≦H3<H4<Q×H2−1、を満たす整数)を対象に最大値を探してもよい。例えば、H3=0とし、H4を楽曲の長さの70%程度に相当する値にする。また、楽曲の連続する一部分、例えば楽曲の70%程度に相当する音響信号2から第1の特徴量E1及び第2の特徴量E2を算出し、これらに基づき算出される評価値αが最大となる位置を検出してもよい。このように音響信号2の連続する一部分に相当する評価値を対象に最大値を探す方法を用いると、処理量を削減することができるとともに、以下の理由により特徴位置の検出精度を改善することができる。
楽曲のサビは、1つの楽曲で複数回繰り返されることが多いが、演奏や歌唱のニュアンスは、毎回同じではなく、微妙に異なることが多い。すなわち、時間的に前の位置にあるサビは、後ろの位置にあるサビに比べて、完全には盛り上がっておらず、まだ少し盛り上がり度に余裕がある場合が多い。試聴用に楽曲のある一部を再生する場合を考えると、その箇所は「この曲全体を聴いてみたい」とリスナに思わせる箇所であることが望ましく、その意味で、完全に盛り上がった状態の時間的に後ろの位置のサビよりも、今後の盛り上がりに期待感を抱かせる時間的に前の位置のサビの方が、試聴用に適している。評価値の最大を検出する範囲を楽曲の前半の70%程度に制限することにより、前の位置にあるサビが検出され易くなり、試聴用の特徴位置の検出精度が向上する。
また、楽曲のイントロ部分が特徴位置の検出対象に含められないように、H3に適切な正の値が設定されてもよい。なお、評価値が最大となる位置そのものを特徴位置とするのではなく、評価値が最大となる位置から所定時間だけ前の位置、又は評価値が最大となる位置より前で最大値より所定値だけ評価値が小さくなる位置を特徴位置としてもよい。これにより、サビの出だしの検出漏れを防止することができる。第1の検出方法は、楽曲の中で特徴位置を1つ検出したい場合に適する。第1の検出方法を用いると、処理量が少なくなるという効果が得られる。
(2)特徴位置の第2の検出方法は、図6に示すフローチャートに従って、評価値が極大となる位置を検出する方法である。図6は、特徴位置検出部16が特徴位置の第2の検出方法を実行する動作の各ステップを示すフローチャートである。
特徴位置検出部16は、先ず、制御変数iに初期値「H5」をセットする(S400)。H5は、1≦H5<Q×H2−2を満たす所定の整数である。評価値算出部15によって算出された評価値全部を対象に極大位置を探す場合、H5=1とする。また、楽曲のイントロ等を極大位置の検出の対象に含めない場合、H5>1とする。
次に、特徴位置検出部16は、α[i]が極大値であるか否かを判定する(S410)。この判定方法は、例えば、α[i]>α[i−1]かつα[i]>α[i+1]であれば、α[i]を極大値と判定する方法である。特徴位置検出部16は、α[i]が極大値であると判定すると(S410でYes)、極大位置における評価値α[i]と、極大位置における制御変数の値(インデックス、時間情報)iの情報を、特徴位置検出部16内部の作業用メモリに格納する(S420)。
次に、特徴位置検出部16は、制御変数iの値を「1」増やす(S430)。なお、特徴位置検出部16は、ステップS410において、α[i]が極大値ではないと判定すると(S410でNo)、制御変数iの値を「1」増やす(S430)。
次に、特徴位置検出部16は、制御変数iが所定値H6以下であるか否かを判定する(S440)。H6は、H5<H6<Q×H2−1を満たす所定の整数である。評価値算出部15によって算出された評価値全部を対象に極大位置を探す場合、H6=Q×H2−2とし、上述した理由等により、楽曲の後の部分を極大位置の検出の対象から除外する場合、H6<Q×H2−2とし、例えば、楽曲の長さの70%に相当する値にする。特徴位置検出部16は、制御変数iが所定値H6以下であると判定すると(S440でYes)、ステップS410に戻ってステップS430までの処理を繰り返す。
特徴位置検出部16は、制御変数iが所定値H6を超えたと判定すると(S440でNo)、作業用メモリに格納されている極大値の情報のなかから、所定個数の極大位置を選択する(S450)。例えば、特徴位置検出部16は、値が大きい順に所定個数の極大位置を選択する。評価値が大きい順に選択されたP個の極大位置(時間)をIp[v](v=0〜P−1)と記載する。このとき、α[Ip[0]]≧α[Ip[1]]≧α[Ip[2]]≧...≧α[Ip[P−1]]である。例えば、評価値が図7に示すように時間の経過とともに変化する場合、特徴位置検出部16は、値が最大である極大位置Aと、値が2番目である極大位置Bと、値が3番目である極大位置Cとを選択する。
なお、特徴位置検出部16は、極大値が大きい順に所定個数の極大位置を選択する際、既に選択している極大位置と時間的に近いものを除外してもよい。例えば、特徴位置検出部16は、既に選択した極大位置と所定の時間以上離れている極大値のみを選択する。また、特徴位置検出部16は、音響信号2の連続する一部分について、評価値算出部15によって算出された評価値が極大となる位置を検出してもよい。以上が特徴位置の第2の検出方法の説明である。第2の検出方法は、楽曲の中から特徴位置を複数検出したい場合に適する。
特徴位置検出部16は、このようにして検出した評価値の最大位置Imax又は極大位置Ip[v](v=0〜P−1)を特徴位置情報3として音響信号分析装置1の外部に出力する。特徴位置情報3を用いて音響信号2を再生することにより、楽曲のサビ等の特徴的な箇所を再生することが可能になる。
上述した実施の形態1の音響信号分析装置1は、二つの異なる区間長を用いて特徴的な箇所を検出する。以下に、その効果を図8から図11を用いて説明する。
図8は、比較的短い区間長を用いて算出された第1の特徴量E1の変化の様子を示す模式図である。図8の横軸は、フレーム番号(時間)を示す。図8において、フレーム番号8からフレーム番号16の区間がサビの区間である。一般的には、サビの区間の音量は、他の箇所に比べて大きい傾向にある。ただし、サビの区間であっても、図8のフレーム番号10のX点のように、ボーカルの切れ目等で、音量が若干下がる場合がある。また、図8のフレーム番号2のS点のように、打楽器が強く演奏されたり、ボーカルのシャウト等が入るような箇所では、サビの区間以外で音量が瞬間的に大きな値となる場合がある。このような場合、特徴量の最大位置を特徴位置として検出すると、実際にはサビの区間ではないS点をサビの区間と検出する。それは、誤検出である。
図9は、比較的長い区間長を用いて算出された第2の特徴量E2の変化の様子を示す模式図である。図9のフレーム番号と図8のフレーム番号とは対応しており、同じフレーム番号の箇所は、同じ箇所を示している。図9においても、フレーム番号8からフレーム番号16の区間がサビの区間である。図8と図9とを比較すると明らかなように、図9に示す第2の特徴量E2は、第1の特徴量E1よりなだらかに変化する。
図8において値が最大であるS点は、図9ではあまり大きな値ではない。サビの区間において、第2の特徴量E2は大きな値をとることが多い。第2の特徴量E2は、サビの区間の先頭ではなく、サビの区間の途中で最大となることがある。図9の例では、第2の特徴量E2が最大となるのは、フレーム番号12のY点である。その箇所はサビの区間に含まれているが、サビの区間の先頭(フレーム番号8)ではない。
楽曲の試聴開始位置としては、サビ区間の先頭(T点)が検出されることが最も望ましいが、1種類の区間長を用いると、図8のように区間長が短くても、図9のように区間長が長くても、サビ区間の先頭を検出することができない場合がある。
図10は、第1の特徴量と第2の特徴量の和(E1+E2)を評価値とした場合の模式図である。図10は、図8及び図9と同じ範囲を示している。図10では、特徴量の和(E1+E2)は、サビの区間以外のS点と、サビ区間の途中のZ点(フレーム番号13)で比較的大きくなるものの、サビの区間の先頭のT点で最大となる。
図11は、第1の特徴量と第2の特徴量の積(E1×E2)を評価値とした場合の模式図である。図11は、図8から図10と同じ範囲を示している。図11では、特徴量の積(E1×E2)は、サビの区間以外のS点と、サビの区間の途中のY点(フレーム番号12)で比較的大きくなるものの、サビの区間の先頭のT点で最大となる。
図10及び図11から明らかなように、区間長の異なる特徴量を組合せて評価値を算出することにより、サビの区間(サビの区間の先頭)の検出精度は向上する。そのため、実施の形態1の音響信号分析装置1は、特徴位置を精度よく検出するために、区間長の異なる特徴量を組合せて評価値を算出して特徴位置を検出する。
なお、実施の形態1では、2種類の時間長の区間を用いて、2種類の特徴量を算出し、それらを用いて評価値を算出したが、これに限定される訳ではない。例えば、3種類以上の時間長の区間を用いて、3種類以上の特徴量を算出し、それらを用いて評価値を算出してもよい。
(実施の形態2)
次に、実施の形態2の音響信号分析装置1を図12を用いて説明する。図12は、実施の形態2の音響信号分析装置1の構成図である。実施の形態2の音響信号分析装置1は、図12に示すように、制御部11と、取得部12と、第1の特徴量算出部13と、第2の特徴量算出部14と、評価値算出部15と、特徴位置検出部16と、拍時間検出部17とを有する。
実施の形態2の音響信号分析装置1は、実施の形態1の音響信号分析装置1が有する構成部に加えて拍時間検出部17を有する。その点が、実施の形態1と実施の形態2との相違点である。
制御部11は、取得部12によって音響データが生成されたことを検知すると、第1の特徴量算出部13及び第2の特徴量算出部14に動作を開始するように指示する前に、拍時間検出部17に動作を開始するように指示する。
拍時間検出部17は、フレーム単位で処理を行う。拍時間検出部17によって処理されるフレームの時間長をTf3とし、拍時間検出部17が動作する際のフレームシフトの時間長をTg3とする。拍時間検出部17によって処理されるフレームのサンプル数N3は、N3=Tf3/Tsであり、フレームシフトのサンプル数G3は、G3=Tg3/Tsである。拍時間を精度良く算出するために、Tf3及びTg3は1拍の長さよりもかなり短い時間に設定される。一般的な音楽では、テンポが60から240であり、1拍の時間長が250msecから1secの範囲であることが多いので、Tf3及びTg3は、5msecから50msec程度の範囲の適切な値に設定される。
拍時間検出部17は、図13に示すフローチャートに従って処理を行う。図13は、拍時間検出部17の動作の各ステップを示すフローチャートである。
拍時間検出部17は、先ず、式(1)を用いてフレームの総数H7を算出する(S500)。具体的には、拍時間検出部17は、式(1)のN1をN3に置き換え、G1をG3に置き換え、H1をH7に置き換えて、フレームの総数H7を算出する。
次に、拍時間検出部17は、制御変数iに「0」をセットする(S510)。
次に、拍時間検出部17は、i番目のフレームデータを生成する(S520)。具体的には、拍時間検出部17は、音響データx[i×G3]から音響データx[i×G3+N3−1]をi番目のフレームデータとして生成する。なお、拍時間検出部17は、音響データx[i×G3]から音響データx[i×G3+N3−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。最初に述べた方法は、音響データに矩形窓を掛け合わせることによりi番目のフレームデータを生成する方法と同じ方法であると言える。i番目のフレームデータを「D3[i][j](j=0〜ND3、ただしND3=N3−1)」と記載する。
次に、拍時間検出部17は、i番目のフレームの特徴量を算出する(S530)。具体的には、拍時間検出部17は、第1の特徴量算出部13が特徴量を算出する際に用いる第4又は第5の算出方法を用いて、特徴量を算出する。すなわち、拍時間検出部17は、音響データの振幅又は音響データの特定の周波数成分を用いて、フレーム内又はフレーム間の差を算出し、特徴量E3[i]を算出する。
次に、拍時間検出部17は、制御変数iの値を「1」増やす(S540)。
次に、拍時間検出部17は、制御変数iの値がH7未満であるか否かを判定する(S550)。拍時間検出部17は、制御変数iの値がH7未満であると判定すると(S550でYes)、ステップS520に戻ってステップS540までの処理を繰り返す。
拍時間検出部17は、制御変数iの値がH7であると判定すると(S550でNo)、特徴量E3[i](i=0〜H7−1)の自己相関を算出する(S560)。拍時間検出部17は、自己相関のインデックスの差Δを所定のテンポの範囲で順次変えながら、下記の式(16)に従って自己相関Y(Δ)を算出する。
H8は、0≦H8<H9を満たす所定値であり、H9は、H8<H9≦H7−1−Δを満たす所定値である。例えば、テンポの検出範囲が60から240である場合、E3はTg3の時間間隔で生成されているので、Δ=(250/Tg3)から(1000/Tg3)の範囲でΔは変えられる。Tg3は、msec単位の値である。
次に、拍時間検出部17は、自己相関Y(Δ)のピーク位置を検出して、拍の時間長τを算出する(S570)。ステップS560において算出された自己相関Y(Δ)は、図14に示すように、いくつかのピークを持っている。拍時間検出部17は、検出対象の最短の拍から検出対象の最長の拍の間で最大値の位置Δmaxを検出し、τ=Tg3×Δmaxを1拍の時間長とする。なお、図14において、「P」は検出対象の最短の拍に相当するΔであり、「R」は検出対象の最長の拍に相当するΔである。
また、図15に示すように、拍の時間長の存在確率を示す分布Ω(Δ)が用意されており、拍時間検出部17は、自己相関Y(Δ)と分布Ω(Δ)との積(Ω(Δ)Y(Δ))を算出した後に、その最大値の位置を検出し、それにより一拍の時間長を検出してもよい。拍時間検出部17は、Ω(Δ)を用いることにより、更に精度良く拍の時間長を算出することができる。なお、図15において、「P」は検出対象の最短の拍に相当するΔであり、「U」は拍の存在確率が最大となるΔであり、「R」は検出対象の最長の拍に相当するΔである。
拍時間検出部17は、このようにして検出した拍の時間長τを制御部11に通知する。
制御部11は、τ1=λ1×τ、τ2=λ2×τの2つの数値を計算する。λ1及びλ2は、λ1<λ2を満たす、所定の係数である。
そして、制御部11は、Tf1=τ1とするように、第1の特徴量算出部13に指示するとともに、Tf2=τ2とするように、第2の特徴量算出部14に指示する。その後、制御部11は、第1の特徴量算出部13及び第2の特徴量算出部14に対して動作を開始するように指示する。第1の特徴量算出部13は、拍時間検出部17によって検出された一拍の時間長に基づくτ1をフレームの時間長Tf1に設定し、第2の特徴量算出部14は、拍時間検出部17によって検出された一拍の時間長に基づくτ2をフレームの時間長Tf2に設定する。それ以降の各部の動作は、実施の形態1において説明した動作と同じである。
実施の形態2の音響信号分析装置1は、音量に関する特徴量を算出する際の区間長を、その音楽の拍の時間長に基づいて設定するので、様々なジャンルやタイプの音楽に対しても、精度良く特徴位置を検出することができる。
なお、上述した各実施の形態の音響信号分析装置1の各構成部の機能は、例えばコンピュータのCPU(プロセッサ)及びメモリ等のハードウェアと、その機能を実現するためのコンピュータプログラムとが協働することによって実現される。しかしながら、上記各機能は、専用の回路により実現される等、どのような形態により実現されてもよい。また、音響信号分析装置1の各構成部の機能を実現するためのコンピュータプログラムは、記録媒体に格納されてもよい。
(実施の形態3)
一般的に、楽曲のサビや盛り上がる箇所といった楽曲の特徴的な箇所では、複数の楽器や歌唱が同時に演奏されることが多く、その特徴的な箇所の音響信号は、周波数帯域の幅が広いことが多い。言い換えると、特徴的な箇所の音響信号は、低域から高域までの幅広い周波数成分が含まれることが多い。実施の形態3の音響信号分析装置は、従来は考慮されていなかった上記の特徴的な箇所の音響信号の周波数帯域の性質に着目し、楽曲の特徴的な箇所を精度良く検出する。
先ず、実施の形態3の音響信号分析装置101を図16を用いて説明する。図16は、実施の形態3の音響信号分析装置101の構成図である。実施の形態3の音響信号分析装置101は、図16に示すように、制御部111と、取得部112と、周波数帯域データ算出部113と、平滑化部114と、特徴位置検出部115とを有する。
音響信号分析装置101は、音響信号102を取得し、特徴位置情報103を出力する。
音響信号102は、音楽に係る音響信号である。音響信号102はデジタル信号であってもよいし、アナログ信号であってもよい。音響信号102は、楽曲だけの信号ではなく、ラジオ又はテレビ等の音楽番組の音響信号のように、楽曲の他にDJ等の楽曲以外の音を含む信号であってもよい。音響信号102は音響信号分析装置101の外部に存在する。しかしながら、音響信号分析装置101に記憶部が設けられていれば、音響信号102はその記憶部に格納されて音響信号分析装置101の内部に存在していてもよい。
特徴位置情報103は、音響信号102の周波数帯域の幅が広い箇所を特定する情報である。その箇所は、楽曲のサビの位置又は楽曲の構成もしくは楽器の編成が大きく変化する箇所、すなわち楽曲の特徴的な箇所と一致する場合が多い。
音響信号分析装置101の制御部111は、音響信号分析装置101を構成する他の各部と情報を交換して各部を制御する。
取得部112は、音響信号102を取得し、取得した音響信号102から、サンプリング周期Ts(サンプリング周波数Fs=1/Ts)でサンプリングしたPCM(Pulse Code Modulation)データを生成する。取得部112は、音響信号102がアナログ信号である場合、アナログ信号をデジタル信号に変換してPCMデータを生成し、音響信号102がPCM以外のデジタル圧縮信号である場合、デジタル圧縮信号をデコードしてPCMデータを生成する。また、音響信号102がデジタル信号であって、そのサンプリング周期が上記のサンプリング周期Tsと異なる場合、取得部112は、サンプリングレートを変換してサンプリング周期TsのPCMデータを生成する。
以下の説明では、取得部112によって生成されるPCMデータを、音響データx[m](m=0〜M−1、Mは音響データのサンプル総数)、又は音響データと記載する。取得部112は、音響データの生成を終了すると、その旨を制御部111に通知する。実施の形態3では、周波数帯域データ算出部113、平滑化部114、及び、特徴位置検出部115は、取得部112が音響データの全部を生成した後に、動作を開始する。しかしながら、周波数帯域データ算出部113、平滑化部114、及び、特徴位置検出部115は、取得部112が音響データの一部を生成した後に、動作を開始してもよい。
周波数帯域データ算出部113は、取得部112によって生成された音響データから、周波数帯域の幅に関する時系列データを算出する。周波数帯域データ算出部113は、フレーム単位で処理を行う。しかしながら、処理の単位はそれに限定されない。
以下では、周波数帯域データ算出部113によって処理される各フレームの時間長をTf11とし、フレームシフトの時間長をTg11とする。このとき、フレームのサンプル数N11=Tf11/Tsとなり、フレームシフトのサンプル数G11=Tg11/Tsとなる。フレームシフトは、隣り合ったフレームの先頭の時間差である。隣り合ったフレームは、一部が重なっていてもよいし、重なっていなくてもよい。
周波数帯域データ算出部113は、制御部111の指示に従って、図17のフローチャートに示す動作を開始する。図17は、周波数帯域データ算出部113の動作の各ステップを示すフローチャートである。
周波数帯域データ算出部113は、先ず、下記の式(17)に従って、フレームの総数H11を算出する(S600)。
floor( )は、小数点以下を切り捨てた整数を返す関数である。MとN11との関係は、M>N11である。
次に、周波数帯域データ算出部113は、制御変数iに「0」をセットする(S610)。
次に、周波数帯域データ算出部113は、i番目のフレームデータを生成する(S620)。i番目のフレームデータは、音響データx[i×G11]から音響データx[i×G11+N11−1]までのデータである。なお、周波数帯域データ算出部113は、音響データx[i×G11]から音響データx[i×G11+N11−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。最初に述べた方法は、音響データに矩形窓を掛け合わせることによりi番目のフレームデータを生成する方法と同じ方法であると言える。i番目のフレームデータを「D11[i][j](j=0〜ND11、ただしND11=N11−1)」と記載する。
次に、周波数帯域データ算出部113は、公知の離散フーリエ変換(DFT)を用いて、i番目のフレームデータの周波数を分析して周波数スペクトルを算出する(S630)。周波数スペクトルは、振幅スペクトルとパワースペクトルのいずれであってもよい。周波数スペクトルの強度は、リニア(線形)スケールにより表現されてもよいし、対数スケールにより表現されてもよい。
周波数帯域データ算出部113は、離散フーリエ変換の代わりにウェーブレット変換、又はフィルタバンク等の方法を用いてもよい。i番目のフレームの周波数スペクトルを「S[i][k](k=0〜N11/2)」と記載する。k=0は最も周波数の低い直流成分に対応し、k=N11/2は、最も高い周波数であるサンプリング周波数Fsの半分の周波数に対応し、その間の成分は、k×(Fs/N11)周波数に対応する。なお、周波数を示す軸は、リニアスケールではなく、対数スケールであってもよい。
次に、周波数帯域データ算出部113は、i番目のフレームの周波数スペクトルの帯域幅に関する指標(周波数帯域の幅広さを示す指標)E11[i]を後述する方法を用いて算出する(S640)。
次に、周波数帯域データ算出部113は、制御変数iの値を「1」増やす(S650)。
次に、周波数帯域データ算出部113は、制御変数iの値がH11未満であるか否かを判定する(S660)。周波数帯域データ算出部113は、制御変数iの値がH11未満であれば(S660でYes)、ステップS620に戻ってステップS650までの処理を繰り返し、制御変数iの値がH11であれば(S660でNo)、処理を終了する。
周波数帯域データ算出部113は、このようにして、周波数スペクトルの帯域幅に関する、H11個の時系列の周波数帯域データE11[i](i=0〜H11−1)を算出し、処理が終了したことを制御部111に通知する。
次に、周波数帯域データ算出部113がステップS640においてi番目のフレームの周波数スペクトルの帯域幅に関する指標E11[i]を算出する方法を説明する。
(1)帯域幅に関する指標の第1の算出方法は、周波数スペクトルにおいて、所定値以上のスペクトル強度を有する最小周波数及び最大周波数を検出し、それらの周波数の差を算出する方法である。一般的に周波数スペクトルは、図18に示すように表現される。低域用の閾値λaと高域用の閾値λbとを用意し、S[i][k]≧λaを満たす最小のkである周波数Kaと、S[i][k]≧λbを満たす最大のkである周波数Kbとを検出する。そして、周波数Kaと周波数Kbとの差、すなわち(Kb−Ka)を帯域幅とし、それを帯域幅に関する指標とする。なお、帯域幅に関する指標は、(Fs/N11)×(Kb−Ka)であってもよい。なお、第1の算出方法では、数十Hzから数KHz又は10KHz程度の周波数範囲で、条件を満たす最小周波数及び最大周波数を求める。最小周波数は数十Hz程度の刻み(精度)で検出し、最大周波数は数百Hz程度の刻み(精度)で検出する。
(2)帯域幅に関する指標の第2の算出方法は、周波数スペクトルの形状を用いる方法である。具体的には、第2の算出方法は、周波数スペクトルの各周波数の値と所定値との差に関係する値と、その周波数の強度との積の総和(積和演算の値)を用いる方法である。より具体的には、下記の式(18)又は式(19)を用いて周波数スペクトルの帯域幅に関する指標E11[i]を算出する。
式(18)は、周波数スペクトルの各周波数の値と所定値との差の2乗値とその周波数の強度との積の総和を用いて帯域幅に関する指標E11[i]を算出するための式であり、式(19)は、周波数スペクトルの各周波数の値と所定値との差の絶対値とその周波数の強度との積の総和を用いて帯域幅に関する指標E11[i]を算出するための式である。
式(18)及び式(19)において、K1は処理対象の周波数の下限を示す整数であり、K2は処理対象の周波数の上限を示す整数であって、0≦K1<K2≦(N11/2)の関係が満たされる。ωは所定値であり、K1≦ω≦K2の関係が満たされる。ηは、0≦η≦1の範囲で設定される値である。η=1の場合、E11[i]に周波数スペクトルの強度の情報が入らないので、帯域幅に関する純粋な指標が得られる。η=0の場合、分母が1となりE11[i]は分子だけで表現されるので、周波数スペクトルの強度が加味された指標が得られる。ηの値は、0と1の中間の値、例えば0.5等であってもよい。
また、式(18)において、μは0より大きい所定値である。例えば、μ=1、又はμ=0.5である。また、式(18)及び式(19)において、kは周波数そのものではなく、周波数成分を識別する番号であるが、(k−ω)の代わりに、周波数そのものの(k×Fs/N11−ω)が用いられてもよい。
(3)帯域幅に関する指標の第3の算出方法は、周波数スペクトルの各成分の周波数と平均周波数との差に関係する値と、その成分との積の総和を用いる方法である。具体的には、先ず、下記の式(20)に従って、平均周波数ωaを算出する。
次に、式(18)又は式(19)のωに、ωaを代入してE11[i]を算出する。第3の算出方法を用いる場合、事前にωを決定しておく必要がないので、第2の算出方法を用いる場合よりも、多様なジャンルや音楽スタイルの楽曲に対応して帯域幅に関する指標E11を算出することができる。
なお、第2及び第3の算出方法では、数十Hzから数KHz又は10KHz程度の周波数範囲の周波数スペクトルを算出する。周波数スペクトルの分解能は、数十Hzから数百Hzとする。また、周波数が等間隔(リニア)のスペクトルではなく、低域の周波数分解能が細かく、高域になるに従って分解能が粗くなるような(周波数軸上で対数的な)スペクトルを算出してもよい。また、音楽で用いられている音律(平均律等)に対応する周波数スペクトルを算出してもよい。平均律では各音階、ド、ド#、レ、レ#、の周波数は対数的に等間隔で並んでいる。また、第2の算出方法において、所定値ωとして、例えば、1Kから2KHz程度の値を設定する。また、所定値ωとして一般的な音楽における平均的な周波数を設定してもよい。
(4)帯域幅に関する指標の第4の算出方法は、隣接する2つのフレームの周波数スペクトルの帯域幅に関する数値の差を用いる方法である。帯域幅に関する数値は、上記の第1から第3の算出方法のいずれかで得られる値である。
例えば、第2の算出方法によって得られた値を用いる場合、i−1番目のフレームに対応する音響データを式(18)又は式(19)に代入した結果をE11’[i−1]として保持するとともに、i番目のフレームに対応する音響データを式(18)又は式(19)に代入した結果をE11’[i]として保持する。そして、E11’[i]とE11’[i−1]との差E11[i]=E11’[i]−E11’[i−1]を算出し、これをフレームiの帯域幅に関する指標とする。この指標は、帯域幅そのものではなく、帯域幅の変化量である。楽曲のサビの開始位置において、帯域幅が急激に広がることが多いので、このような箇所ではこの指標の値は大きくなる。
上記の帯域幅に関する指標の第1から第4の算出方法において、例えば、最大値が1になり、最小値が0になるように、得られたデータを正規化してもよい。
制御部111は、周波数帯域データ算出部113の処理の終了を検知すると、平滑化部114に対して動作を開始するように指示する。
次に、平滑化部114について説明する。周波数帯域データ算出部113によって生成された周波数帯域データE11[i](i=0〜H11−1)には、微小な変動(ノイズ)が含まれていることが多いので、平滑化部114は、ローパスフィルタによるフィルタリングを行うことにより、ノイズを除去する。例えば、平滑化部114は、下記の式(21)を用いて、隣接する3つのフレームの周波数帯域データE11に(1,2,1)の係数を掛け合わせて平滑化出力E[i](i=0〜H11−1)を算出する。もちろんこの他の係数のローパスフィルタを用いてもよい。
なお、両側の隣接フレームデータが揃わないE[0]及びE[H11−1]については、揃っていないデータに対する係数を「0」に設定する。このように、周波数帯域データを平滑化することにより、特徴位置検出部115による特徴位置の検出精度が向上する。なお、平滑化部114は、省略されてもよい。
制御部111は、平滑化部114の処理の終了を検知すると、特徴位置検出部115に対して動作を開始するように指示する。
特徴位置検出部115は、平滑化部114によって得られた値を用いて、音響信号102におけるサビの開始位置等の特徴的な位置を検出する。特徴位置を検出する方法として、以下のいずれかの方法を用いる。ただし、平滑化部114が省略さている場合、特徴位置検出部115は、周波数帯域データ算出部113によって算出された周波数帯域データE11[i]を処理する。また、以下の説明のE[i]をE11[i]に置き換える。
(1)特徴位置の第1の検出方法は、平滑化出力が最大となるフレーム(位置)を検出する方法である。平滑化出力E[i](i=0〜H11−1)が最大となる位置のインデックスi(以下、「Imax」と記載する。)を検出し、Imaxに対応する楽曲の先頭からの時間(Tg11×Imax)を特徴位置とする。
なお、平滑化出力の全部から最大値を探すのではなく、最大値を探す範囲を限定してもよい。つまり、音響信号102の連続する一部分について、平滑化部114によって得られた値が最大となる位置を検出してもよい。具体的には、E[i](i=Ha〜Hb、Ha及びHbは、0≦Ha<Hb<H11−1、を満たす整数)を対象に最大値を探してもよい。例えば、Ha=0とし、Hbを楽曲の長さの70%程度に相当する値に設定する。また、楽曲の連続する一部分、例えば楽曲の70%程度に相当する音響信号102から周波数帯域データE11を算出し、これに基づき算出される平滑化出力Eが最大となる位置を検出してもよい。このように音響信号102の連続する一部分に相当する平滑化出力を対象に最大値を探す方法を用いると、処理量を削減することができるとともに、以下の理由により特徴位置の検出精度を改善することができる。
楽曲のサビは、1つの楽曲で複数回繰り返されることが多いが、演奏や歌唱のニュアンスは、毎回同じではなく、微妙に異なることが多い。すなわち、時間的に前の位置にあるサビは、後ろの位置にあるサビに比べて、完全には盛り上がっていない場合が多い。試聴用に楽曲のある一部を再生する場合を考えると、その箇所は「この曲全体を聴いてみたい」とリスナに思わせる箇所であることが望ましい。したがって、完全に盛り上がった状態の楽曲の後ろの位置のサビよりも、今後の盛り上がりに期待感を抱かせる楽曲の前の位置のサビの方が、試聴用に適している。平滑化出力の最大を検出する範囲を楽曲の前半の70%程度に制限することにより、楽曲の前の位置にあるサビが検出され易くなり、試聴用の特徴位置の検出精度が向上する。
また、楽曲のイントロ部分を特徴位置の検出対象に含めないように、Haに適切な値を設定してもよい。
なお、平滑化出力が最大となる位置そのものを特徴位置とするのではなく、平滑化出力が最大となる位置から所定時間だけ前の位置、又は平滑化出力が最大となる位置より前で、平滑化出力が最大値より所定値だけ小さくなる位置を特徴位置としてもよい。これにより、サビの出だしの検出漏れを防止することができる。
(2)特徴位置の第2の検出方法は、図19に示すフローチャートに従って、平滑化出力が極大となる位置を検出する方法である。図19は、特徴位置検出部115が特徴位置の第2の検出方法を実行する際の動作の各ステップを示すフローチャートである。
特徴位置検出部115は、先ず、制御変数iに初期値「Hc」をセットする(S700)。Hcは、1≦Hc<H11−1を満たす所定の整数である。平滑化出力の全部から極大位置を探す場合、Hc=1である。楽曲のイントロ等を極大位置の検出の対象に含めない場合、Hc>1である。
次に、特徴位置検出部115は、E[i]が極大値であるか否かを判定する(S710)。この判定方法は、例えば、E[i]>E[i−1]かつE[i]>E[i+1]であれば、E[i]を極大値と判定する方法である。特徴位置検出部115は、E[i]が極大値であると判定すると(S710でYes)、極大位置における平滑化出力E[i]と、極大位置における制御変数の値(インデックス、時間情報)iとを特徴位置検出部115内部の作業用メモリに格納する(S720)。
次に、特徴位置検出部115は、制御変数iの値を「1」増やす(S730)。なお、ステップS710において、E[i]が極大値ではないと判定した場合(S710でNo)、特徴位置検出部115は、ステップS730の処理を行う。
次に、特徴位置検出部115は、制御変数iが所定値Hd以下であるか否かを判定する(S740)。Hdは、Hc<Hd<H11−1を満たす所定の整数である。平滑化出力の全部を対象に極大位置を探す場合、Hd=H11−2である。上述した理由等により、楽曲の後ろの部分を極大位置の検出の対象から除外する場合、Hd<H11−2とし、平滑化出力の極大値の検出範囲を、例えば、楽曲の長さの70%に限定する。
特徴位置検出部115は、制御変数iが所定値Hd以下であると判定すると(S740でYes)、ステップS710に戻ってステップS730までの処理を繰り返す。
特徴位置検出部115は、制御変数iが所定値Hdより大きいと判定すると(S740でNo)、作業用メモリに格納した極大値の情報の内から、所定個数の極大位置を選択する(S750)。具体的には、特徴位置検出部115は、極大値が大きい順に所定個数の極大位置を選択する。大きい順に選択されたP個の極大位置(時間)をIp[v](v=0〜P−1)と記載する。このとき、E[Ip[0]]≧E[Ip[1]]≧E[Ip[2]]≧...≧E[Ip[P−1]]である。例えば、周波数帯域の幅が図20に示すように時間の経過とともに変化する場合、特徴位置検出部115は、値が最大である極大位置A’と、値が2番目である極大位置B’と、値が3番目である極大位置C’とを選択する。
なお、特徴位置検出部115は、極大値が大きい順に所定個数の極大位置を選択する際、既に選択している極大位置と時間的に近いものを除外してもよい。例えば、特徴位置検出部115は、既に選択した極大位置と所定の時間以上離れている極大値のみを選択してもよい。また、特徴位置検出部115は、音響信号102の連続する一部分について、平滑化部114によって得られた値が極大となる位置を検出してもよい。以上が特徴位置の第2の検出方法の説明である。
特徴位置検出部115は、このようにして検出した、最大位置Imax又は極大位置Ip[v](v=0〜P−1)を特徴位置情報103として音響信号分析装置101の外部に出力する。特徴位置情報103を用いて音響信号102を再生することにより、サビ等の楽曲の特徴的な箇所を再生することが可能になる。
上述したように、実施の形態3の音響信号分析装置101は、音響信号102を構成する各区分の周波数帯域の幅又はそれに直接関係するデータを算出し、それが最大又は極大となる区間を検出する。これにより、楽曲のサビや盛り上がる箇所等の特徴位置を精度良く検出することができる。
(実施の形態4)
次に、実施の形態4の音響信号分析装置101を図21を用いて説明する。図21は、実施の形態4の音響信号分析装置101の構成図である。実施の形態4の音響信号分析装置101は、図21に示すように、制御部111と、取得部112と、周波数帯域データ算出部113と、平滑化部114aと、特徴位置検出部115と、第2の周波数帯域データ算出部116と、評価値算出部117とを有する。
実施の形態4の音響信号分析装置101は、実施の形態3の音響信号分析装置101が有する各構成部に加えて、第2の周波数帯域データ算出部116と、評価値算出部117とを有する。また、実施の形態4の音響信号分析装置101は、実施の形態3の音響信号分析装置101が有する平滑化部114に代えて平滑化部114aを有する。その点が実施の形態4と実施の形態3との相違点である。
取得部112及び周波数帯域データ算出部113の動作は、実施の形態3において説明した動作と同じである。
第2の周波数帯域データ算出部116の動作は、周波数帯域データ算出部113の動作とほぼ同じである。ただし、第2の周波数帯域データ算出部116は、周波数帯域データ算出部113が処理するフレームの時間長Tf11とは異なる時間長Tf12のフレームを処理する。以下にその理由を説明する。
音楽に係る音響信号の周波数成分は、音楽を構成する個々の音符、ビブラート等の音符の装飾音、拍、小節、フレーズ、及び、イントロやサビ等の大局的な構成等の時間スケールの異なる様々な要因(音楽の重層的な構造)により変化する。このような音楽の重層的な構造において、1つの音符の装飾音は、相対的に短い時間スケールで周波数を変化させるのに対し、イントロやサビ等の大局的な構成は相対的に長い時間スケールで周波数を変化させる。
例えば、サビの開始点においては、音域の異なる複数の楽器や歌唱が同時に演奏されることが多く、特に周波数帯域が広く、減衰時間の短い打楽器が演奏されることが多いため、16分音符から2分音符に相当する比較的短い時間で周波数帯域が広がる傾向が強い。また、通常のサビは数小節以上の長さを持ち、低域パートと高域パートが両方演奏され続けることが多いため、サビの開始点から数小節に相当する比較的長い時間で周波数帯域が広い傾向がある。サビにはこのような特性があるので、時間スケールの異なる複数の周波数帯域データを算出することで、サビの検出精度を向上させることができる。
第2の周波数帯域データ算出部116が処理するフレームの時間長Tf12は、周波数帯域データ算出部113が処理するフレームの時間長Tf11より長い。具体的には、周波数帯域データ算出部113は、楽曲の1音符又は1拍以下の時間長に相当するTf11のフレームを処理し、第2の周波数帯域データ算出部116は、1拍より長い、1小節から8小節程度の時間長に相当するTf12のフレームを処理する。例えば、Tf11を4/4拍子でテンポが120の楽曲の16分音符に相当する125msecとし、Tf12を1小節に相当する2secとする。
第2の周波数帯域データ算出部116が動作する際のフレームシフトの時間長Tg12と、周波数帯域データ算出部113が動作する際のフレームシフトの時間長Tg11とは、同じであってもよいし、異なっていてもよい。実施の形態4では、Tg12=Q1×Tg11であり、第2の周波数帯域データ算出部116が動作する際のフレームシフトのサンプル数G12=Q1×G11である(Q1は1以上の整数)。しかしながら、Tg12及びG12はこれに限定されない。
また、第2の周波数帯域データ算出部116が処理するフレームの総数をH12とする。
このような条件の下、第2の周波数帯域データ算出部116は、実施の形態3の周波数帯域データ算出部113と同様な動作を行って、第2の周波数帯域データE12[j](j=0〜H12−1)を算出する。
次に、評価値算出部117について説明する。評価値算出部117は、周波数帯域データ算出部113によって算出された周波数帯域データE11[i]と、第2の周波数帯域データ算出部116によって算出された第2の周波数帯域データE12[j]とを用いて、評価値を算出する。評価値算出部117は、周波数帯域データE11[i]と、第2の周波数帯域データE12[j]とを用い、E11[i]が大きく、かつE11[i]に時間的に対応するE12[j]が大きいほど大きな値になるように、評価値を算出する。
制御部111は、周波数帯域データ算出部113及び第2の周波数帯域データ算出部116の処理の終了を検知すると、評価値算出部117に対して動作を開始するように指示し、評価値算出部117は、図22のフローチャートに示す動作を開始する。図22は、評価値算出部117の動作の各ステップを示すフローチャートである。
先ず、評価値算出部117は、制御変数iに「0」をセットする(S800)。
次に、評価値算出部117は、下記の式(22)に従って、制御変数jにセットする値を算出する(S810)。
floor( )は、小数点以下を切り捨てた整数を返す関数である。Q1は、周波数帯域データ算出部113が動作する際のフレームシフト時間長を基準とした、第2の周波数帯域データ算出部116が動作する際のフレームシフト時間長の倍率であり、1以上の整数である。
次に、評価値算出部117は、後述する方法に従って、制御変数iに対応する評価値α[i]を算出する(S820)。
次に、評価値算出部117は、制御変数iの値を「1」増やす(S830)。
次に、評価値算出部117は、制御変数iが、H12(第2の周波数帯域データ算出部116が処理するフレームの総数)と、Q1との積の値(Q1×H12)未満であるか否かを判定する(S840)。評価値算出部117は、制御変数iが(Q1×H12)未満であると判定すると(S840でYes)、ステップS810に戻ってステップS830までの処理を繰り返し、制御変数iが(Q1×H12)であると判定すると(S840でNo)、処理を終了する。
評価値算出部117は、上述した処理により、(Q1×H12)個の時系列データである評価値α[i](i=0〜Q1×H12−1)を算出する。評価値算出部117は、処理を終了したことを制御部111に通知する。
評価値算出部117は、以下に示すいずれかの方法により評価値α[i]を算出する。
(1)評価値の第1の算出方法は、下記の式(23)に示すように、周波数帯域データE11[i]と、周波数帯域データE11[i]に時間的に対応する第2の周波数帯域データE12[j]とを加算する方法である。
なお、周波数帯域データE11[i]と、E11[i]に時間的に対応する第2の周波数帯域データE12[j]とを加算した値に所定値を乗算した値を評価値としてもよい。
(2)評価値の第2の算出方法は、下記の式(24)に示すように、E11[i]に係数β3を乗じた値と、E11[i]に時間的に対応するE12[j]に係数β4を乗じた値との加算値を用いる方法である。ただし、β3>0、β4>0である。第2の算出方法では、E11[i]とE12[j]に対して、各々重み付けを行なって加算していることになる。
(3)評価値の第3の算出方法は、下記の式(25)に示すように、E11[i]の対数値に係数β3を乗じた値と、E11[i]に時間的に対応するE12[j]の対数値に係数β4を乗じた値との加算値を用いる方法である。なお、第1から第3の算出方法は、E11とE12のどちらかが小さい箇所で、評価値をあまり小さくしたくない場合に用いる。第3の算出方法は、それに加えて、E11とE12のそれぞれの値の範囲が大きく異なる場合に適している。
(4)評価値の第4の算出方法は、下記の式(26)に示すように、E11[i]とE11[i]に時間的に対応するE12[j]との積を用いる方法である。なお、式(26)の右辺にさらに所定値を乗算した値を評価値としてもよい。
(5)評価値の第5の算出方法は、下記の式(27)に示すように、E11[i]を基数としγ3を指数とした累乗値と、E11[i]に時間的に対応するE12[j]を基数としγ4を指数とした累乗値との積を用いる方法である。第4及び第5の算出方法は、E11とE12のどちらかが小さければ、評価値も小さくしたい場合に用いる。第5の算出方法は、それに加えて、E11とE12の評価値への影響力に重みを付けたい場合に適している。なお、式(27)の右辺にさらに所定値を乗算した値を評価値としてもよい。
(6)評価値の第6の算出方法は、下記の式(28)に示すように、E11[i]を基数としγ3を指数とした累乗値と係数β3の積と、E11[i]に時間的に対応するE12[j]を基数としγ4を指数とした累乗値と係数β4の積との和を用いる方法である。なお、式(28)の右辺にさらに所定値を乗算した値を評価値としてもよい。
なお、評価値算出部117は、E11[i]≧θ1かつE12[j]≧θ2(θ1、θ2は所定値)の条件が成立する場合、上述した第1から第6の算出方法により評価値を算出し、その条件が成立しない場合、評価値を「0」に設定してもよい。また、評価値算出部117は、評価値α[i]を算出した後に、α[i]<θ3(θ3は所定値)である場合、α[i]を「0」に設定してもよい。
上述した方法によって算出される評価値α[i]は、E11[i]が大きいほど、かつE11[i]に時間的に対応するE12[j]が大きいほど大きな値となる。様々な時間スケールを持つ音楽の重層的な構造の中で、E11[i]は1音符や1拍といった比較的短い時間変化を表し、E12[j]はそれより長い時間変化を表す。
サビの開始位置、曲調が大きく変わる変化点、試聴に適する位置、及び、リスナに強い印象を与える位置等の楽曲の「特徴位置」では、その先頭の周波数帯域が非常に広いことが多く、そこから1から8小節程度の間でも、平均的な周波数帯域が広い場合が多いので、そのような箇所の評価値は大きな値となる。従って、評価値の最大値又は極大値を検出することにより、サビの開始位置等の特徴位置を精度良く検出することができる。
制御部111は、評価値算出部117の処理の終了を検知すると、平滑化部114aに対して動作を開始するように指示する。平滑化部114aは、実施の形態3の平滑化部114と同様な動作を行う。ただし、平滑化部114aは、周波数帯域データE11[i](i=0〜H11−1)の代わりに、評価値α[i](i=0〜Q1×H12−1)を対象として処理を行い、平滑化出力E[i](i=0〜Q1×H12−1)を算出する。なお、平滑化部114aは省略されてもよい。また、実施の形態3と同様に、周波数帯域データ算出部113の後に平滑化部114を設けて周波数帯域データを平滑化してもよい。更に、第2の周波数帯域データを平滑化してもよい。
制御部111は、平滑化部114aの処理の終了を検知すると、特徴位置検出部115に対して動作を開始するように指示する。特徴位置検出部115は、実施の形態3において説明した処理と同様な処理を行って、特徴位置情報103を音響信号分析装置101の外部に出力する。
上述したように、実施の形態4の音響信号分析装置101は、音楽の重層的な構造に起因する異なる時間スケールでの周波数帯域の変化を精度よく検出するために、時間長の異なる2つの時間区間を用いて2種類の周波数帯域データを算出し、それらを組合せて評価値を算出する。これにより、時間的なスケールが異なる周波数帯域の変化がある場合でも、サビの位置等の特徴位置を精度良く検出することができる。
(実施の形態5)
次に、実施の形態5の音響信号分析装置101を図23を用いて説明する。図23は、実施の形態5の音響信号分析装置101の構成図である。実施の形態5の音響信号分析装置101は、図23に示すように、制御部111と、取得部112と、周波数帯域データ算出部113と、平滑化部114aと、特徴位置検出部115と、評価値算出部117aと、音量データ算出部118とを有する。
実施の形態5の音響信号分析装置101は、実施の形態4の音響信号分析装置101が有する第2の周波数帯域データ算出部116の代わりに音量データ算出部118を有する。また、実施の形態5の音響信号分析装置101は、実施の形態4の音響信号分析装置101が有する評価値算出部117に代えて評価値算出部117aを有する。その点が、実施の形態5と実施の形態4の相違点である。
取得部112及び周波数帯域データ算出部113の動作は、実施の形態3において説明した動作と同じである。
音量データ算出部118は、所定の時間区間毎に音量に関するデータを算出する。音量データ算出部118が処理するフレームの時間長Tf13と、周波数帯域データ算出部113が処理するフレームの時間長Tf11とは、同じであってもよいし、異なっていてもよい。実施の形態5では、Tf13>Tf11とするが、これに限定されない。この場合、音量データ算出部118が処理するフレームのサンプル数N13は、N13=Tf13/Tsであるので、周波数帯域データ算出部113が処理するフレームのサンプル数N11よりも多い。
実施の形態4において説明したように、音楽に係る音響信号の周波数成分は、時間スケールの異なる様々な要因(音楽の重層的な構造)により変化するが、音量についても同様なことが言える。
例えば、楽曲のサビの開始点おいては、複数の楽器や歌唱が同時に演奏されることに加え、個々の楽器が「強く(フォルテで)」演奏されることが多いため、16分音符から2分音符に相当する比較的短い時間区間で周波数帯域が広がり、かつ音量が大きくなる傾向が強い。また、通常のサビは数小節以上の長さを持ち、低域パートと高域パートの両方が演奏され続けることが多いため、サビの開始点から数小節に相当する比較的長い時間で周波数帯域が広く、かつ音量が大きい傾向がある。サビにはこのような特性があるので、異なる時間スケールを持つ周波数帯域データと音量データとを組み合せることにより、サビ等の特徴位置の検出精度を向上させることができる。
Tf11を16分音符から2分音符程度以下の長さに設定し、Tf13を1小節から8小節程度の時間長に設定する。例えば、Tf11を4/4拍子でテンポが120の楽曲の16分音符に相当する125msecとし、Tf13を4小節に相当する8secとする。
音量データ算出部118が動作する際のフレームシフトの時間長Tg13と、周波数帯域データ算出部113が動作する際のフレームシフトの時間長Tg11とは、同じであってもよいし、異なっていてもよい。実施の形態5では、Tg13は、Tg13=R1×Tg11であり、音量データ算出部118が動作する際のフレームシフトのサンプル数G13は、G13=R1×G11(R1は1以上の整数)である。しかしながら、Tg13及びG13はこれに限定されない。
音量データ算出部118は、制御部111の指示に従って、図24のフローチャートに示す動作を開始する。図24は、音量データ算出部118の動作の各ステップを示すフローチャートである。
先ず、音量データ算出部118は、式(17)を用いてフレームの総数H13を算出する(S900)。すなわち、音量データ算出部118は、式(17)のN11をN13に置き換え、G11をG13に置き換え、H11をH13に置き換えて、フレームの総数H13を算出する。実施の形態5では、M>N13である。音量データ算出部118が処理するフレーム総数H13は、周波数帯域データ算出部113が処理するフレーム総数H11以下である。
次に、音量データ算出部118は、制御変数iに「0」をセットする(S910)。
次に、音量データ算出部118は、i番目のフレームデータを生成する(S920)。具体的には、音量データ算出部118は、音響データx[i×G13]から音響データx[i×G13+N13−1]をi番目のフレームデータとして生成する。なお、音量データ算出部118は、音響データx[i×G13]から音響データx[i×G13+N13−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、例えば、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。最初に述べた方法は、音響データに矩形窓を掛け合わせることによりi番目のフレームデータを生成する方法と同じ方法であると言える。
ところで、窓関数を用いる場合、通常はフレームの中央で窓関数の係数を最大とし、フレームの先頭と末尾で窓関数の係数を最小とするが、この他の方法を用いてもよい。例えば、音量データ算出部118は、フレームの先頭(x[i×G13])で窓関数の係数を最大とし、その後窓関数の係数を順次減少させ、フレームの末尾(x[i×G13+N13−1])で窓関数の係数が最小となるようにしてもよい。i番目のフレームデータを「D13[i][j](j=0〜ND13、ただしND13=N13−1)」と記載する。
周波数帯域データ算出部113が処理するi×R1番目のフレームデータの先頭D11[i×R1][0]と、音量データ算出部118が処理するi番目のフレームデータの先頭D13[i][0]が、ともにx[i×G13]となって一致するが、必ずしもこのようにフレームの先頭を一致させなくてもよい。例えば、フレームの中央を一致させるようにしたり、フレームの最後を一致させるようにしてもよい。
次に、音量データ算出部118は、i番目のフレームデータを使って、後述する方法に従って音量データを算出する(S930)。
次に、音量データ算出部118は、制御変数iの値を「1」増やす(S940)。
次に、音量データ算出部118は、制御変数iの値がH13未満であるか否かを判定する(S950)。音量データ算出部118は、制御変数iの値がH13未満であると判定すると(S950でYes)、ステップS920に戻ってステップS940までの処理を繰り返し、制御変数iの値がH13であると判定すると(S950でNo)、処理を終了する。
音量データ算出部118は、上述した処理により、H13個の音量データE13[i](i=0〜H13−1)を算出し、処理が終了したことを制御部111に通知する。
次に、音量データ算出部118がステップS930において行う処理の詳細を説明する。
(1)音量データの第1の算出方法は、音響データの振幅の絶対値を用いる方法である。具体的には、下記の式(29)に示すように、振幅の絶対値をフレームのサンプル数だけ加算した値(総和)をi番目のフレームに対応する音量データとする。
なお、下記の式(30)に示すように、総和の代わりに平均値を用いてi番目のフレームに対応する音量データを算出してもよい。
(2)音量データの第2の算出方法は、音響データの振幅の2乗を用いる方法である。具体的には、下記の式(31)に示すように、振幅の2乗の値をフレームのサンプル数だけ加算した値(総和)をi番目のフレームに対応する音量データとする。
なお、下記の式(32)に示すように、総和の代わりに平均値を用いてi番目のフレームに対応する音量データを算出してもよい。また、式(31)又は式(32)の右辺の平方根をとった値をi番目のフレームに対応する音量データE13[i]としてもよい。
(3)音量データの第3の算出方法は、所定の範囲の周波数成分を用いる方法である。i番目のフレームデータD13[i][j]に対して、離散フーリエ変換(DFT)を行い、周波数スペクトルS13[i][k](k=0〜N13/2)を算出する。周波数スペクトルは、振幅スペクトルとパワースペクトルのいずれでもよい。そして、所定の範囲の各周波数の強度の総和をE13[i]とする。
(4)音量データの第4の算出方法は、隣接する2つのフレームの音量を示す数値の差を用いる方法である。フレームの音量を示す数値は、上述した第1から第3のいずれかの算出方法により得られる値である。例えば、第1の算出方法によって得られた値を用いる場合、i−1番目のフレームに対応する音響データを式(29)に代入したときの演算結果をE13’[i−1]として保持するとともに、i番目のフレームに対応する音響データを式(29)に代入したときの演算結果をE13’[i]として保持する。そして、E13’[i]とE13’[i−1]との差E13[i]=E13’[i]−E13’[i−1]を、音量データとして算出する。この方法は、音量の変化量を算出する方法である。
上述した第1から第4の算出方法において、例えば、音量データの最大値が1となり、最小値が0になるように、得られたデータを正規化してもよい。
制御部111は、周波数帯域データ算出部113及び音量データ算出部118の処理の終了を検知すると、評価値算出部117aに対して動作を開始するように指示する。評価値算出部117aは、実施の形態4の評価値算出部117と同様な動作を行う。ただし、実施の形態4では、評価値算出部117は、周波数帯域データE11と第2の周波数帯域データE12とを用いて評価値を算出したが、実施の形態5では、評価値算出部117aは、周波数帯域データE11と音量データE13とを用いて評価値αを算出する。
制御部111は、評価値算出部117aの処理の終了を検知すると、平滑化部114aに対して動作を開始するように指示する。平滑化部114aは実施の形態4と同じ動作を行う。
制御部111は、平滑化部114aの処理の終了を検知すると、特徴位置検出部115に対して動作を開始するように指示する。特徴位置検出部115は、実施の形態3において説明した動作と同じ動作を行って、特徴位置情報103を音響信号分析装置101の外部に出力する。
上述したように、実施の形態5の音響信号分析装置101は、音楽の重層的な構造に起因する異なる時間スケールでの周波数帯域の変化と音量変化とを精度良く検出するために、時間長の異なる2つの時間区間を用いて周波数帯域データと音量データとを算出し、それらを組合せて評価値を算出する。このため、更に精度良く特徴位置を検出することができる。
(実施の形態6)
次に、実施の形態6の音響信号分析装置101を図25を用いて説明する。図25は、実施の形態6の音響信号分析装置101の構成図である。実施の形態6の音響信号分析装置101は、図25に示すように、制御部111と、取得部112と、周波数帯域データ算出部113と、平滑化部114aと、特徴位置検出部115と、第2の周波数帯域データ算出部116と、評価値算出部117と、拍時間検出部119とを有する。
実施の形態6音響信号分析装置101は、実施の形態4の音響信号分析装置101が有する構成部に加えて拍時間検出部119を有している。その点が、実施の形態6と実施の形態4の相違点である。
制御部111は、取得部112によって音響データが生成されたことを検知すると、周波数帯域データ算出部113及び第2の周波数帯域データ算出部116に動作を開始するように指示する前に、拍時間検出部119に動作を開始するように指示する。
拍時間検出部119は、フレーム単位で処理を行う。拍時間検出部119が処理するフレームの時間長をTf14とし、拍時間検出部119が動作する際のフレームシフトの時間長をTg14とする。拍時間検出部119が処理するフレームのサンプル数N14は、N14=Tf14/Tsであり、フレームシフトのサンプル数G14は、G14=Tg14/Tsである。拍時間を精度良く算出するために、Tf14及びTg14は1拍の長さよりもかなり短い時間に設定される。一般的な音楽では、テンポが60から240であり、1拍の時間長が250msecから1secの範囲であることが多いので、Tf14及びTg14は、5msecから50msec程度の適切な値に設定される。
拍時間検出部119は、図26に示すフローチャートに従って処理を行う。図26は、拍時間検出部119の動作の各ステップを示すフローチャートである。
拍時間検出部119は、先ず、式(17)を用いてフレームの総数H14を算出する(S1000)。具体的には、拍時間検出部119は、式(17)のN11をN14に置き換え、G11をG14に置き換え、H11をH14に置き換えて、フレームの総数H14を算出する。
次に、拍時間検出部119は、制御変数iに「0」をセットする(S1010)。
次に、拍時間検出部119は、i番目のフレームデータを生成する(S1020)。具体的には、拍時間検出部119は、音響データx[i×G14]から音響データx[i×G14+N14−1]をi番目のフレームデータとして生成する。なお、拍時間検出部119は、音響データx[i×G14]から音響データx[i×G14+N1−1]までのデータに窓関数を掛け合わせた値をi番目のフレームデータとして生成してもよい。窓関数は、例えば、ハミング窓関数、ハニング窓関数、ブラックマン窓関数、又は、ガウス窓関数等である。最初に述べた方法は、音響データに矩形窓を掛け合わせることによりi番目のフレームデータを生成する方法と同じ方法であると言える。i番目のフレームデータを「D14[i][j](j=0〜ND14、ただしND14=N14−1)」と記載する。
次に、拍時間検出部119は、i番目のフレームに対応する音量の変化量を算出する(S1030)。具体的には、拍時間検出部119は、実施の形態5の音量データ算出部118が用いる音量データの第4の算出方法を用いて、音量の変化量E14[i]を算出する。
次に、拍時間検出部119は、制御変数iの値を「1」増やす(S1040)。
次に、拍時間検出部119は、制御変数iの値がH14未満であるか否かを判定する(S1050)。拍時間検出部119は、制御変数iの値がH14未満であると判定すると(S1050でYes)、ステップS1020に戻ってステップS1040までの処理を繰り返す。
拍時間検出部119は、制御変数iの値がH14であると判定すると(S1050でNo)、音量の変化量E14[i](i=0〜H14−1)の自己相関を算出する(S1060)。拍時間検出部119は、自己相関のインデックスの差Δを所定のテンポの範囲で順次変えながら、下記の式(33)に従って自己相関Y(Δ)を算出する。
式(33)において、He及びHfは、0≦He<Hf≦H14−1−Δ、を満たす所定の整数である。例えば、テンポの検出範囲が60から240(1拍の時間250msecから1000msec)である場合、E14はTg14の時間間隔で生成されているので、Δ=(250/Tg14)から(1000/Tg14)の範囲でΔは変えられる。Tg14は、msec単位の値である。
次に、拍時間検出部119は、自己相関Y(Δ)のピーク位置を検出して、拍の時間長τを算出する(S1070)。ステップS1060において算出された自己相関Y(Δ)は、図14に示すように、いくつかのピークを持っている。拍時間検出部119は、検出対象の最短の拍から検出対象の最長の拍の間で最大値の位置Δmaxを検出し、τ=Tg14×Δmaxを1拍の時間長とする。なお、図14において、「P」は検出対象の最短の拍に相当するΔであり、「R」は検出対象の最長の拍に相当するΔである。
また、図15に示すように、拍の時間長の存在確率を示す分布Ω(Δ)が用意されており、拍時間検出部119は、自己相関Y(Δ)と分布Ω(Δ)との積(Ω(Δ)Y(Δ))を算出した後に、その最大値の位置を検出し、それにより1拍の時間長を検出してもよい。拍時間検出部119は、Ω(Δ)を用いることにより、更に精度良く拍の時間長を算出することができる。なお、図15において、「P」は検出対象の最短の拍に相当するΔであり、「U」は拍の存在確率が最大となるΔであり、「R」は検出対象の最長の拍に相当するΔである。
拍時間検出部119は、このようにして検出した拍の時間長τを制御部111に通知する。
制御部111は、τ11=λ11×τ、τ12=λ12×τの2つの数値を算出する。λ11及びλ12は、λ11<λ12を満たす、所定の係数である。例えば、λ11は「0.25」から「1」の値であり、λ12は「4」から「8」程度の値である。
そして、制御部111は、Tf11=τ11とするように、周波数帯域データ算出部113に指示するとともに、Tf12=τ12とするように、第2の周波数帯域データ算出部116に指示する。その後、制御部111は、周波数帯域データ算出部113及び第2の周波数帯域データ算出部116に対して動作を開始するように指示する。周波数帯域データ算出部113は、拍時間検出部119によって検出された一拍の時間長に基づくτ11をフレームの時間長Tf11に設定し、第2の周波数帯域データ算出部116は、拍時間検出部119によって検出された一拍の時間長に基づくτ12をフレームの時間長Tf12に設定する。それ以降の各部の動作は、実施の形態4において説明した動作と同じである。
楽曲の1拍の時間長は、音楽のジャンルやスタイルによって異なるため、周波数帯域データや音量データを算出する際の最適な区間長も、音楽のジャンルやスタイルによって異なり、全てのジャンルの音楽に対して最適な区間長を予め決めておくことは難しい。実施の形態6の音響信号分析装置101は、1拍の時間長を検出し、それに基づいて周波数帯域データ及び第2の周波数帯域データを算出する際の区間長を設定する。これにより、様々なジャンルやタイプの音楽に対して、精度良く特徴位置を検出することができる。
なお、実施の形態5において説明した音量データ算出部118も、拍の時間長に基づいてTf13を設定してもよい。
また、上述した実施の形態1から実施の形態6の各方法を組合せてもよい。例えば、実施の形態4の方法と実施の形態5の方法とを組合せて、周波数帯域データと、第2の周波数帯域データと、音量データとを算出し、それら3つを用いて評価値を算出してもよい。また、実施の形態1の方法と実施の形態4の方法とを組合せて、音量に関する第1の特徴量と、音量に関する第2の特徴量と、周波数帯域データと、第2の周波数帯域データとを算出し、それら4つを用いて評価値を算出してもよい。更に、3種類以上の周波数帯域データを算出してもよい。このように、異なる種類の特徴量(音量に関する特徴量も、周波数帯域に関するデータも含む)を組合せて評価値を算出することにより、多種多様な楽曲に対して、楽曲の特徴的な箇所を更に精度良く検出することができる。
更に、上述した各実施の形態の音響信号分析装置101の各構成部の機能は、例えばコンピュータのCPU(プロセッサ)及びメモリ等のハードウェアと、その機能を実現するためのコンピュータプログラムとが協働することによって実現される。しかしながら、上記各機能は、専用の回路により実現される等、どのような形態により実現されてもよい。また、音響信号分析装置101の各構成部の機能を実現するためのコンピュータプログラムは、記録媒体に格納されてもよい。