プログラムで2つのオーディオファイルを比較したい。例:iPhoneアプリにサウンドファイルがあり、別のファイルを録音します。既存の音が録音された音と一致するかどうかを確認したい(-音声認識と同様)。
どうすればこれを達成できますか?
それはオーディオフィンガープリントと呼ばれます。あなたがいくつかのアイデアを得ることができるいくつかのオープンソースプロジェクトがあります。ここを見てください: Audio Fingerprint --MusicBrainz 。
とにかくモバイルデバイスに適していないオーディオフィンガープリント計算を実行するサーバーを用意します。次に、モバイルアプリがファイルをサーバーにアップロードし、分析結果を取得して表示します。ですから、それを実装するプログラミング言語はそれほど重要ではないと思います。以下は、いくつかのAF実装です。
Java: http://www.redcode.nl/blog/2010/06/creating-shazam-in-Java/
私はその質問がずっと前に尋ねられたことを知っています、しかし明確な答えは他の誰かを助けるかもしれません。
Echoprint(ウェブサイト:echoprint.me/start)のライブラリは、次の問題の解決に役立ちます。
PS:より音楽指向の機能については、APIのリストを確認できます ここ。
implement自分でフィンガープリントを作成したい場合は、リファレンスとしてリストされているドキュメントを読む必要があります ここ 、おそらくmusicip-libofa on Google Code
これが役立つことを願っています;)
私は興味を持ち、Java oversourgeforge。yoはSVNからコードを取得できます。
http://sourceforge.net/projects/comparisong/
それを見て、それがあなたのために働いたかどうか私に知らせてください。
乾杯
それはかなりMhzを集中的にすることができます。
DSPの詳細は、Well-KnownTextにあります。
同様に、両方のオーディオトラックから数秒のサンプルを選択し、振幅を正規化し、バンドパスフィルターを使用してノイズを低減し、相関器を使用してみてください。
たとえば、2つのうちの1つのサンプルを5秒間取得し、それを2つ目のサンプルの上にスライドさせて、シフトするたびに相互相関を計算することができます。 (小さすぎるパシェを使用すると、予期しないときに高い相関が発生する可能性があり、信号のトリミングと相互相関による副作用が発生することに注意してください)。その後、相互相関の結果をすべて含む配列を収集し、最大値のインデックスを取得できます。
次に、実験的にしきい値を設定して、いつパシェを同じと仮定するかを決定する必要があります。これは、比較しているオーディオトラックの品質に応じて変わります。
無線通信でプリアンブルを受信して区別するためのコリエーターを実装しました。私のスクリプトは実際にはmatlabで実行されます。あなたが興味を持っているなら、私は共通の部分を見つけてあなたにそれを送ることを試みることができます。
フォーラムに貼り付けるには長すぎるコードになります。よろしければお知らせください。できるだけ早くお送りします。
乾杯