説明

盛り上がり検出装置及びプログラム

【課題】曲波形データの盛り上がり区間を検出することができる盛り上がり検出装置及びプログラムを提供することを課題とする。
【解決手段】曲波形データを平滑化する平滑化部(3401)と、前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部(3402)と、前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部(3403)とを有することを特徴とする盛り上がり検出装置が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、盛り上がり検出装置及びプログラムに関する。
【背景技術】
【0002】
音楽CD等の複数の楽器音の混ざった音楽音響信号(オーディオ信号)からビート位置を検出するテンポ検出装置として、下記の特許文献1が知られている。特許文献1では、ビート位置の検出方法として、入力波形を所定の時間間隔(以下、フレーム)でFFT演算し、求められたパワースペクトルから各音階音のパワーを求め、この各音階音のパワーのフレーム毎の増分値を計算し、これを全音階音で合計してフレーム毎の全体の音の変化度合いを求め、このフレーム毎の全体の音の変化度合いの自己相関を計算して周期性を求め、この自己相関の値が最大となるフレーム間隔から平均的なビート間隔(いわゆるテンポ)を求める。
【0003】
また、下記の特許文献2には、ビート検出波形の先頭を演奏させながら、タッピング検出部を用い、ユーザにビート位置を、タッピングしてもらうようにし、タッピングの揺らぎが揺らぎ算出部で一定の範囲内であると判定されたら、テンポ候補検出部で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ検出装置が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−52394号公報
【特許文献2】特開2008−40284号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ビート位置の検出の他に、より音楽と同期させるために盛り上がり区間を検出することが望まれている。しかし、曲波形データの盛り上がり区間を検出する装置は、今までなかった。
【0006】
本発明の目的は、曲波形データの盛り上がり区間を検出することができる盛り上がり検出装置及びプログラムを提供することである。
【課題を解決するための手段】
【0007】
本発明の盛り上がり検出装置は、曲波形データを平滑化する平滑化部と、前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部と、前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部とを有することを特徴とする。
【0008】
また、本発明のプログラムは、曲波形データを平滑化する平滑化ステップと、前記平滑化ステップにより平滑化された曲波形データの極小点を検出する極小点検出ステップと、前記極小点検出ステップにより検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出ステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0009】
本発明によれば、曲波形データの盛り上がり区間を検出することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の第1の実施形態による盛り上がり検出装置の盛り上がり検出方法を示すフローチャートである。
【図2】曲波形データを示す図である。
【図3】曲波形データの振幅の絶対値を示す図である。
【図4】第1の移動平均を示す図である。
【図5】ダウンサンプリングを示す図である。
【図6】第2の移動平均を示す図である。
【図7】図7(A)〜(C)は極小点の補正を示す図である。
【図8】極小点の補正を示す図である。
【図9】図9(A)及び(B)は盛り上がり区間の候補を示す図である。
【図10】図10(A)及び(B)は盛り上がり区間の接続を示す図である。
【図11】図11(A)及び(B)は短い盛り上がり区間の候補の除外を示す図である。
【図12】本発明の第2の実施形態によるイントロ及びエンディング検出方法を示すフローチャートである。
【図13】フェードイン(アウト)検出処理の詳細を示すフローチャートである。
【図14】フェードイン(アウト)検出処理の詳細を示すフローチャートである。
【図15】ドラムなし(アカペラ等)検出処理の詳細を示すフローチャートである。
【図16】大きな音(イントロ)検出処理の詳細を示すフローチャートである。
【図17】大きな音(エンディング)検出処理の詳細を示すフローチャートである。
【図18】曲波形データを示す図である。
【図19】1秒間隔の配列データを示す図である。
【図20】フェードインの終点検出処理を示す図である。
【図21】前フレームからの増加量を示す図である。
【図22】急激な増加の検出処理を示す図である。
【図23】フェードインの終点の変更処理を示す図である。
【図24】フェードインの始点の検出処理を示す図である。
【図25】フェードイン区間の前の振幅検出処理を示す図である。
【図26】図26(A)〜(C)は高速フーリエ変換処理を示す図である。
【図27】低音域のパワー検出処理を示す図である。
【図28】ドラムなし区間の始点検出処理を示す図である。
【図29】ドラムなし区間のパワー検出処理を示す図である。
【図30】大きな音区間の終点検出処理を示す図である。
【図31】大きな音区間の始点検出処理を示す図である。
【図32】高速フーリエ変換処理を示す図である。
【図33】盛り上がり検出装置(コンピュータ)のハードウエア構成例を示すブロック図である。
【図34】盛り上がり検出装置(コンピュータ)のプログラムの機能を説明するためのブロック図である。
【発明を実施するための形態】
【0011】
(第1の実施形態)
図33は、本発明の第1の実施形態による盛り上がり検出装置(コンピュータ)のハードウエア構成例を示すブロック図である。盛り上がり検出装置は、例えばパーソナルコンピュータで構成される。バス3301には、中央処理装置(CPU)3302、ROM3303、RAM3304、ネットワークインタフェース3305、入力装置3306、出力装置3307及び外部記憶装置3308が接続されている。
【0012】
CPU3302は、データの処理又は演算を行うと共に、バス3301を介して接続された各種構成要素を制御するものである。ROM3303には、予めCPU3302の制御手順(コンピュータプログラム)を記憶させておき、このコンピュータプログラムをCPU3302が実行することにより、起動する。外部記憶装置3308にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM3304にコピーされて実行される。RAM3304は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。外部記憶装置3308は、例えばハードディスク記憶装置やCD−ROM等であり、電源を切っても記憶内容が消えない。CPU3302は、RAM3304内のコンピュータプログラムを実行することにより、図1、図12〜図17の処理を行う。
【0013】
ネットワークインタフェース3305は、インターネット等のネットワークに接続するためのインタフェースである。入力装置3306は、例えばキーボード及びマウス等であり、各種指示又は入力等を行うことができる。出力装置3307は、表示装置(ディスプレイ)、印刷装置(プリンタ)及びスピーカ等である。
【0014】
図1は、本実施形態による盛り上がり検出装置の盛り上がり検出方法を示すフローチャートである。CPU3302がプログラムを実行することにより、図1の処理が行われる。
【0015】
ステップS101では、CPU3302は、外部記憶装置3308から曲波形データ(WAVデータ)をRAM3304にロードし、モノラル化処理及び正規化処理を行う。具体的には、CPU3302は、曲波形データがステレオの場合には、ステレオの曲波形データをモノラルの曲波形データに変換する。次に、CPU3302は、曲波形データを正規化することにより曲波形データの最大振幅をダイナミックレンジの最大値に合わせ、図2の曲波形データを生成する。
【0016】
次に、ステップS102では、CPU3302は、盛り上がりを数値化するために、波形振幅の絶対値を、移動平均などを使って平滑化する。なお、高速フーリエ変換(FFT)した結果のパワーの合計やパワーのlogの合計などから盛り上がりを数値化してもよい。具体的には、CPU3302は、図3に示すように、曲波形データの振幅を絶対値化する。次に、CPU3302は、図3のデータに対して前後1秒で移動平均をとり、図4の滑らかなデータを生成する。なお、図3は横軸が縮小されているので、実際には曲波形データの各ピーク間に小さな値があるため、平均をとると図4のように全体的に下がった形になる。
【0017】
次に、ステップS103では、CPU3302は、もう一度移動平均などを使って、さらに平滑化する。ステップS102の1回の移動平均だけでは所望の滑らかさが得られないため、ステップS103で2回目の移動平均を行う。具体的には、CPU3302は、図5に示すように、図4のデータを間引くなどしてサンプル数を減らす。例えば、44.1kHzのサンプル数を100Hzのサンプル数に減らす。なお、サンプル数を減らすといっても図4と図5は0.1秒間隔にプロットしているので、差異が明確に現れない。次に、CPU3302は、図5のデータに対して前後1秒で移動平均をとり、図6の滑らかなデータを生成する。
【0018】
次に、ステップS104では、CPU3302は、図6のデータに対して極小点を探し、前後の極大点の値が小さい方と比較してあまり違いがなければ、極大点間の最低値を極大点の小さい方として値を修正し、極小点をなくす。これは、移動平均した結果を区間として認識し易くするためである。具体的には、CPU3302は、図7(A)に示すように、細かい凸凹を削除することを目的に、変化の小さい極小点702のまわりのデータを補正する。CPU3302は、極小点702を探し、その前の極大点701及びその後の極大点703と比較し、前後の極大点701,703の小さい方の90%よりも極小点702の値の方が大きい場合は凸凹が小さいので、極大点701及び703間のデータで極大点の小さい方の値よりも、小さいデータは、図7(B)に示すように極大点の小さい方の値まで持ち上げ、図7(C)のデータを生成する。図8は、ステップS104の処理を行った結果のデータを示し、図6のデータに対して細かい凹凸が除去されている。
【0019】
次に、ステップS105では、CPU3302は、図8のデータを基に極小点間を盛り上がり区間の候補として全て抽出する。具体的には、CPU3302は、まず、盛り上がり区間の候補を探すため、図9(A)に示すように、極小点間を盛り上がり区間901として記録する。
【0020】
次に、ステップS106では、CPU3302は、図4の1回目の平滑化のデータで、盛り上がり区間の始点からみて、最初に極大値が現れるまでの間で、最も数値が変化している位置に始点を修正する。具体的には、CPU3302は、図9(A)の記録されたそれぞれの区間901について始点の位置を調整するため、図9(B)に示すように、区間901の先頭から最初の極大点902までの間でもっとも前のデータからの変化量の大きい位置903を区間の始点に修正する。
【0021】
次に、ステップS107では、CPU3302は、図9(A)の記録されたそれぞれの区間901について終点の位置を調整するため、始点と同様の方法で、区間901の最後の極大点から区間901の最後までの間で最も次のデータへの変化量が大きい位置を区間901の終点に修正する。
【0022】
次に、ステップS108では、CPU3302は、盛り上がり区間を選別するために盛り上がりの最大値を求め、一定の割合以上の区間最大値を持つもののみ盛り上がり区間とする。なお、区間平均値、区間合計、区間内の閾値以上のデータ割合などを使って区間を選別してもよい。
【0023】
具体的には、CPU3302は、盛り上がり区間901の候補全ての中で最大値を求める。次に、CPU3302は、盛り上がり区間それぞれの最大値が、上記の全ての候補の中の最大値のN%(初回はN=65)未満の場合は、盛り上がり区間ではない(データ波形上では小さい山)と判断し、盛り上がり区間の候補からはずす。次に、CPU3302は、全体の長さに対して、盛り上がり区間の候補として残ったものの合計の長さを算出し、33%以上なら、まだ盛り上がり区間の候補が多すぎると判断し、上記のNを5上げて、上記の処理を繰り返し、盛り上がり区間の候補の数を減らす。
【0024】
次に、CPU3302は、盛り上がり区間の候補がある程度絞られたところで、図10(A)に示すように、盛り上がり区間1001と次の盛り上がり区間1003の間の区間1002の値が、ある程度大きい場合は、図10(B)に示すように、2つの盛り上がり区間1001及び1003を1つの盛り上がり区間1004につなげる。例えば、CPU3302は、盛り上がり区間1001と次の盛り上がり区間1003の間の区間1002の値が全て、盛り上がり区間1001の終わりの値と次の盛り上がり区間1003の初めの値で小さい方の値に対し、75%以上なら盛り上がり区間1001及び1003の間の区間1002も盛り上がっていると判断し、1つの盛り上がり区間1004にまとめる。
【0025】
次に、CPU3302は、盛り上がり区間の候補の中で最大の長さを求め、各盛り上がり区間の中で、最大の長さの30%以下の候補をはずす。例えば、図11(A)では、区間1101及び1102の長さが最大の長さの30%以下なので候補からはずし、図11(B)に示すように、最終的に区間1103及び1104が盛り上がり区間として検出される。
【0026】
以上のように、本実施形態によれば、曲波形データの盛り上がり区間を検出することができる。これにより、曲波形データの盛り上がり区間に同期し、画像(静止画又は動画)データを再生することにより、曲及び画像を、同期をとりながら再生することができる。例えば、曲波形データの盛り上がり区間で、静止画を動かす等の盛り上がり再生処理を行うことができる。これにより、曲波形データの盛り上がり区間に同期し、画像に盛り上がり効果を付与することができる。
【0027】
図34は、図33のコンピュータのプログラムの機能を説明するためのブロック図である。コンピュータがプログラムを実行することにより、盛り上がり検出装置(方法)が実現される。盛り上がり検出装置(方法)3400は、平滑化部(ステップ)3401、極小点検出部(ステップ)3402、及び盛り上がり区間検出部(ステップ)3403を有する。平滑化部3401は、第1の平滑化部(ステップ)3411及び第2の平滑化部(ステップ)3412を有する。
【0028】
平滑化部3401は、ステップS102及びS103に対応し、曲波形データを平滑化する。極小点検出部3402は、ステップS104に対応し、平滑化部3401により平滑化された曲波形データの極小点を検出する。盛り上がり区間検出部3403は、ステップS105〜S108に対応し、極小点検出部3402により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する。
【0029】
詳しくは、第1の平滑化部3411は、ステップS102に対応し、曲波形データを平滑化する。第2の平滑化部3412は、ステップS103に対応し、第1の平滑化部3411により平滑化された曲波形データを平滑化する。極小点検出部3402は、第2の平滑化部3412により平滑化された曲波形データの極小点を検出する。盛り上がり区間検出部3403は、ステップS106及びS107に対応し、第1の平滑化部3411により平滑化された曲波形データの変化量を基に、極小点検出部3402により検出された極小点間の区間の始点及び終点を修正し、盛り上がり区間を検出する。
【0030】
極小点検出部3402は、図7(A)〜(C)に示すように、平滑化部3401により平滑化された曲波形データの極小点を検出し、検出された極小点が検出された極小点の前又は後の極大点に対して閾値割合より大きければその極小点を除外して極小点を検出する。
【0031】
盛り上がり区間検出部3403は、図10(A)及び(B)に示すように、検出された2つの盛り上がり区間の間の区間の値が検出された2つの盛り上がり区間の値に対して閾値割合より大きいときには、検出された2つの盛り上がり区間を1つの盛り上がり区間につなげる。
【0032】
また、盛り上がり区間検出部3403は、図11(A)及び(B)に示すように、検出された盛り上がり区間のうちの最大の長さの盛り上がり区間に対して、検出された盛り上がり区間の長さが閾値割合以下であればその盛り上がり区間を除外して盛り上がり区間を検出する。
【0033】
(第2の実施形態)
図12は、本発明の第2の実施形態によるイントロ及びエンディング検出方法を示すフローチャートである。ステップS1201では、CPU3302は、外部記憶装置3308から曲波形データ(WAVデータ)をRAM3304にロードし、モノラル化処理及び正規化処理を行う。具体的には、CPU3302は、曲波形データがステレオの場合には、ステレオの曲波形データをモノラルの曲波形データに変換する。次に、CPU3302は、曲波形データを正規化することにより曲波形データの最大振幅をダイナミックレンジの最大値に合わせ、図18の曲波形データを生成する。
【0034】
次に、ステップS1202では、CPU3302は、フェードイン(アウト)検出処理を行う。フェードイン(アウト)検出処理の詳細は、後に図13及び図14を参照しながら説明する。フェードイン(アウト)が検出されたときにはステップS1205に進み、フェードイン(アウト)が検出されないときにはステップS1203に進む。ステップS1205では、CPU3302は、フェードイン(アウト)の種類のイントロ(エンディング)が検出されたと判断し、検出されたフェードイン(アウト)区間をイントロ(エンディング)区間として設定する。
【0035】
ステップS1203では、CPU3302は、先頭部又は最後部のドラムなし(アカペラ等)検出処理を行う。曲波形データ内の先頭部又は最後部にドラムなしの区間があれば、その区間はアカペラ等のイントロ又はエンディングであると判断することができる。ドラムなし(アカペラ等)検出処理の詳細は、後に図15を参照しながら説明する。ドラムなし(アカペラ等)が検出されたときにはステップS1206に進み、ドラムなし(アカペラ等)が検出されないときにはステップS1204に進む。ステップS1206では、CPU3302は、ドラムなし(アカペラ等)の種類のイントロ(エンディング)が検出されたと判断し、検出されたドラムなし(アカペラ等)区間をイントロ(エンディング)区間として設定する。
【0036】
ステップS1204では、CPU3302は、先頭部又は最後部の大きな音検出処理を行う。大きな音検出処理の詳細は、後に図16及び図17を参照しながら説明する。大きな音が検出されたときにはステップS1207に進み、大きな音が検出されないときにはステップS1208に進む。ステップS1207では、CPU3302は、大きな音の種類のイントロ(エンディング)が検出されたと判断し、検出された大きな音区間をイントロ(エンディング)区間として設定する。
【0037】
ステップS1208では、CPU3302は、イントロ(エンディング)の特徴がないと判定し、イントロ(エンディング)が検出されなかったことを記録する。
【0038】
以上のように、本実施形態によれば、曲波形データのイントロ及び/又はエンディングを検出することができる。これにより、曲波形データのイントロ及び/又はエンディングに同期し、画像(静止画又は動画)データを再生することにより、曲及び画像を、同期をとりながら再生することができる。例えば、曲波形データのイントロでは画像が徐々に現れ、曲波形データのエンディングでは画像が徐々に消えるような画像処理を行うことができる。
【0039】
図13及び図14は、図12のステップS1202のフェードイン(アウト)検出処理の詳細を示すフローチャートである。フェードインは、音量が徐々に大きくなりながら曲が始まるイントロである。フェードアウトは、音量が徐々に小さくなりながら曲が終わるエンディングである。
【0040】
ステップS1301では、CPU3302は、図19に示すように、曲波形データ1901に対して1秒間隔で振幅の絶対値の最大値の配列データ1902を作成する。なお、図1(第1の実施形態)と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【0041】
次に、ステップS1302では、CPU3302は、図20に示すように、配列データ1902の最初の大きな極大点1903を探し、フェードインの終点と仮決定する。ここで、大きな極大点とは配列データ1902の最大値の半分以上の値を持つ極大点を指す。エンディングについても、イントロと同様に、最後からスキャンして大きな極大点を探し、フェードアウトの始点と仮決定する。
【0042】
次に、ステップS1303では、CPU3302は、図21に示すように、イントロについては最初から仮のフェードインの終点まで、前フレームからの増加量の配列データ2101を作成し、エンディングについてはフェードアウトの始点から最後まで、前フレームからの減少量の配列データを作成する。その際、増加量又は減少量がマイナスのときには0にする。
【0043】
次に、ステップS1304では、CPU3302は、イントロでは最初の極大点(仮のフェードインの終点)1903より前に急激過ぎる増加があるか否かをチェックする。ある場合にはステップS1305に進み、ない場合にはステップS1306に進む。同様に、CPU3302は、エンディングでは最後の極大点(仮のフェードアウトの始点)より後に急激過ぎる減少があるか否かをチェックする。ある場合にはステップS1305に進み、ない場合にはステップS1306に進む。ステップS1305では、CPU3302は、フェードイン又はフェードアウトとはみなさず、フェードイン又はフェードアウトが検出されなかったと判断する。
【0044】
具体的には、CPU3302は、イントロの場合、図21に示すように、急激過ぎる増加があるかステップS1303で作成された配列データ2101を使って調べる。ここで、急激とは図19の配列データ1902の最大値の半分以上の値を指す。急激過ぎる増加がある場合は、フェードインとするのはふさわしくないので、ステップS1305に進む。例えば、図22の配列データ2201では、データ2202が急激すぎる増加であり、その位置から突然音量が大きくなることを示しているので、図12のステップS1207の大きな音の種類のイントロとして判断されるべきであるので、このイントロはフェードインではないと判断する。
【0045】
次に、ステップS1306では、CPU3302は、イントロについては最初の極大点(仮のフェードインの終点)より前に急激な増加がある場合はその位置を、なければ最初の極大点をフェードインの終点として決定する。同様に、CPU3302は、エンディングについては最後の極大点(仮のフェードアウトの始点)より後に急激な減少がある場合はその位置を、なければ最後の極大点をフェードアウトの始点として決定する。すなわち、CPU3302は、仮のフェードインの終点位置から前に向かって調べ、急激とはいかないまでも前フレームと比べて急増化している部分があれば、その位置をフェードインの終点とする。これは、最初から仮のフェードインの終点までの間で徐々に音量が上昇している部分のみをフェードイン区間としたいためである。図23では、データ2301が急増化しているため、フェードインの終点を変更する。なお、図1(第1の実施形態)の盛り上がり検出と同様に、移動平均などで平滑化した場合は、なるべく元に近いデータで実際の始点及び/又は終点を決めることが好ましい。
【0046】
次に、CPU3302は、イントロの場合、フェードインの終点のフレームから、実際の曲波形データ1901の位置を特定できるので、その範囲内(1秒間)でフェードイン終点とした位置のフレームの値と同じ値の場所を探し、フェードインの終点を確定する。エンディングの場合も同様である。
【0047】
次に、ステップS1307では、CPU3302は、図19の配列データ1902を基に、イントロの場合はフェードインの終点の前にある極小点を探し、エンディングの場合はフェードアウトの始点の後にある極小点を探す。図24の場合、配列データ2401を基にイントロの極小点2402を探す。
【0048】
次に、ステップS1308では、CPU3302は、イントロの場合は極小点から後ろに向かって最初にある程度の振幅が出る位置をフェードインの始点とし、エンディングの場合は極小点から前に向かって最初にある程度の振幅が出る位置をフェードアウトの終点とする。
【0049】
具体的には、CPU3302は、極小点2402が該当するフレームの時刻間において、図19と同様の方法で、1秒よりも細かい間隔でフレームデータを作成し、そのフレームデータの最後の極小点を探す。次に、CPU3302は、上記の探した極小点が該当するフレームの時刻間において、図19と同様の方法でさらに細かい間隔でフレームデータを作成し、そのフレームデータの最後の極小点を探す。CPU3302は、上記の処理を繰り返し、極小点の位置を特定し、これを仮のフェードインの始点とする。次に、CPU3302は、仮のフェードインの始点から終点に向かって、ある程度波形が出てくるところまでフェードインの始点をずらして範囲を狭める。これは、実際に聞いても聞き取れないほどの小さな音の部分はフェードインの区間から省くことが目的である。
【0050】
次に、ステップS1309では、CPU3302は、フェードインの始点から終点までのフェードイン区間の長さが3秒未満の場合は、フェードインとしては短すぎで、ふさわしくないのでステップS1310に進み、3秒以上の場合はステップS1311に進む。同様に、CPU3302は、フェードアウトの始点から終点までのフェードアウト区間の長さが3秒未満の場合は、フェードアウトとしては短すぎで、ふさわしくないのでステップS1310に進み、3秒以上の場合はステップS1311に進む。ステップS1310では、CPU3302は、フェードイン又はフェードアウトとはみなさず、フェードイン又はフェードアウトが検出されなかったと判断する。
【0051】
なお、ステップS1309と同様に、ステップS1306の後においても、CPU3302は、波形の先頭(0秒)からフェードインの終点までの長さが3秒未満の場合は、フェードインとしては短すぎで、ふさわしくないので、ステップS1310に進むようにしてもよい。エンディングについても同様である。
【0052】
ステップS1311では、CPU3302は、イントロの場合はフェードイン区間より前にある程度の振幅を持った波形があるか調べる。ある程度の振幅を持った波形がある場合は、フェードインする前に語りなどの小さな音でのイントロ部があり、ステップS1312に進み、フェードインではないと判断する。例えば、図25のように、データ領域2501がある場合は、データ領域2501も別のイントロ部となるので、フェードインのイントロではないと判断する。これに対し、ある程度の振幅を持った波形がない場合は、ステップS1313に進み、検出区間をフェードイン区間とし、フェードインのイントロが検出されたと判断する。同様に、CPU3302は、エンディングの場合はフェードアウト区間より後にある程度の振幅を持った波形があるか調べる。ある程度の振幅を持った波形がある場合はステップS1312に進み、フェードアウトのエンディングではないと判断する。これに対し、ある程度の振幅を持った波形がない場合は、ステップS1313に進み、検出区間をフェードアウト区間とし、フェードアウトのエンディングが検出されたと判断する。
【0053】
図15は、図12のステップS1203のドラムなし(アカペラ等)検出処理の詳細を示すフローチャートである。イントロがドラムなしである場合には、アカペラ等のイントロであると判断することができる。
【0054】
ステップS1501では、CPU3302は、曲波形データに対して数十ミリ秒間隔で高速フーリエ変換を行う。例えば、サンプル数2048、オーバーラップ1/2で高速フーリエ変換を行い、各フレームのパワーを求める。
【0055】
次に、ステップS1502では、CPU3302は、フレーム毎に低音域とそれ以外でのパワー合計配列データを作成する。例えば、CPU3302は、図26(A)に示すように、250Hz以下をドラムが出ている低音域とし、フレーム毎に250Hz以下のパワー2601を合計した図26(B)の低音域のパワー合算値と、250Hzより上のパワー2602を合計した図26(C)のそれ以外のパワー合算値を求める。
【0056】
次に、ステップS1503では、CPU3302は、イントロの場合は前半で最初に低音域のパワーが大きくなる位置をドラムなしの終点とする。同様に、CPU3302は、エンディングの場合は後半で最後に低音域のパワーが小さくなる位置をドラムなしの始点とする。
【0057】
図27は、曲波形データ2701及び低音域パワー合計値2702を示す。例えば、イントロの場合、CPU3302は、各フレームの低音域パワー合計値2702で、先頭から全体の1/4までの間で(曲の前半で)最初に低音域のパワーが大きくなる位置2703を探し、ドラムなしの終点とする。ここで、大きくなるとは、低音域のパワー合計値2702の最大値の1/6以上の値を指す。
【0058】
次に、ステップS1504では、CPU3302は、イントロの場合は最初にある程度の振幅が出ている位置をドラムなしの始点とし、エンディングの場合は最後にある程度の振幅が出ている位置をドラムなしの終点とする。
【0059】
図28は、曲波形データ2701及び低音域パワー合計値2702を示す。例えば、イントロの場合、CPU3302は、先頭(0秒)からドラムなしの終点に向かって、ある程度波形が出てくる位置2801をドラムなしの始点とする。これは、実際に聞いても聞き取れないほどの小さな音の部分はドラムなしの区間から省くことが目的である。
【0060】
次に、ステップS1505では、ドラムなしの始点から終点までのドラムなし区間が閾値よりも短いか否かを調べる。短ければステップS1506へ進み、長ければステップS1607へ進む。ステップS1506では、CPU3302は、ドラムなしとはみなさず、ドラムなし(アカペラ等)が検出されなかったと判断する。
【0061】
なお、ステップS1505と同様に、ステップS1503においても、ドラムなしの終点が見つからない場合や、先頭(0秒)からドラムなしの終点までの長さが5秒未満の場合はドラムなしとしては短すぎで、ふさわしくないので、ステップS1506へ進むようにしてもよい。
【0062】
ステップS1507では、CPU3302は、低音域以外のパワー合計値がドラムなし区間以外と同様に出ているか否かを調べる。出ているときには、ステップS1509へ進み、CPU3302は、検出区間をドラムなし区間とし、ドラムなしのイントロ又はエンディングが検出されたと判断する。出ていないときには、ステップS1508へ進み、全体的にパワーの出ていない区間であるため、ドラムなしのイントロ又はエンディングが検出されなかったと判断する。
【0063】
すなわち、CPU3302は、図26(C)の各フレームの低音域以外(250Hzより上)のパワー値で、ドラムなしの区間と、それ以降の区間で同様にパワーが出ているか調べる。具体的には、まず、CPU3302は、ドラムなし区間の低音域以外のパワー合計の平均値を求める。次に、CPU3302は、ドラムなし区間の終点から全体の1/4までの間の(曲の前半の)低音域以外のパワー合計値の平均値を求める。次に、CPU3302は、ドラムなし区間の低音域以外のパワー合計の平均が、それ以降の低音域以外のパワー合計の平均の1/5より小さいか調べる。すなわち、ドラムなし区間とそれ以降において低音域のみ変化が激しいかどうかを確認する。
【0064】
小さければ、CPU3302は、ドラムなし区間は低音域も小さいが、低音域以外のパワーも低いので、全体的にパワーが出ていないと判断し、ドラムなしの区間にはふさわしくないので、ステップS1508へ進む。大きければ、CPU3302は、ステップS1509へ進み、ドラムなし始点からドラムなし終点までをドラムなし区間とし、ドラムなしのイントロ又はエンディングが検出されたと判断する。
【0065】
図29は、曲波形データ2901及び低音域以外のパワー合計値2902を示す図である。CPU3302は、ドラムなし区間Aとそれ以降の区間Bで低音域以外の平均値を比較する。区間Aは、パワー合計値2902が小さいが、閾値を超えているので、区間Aがドラムなし区間となる。これに対し、区間Aのパワー合計値2902がもっと小さい場合には、区間Aはドラムなし区間としては検出されない。
【0066】
図16は、図12のステップS1204の大きな音(イントロ)検出処理の詳細を示すフローチャートである。大きな音(イントロ)検出処理では、シンバル等の大きな音で曲が始まっているかを調べる。
【0067】
ステップS1601では、CPU3302は、図30に示すように、曲波形データ3001に対して0.2秒間隔で振幅の絶対値の最大値のフレーム配列データ3002を作成する。なお、図1(第1の実施形態)と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【0068】
次に、ステップS1602では、CPU3302は、曲波形データ3001の前半で最初の振幅絶対値が大きい位置3003を探し、大きな音の終点と仮決定する。ここで、大きな振幅絶対値とは、フレーム配列データ3002の最大値の2/5以上の値を指す。
【0069】
次に、ステップS1603では、図31に示すように、CPU3302は、大きな音の終点から前に向かって、最初の小さな振幅絶対値3101を探し、大きな音の始点と仮決定する。ここで、小さな振幅絶対値とは、フレーム配列データ3002の最大値の1/6以下の値を指す。
【0070】
次に、ステップS1604では、CPU3302は、振幅の小さい位置(大きな音の始点)3101と大きな位置(大きな音の終点)3003の間隔が広いときにはステップS1605へ進み、狭いときにはステップS1606へ進む。具体的には、CPU3302は、大きな音の範囲が0.8秒より広いときは、音が鋭く立ち上がっていないので、シンバルのような感じで始まっていないとみなし、ステップS1605へ進み、狭いときにはステップS1606へ進む。ステップS1605では、CPU3302は、音が鋭く立ち上がっておらず、大きな音のイントロとはみなさず、図12のステップS1208へ進む。
【0071】
ステップS1606では、CPU3302は、振幅の小さい位置(大きな音の始点)3101より前にある程度の振幅が出ているか調べる。出ているときにはステップS1607へ進み、出ていないときにはステップS1608へ進む。ステップS1607では、CPU3302は、大きな音のイントロとはみなさず、図12のステップS1208へ進む。
【0072】
ステップS1608では、CPU3302は、図32に示すように、数十ミリ秒間隔で高速フーリエ変換を行う。例えば、CPU3302は、サンプル数2048、1フレーム当たり0.2秒になるようにオーバーラップさせながら高速フーリエ変換を行い、各フレームのパワーを求める。
【0073】
次に、ステップS1609では、CPU3302は、振幅の大きい位置から後に向かってパワーのピークが変わる直前を大きな音の終点とする。すなわち、CPU3302は、仮の大きな音の終点の位置のパワーが、出終わる位置を探し(大きな音が伸びて、音が特徴的でなくなるまでの位置を探し)、出終わる直前を大きな音の終点として決定する。
【0074】
具体的には、まず、CPU3302は、図32において、仮の大きな音の終点フレームのパワーの中から最も大きくパワーが出ている2箇所3201及び3202を探す。
【0075】
次に、CPU3302は、仮の大きな音の終点フレームから後ろに向かって、各フレームで同じ箇所でパワーが特徴的にでているか調べ、出終わる直前を大きな音の終点として決定する。具体的には、CPU3302は、調べるフレームのパワーの中から最も大きくパワーが出ている5箇所を探す。次に、CPU3302は、5箇所の中で、上記の最大パワーの2箇所3201及び3202のどちらかと同じ箇所があるか調べる。連続して同じ箇所が出ていないフレーム数もカウントするので、このカウンタを初回は0にリセットしておく。
【0076】
ある場合は、CPU3302は、同じ箇所でパワーが特徴的に出ていると判断し、カウンタを0にリセットして、調べるフレームを次のフレームにし、上記の5箇所を探す処理に戻る。
【0077】
ない場合は、CPU3302は、カウンタを1増やす。カウンタが3未満の場合は、CPU3302は、調べるフレームを次のフレームにし、上記の5箇所を探す処理に戻る。カウンタが3の場合は、CPU3302は、連続して同じ箇所に強いパワーがなかったということで、音が目立たなくなったと判断し、現在調べていたフレームの3つ前(連続してパワーがでていないと判断され始める直前)を大きな音の終点にする。
【0078】
次に、ステップS1610では、CPU3302は、上記の仮の大きな音の範囲内の最大位置を大きな音の始点とする。すなわち、CPU3302は、仮の大きな音の始点から大きな音の終点までの間で振幅の絶対値が最大の場所を大きな音の始点とする。これは、大きな音の出始めではなく、映像効果のスタートとしたい音の大きな位置を始点とするためである。
【0079】
次に、ステップS1611では、CPU3302は、検出区間を大きな音の区間とし、大きな音のイントロが検出されたと判断し、図12のステップS1207へ進む。
【0080】
図17は、図12のステップS1204の大きな音(エンディング)検出処理の詳細を示すフローチャートである。大きな音(エンディング)検出処理では、図16の大きな音(イントロ)検出処理と同様に、シンバル等の大きな音で曲が終わっているかを調べる。
【0081】
ステップS1701では、CPU3302は、曲波形データに対して0.2秒間隔で振幅の絶対値の最大値のフレーム配列データを作成する。なお、図1(第1の実施形態)と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【0082】
次に、ステップS1702では、CPU3302は、曲波形データの後半で最後の振幅絶対値が大きい位置を探し、大きな音の終点と仮決定する。
【0083】
次に、ステップS1703では、CPU3302は、数十ミリ秒間隔で高速フーリエ変換を行う。
【0084】
次に、ステップS1704では、CPU3302は、大きな音の終点から前に向かってパワーのピークが変わる直前の位置を探す。すなわち、CPU3302は、大きな音の持続が開始している位置を探す。
【0085】
次に、ステップS1705では、CPU3302は、パワーのピークが変わる直前から後に向かって最初にある振幅の大きい位置を探す。
【0086】
次に、ステップS1706では、CPU3302は、ピークが変わる直前から振幅の大きい位置までの間隔が広いか調べる。広い場合には、CPU3302は、ステップS1707へ進み、音が鋭く立ち上がっていないので、大きな音のエンディングとはみなさず、図12のステップS1208へ進む。狭い場合には、ステップS1708へ進む。
【0087】
ステップS1708では、CPU3302は、仮の大きな音の範囲内の最大位置を大きな音の始点とする。
【0088】
次に、ステップS1709では、CPU3302は、検出区間を大きな音の区間とし、大きな音のエンディングが検出されたと判断し、図12のステップS1207へ進む。
【0089】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0090】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0091】
3400 盛り上がり検出装置
3401 平滑化部
3402 極小点検出部
3403 盛り上がり区間検出部
3411 第1の平滑化部
3412 第2の平滑化部

