14

私はTunaticMidomiに似たものを構築したいと考えており (何をするかわからない場合は試してみてください)、どのアルゴリズムを使用する必要があるのか​​考えています。このようなアプリケーションの仕組みについて私が持っている考えは、次のようなものです。

  1. いくつかの曲を含む大きなデータベースを持っている
  2. 1の各曲について、品質/ビットレートを下げ(たとえば64kbpsに)、サウンドの「ハッシュ」を計算します
  3. 識別したい音楽の音/抜粋を持っている
  4. 3.の曲の品質/ビットレートを下げ(再び64kbpsに)、サウンドの「ハッシュ」を計算します
  5. 4.サウンド ハッシュが2.サウンド ハッシュのいずれかにある場合、一致した音楽が返されます

環境ノイズとエンコードの違いにより、品質/ビットレートを下げることを考えました.

私はここで正しい軌道に乗っていますか?誰かが私に特定のドキュメントや例を提供できますか? みどりちゃんも認識しているようでhum's、すごい迫力です!彼らはどのようにそれをしますか?

サウンドハッシュは存在しますか、それとも私が作ったものですか? もしそうなら、どうすればそれらを計算できますか? さらに重要なことに、が入っているかどうかを確認するにはどうすればよいchild-hashですfather-hashか?

Python (おそらく組み込みモジュール) または PHP を使用して同様のシステムを構築するにはどうすればよいでしょうか?

いくつかの例 (できれば Python または PHP) は大歓迎です。前もって感謝します!

4

9 に答える 9

11

私は音楽情報検索(MIR)の研究をしています。音楽フィンガープリントに関する独創的な論文は、2002-03年頃のHaitsmaとKalkerによるものです。グーグルはあなたにそれを取得する必要があります。

Shazamの方法に関する初期の(本当に早い; 2000年以前の)ホワイトペーパーを読みました。その時点で、彼らは基本的にスペクトル時間のピークを検出し、次にピークをハッシュしました。手順は進化したと思います。

これらの方法は両方とも、信号レベルでの音楽の類似性に対処します。つまり、環境の歪みに対してロバストです。クエリバイハミング(QBH)ではうまく機能しないと思います。ただし、これはさまざまな(まだ関連している)ソリューションとは異なる(まだ関連している)問題であるため、文献で解決策を見つけることができます。(ここで名前を付けるには多すぎます。)

ISMIRの議事録はオンラインで無料で入手できます。あなたはそこに貴重なものを見つけることができます:http ://www.ismir.net/

Marsyasのような既存のライブラリを使用することに同意します。あなたが望むものに依存します。ここではNumpy/Scipyが不可欠だと思います。簡単なものはPythonで自分で書くことができます。STFT、MFCCなどが必要な場合は、コードをメールで送信できます。

于 2010-01-15T15:20:28.073 に答える
10

私は、いくつかの音楽情報検索手法を実装するクールなフレームワークの周辺に取り組みました。私はほとんど専門家ではありません (編集: 明確にするために、実際には私は専門家に近いところはありません) が、高速フーリエ変換がこのようなもので至る所で使用されていることはわかります。フーリエ解析は風変わりですが、その適用は非常に簡単です。基本的に、時間領域ではなく周波数領域で分析すると、オーディオに関する多くの情報を得ることができます。これがフーリエ解析から得られるものです。

それはあなたがやりたいことから少し離れているかもしれません。いずれにせよ、プロジェクトにはいくつかのクールなツールがあり、コア ライブラリ自体のソースコードも表示されます: http://marsyas.sness.net

于 2010-01-14T23:27:41.987 に答える
3

音楽から抽出された MFCC は、曲間の音色の類似性を見つけるのに非常に役立ちます。これは、類似した曲を見つけるために最もよく使用されます。darren が指摘したように、Marsyas は MFCC を抽出し、MFCC を単一のベクトル表現に変換することで類似の曲を見つけるために使用できるツールです。

MFCC 以外に、Rhythm も曲の類似性を見つけるために使用されます。Mirex 2009で発表された論文はほとんどありません。

これにより、音楽の類似性を検出するのに最も役立つさまざまなアルゴリズムと機能の概要がわかります。

于 2010-01-14T23:40:51.310 に答える
2

MusicBrainz プロジェクトは、そのようなデータベースを維持しています。フィンガープリントに基づいてクエリを実行できます。

このプロジェクトはしばらく前から存在しており、過去に異なるフィンガープリントを使用していました。一覧はこちらをご覧ください。

彼らが使用している最新のフィンガープリントはAcoustIdです。このようなフィンガープリントを作成できるChromaprintライブラリ (Python バインディングも含む) があります。生の PCM データをフィードする必要があります。

私は最近、(FFmpeg を使用して) デコードを行い、(Chromaprint を使用して) AcoustId フィンガープリントを生成するなどの機能を提供する (PortAudio 経由でストリームを再生するための) ライブラリを Python で作成しました。ここを参照してください。

于 2012-11-10T16:20:49.007 に答える
1

最後に信号処理を行ってからしばらく経ちましたが、ダウンサンプリングではなく、周波数ドメイン表現 (FFT や DCT など) を検討する必要があります。次に、ある種のハッシュを作成し、そのシーケンスを含むデータベースの曲を検索できます。

トリッキーな部分は、この検索を高速化することです (おそらく、遺伝子検索に関するいくつかの論文が興味深いかもしれません)。検索を絞り込むために、iTunes も楽器の検出を行っているのではないかと思います。

于 2010-01-14T23:30:43.630 に答える
1

特定の音楽情報検索サービス (名前は言及されていません) がそれを行う方法についての論文を読みました - オーディオのサンプルに対して短時間フーリエ変換を計算することによって。次にアルゴリズムは、周波数領域の「ピーク」、つまり特に振幅が大きい時間位置と周波数を選び出し、これらのピークの時間と周波数を使用してハッシュを生成します。ハッシュは、異なるサンプル間の衝突が驚くほど少なく、ピーク情報の約 50% のデータ損失にも耐えられることがわかりました.....

于 2010-01-14T23:53:59.973 に答える
1

現在、ActionScript 3 を使用して音楽検索エンジンを開発しています。アイデアは、最初にコードを分析し、周波数が大幅に変化するフレーム (現時点では mp3 ファイルに限定されます) をマークすることです (メロディーの変化とノイズの無視)。その後、入力音に対して同じことを行い、結果を反転ファイルと照合します。一致するものが一致する曲を決定します。

Axel の方法では、音声認識プログラムを実装していないため、クエリが歌かハミングかを気にする必要はないと思います。しかし、ハッシュ関数を使用するあなたの方法に興味があります。それを私に説明していただけますか?

于 2010-01-17T13:56:53.830 に答える