3

同じ音声コンテンツからなる 2 つの約 30 秒のオーディオ ファイルから 2 つの系列 MFCC 係数を抽出しました。オーディオ ファイルは、異なるソースから同じ場所に録音されます。オーディオに同じ会話が含まれているか、別の会話が含まれているかを推定する必要があります。現在、2 つの Mfcc シリーズの相関計算をテストしましたが、結果はあまり妥当ではありません。このシナリオのベスト プラクティスはありますか?

4

4 に答える 4

4

2つのベクトルは事実上ヒストグラムであるため、ベクトル間のカイ2乗距離(ヒストグラムの一般的な距離測度)を計算してみてください。

d(i) = sum (x(i) - y(i))^2/(2 * (x(i)+y(i)));

優れた(mex)実装は、このツールボックスにあります。

http://www.mathworks.com/matlabcentral/fileexchange/15935-computing-pairwise-distances-and-metrics

次のように呼び出します。

d = slmetric_pw(X, Y, 'chisq');
于 2011-11-16T13:33:09.727 に答える
4

私は同じ問題を抱えていましたが、その解決策は、ダイナミック タイムワーピング アルゴリズムを使用して MFCC の 2 つの配列を一致させることでした。

MFCC を計算すると、2 つの信号のそれぞれについて、各要素にフレームの MFCC が含まれる配列 (配列の配列) が必要になります。最初のステップは、1 つの配列のすべての要素と他の配列のすべての要素との間の「距離」、つまり MFCC の 2 つのセットごとの距離を計算することです (これにはユークリッド距離を使用してみてください)。

これにより、2 次元配列 (「dist」と呼びましょう) が残ります。要素 (i,j) は、最初の信号の i 番目のフレームの MFCC と j 番目のフレームの MFCC の間の距離を表します。あなたの2番目の信号の。

この配列で、DTW アルゴリズムを適用できるようになりました。

  • dtw(1,1) = 距離(1,1)
  • dtw(i,j) = min (dtw(i-1, j-1), dtw(i-1, j), dtw(i, j-1)) + dist(i,j).

2 つのファイルの「違い」を表す値は dtw(n,m) で、n = nr です。最初の信号のフレーム数、m = nr。2 番目のフレームの。

さらに読むために、このホワイト ペーパーでは、DTW を MFCC に適用する全体像を示し、DTW アルゴリズムのこのプレゼンテーションも役立つ可能性があります。

于 2013-03-25T09:27:41.123 に答える
1

私は最近同じ問題に直面しました。私が見つけた最良の方法は、オーディオ処理に関して非常に強力なオーディオ ライブラリMIRtoolboxを使用することです。

このライブラリを追加した後、2 つの MFCC の距離は次の呼び出しで簡単に計算できます (より低い距離 <=> 同様の一致):

dist = mirgetdata(mirdist(mfcc1, mfcc2));
于 2013-12-30T09:34:48.060 に答える