さまざまなジャンルの音楽を含むライブラリ内の類似の曲を一致/検索する方法を見つけるために、数週間実験してきました。
私の最初の試みは、テンポなどの機能または曲に含まれるベースの数を検出してグループを形成することでしたが、歌のビートの約20%をカウントする必要がないため、このアプローチ(ボリューム変更ベースのビート検出)にはあまり行きませんでした常に、時にはそれらの1/2または1/3であり、私はそれを実装できませんでした。
数週間失敗した後、私はこの投稿で後述する新しいアイデアを得ました。簡単に言うと、ファイルのスペクトルサンプルを取得して、ファイルの「平均スペクトル」のようなものを作成して比較します。背後にあるアイデアは、たとえば、Hardstyleには通常のロックミュージックよりもはるかに多くのベースがあるということでした。また、Audacityのいくつかのスペクトラムを見て、これを確認しました。
- ファイル1:完全なファイルFFTスペクトルの取得(2048サンプルサイズatm、振幅ログ、スケーリング)
- すべてのスペクトル配列を合計し、各ビンの平均を取る
- 同じいくつかの他のファイルを実行し、すべての結果を保存します
- ファイル1と他のファイル間のFFT値の差異リストを作成する
- ファイル1とファイルXの差を平均化する
- これらの平均で昇順で並べ替え
- 「差異値」が最も低い曲は類似していると見なされます。
これが私のアイデアを実装するための正しい/良い方法であるかどうか、良い知識を持っているあなたの一部は私に言うことができますか?