26

プログラムで 2 つのサウンド ファイルを比較して、それらが同一またはほぼ同一であるかどうかを判断する方法はありますか? これらは mp3 ファイルではなく、ID3 やその他のメタデータはありませんが、プレーンな wav ファイルです。チェックサム値は完全に同一ではない可能性があるため、比較できない場合があります。

4

4 に答える 4

14

音響フィンガープリンティングに関するウィキペディアの記事では、オープンソースの libfooid を含む多くの製品について言及しています。基本的には、周波数領域に入り、比較的少数の帯域 (たとえば 32) で大まかなレベルを取得して、25 ミリ秒程度のサウンドを表す文字列を取得し、ファイル全体に対してそれを実行してから、異なるファイルのこれらの文字列のファジング比較。これはかなり複雑ですが、実行する必要があります。実際のサンプルを比較しても、音量が数パーセントずれただけで全体が台無しになってしまうような単純なことにはなりません。

于 2009-01-22T23:01:04.867 に答える
9

一連の音の類似性を比較するプロセスは、コンピュータサイエンスの研究では、コンテンツベースのオーディオインデックス検索、およびフィンガープリントと呼ばれます。

これを行う1つの方法は、次のとおりです。

1)各オーディオファイルで数ビットの信号処理を実行して、時間の経過に伴うピッチ、周波数スペクトル、自己相関、ダイナミックレンジ、トランジェントなどの特徴を抽出します。

2)各オーディオファイルのすべての機能を多次元配列に入れ、各多次元配列をデータベースにダンプします

3)最適化手法(最急降下法など)を使用して、多次元データのデータベース内の特定のオーディオファイルに最適なものを見つけます。

これをうまく機能させる秘訣は、どの機能を使用するかです。

MusicBrainzEchoNestなど、このようなことを行うプロジェクトがいくつかあります。

Echonestには、この分野で見た中で最も単純なAPIの1つがあります。始めるのはとても簡単です。

PSいいえ、私はEchonestで働いていませんし、そこで働いている人も知りません。

于 2009-01-23T13:13:00.810 に答える
2

ファイルのかなりまともな指紋を得るために試すことができることの 1 つは、フーリエ変換を行い、ファイルに存在するさまざまな周波数の分布を調べることです。同じフーリエ変換を持つ 2 つの非常に異なるサウンド ファイルを作成することは依然として非常に可能ですが、ファイルが不自然なソースからのものである場合、それはややありそうにありません...

于 2009-01-22T22:58:27.433 に答える
0

2 つの WAV ファイルをサンプルごとに比較し、サンプルごとの平均差を計算できます。速度を上げるために、同じ方法を使用して、10 番目のサンプルごと、または 100 番目のサンプルごとに比較し、本質的に同じ値を得ることができます (2 つのファイルが同じではないか、近くにある場合でも、サンプルごとの平均差は非常に大きくなります)。 )。

于 2009-01-22T22:53:30.873 に答える