2つのオーディオファイルを比較して、差異の割合を返す方法


12

2つのオーディオファイルを比較する方法はありますか?私が使用していますC#VS08、.NET Frameworkの3.5を。

編集済み:サウンドの違い(例:オーディオ1 "HELP":、オーディオ2:など"HELP ME PLEASE"、この2つのオーディオのパーセンテージの違いを返します。)

現在、録音されたファイルをwav形式で保存していますが、そのビットレートと品質も、録音されて比較されるものと同じになります。同じプロパティと同じ形式(WAV)の2つのオーディオファイルのサウンド(バイナリだけでなく)を比較し、2つのオーディオファイルの2つのサウンドの割合の差を表示する方法があるかどうかを確認したいと思います。

ヘルプは大歓迎です。


7
説明しているのは、デジタル信号処理の領域です。率直に言って、あなたがそれをする方法を尋ねる必要があるなら、あなたはそれをする準備ができている形にありません。.NETには非常に洗練された機能が組み込まれているとは思えません。

私は最近、このテーマに関する研究論文を見ました:産業用オーディオ検索アルゴリズム(PDF)周波数スペクトルを比較します。この手法は、人気のあるiPhoneアプリShazamで使用されています。

3
この質問に答えるには、「類似」の意味を注意深く正確に定義する必要があります。「類似」とは、wavファイルのコンテキストで何を意味すると思いますか?

1
あなたは、世界中の真剣な研究者が何十年も取り組んでいる音声認識の問題にアプローチしようとしています。これができるのは素晴らしいことですが、DSP、ベイジアンネットワーク、分類器などの予備知識がなくても、1人で処理できるとは思いません。
フォノン

2
音声の違いを比較したいのですか、それとも単にテキストを書き写したのですか?最初のハードルを乗り越えれば、それははるかに簡単です。
エムレ

回答:


8

「差異の割合」を定義してください。

たとえば、どの値を取得する予定かを教えてください:

  • 異なる設定でエンコードされた同じファイルの2つのバージョン間で?
  • 同じファイルの2つのバージョン間で、一方が他方よりわずかに速いことを除いて?
  • 同じ音声入力の2つの録音間で、異なるマイク/録音機器を使用しますか?
  • 同じ人が同じ単語を言っている2つの録音の間に?
  • 同じ人が同じ単語を話し、異なる韻律(リズム/メロディー)で2つの録音をしている間?
  • 同じ単語を言っている異なる人の2つの録音の間?
  • 少数の単語を除いて同じ人が同じ文を言っている2つの録音の間に?
  • 人の記録と牛の記録の間?
  • 飛行機の録音と音楽の間?

何を測定しますか?スピーチの内容(言葉)?メロディー、リズム?全体的なオーディオの類似性 エンコード/録音機器の違いは?


3
息を止めないでください。質問は2歳で、OPはAWOLです。
エマー

1
おっと、(最近の)移行日のみに気付きました。
-pichenettes

3

ITU-T P.862をご覧ください。PESQ(音声品質の知覚評価)の標準化された形式、電話システムのユーザーが経験する音声品質を評価するための標準のファミリーです。

これはスピーチの周辺のみです(他のオーディオ情報ではありません)。ソース劣化の 2つのオーディオファイルを比較し、パーセントまたはMOS相当の値を取得します。


2
DSP.stackexchangeへようこそ!回答を提供していただきありがとうございますが、回答/質問を改善するためにFAQをご覧になることをお勧めします。署名はお勧めできません。とにかく登録したハンドルで「署名」します。また、外部資料へのリンク、回答で言及したアプローチの例と説明を提供することは良い習慣です:)
ペネロペ

-3

2つのオーディオファイルを比較するために1つのjavascript関数を使用しています。同じロジックを使用することにより、任意の言語の任意のファイルを比較できます。

function compireAudio(){ 
var audio1 = "http://soundjax.com/reddo/86502%5Ealarm.mp3"; 
var audio2 = "http://soundjax.com/reddo/44368%5EALARME.mp3";
var i,j,d;
var matching = 0;
var t = 0;var i,j,d;
var matching = 0;
var t = 0;
var audio1Arr = Array();
var audio1Len = audio1.length;
for (i = 1; i<=audio1Len; i++)
{
    //reverse so its like a stack
    d = audio1.charCodeAt(audio1Len-i);
    for (j = 0; j < 8; j++) 
    {
        audio1Arr.push(d%2);
        d = Math.floor(d/2);
    }
}
var audio2Len = audio2.length;
for (i = 1; i<=audio2Len; i++)
{
    //reverse so its like a stack
    d = audio2.charCodeAt(audio2Len-i);
    for (j = 0; j < 8; j++) 
    {
        if(d%2 == audio1Arr[t])
        {
            matching++;
        }
        d = Math.floor(d/2);
        t++;
    }
}
var avarage = Number(matching)/((Number(t)+Number(audio1Arr.length))/Number(2))*Number(100);
alert('The Matching with the two audio is '+avarage+' %.');

}


3
バイトストリームを直接比較することはできません。2つの録音は知覚的に区別できない場合がありますが、コードに従って0%一致する2つの異なるバイストリームにエンコードされます。
ピクネット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.