【特許請求の範囲】
【請求項1】
曲波形データを平滑化する平滑化部と、
前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部と、
前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部と
を有することを特徴とする盛り上がり検出装置。
【請求項2】
前記平滑化部は、
前記曲波形データを平滑化する第1の平滑化部と、
前記第1の平滑化部により平滑化された曲波形データを平滑化する第2の平滑化部とを有し、
前記極小点検出部は、前記第2の平滑化部により平滑化された曲波形データの極小点を検出し、
前記盛り上がり区間検出部は、前記第1の平滑化部により平滑化された曲波形データの変化量を基に、前記極小点検出部により検出された極小点間の区間の始点及び終点を修正し、盛り上がり区間を検出することを特徴とする請求項1記載の盛り上がり検出装置。
【請求項3】
前記極小点検出部は、前記平滑化部により平滑化された曲波形データの極小点を検出し、前記検出された極小点が前記検出された極小点の前又は後の極大点に対して閾値割合より大きければその極小点を除外して極小点を検出することを特徴とする請求項1又は2記載の盛り上がり検出装置。
【請求項4】
前記盛り上がり区間検出部は、検出された2つの盛り上がり区間の間の区間の値が前記検出された2つの盛り上がり区間の値に対して閾値割合より大きいときには、前記検出された2つの盛り上がり区間を1つの盛り上がり区間につなげることを特徴とする請求項1〜3のいずれか1項に記載の盛り上がり検出装置。
【請求項5】
前記盛り上がり区間検出部は、検出された盛り上がり区間のうちの最大の長さの盛り上がり区間に対して、検出された盛り上がり区間の長さが閾値割合以下であればその盛り上がり区間を除外して盛り上がり区間を検出することを特徴とする請求項1〜4のいずれか1項に記載の盛り上がり検出装置。
【請求項6】
曲波形データを平滑化する平滑化ステップと、
前記平滑化ステップにより平滑化された曲波形データの極小点を検出する極小点検出ステップと、
前記極小点検出ステップにより検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出ステップと
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate


【公開番号】特開2011−95425(P2011−95425A)
【公開日】平成23年5月12日(2011.5.12)
【国際特許分類】
【出願番号】特願2009−248170(P2009−248170)
【出願日】平成21年10月28日(2009.10.28)
【出願人】(000001410)株式会社河合楽器製作所 (563)