2つのオーディオトラックの同期


9

2つのオーディオトラックを同期するアルゴリズムを実装したいと思います。

2つのトラックはよく似ています。同じ部屋にある2つのマイクからの音(必ずしも音楽ではない)の2つの録音であると想像できます。これは、2つの異なる(線形)チャネルを通過する1つの信号として、異なる加法性ノイズとともに表示されることを意味します。

最初のアイデアは相互相関のピークを探すことかもしれませんが、このトピックに関する文献を見つけることは特に興味深いですが、見つけることができるすべての論文は2つの音楽トラックを同期させることです(クロマベースのオーディオ機能を使用) )、またはスコアとオーディオを同期します。彼らはまた、タイムワーピングがあるかもしれないと仮定しますが、それは私の場合には不必要な仮定です。

回答:


4

クロマベースのアプローチは、アラインするトラックが同じ素材の2つのパフォーマンスであり、インストゥルメンテーションが大きく異なる場合に使用されます。それ-それらは完全に抽象的な音色、録音技術です。しかし、あなたはあなたの場合それらを必要としません。

ご想像のとおり、生のオーディオの相互相関は1 /ノイズに対してそれほど強くない、2 /トランスデューサーの違いに対してあまり強くない(2つのマイクの応答が非常に異なる可能性がある)3 /数分かかる場合は非常にコストがかかるオーディオ。

次のことをお勧めします。

  • 両方の信号からMFCCベクトルのシーケンスを抽出します。このようにすると、次元が低くなり、ノイズやトランスデューサーの違いに対してもう少し堅牢になります。
  • 必要に応じてMFCCを正規化します( "設計"の係数0は係数1よりも分散が大きいなど...)...理想的には、MFCC行列の各行に分散1が必要です。
  • 時間軸に沿って、取得した2つの行列の相互相関を計算します(つまり、2D相互相関を計算し、時間軸のデータを保持します)。

興味深いアプローチ。MFCC分析からどのような時間分解能を得ることができますか?これはスペクトル分解能によって制限されますか?
Hilmar

ポスターは、彼がどの決議を期待しているかを述べなかった。このアプローチは、MFCC分析の解像度に限定され、通常は毎秒50〜100フレームで行われます。これは、スピーチおよび「日常のオーディオ」を含むアプリケーション(たとえば、ビデオ編集で複数の非TCedカメラからのテイクを整列させる)には十分です。おそらく音楽ではない。より高い解像度を得るには、MFCCを使用して「粗い」整列を行い、+ /-10ミリ秒(FFTフレームの持続時間)で整列することをお勧めします。次に、両方のソースから10ミリ秒おきに100ミリ秒のオーディオのチャンクをいくつか取得します。そして、それらを使用して完全なマッチングを行います。
ピシェネット

2
実際、相互相関法は通常、ノイズの影響をあまり受けません。サウンドの非ノイズ部分の相互相関は、相互相関にスパイクを作成します。一方、ノイズはランダムであるため、1つの録音のノイズが特定の方法で他の録音の何かと相関する可能性は低く、相互相関でノイズが増えるだけです。このノイズはスパイクと比較して非常に弱いため、スパイクを特定するときの精度はほとんど影響を受けません。
HelloGoodbye 2016

少し異なる応答がこのような大きな役割を果たすのかどうかについては、私は懐疑的です。相互相関にスパイクが発生しますが、わずかに変換される可能性があります。その場合、トランスデューサーの1つの遅延が原因です。ただし、このような遅延がある場合、MFCCがこれをどのように改善するかはわかりません。
HelloGoodbye 2016

最後に、数分の音声がある場合でも、FFTを使用して相互相関を非常に効率的に計算できます。両方の信号からMFCCベクトルのシーケンスを抽出するには、かなり長い時間がかかると思います。
HelloGoodbye 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.