2009-05-15 2 views
6

正確なサンプルがwavのどこかに存在することがわかっている(しかし、他のサウンドと混ざっているかもしれません)場合は、より長いwavの内側に小さなwavサンプルの出現を見つけることは可能でしょうか? (2つの応答を受け取った後)別のWAVの中にWAVサンプルのオカレンスを見つけますか?

編集

:私は大きなWAVにすることができ、すべての既知の音のライブラリーを持っており、そのWAV内でそれらのそれぞれの出現を検索したい場合は?言い換えれば、私はを知っています。可能な音は、大きなwavに混入することができ、それらの出現を発見したいですか?

+0

(2つの応答を受け取った後):より大きなWAVに存在する可能性のある既知のすべてのサウンドのライブラリがあり、そのWAV内でそれぞれのオカレンスを見つけたい場合はどうなりますか?言い換えれば、私は大ウェーブに混在する可能性のあるあらゆる音を知り、それらの出現を発見したいのですか? –

+0

@ ZomCoder:これは非常に難しい問題のドメインであるため、WAV-to-MIDIアプリケーションはひどいです。これを扱っているプログラマは良いプログラマではないからです。たとえあなたが世界最高のプログラマーであったとしても(私はあなたがそうではないと言っているわけではありません)、そこにあるものよりも良い結果を生み出すには長い時間と多くの努力が必要です。 – MusiGenesis

+0

可能なすべてのサウンドのライブラリがあり、ピッチシフトされていない場合は、相互相関が最も効果的だと思います。 – endolith

答えて

3

正確には、正確なサンプル値を意味するものではありません。サンプル値が正確であれば、サンプル値を検索するのは簡単で高速で効率的です。

あなたが寄与する音のビットを探しているなら、最善の方法は "convolution"と呼ばれる数学的プロセスを使うことです。基本的には、大きなサンプル内で見つけようとしているサンプルを取り出し、効果的に大きなサンプルの隣に置き、相関させます。すべてのサンプル位置に対してこれを行います。あなたはこれからサンプルがどこにあるかにはっきりとしたスパイクを持つ曲線を得るでしょう。かなり計算量が多いが、コンピュータはかなり高速になっているので、その実現可能性は高い。

しかし、これは、サンプルが両方のケースで同じ録音から来たものと仮定しています。 2つの異なる場所から同じドラム音であっても、ドラム音をミッキングしても、非常に良い相関は得られません。

希望に役立ちます。

+0

それは多くの助けになります。私の目標は、私が作ったデジタルピアノの古いWAVレコーディングをMIDIに変換することです。そのデジタルピアノは、それが演奏する有限のサンプルセットを持っています。もし私がそれを再生し、古い録音と畳み込みを使用することができるすべての可能なサンプルをつかむことができる、これは私がそれを行うことができるかもしれないように聞こえる。私が考えることの一つの障害は、私が別々のボリュームでレコーディングしたことです。それがどれくらい私に影響するのだろうか?私は実際にそれが完全に完璧であるかどうか気にしません、それは大部分の「サウンドからミディ」アプリよりも優れていて、テリブルです。ありがとう。 –

+0

ボリュームが小さければ相関が弱くなります。 しかし、ピアノのような調律された音は、ノートがそれ自体に相関し、1つの波長によってオフセットされるので、多くのスパイクを生成します。したがって、他のピークの中で極大値であるピークのみを使用する必要があります。 あなたがプレイした可能性のあるすべての音符と相関関係があるため、少し遅いかもしれません。 –

+0

このタスクでは、畳み込みではなく相互相関を使用します。非常に似ていますが、少し異なります。 – tom10

0

あなたが定義した通り、それが他のサウンドと混ざり合っていれば、それは理由です。その逆の波と正確に混合された波の効果を考えてみましょう。結果はフラットな応答です。波の混合には、単調な機能、つまり、最初の波を取り戻すことができないように、波を効果的に別の波にマスクする機能があります。

言い換えれば、合成波ファイルに存在する可能性があるような波の「署名」を特徴付ける方法はありますが、その署名は波ファイルの長さとどのようなタイプの組み合わせがその上で行われることが期待されていたのか。

あなたの質問は、おそらく、ある作品のサンプルが他の作品の中に存在するかどうかを判断することと関係していると思われます。一般に、はい、FFTは、ある特定の波の「署名」を決定し、その別の波からその「署名」を抽出することができます。彼らはいくつかのもの(周波数シフトなど、それは単にFFT上の変位として現れる)には適していますが、他のものに対してはそれほど大きくありません(周波数変調の変化、1つの周波数変調の変化、信号)。言い換えれば、FFTはサンプルの「素朴な」使用を検出する良い方法ですが、使用された検出手法であることがわかっている場合、FFTによる検出が困難になるように、元のサンプルを変更できます。

0

サンプルの正確な性質(ビット単位の長さなど)を知っていれば、非常に可能です。それが何らかの形で変わるならば、最初にやるべきことがたくさんあるでしょう。

WAVファイルが(トラックごとに順次に)エンコードされるため、最初のトラックの最初のロットを取得し、次に2番目のトラックのビットの最初のロットを取得し、最初のロットトラック)

これは明らかに多くのトラックで繰り返すことができます。探しているWAVファイルがこれらのトラックの1つに固有にエンコードされていることがわかっている場合は、各トラックを分離して操作できます。

サンプルがスピード、テンポ、ピッチなどによって異なる場合は、明らかに異なるビット・シグネチャを持つため、トラックを正規化する必要があります。

4

それはあなたが見つけると何あなたがそれを見つけるためにしようとしているしようとしている正確に何に依存します。

  • あなたが大規模のチャンクと全く同じだサンプルを探しているならWAVファイル、bit-for-bit、次に値を直接検索できます。
  • 正確には同じサウンドで、サンプルの正確さがない場合(MP3のクリップと同じ曲のWAVをマッチさせる場合)は、cross-correlationを使用して簡単に見つけることができます。相互相関は、明示的にサンプルを乗算して合計する「素朴な」方法ではなく、FFT法を使用することによって大幅に高速化できます。
  • 他のサウンドと混在している短いサンプルを探している場合でも、相互相関を使用することは可能ですが、他のサウンドがマッチに影響するかどうかによって異なります。シンプルなサンプルとエフェクトのないデジタルピアノの場合、デジタルレコーダーに直接接続すると動作します。
  • しかし、サウンドがどのようなタイプのフィルタリング、極性反転、または位相シフトを経ている場合、波形が変更されるため、これはうまく機能しません。したがって、ピアノをスピーカーで演奏してからマイクで録音した場合、これは実行可能な解決策ではありません。何この場合には良い仕事かもしれませんがshort-time Fourier transform(STFT)を使用して記録し、あなたが探しているもののスペクトログラムのspectrogramを作成し、時間的に相互相関を行うことです

2つの画像のスペクトログラムは、時間の経過とともに音のスペクトルの振幅の2D画像であり、次にそれをマッチングさせることができます。 (これはおそらく、もっと特殊化されたアルゴリズムがあるラウンドアバウトの方法ですが、何が呼び出されるか分かりません));

サウンドクリップはどこかにアップロードできますか?

関連する問題