web-dev-qa-db-ja.com

2つのオーディオファイルをプログラムで比較するにはどうすればよいですか?

プログラムで2つのオーディオファイルを比較したい。例:iPhoneアプリにサウンドファイルがあり、別のファイルを録音します。既存の音が録音された音と一致するかどうかを確認したい(-音声認識と同様)。

どうすればこれを達成できますか?

32
Shishir.bobby

それはオーディオフィンガープリントと呼ばれます。あなたがいくつかのアイデアを得ることができるいくつかのオープンソースプロジェクトがあります。ここを見てください: Audio Fingerprint --MusicBrainz

24
MiguelB

とにかくモバイルデバイスに適していないオーディオフィンガープリント計算を実行するサーバーを用意します。次に、モバイルアプリがファイルをサーバーにアップロードし、分析結果を取得して表示します。ですから、それを実装するプログラミング言語はそれほど重要ではないと思います。以下は、いくつかのAF実装です。

Java: http://www.redcode.nl/blog/2010/06/creating-shazam-in-Java/

VC++: http://code.google.com/p/musicip-libofa/

c#: http://www.codeproject.com/KB/WPF/duplicates.aspx

13
Tae-Sung Shin

私はその質問がずっと前に尋ねられたことを知っています、しかし明確な答えは他の誰かを助けるかもしれません。

  1. Echoprint(ウェブサイト:echoprint.me/start)のライブラリは、次の問題の解決に役立ちます。

    • 大きなコレクションの重複を排除
    • ハードドライブまたはサーバー上の曲を識別(トラック、アーティスト...)
    • データを使用してEchoprintサーバーを実行します
    • IOSデバイスで曲を特定する

    PS:より音楽指向の機能については、APIのリストを確認できます ここ

  2. implement自分でフィンガープリントを作成したい場合は、リファレンスとしてリストされているドキュメントを読む必要があります ここ 、おそらくmusicip-libofa on Google Code

これが役立つことを願っています;)

4
Mehdi.

Shazam のように聞こえます。

これについて話しているウェブ上の記事がいくつかあります。 this 私が少し前に読んだ記事も含まれます。

分析にShazam手法を使用すると、並べて比較するための優れた出発点になります。

3
Hyperbole

私は興味を持ち、Java oversourgeforge。yoはSVNからコードを取得できます。

http://sourceforge.net/projects/comparisong/

それを見て、それがあなたのために働いたかどうか私に知らせてください。

乾杯

3
Stefano
  • バンドパスフィルターを適用してノイズを低減します
  • 振幅を正規化する
  • 相互相関を計算します

それはかなりMhzを集中的にすることができます。

DSPの詳細は、Well-KnownTextにあります。

  • アランV.オッペンハイムとロナルドW.シェーファーによるデジタル信号処理
2

同様に、両方のオーディオトラックから数秒のサンプルを選択し、振幅を正規化し、バンドパスフィルターを使用してノイズを低減し、相関器を使用してみてください。

たとえば、2つのうちの1つのサンプルを5秒間取得し、それを2つ目のサンプルの上にスライドさせて、シフトするたびに相互相関を計算することができます。 (小さすぎるパシェを使用すると、予期しないときに高い相関が発生する可能性があり、信号のトリミングと相互相関による副作用が発生することに注意してください)。その後、相互相関の結果をすべて含む配列を収集し、最大値のインデックスを取得できます。

次に、実験的にしきい値を設定して、いつパシェを同じと仮定するかを決定する必要があります。これは、比較しているオーディオトラックの品質に応じて変わります。

無線通信でプリアンブルを受信して​​区別するためのコリエーターを実装しました。私のスクリプトは実際にはmatlabで実行されます。あなたが興味を持っているなら、私は共通の部分を見つけてあなたにそれを送ることを試みることができます。

フォーラムに貼り付けるには長すぎるコードになります。よろしければお知らせください。できるだけ早くお送りします。

乾杯

1
Stefano