(57)【要約】【課題】曲波形データの盛り上がり区間を検出することができる盛り上がり検出装置及びプログラムを提供することを課題とする。【解決手段】曲波形データを平滑化する平滑化部（３４０１）と、前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部（３４０２）と、前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部（３４０３）とを有することを特徴とする盛り上がり検出装置が提供される。【選択図】図３４
2011095425.tif 000002
【特許請求の範囲】
【請求項１】
曲波形データを平滑化する平滑化部と、
前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部と、
前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部と
を有することを特徴とする盛り上がり検出装置。
【請求項２】
前記平滑化部は、
前記曲波形データを平滑化する第１の平滑化部と、
前記第１の平滑化部により平滑化された曲波形データを平滑化する第２の平滑化部とを有し、
前記極小点検出部は、前記第２の平滑化部により平滑化された曲波形データの極小点を検出し、
前記盛り上がり区間検出部は、前記第１の平滑化部により平滑化された曲波形データの変化量を基に、前記極小点検出部により検出された極小点間の区間の始点及び終点を修正し、盛り上がり区間を検出することを特徴とする請求項１記載の盛り上がり検出装置。
【請求項３】
前記極小点検出部は、前記平滑化部により平滑化された曲波形データの極小点を検出し、前記検出された極小点が前記検出された極小点の前又は後の極大点に対して閾値割合より大きければその極小点を除外して極小点を検出することを特徴とする請求項１又は２記載の盛り上がり検出装置。
【請求項４】
前記盛り上がり区間検出部は、検出された２つの盛り上がり区間の間の区間の値が前記検出された２つの盛り上がり区間の値に対して閾値割合より大きいときには、前記検出された２つの盛り上がり区間を１つの盛り上がり区間につなげることを特徴とする請求項１〜３のいずれか１項に記載の盛り上がり検出装置。
【請求項５】
前記盛り上がり区間検出部は、検出された盛り上がり区間のうちの最大の長さの盛り上がり区間に対して、検出された盛り上がり区間の長さが閾値割合以下であればその盛り上がり区間を除外して盛り上がり区間を検出することを特徴とする請求項１〜４のいずれか１項に記載の盛り上がり検出装置。
【請求項６】
曲波形データを平滑化する平滑化ステップと、
前記平滑化ステップにより平滑化された曲波形データの極小点を検出する極小点検出ステップと、
前記極小点検出ステップにより検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、盛り上がり検出装置及びプログラムに関する。
【背景技術】
【０００２】
音楽ＣＤ等の複数の楽器音の混ざった音楽音響信号（オーディオ信号）からビート位置を検出するテンポ検出装置として、下記の特許文献１が知られている。特許文献１では、ビート位置の検出方法として、入力波形を所定の時間間隔（以下、フレーム）でＦＦＴ演算し、求められたパワースペクトルから各音階音のパワーを求め、この各音階音のパワーのフレーム毎の増分値を計算し、これを全音階音で合計してフレーム毎の全体の音の変化度合いを求め、このフレーム毎の全体の音の変化度合いの自己相関を計算して周期性を求め、この自己相関の値が最大となるフレーム間隔から平均的なビート間隔（いわゆるテンポ）を求める。
【０００３】
また、下記の特許文献２には、ビート検出波形の先頭を演奏させながら、タッピング検出部を用い、ユーザにビート位置を、タッピングしてもらうようにし、タッピングの揺らぎが揺らぎ算出部で一定の範囲内であると判定されたら、テンポ候補検出部で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ検出装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−５２３９４号公報
【特許文献２】特開２００８−４０２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ビート位置の検出の他に、より音楽と同期させるために盛り上がり区間を検出することが望まれている。しかし、曲波形データの盛り上がり区間を検出する装置は、今までなかった。
【０００６】
本発明の目的は、曲波形データの盛り上がり区間を検出することができる盛り上がり検出装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明の盛り上がり検出装置は、曲波形データを平滑化する平滑化部と、前記平滑化部により平滑化された曲波形データの極小点を検出する極小点検出部と、前記極小点検出部により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出部とを有することを特徴とする。
【０００８】
また、本発明のプログラムは、曲波形データを平滑化する平滑化ステップと、前記平滑化ステップにより平滑化された曲波形データの極小点を検出する極小点検出ステップと、前記極小点検出ステップにより検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する盛り上がり区間検出ステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【０００９】
本発明によれば、曲波形データの盛り上がり区間を検出することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態による盛り上がり検出装置の盛り上がり検出方法を示すフローチャートである。
【図２】曲波形データを示す図である。
【図３】曲波形データの振幅の絶対値を示す図である。
【図４】第１の移動平均を示す図である。
【図５】ダウンサンプリングを示す図である。
【図６】第２の移動平均を示す図である。
【図７】図７（Ａ）〜（Ｃ）は極小点の補正を示す図である。
【図８】極小点の補正を示す図である。
【図９】図９（Ａ）及び（Ｂ）は盛り上がり区間の候補を示す図である。
【図１０】図１０（Ａ）及び（Ｂ）は盛り上がり区間の接続を示す図である。
【図１１】図１１（Ａ）及び（Ｂ）は短い盛り上がり区間の候補の除外を示す図である。
【図１２】本発明の第２の実施形態によるイントロ及びエンディング検出方法を示すフローチャートである。
【図１３】フェードイン（アウト）検出処理の詳細を示すフローチャートである。
【図１４】フェードイン（アウト）検出処理の詳細を示すフローチャートである。
【図１５】ドラムなし（アカペラ等）検出処理の詳細を示すフローチャートである。
【図１６】大きな音（イントロ）検出処理の詳細を示すフローチャートである。
【図１７】大きな音（エンディング）検出処理の詳細を示すフローチャートである。
【図１８】曲波形データを示す図である。
【図１９】１秒間隔の配列データを示す図である。
【図２０】フェードインの終点検出処理を示す図である。
【図２１】前フレームからの増加量を示す図である。
【図２２】急激な増加の検出処理を示す図である。
【図２３】フェードインの終点の変更処理を示す図である。
【図２４】フェードインの始点の検出処理を示す図である。
【図２５】フェードイン区間の前の振幅検出処理を示す図である。
【図２６】図２６（Ａ）〜（Ｃ）は高速フーリエ変換処理を示す図である。
【図２７】低音域のパワー検出処理を示す図である。
【図２８】ドラムなし区間の始点検出処理を示す図である。
【図２９】ドラムなし区間のパワー検出処理を示す図である。
【図３０】大きな音区間の終点検出処理を示す図である。
【図３１】大きな音区間の始点検出処理を示す図である。
【図３２】高速フーリエ変換処理を示す図である。
【図３３】盛り上がり検出装置（コンピュータ）のハードウエア構成例を示すブロック図である。
【図３４】盛り上がり検出装置（コンピュータ）のプログラムの機能を説明するためのブロック図である。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
図３３は、本発明の第１の実施形態による盛り上がり検出装置（コンピュータ）のハードウエア構成例を示すブロック図である。盛り上がり検出装置は、例えばパーソナルコンピュータで構成される。バス３３０１には、中央処理装置（ＣＰＵ）３３０２、ＲＯＭ３３０３、ＲＡＭ３３０４、ネットワークインタフェース３３０５、入力装置３３０６、出力装置３３０７及び外部記憶装置３３０８が接続されている。
【００１２】
ＣＰＵ３３０２は、データの処理又は演算を行うと共に、バス３３０１を介して接続された各種構成要素を制御するものである。ＲＯＭ３３０３には、予めＣＰＵ３３０２の制御手順（コンピュータプログラム）を記憶させておき、このコンピュータプログラムをＣＰＵ３３０２が実行することにより、起動する。外部記憶装置３３０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ３３０４にコピーされて実行される。ＲＡＭ３３０４は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。外部記憶装置３３０８は、例えばハードディスク記憶装置やＣＤ−ＲＯＭ等であり、電源を切っても記憶内容が消えない。ＣＰＵ３３０２は、ＲＡＭ３３０４内のコンピュータプログラムを実行することにより、図１、図１２〜図１７の処理を行う。
【００１３】
ネットワークインタフェース３３０５は、インターネット等のネットワークに接続するためのインタフェースである。入力装置３３０６は、例えばキーボード及びマウス等であり、各種指示又は入力等を行うことができる。出力装置３３０７は、表示装置（ディスプレイ）、印刷装置（プリンタ）及びスピーカ等である。
【００１４】
図１は、本実施形態による盛り上がり検出装置の盛り上がり検出方法を示すフローチャートである。ＣＰＵ３３０２がプログラムを実行することにより、図１の処理が行われる。
【００１５】
ステップＳ１０１では、ＣＰＵ３３０２は、外部記憶装置３３０８から曲波形データ（ＷＡＶデータ）をＲＡＭ３３０４にロードし、モノラル化処理及び正規化処理を行う。具体的には、ＣＰＵ３３０２は、曲波形データがステレオの場合には、ステレオの曲波形データをモノラルの曲波形データに変換する。次に、ＣＰＵ３３０２は、曲波形データを正規化することにより曲波形データの最大振幅をダイナミックレンジの最大値に合わせ、図２の曲波形データを生成する。
【００１６】
次に、ステップＳ１０２では、ＣＰＵ３３０２は、盛り上がりを数値化するために、波形振幅の絶対値を、移動平均などを使って平滑化する。なお、高速フーリエ変換（ＦＦＴ）した結果のパワーの合計やパワーのｌｏｇの合計などから盛り上がりを数値化してもよい。具体的には、ＣＰＵ３３０２は、図３に示すように、曲波形データの振幅を絶対値化する。次に、ＣＰＵ３３０２は、図３のデータに対して前後１秒で移動平均をとり、図４の滑らかなデータを生成する。なお、図３は横軸が縮小されているので、実際には曲波形データの各ピーク間に小さな値があるため、平均をとると図４のように全体的に下がった形になる。
【００１７】
次に、ステップＳ１０３では、ＣＰＵ３３０２は、もう一度移動平均などを使って、さらに平滑化する。ステップＳ１０２の１回の移動平均だけでは所望の滑らかさが得られないため、ステップＳ１０３で２回目の移動平均を行う。具体的には、ＣＰＵ３３０２は、図５に示すように、図４のデータを間引くなどしてサンプル数を減らす。例えば、４４．１ｋＨｚのサンプル数を１００Ｈｚのサンプル数に減らす。なお、サンプル数を減らすといっても図４と図５は０．１秒間隔にプロットしているので、差異が明確に現れない。次に、ＣＰＵ３３０２は、図５のデータに対して前後１秒で移動平均をとり、図６の滑らかなデータを生成する。
【００１８】
次に、ステップＳ１０４では、ＣＰＵ３３０２は、図６のデータに対して極小点を探し、前後の極大点の値が小さい方と比較してあまり違いがなければ、極大点間の最低値を極大点の小さい方として値を修正し、極小点をなくす。これは、移動平均した結果を区間として認識し易くするためである。具体的には、ＣＰＵ３３０２は、図７（Ａ）に示すように、細かい凸凹を削除することを目的に、変化の小さい極小点７０２のまわりのデータを補正する。ＣＰＵ３３０２は、極小点７０２を探し、その前の極大点７０１及びその後の極大点７０３と比較し、前後の極大点７０１，７０３の小さい方の９０％よりも極小点７０２の値の方が大きい場合は凸凹が小さいので、極大点７０１及び７０３間のデータで極大点の小さい方の値よりも、小さいデータは、図７（Ｂ）に示すように極大点の小さい方の値まで持ち上げ、図７（Ｃ）のデータを生成する。図８は、ステップＳ１０４の処理を行った結果のデータを示し、図６のデータに対して細かい凹凸が除去されている。
【００１９】
次に、ステップＳ１０５では、ＣＰＵ３３０２は、図８のデータを基に極小点間を盛り上がり区間の候補として全て抽出する。具体的には、ＣＰＵ３３０２は、まず、盛り上がり区間の候補を探すため、図９（Ａ）に示すように、極小点間を盛り上がり区間９０１として記録する。
【００２０】
次に、ステップＳ１０６では、ＣＰＵ３３０２は、図４の１回目の平滑化のデータで、盛り上がり区間の始点からみて、最初に極大値が現れるまでの間で、最も数値が変化している位置に始点を修正する。具体的には、ＣＰＵ３３０２は、図９（Ａ）の記録されたそれぞれの区間９０１について始点の位置を調整するため、図９（Ｂ）に示すように、区間９０１の先頭から最初の極大点９０２までの間でもっとも前のデータからの変化量の大きい位置９０３を区間の始点に修正する。
【００２１】
次に、ステップＳ１０７では、ＣＰＵ３３０２は、図９（Ａ）の記録されたそれぞれの区間９０１について終点の位置を調整するため、始点と同様の方法で、区間９０１の最後の極大点から区間９０１の最後までの間で最も次のデータへの変化量が大きい位置を区間９０１の終点に修正する。
【００２２】
次に、ステップＳ１０８では、ＣＰＵ３３０２は、盛り上がり区間を選別するために盛り上がりの最大値を求め、一定の割合以上の区間最大値を持つもののみ盛り上がり区間とする。なお、区間平均値、区間合計、区間内の閾値以上のデータ割合などを使って区間を選別してもよい。
【００２３】
具体的には、ＣＰＵ３３０２は、盛り上がり区間９０１の候補全ての中で最大値を求める。次に、ＣＰＵ３３０２は、盛り上がり区間それぞれの最大値が、上記の全ての候補の中の最大値のＮ％（初回はＮ＝６５）未満の場合は、盛り上がり区間ではない（データ波形上では小さい山）と判断し、盛り上がり区間の候補からはずす。次に、ＣＰＵ３３０２は、全体の長さに対して、盛り上がり区間の候補として残ったものの合計の長さを算出し、３３%以上なら、まだ盛り上がり区間の候補が多すぎると判断し、上記のＮを５上げて、上記の処理を繰り返し、盛り上がり区間の候補の数を減らす。
【００２４】
次に、ＣＰＵ３３０２は、盛り上がり区間の候補がある程度絞られたところで、図１０（Ａ）に示すように、盛り上がり区間１００１と次の盛り上がり区間１００３の間の区間１００２の値が、ある程度大きい場合は、図１０（Ｂ）に示すように、２つの盛り上がり区間１００１及び１００３を１つの盛り上がり区間１００４につなげる。例えば、ＣＰＵ３３０２は、盛り上がり区間１００１と次の盛り上がり区間１００３の間の区間１００２の値が全て、盛り上がり区間１００１の終わりの値と次の盛り上がり区間１００３の初めの値で小さい方の値に対し、７５%以上なら盛り上がり区間１００１及び１００３の間の区間１００２も盛り上がっていると判断し、１つの盛り上がり区間１００４にまとめる。
【００２５】
次に、ＣＰＵ３３０２は、盛り上がり区間の候補の中で最大の長さを求め、各盛り上がり区間の中で、最大の長さの３０%以下の候補をはずす。例えば、図１１（Ａ）では、区間１１０１及び１１０２の長さが最大の長さの３０%以下なので候補からはずし、図１１（Ｂ）に示すように、最終的に区間１１０３及び１１０４が盛り上がり区間として検出される。
【００２６】
以上のように、本実施形態によれば、曲波形データの盛り上がり区間を検出することができる。これにより、曲波形データの盛り上がり区間に同期し、画像（静止画又は動画）データを再生することにより、曲及び画像を、同期をとりながら再生することができる。例えば、曲波形データの盛り上がり区間で、静止画を動かす等の盛り上がり再生処理を行うことができる。これにより、曲波形データの盛り上がり区間に同期し、画像に盛り上がり効果を付与することができる。
【００２７】
図３４は、図３３のコンピュータのプログラムの機能を説明するためのブロック図である。コンピュータがプログラムを実行することにより、盛り上がり検出装置（方法）が実現される。盛り上がり検出装置（方法）３４００は、平滑化部（ステップ）３４０１、極小点検出部（ステップ）３４０２、及び盛り上がり区間検出部（ステップ）３４０３を有する。平滑化部３４０１は、第１の平滑化部（ステップ）３４１１及び第２の平滑化部（ステップ）３４１２を有する。
【００２８】
平滑化部３４０１は、ステップＳ１０２及びＳ１０３に対応し、曲波形データを平滑化する。極小点検出部３４０２は、ステップＳ１０４に対応し、平滑化部３４０１により平滑化された曲波形データの極小点を検出する。盛り上がり区間検出部３４０３は、ステップＳ１０５〜Ｓ１０８に対応し、極小点検出部３４０２により検出された極小点を基に極小点間の区間内の最大値が閾値以上の区間を盛り上がり区間として検出する。
【００２９】
詳しくは、第１の平滑化部３４１１は、ステップＳ１０２に対応し、曲波形データを平滑化する。第２の平滑化部３４１２は、ステップＳ１０３に対応し、第１の平滑化部３４１１により平滑化された曲波形データを平滑化する。極小点検出部３４０２は、第２の平滑化部３４１２により平滑化された曲波形データの極小点を検出する。盛り上がり区間検出部３４０３は、ステップＳ１０６及びＳ１０７に対応し、第１の平滑化部３４１１により平滑化された曲波形データの変化量を基に、極小点検出部３４０２により検出された極小点間の区間の始点及び終点を修正し、盛り上がり区間を検出する。
【００３０】
極小点検出部３４０２は、図７（Ａ）〜（Ｃ）に示すように、平滑化部３４０１により平滑化された曲波形データの極小点を検出し、検出された極小点が検出された極小点の前又は後の極大点に対して閾値割合より大きければその極小点を除外して極小点を検出する。
【００３１】
盛り上がり区間検出部３４０３は、図１０（Ａ）及び（Ｂ）に示すように、検出された２つの盛り上がり区間の間の区間の値が検出された２つの盛り上がり区間の値に対して閾値割合より大きいときには、検出された２つの盛り上がり区間を１つの盛り上がり区間につなげる。
【００３２】
また、盛り上がり区間検出部３４０３は、図１１（Ａ）及び（Ｂ）に示すように、検出された盛り上がり区間のうちの最大の長さの盛り上がり区間に対して、検出された盛り上がり区間の長さが閾値割合以下であればその盛り上がり区間を除外して盛り上がり区間を検出する。
【００３３】
（第２の実施形態）
図１２は、本発明の第２の実施形態によるイントロ及びエンディング検出方法を示すフローチャートである。ステップＳ１２０１では、ＣＰＵ３３０２は、外部記憶装置３３０８から曲波形データ（ＷＡＶデータ）をＲＡＭ３３０４にロードし、モノラル化処理及び正規化処理を行う。具体的には、ＣＰＵ３３０２は、曲波形データがステレオの場合には、ステレオの曲波形データをモノラルの曲波形データに変換する。次に、ＣＰＵ３３０２は、曲波形データを正規化することにより曲波形データの最大振幅をダイナミックレンジの最大値に合わせ、図１８の曲波形データを生成する。
【００３４】
次に、ステップＳ１２０２では、ＣＰＵ３３０２は、フェードイン（アウト）検出処理を行う。フェードイン（アウト）検出処理の詳細は、後に図１３及び図１４を参照しながら説明する。フェードイン（アウト）が検出されたときにはステップＳ１２０５に進み、フェードイン（アウト）が検出されないときにはステップＳ１２０３に進む。ステップＳ１２０５では、ＣＰＵ３３０２は、フェードイン（アウト）の種類のイントロ（エンディング）が検出されたと判断し、検出されたフェードイン（アウト）区間をイントロ（エンディング）区間として設定する。
【００３５】
ステップＳ１２０３では、ＣＰＵ３３０２は、先頭部又は最後部のドラムなし（アカペラ等）検出処理を行う。曲波形データ内の先頭部又は最後部にドラムなしの区間があれば、その区間はアカペラ等のイントロ又はエンディングであると判断することができる。ドラムなし（アカペラ等）検出処理の詳細は、後に図１５を参照しながら説明する。ドラムなし（アカペラ等）が検出されたときにはステップＳ１２０６に進み、ドラムなし（アカペラ等）が検出されないときにはステップＳ１２０４に進む。ステップＳ１２０６では、ＣＰＵ３３０２は、ドラムなし（アカペラ等）の種類のイントロ（エンディング）が検出されたと判断し、検出されたドラムなし（アカペラ等）区間をイントロ（エンディング）区間として設定する。
【００３６】
ステップＳ１２０４では、ＣＰＵ３３０２は、先頭部又は最後部の大きな音検出処理を行う。大きな音検出処理の詳細は、後に図１６及び図１７を参照しながら説明する。大きな音が検出されたときにはステップＳ１２０７に進み、大きな音が検出されないときにはステップＳ１２０８に進む。ステップＳ１２０７では、ＣＰＵ３３０２は、大きな音の種類のイントロ（エンディング）が検出されたと判断し、検出された大きな音区間をイントロ（エンディング）区間として設定する。
【００３７】
ステップＳ１２０８では、ＣＰＵ３３０２は、イントロ（エンディング）の特徴がないと判定し、イントロ（エンディング）が検出されなかったことを記録する。
【００３８】
以上のように、本実施形態によれば、曲波形データのイントロ及び／又はエンディングを検出することができる。これにより、曲波形データのイントロ及び／又はエンディングに同期し、画像（静止画又は動画）データを再生することにより、曲及び画像を、同期をとりながら再生することができる。例えば、曲波形データのイントロでは画像が徐々に現れ、曲波形データのエンディングでは画像が徐々に消えるような画像処理を行うことができる。
【００３９】
図１３及び図１４は、図１２のステップＳ１２０２のフェードイン（アウト）検出処理の詳細を示すフローチャートである。フェードインは、音量が徐々に大きくなりながら曲が始まるイントロである。フェードアウトは、音量が徐々に小さくなりながら曲が終わるエンディングである。
【００４０】
ステップＳ１３０１では、ＣＰＵ３３０２は、図１９に示すように、曲波形データ１９０１に対して１秒間隔で振幅の絶対値の最大値の配列データ１９０２を作成する。なお、図１（第１の実施形態）と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【００４１】
次に、ステップＳ１３０２では、ＣＰＵ３３０２は、図２０に示すように、配列データ１９０２の最初の大きな極大点１９０３を探し、フェードインの終点と仮決定する。ここで、大きな極大点とは配列データ１９０２の最大値の半分以上の値を持つ極大点を指す。エンディングについても、イントロと同様に、最後からスキャンして大きな極大点を探し、フェードアウトの始点と仮決定する。
【００４２】
次に、ステップＳ１３０３では、ＣＰＵ３３０２は、図２１に示すように、イントロについては最初から仮のフェードインの終点まで、前フレームからの増加量の配列データ２１０１を作成し、エンディングについてはフェードアウトの始点から最後まで、前フレームからの減少量の配列データを作成する。その際、増加量又は減少量がマイナスのときには０にする。
【００４３】
次に、ステップＳ１３０４では、ＣＰＵ３３０２は、イントロでは最初の極大点（仮のフェードインの終点）１９０３より前に急激過ぎる増加があるか否かをチェックする。ある場合にはステップＳ１３０５に進み、ない場合にはステップＳ１３０６に進む。同様に、ＣＰＵ３３０２は、エンディングでは最後の極大点（仮のフェードアウトの始点）より後に急激過ぎる減少があるか否かをチェックする。ある場合にはステップＳ１３０５に進み、ない場合にはステップＳ１３０６に進む。ステップＳ１３０５では、ＣＰＵ３３０２は、フェードイン又はフェードアウトとはみなさず、フェードイン又はフェードアウトが検出されなかったと判断する。
【００４４】
具体的には、ＣＰＵ３３０２は、イントロの場合、図２１に示すように、急激過ぎる増加があるかステップＳ１３０３で作成された配列データ２１０１を使って調べる。ここで、急激とは図１９の配列データ１９０２の最大値の半分以上の値を指す。急激過ぎる増加がある場合は、フェードインとするのはふさわしくないので、ステップＳ１３０５に進む。例えば、図２２の配列データ２２０１では、データ２２０２が急激すぎる増加であり、その位置から突然音量が大きくなることを示しているので、図１２のステップＳ１２０７の大きな音の種類のイントロとして判断されるべきであるので、このイントロはフェードインではないと判断する。
【００４５】
次に、ステップＳ１３０６では、ＣＰＵ３３０２は、イントロについては最初の極大点（仮のフェードインの終点）より前に急激な増加がある場合はその位置を、なければ最初の極大点をフェードインの終点として決定する。同様に、ＣＰＵ３３０２は、エンディングについては最後の極大点（仮のフェードアウトの始点）より後に急激な減少がある場合はその位置を、なければ最後の極大点をフェードアウトの始点として決定する。すなわち、ＣＰＵ３３０２は、仮のフェードインの終点位置から前に向かって調べ、急激とはいかないまでも前フレームと比べて急増化している部分があれば、その位置をフェードインの終点とする。これは、最初から仮のフェードインの終点までの間で徐々に音量が上昇している部分のみをフェードイン区間としたいためである。図２３では、データ２３０１が急増化しているため、フェードインの終点を変更する。なお、図１（第１の実施形態）の盛り上がり検出と同様に、移動平均などで平滑化した場合は、なるべく元に近いデータで実際の始点及び／又は終点を決めることが好ましい。
【００４６】
次に、ＣＰＵ３３０２は、イントロの場合、フェードインの終点のフレームから、実際の曲波形データ１９０１の位置を特定できるので、その範囲内（１秒間）でフェードイン終点とした位置のフレームの値と同じ値の場所を探し、フェードインの終点を確定する。エンディングの場合も同様である。
【００４７】
次に、ステップＳ１３０７では、ＣＰＵ３３０２は、図１９の配列データ１９０２を基に、イントロの場合はフェードインの終点の前にある極小点を探し、エンディングの場合はフェードアウトの始点の後にある極小点を探す。図２４の場合、配列データ２４０１を基にイントロの極小点２４０２を探す。
【００４８】
次に、ステップＳ１３０８では、ＣＰＵ３３０２は、イントロの場合は極小点から後ろに向かって最初にある程度の振幅が出る位置をフェードインの始点とし、エンディングの場合は極小点から前に向かって最初にある程度の振幅が出る位置をフェードアウトの終点とする。
【００４９】
具体的には、ＣＰＵ３３０２は、極小点２４０２が該当するフレームの時刻間において、図１９と同様の方法で、１秒よりも細かい間隔でフレームデータを作成し、そのフレームデータの最後の極小点を探す。次に、ＣＰＵ３３０２は、上記の探した極小点が該当するフレームの時刻間において、図１９と同様の方法でさらに細かい間隔でフレームデータを作成し、そのフレームデータの最後の極小点を探す。ＣＰＵ３３０２は、上記の処理を繰り返し、極小点の位置を特定し、これを仮のフェードインの始点とする。次に、ＣＰＵ３３０２は、仮のフェードインの始点から終点に向かって、ある程度波形が出てくるところまでフェードインの始点をずらして範囲を狭める。これは、実際に聞いても聞き取れないほどの小さな音の部分はフェードインの区間から省くことが目的である。
【００５０】
次に、ステップＳ１３０９では、ＣＰＵ３３０２は、フェードインの始点から終点までのフェードイン区間の長さが３秒未満の場合は、フェードインとしては短すぎで、ふさわしくないのでステップＳ１３１０に進み、３秒以上の場合はステップＳ１３１１に進む。同様に、ＣＰＵ３３０２は、フェードアウトの始点から終点までのフェードアウト区間の長さが３秒未満の場合は、フェードアウトとしては短すぎで、ふさわしくないのでステップＳ１３１０に進み、３秒以上の場合はステップＳ１３１１に進む。ステップＳ１３１０では、ＣＰＵ３３０２は、フェードイン又はフェードアウトとはみなさず、フェードイン又はフェードアウトが検出されなかったと判断する。
【００５１】
なお、ステップＳ１３０９と同様に、ステップＳ１３０６の後においても、ＣＰＵ３３０２は、波形の先頭（０秒）からフェードインの終点までの長さが３秒未満の場合は、フェードインとしては短すぎで、ふさわしくないので、ステップＳ１３１０に進むようにしてもよい。エンディングについても同様である。
【００５２】
ステップＳ１３１１では、ＣＰＵ３３０２は、イントロの場合はフェードイン区間より前にある程度の振幅を持った波形があるか調べる。ある程度の振幅を持った波形がある場合は、フェードインする前に語りなどの小さな音でのイントロ部があり、ステップＳ１３１２に進み、フェードインではないと判断する。例えば、図２５のように、データ領域２５０１がある場合は、データ領域２５０１も別のイントロ部となるので、フェードインのイントロではないと判断する。これに対し、ある程度の振幅を持った波形がない場合は、ステップＳ１３１３に進み、検出区間をフェードイン区間とし、フェードインのイントロが検出されたと判断する。同様に、ＣＰＵ３３０２は、エンディングの場合はフェードアウト区間より後にある程度の振幅を持った波形があるか調べる。ある程度の振幅を持った波形がある場合はステップＳ１３１２に進み、フェードアウトのエンディングではないと判断する。これに対し、ある程度の振幅を持った波形がない場合は、ステップＳ１３１３に進み、検出区間をフェードアウト区間とし、フェードアウトのエンディングが検出されたと判断する。
【００５３】
図１５は、図１２のステップＳ１２０３のドラムなし（アカペラ等）検出処理の詳細を示すフローチャートである。イントロがドラムなしである場合には、アカペラ等のイントロであると判断することができる。
【００５４】
ステップＳ１５０１では、ＣＰＵ３３０２は、曲波形データに対して数十ミリ秒間隔で高速フーリエ変換を行う。例えば、サンプル数２０４８、オーバーラップ１／２で高速フーリエ変換を行い、各フレームのパワーを求める。
【００５５】
次に、ステップＳ１５０２では、ＣＰＵ３３０２は、フレーム毎に低音域とそれ以外でのパワー合計配列データを作成する。例えば、ＣＰＵ３３０２は、図２６（Ａ）に示すように、２５０Ｈｚ以下をドラムが出ている低音域とし、フレーム毎に２５０Ｈｚ以下のパワー２６０１を合計した図２６（Ｂ）の低音域のパワー合算値と、２５０Ｈｚより上のパワー２６０２を合計した図２６（Ｃ）のそれ以外のパワー合算値を求める。
【００５６】
次に、ステップＳ１５０３では、ＣＰＵ３３０２は、イントロの場合は前半で最初に低音域のパワーが大きくなる位置をドラムなしの終点とする。同様に、ＣＰＵ３３０２は、エンディングの場合は後半で最後に低音域のパワーが小さくなる位置をドラムなしの始点とする。
【００５７】
図２７は、曲波形データ２７０１及び低音域パワー合計値２７０２を示す。例えば、イントロの場合、ＣＰＵ３３０２は、各フレームの低音域パワー合計値２７０２で、先頭から全体の１／４までの間で（曲の前半で）最初に低音域のパワーが大きくなる位置２７０３を探し、ドラムなしの終点とする。ここで、大きくなるとは、低音域のパワー合計値２７０２の最大値の１／６以上の値を指す。
【００５８】
次に、ステップＳ１５０４では、ＣＰＵ３３０２は、イントロの場合は最初にある程度の振幅が出ている位置をドラムなしの始点とし、エンディングの場合は最後にある程度の振幅が出ている位置をドラムなしの終点とする。
【００５９】
図２８は、曲波形データ２７０１及び低音域パワー合計値２７０２を示す。例えば、イントロの場合、ＣＰＵ３３０２は、先頭（０秒）からドラムなしの終点に向かって、ある程度波形が出てくる位置２８０１をドラムなしの始点とする。これは、実際に聞いても聞き取れないほどの小さな音の部分はドラムなしの区間から省くことが目的である。
【００６０】
次に、ステップＳ１５０５では、ドラムなしの始点から終点までのドラムなし区間が閾値よりも短いか否かを調べる。短ければステップＳ１５０６へ進み、長ければステップＳ１６０７へ進む。ステップＳ１５０６では、ＣＰＵ３３０２は、ドラムなしとはみなさず、ドラムなし（アカペラ等）が検出されなかったと判断する。
【００６１】
なお、ステップＳ１５０５と同様に、ステップＳ１５０３においても、ドラムなしの終点が見つからない場合や、先頭（０秒）からドラムなしの終点までの長さが５秒未満の場合はドラムなしとしては短すぎで、ふさわしくないので、ステップＳ１５０６へ進むようにしてもよい。
【００６２】
ステップＳ１５０７では、ＣＰＵ３３０２は、低音域以外のパワー合計値がドラムなし区間以外と同様に出ているか否かを調べる。出ているときには、ステップＳ１５０９へ進み、ＣＰＵ３３０２は、検出区間をドラムなし区間とし、ドラムなしのイントロ又はエンディングが検出されたと判断する。出ていないときには、ステップＳ１５０８へ進み、全体的にパワーの出ていない区間であるため、ドラムなしのイントロ又はエンディングが検出されなかったと判断する。
【００６３】
すなわち、ＣＰＵ３３０２は、図２６（Ｃ）の各フレームの低音域以外（２５０Ｈｚより上）のパワー値で、ドラムなしの区間と、それ以降の区間で同様にパワーが出ているか調べる。具体的には、まず、ＣＰＵ３３０２は、ドラムなし区間の低音域以外のパワー合計の平均値を求める。次に、ＣＰＵ３３０２は、ドラムなし区間の終点から全体の１／４までの間の（曲の前半の）低音域以外のパワー合計値の平均値を求める。次に、ＣＰＵ３３０２は、ドラムなし区間の低音域以外のパワー合計の平均が、それ以降の低音域以外のパワー合計の平均の１／５より小さいか調べる。すなわち、ドラムなし区間とそれ以降において低音域のみ変化が激しいかどうかを確認する。
【００６４】
小さければ、ＣＰＵ３３０２は、ドラムなし区間は低音域も小さいが、低音域以外のパワーも低いので、全体的にパワーが出ていないと判断し、ドラムなしの区間にはふさわしくないので、ステップＳ１５０８へ進む。大きければ、ＣＰＵ３３０２は、ステップＳ１５０９へ進み、ドラムなし始点からドラムなし終点までをドラムなし区間とし、ドラムなしのイントロ又はエンディングが検出されたと判断する。
【００６５】
図２９は、曲波形データ２９０１及び低音域以外のパワー合計値２９０２を示す図である。ＣＰＵ３３０２は、ドラムなし区間Ａとそれ以降の区間Ｂで低音域以外の平均値を比較する。区間Ａは、パワー合計値２９０２が小さいが、閾値を超えているので、区間Ａがドラムなし区間となる。これに対し、区間Ａのパワー合計値２９０２がもっと小さい場合には、区間Ａはドラムなし区間としては検出されない。
【００６６】
図１６は、図１２のステップＳ１２０４の大きな音（イントロ）検出処理の詳細を示すフローチャートである。大きな音（イントロ）検出処理では、シンバル等の大きな音で曲が始まっているかを調べる。
【００６７】
ステップＳ１６０１では、ＣＰＵ３３０２は、図３０に示すように、曲波形データ３００１に対して０．２秒間隔で振幅の絶対値の最大値のフレーム配列データ３００２を作成する。なお、図１（第１の実施形態）と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【００６８】
次に、ステップＳ１６０２では、ＣＰＵ３３０２は、曲波形データ３００１の前半で最初の振幅絶対値が大きい位置３００３を探し、大きな音の終点と仮決定する。ここで、大きな振幅絶対値とは、フレーム配列データ３００２の最大値の２／５以上の値を指す。
【００６９】
次に、ステップＳ１６０３では、図３１に示すように、ＣＰＵ３３０２は、大きな音の終点から前に向かって、最初の小さな振幅絶対値３１０１を探し、大きな音の始点と仮決定する。ここで、小さな振幅絶対値とは、フレーム配列データ３００２の最大値の１／６以下の値を指す。
【００７０】
次に、ステップＳ１６０４では、ＣＰＵ３３０２は、振幅の小さい位置（大きな音の始点）３１０１と大きな位置（大きな音の終点）３００３の間隔が広いときにはステップＳ１６０５へ進み、狭いときにはステップＳ１６０６へ進む。具体的には、ＣＰＵ３３０２は、大きな音の範囲が０．８秒より広いときは、音が鋭く立ち上がっていないので、シンバルのような感じで始まっていないとみなし、ステップＳ１６０５へ進み、狭いときにはステップＳ１６０６へ進む。ステップＳ１６０５では、ＣＰＵ３３０２は、音が鋭く立ち上がっておらず、大きな音のイントロとはみなさず、図１２のステップＳ１２０８へ進む。
【００７１】
ステップＳ１６０６では、ＣＰＵ３３０２は、振幅の小さい位置（大きな音の始点）３１０１より前にある程度の振幅が出ているか調べる。出ているときにはステップＳ１６０７へ進み、出ていないときにはステップＳ１６０８へ進む。ステップＳ１６０７では、ＣＰＵ３３０２は、大きな音のイントロとはみなさず、図１２のステップＳ１２０８へ進む。
【００７２】
ステップＳ１６０８では、ＣＰＵ３３０２は、図３２に示すように、数十ミリ秒間隔で高速フーリエ変換を行う。例えば、ＣＰＵ３３０２は、サンプル数２０４８、１フレーム当たり０．２秒になるようにオーバーラップさせながら高速フーリエ変換を行い、各フレームのパワーを求める。
【００７３】
次に、ステップＳ１６０９では、ＣＰＵ３３０２は、振幅の大きい位置から後に向かってパワーのピークが変わる直前を大きな音の終点とする。すなわち、ＣＰＵ３３０２は、仮の大きな音の終点の位置のパワーが、出終わる位置を探し（大きな音が伸びて、音が特徴的でなくなるまでの位置を探し）、出終わる直前を大きな音の終点として決定する。
【００７４】
具体的には、まず、ＣＰＵ３３０２は、図３２において、仮の大きな音の終点フレームのパワーの中から最も大きくパワーが出ている２箇所３２０１及び３２０２を探す。
【００７５】
次に、ＣＰＵ３３０２は、仮の大きな音の終点フレームから後ろに向かって、各フレームで同じ箇所でパワーが特徴的にでているか調べ、出終わる直前を大きな音の終点として決定する。具体的には、ＣＰＵ３３０２は、調べるフレームのパワーの中から最も大きくパワーが出ている５箇所を探す。次に、ＣＰＵ３３０２は、５箇所の中で、上記の最大パワーの２箇所３２０１及び３２０２のどちらかと同じ箇所があるか調べる。連続して同じ箇所が出ていないフレーム数もカウントするので、このカウンタを初回は０にリセットしておく。
【００７６】
ある場合は、ＣＰＵ３３０２は、同じ箇所でパワーが特徴的に出ていると判断し、カウンタを０にリセットして、調べるフレームを次のフレームにし、上記の５箇所を探す処理に戻る。
【００７７】
ない場合は、ＣＰＵ３３０２は、カウンタを１増やす。カウンタが３未満の場合は、ＣＰＵ３３０２は、調べるフレームを次のフレームにし、上記の５箇所を探す処理に戻る。カウンタが３の場合は、ＣＰＵ３３０２は、連続して同じ箇所に強いパワーがなかったということで、音が目立たなくなったと判断し、現在調べていたフレームの３つ前（連続してパワーがでていないと判断され始める直前）を大きな音の終点にする。
【００７８】
次に、ステップＳ１６１０では、ＣＰＵ３３０２は、上記の仮の大きな音の範囲内の最大位置を大きな音の始点とする。すなわち、ＣＰＵ３３０２は、仮の大きな音の始点から大きな音の終点までの間で振幅の絶対値が最大の場所を大きな音の始点とする。これは、大きな音の出始めではなく、映像効果のスタートとしたい音の大きな位置を始点とするためである。
【００７９】
次に、ステップＳ１６１１では、ＣＰＵ３３０２は、検出区間を大きな音の区間とし、大きな音のイントロが検出されたと判断し、図１２のステップＳ１２０７へ進む。
【００８０】
図１７は、図１２のステップＳ１２０４の大きな音（エンディング）検出処理の詳細を示すフローチャートである。大きな音（エンディング）検出処理では、図１６の大きな音（イントロ）検出処理と同様に、シンバル等の大きな音で曲が終わっているかを調べる。
【００８１】
ステップＳ１７０１では、ＣＰＵ３３０２は、曲波形データに対して０．２秒間隔で振幅の絶対値の最大値のフレーム配列データを作成する。なお、図１（第１の実施形態）と同様に、移動平均を使ったり、高速フーリエ変換したパワーを使ってもよい。
【００８２】
次に、ステップＳ１７０２では、ＣＰＵ３３０２は、曲波形データの後半で最後の振幅絶対値が大きい位置を探し、大きな音の終点と仮決定する。
【００８３】
次に、ステップＳ１７０３では、ＣＰＵ３３０２は、数十ミリ秒間隔で高速フーリエ変換を行う。
【００８４】
次に、ステップＳ１７０４では、ＣＰＵ３３０２は、大きな音の終点から前に向かってパワーのピークが変わる直前の位置を探す。すなわち、ＣＰＵ３３０２は、大きな音の持続が開始している位置を探す。
【００８５】
次に、ステップＳ１７０５では、ＣＰＵ３３０２は、パワーのピークが変わる直前から後に向かって最初にある振幅の大きい位置を探す。
【００８６】
次に、ステップＳ１７０６では、ＣＰＵ３３０２は、ピークが変わる直前から振幅の大きい位置までの間隔が広いか調べる。広い場合には、ＣＰＵ３３０２は、ステップＳ１７０７へ進み、音が鋭く立ち上がっていないので、大きな音のエンディングとはみなさず、図１２のステップＳ１２０８へ進む。狭い場合には、ステップＳ１７０８へ進む。
【００８７】
ステップＳ１７０８では、ＣＰＵ３３０２は、仮の大きな音の範囲内の最大位置を大きな音の始点とする。
【００８８】
次に、ステップＳ１７０９では、ＣＰＵ３３０２は、検出区間を大きな音の区間とし、大きな音のエンディングが検出されたと判断し、図１２のステップＳ１２０７へ進む。
【００８９】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００９０】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９１】
３４００  盛り上がり検出装置
３４０１  平滑化部
３４０２  極小点検出部
３４０３  盛り上がり区間検出部
３４１１  第１の平滑化部
３４１２  第２の平滑化部
【図１】
2011095425.tif 000003
【図２】
2011095425.tif 000004
【図３】
2011095425.tif 000005
【図４】
2011095425.tif 000006
【図５】
2011095425.tif 000007
【図６】
2011095425.tif 000008
【図７】
2011095425.tif 000009
【図８】
2011095425.tif 000010
【図９】
2011095425.tif 000011
【図１０】
2011095425.tif 000012
【図１１】
2011095425.tif 000013
【図１２】
2011095425.tif 000014
【図１３】
2011095425.tif 000015
【図１４】
2011095425.tif 000016
【図１５】
2011095425.tif 000017
【図１６】
2011095425.tif 000018
【図１７】
2011095425.tif 000019
【図１８】
2011095425.tif 000020
【図１９】
2011095425.tif 000021
【図２０】
2011095425.tif 000022
【図２１】
2011095425.tif 000023
【図２２】
2011095425.tif 000024
【図２３】
2011095425.tif 000025
【図２４】
2011095425.tif 000026
【図２５】
2011095425.tif 000027
【図２６】
2011095425.tif 000028
【図２７】
2011095425.tif 000029
【図２８】
2011095425.tif 000030
【図２９】
2011095425.tif 000031
【図３０】
2011095425.tif 000032
【図３１】
2011095425.tif 000033
【図３２】
2011095425.tif 000034
【図３３】
2011095425.tif 000035
【図３４】
2011095425.tif 000036