正確なサンプルがwavのどこかに存在することがわかっている場合(ただし、他の音と混合される可能性がある場合)、FFTを使用して長いwav内の小さなwavサンプルの発生を見つけることは可能ですか?
編集
(2つの応答を受け取った後):より大きなWAVに含めることができるすべての既知のサウンドのライブラリがあり、そのWAV内でそれぞれの発生を検索したい場合はどうなりますか?言い換えれば、私は大きなwavにミックスできるすべての可能な音を知っていて、それらの発生を見つけたいですか?
それはあなたが見つけようとしているものとあなたがそれを見つけようとしているものに正確に依存します。
この場合にうまくいく可能性があるのは、短時間フーリエ変換(STFT)を使用して記録のスペクトログラムを作成し、探しているもののスペクトログラムを作成してから、時間ごとの相互相関を行うことです。 2つの画像。スペクトログラムは、時間の経過に伴う音のスペクトルの振幅の2D画像であり、これを照合することができます。(これはおそらく、より専門的なアルゴリズムがあることを行うための回り道ですが、それが何と呼ばれるかはわかりません。);)
サウンドクリップをどこかにアップロードできますか?
正確には、サンプル値が正確であることを意味するものではないと思います。サンプル値が正確である場合、サンプル値を検索するだけで、高速かつ効率的になります。
貢献する音のビットを探している場合、最良のアプローチは「畳み込み」と呼ばれる数学的プロセスを使用することです。基本的に、大きなサンプル内で見つけようとしているサンプルを取得し、それを大きなサンプルの隣に効果的に配置して、相関させます。すべてのサンプル位置に対してこれを実行します。これから、サンプルがある場所に明確なスパイクがある曲線が得られます。その非常に計算集約的ですが、コンピュータは非常に高速になっているので、実行可能です。
しかし、これは、サンプルが両方の場合で同じ記録からのものであると想定しています。2つの異なる場所からの同じドラムサウンドであっても、ドラムサウンドをマイキングしても、あまり良い相関関係は得られません。
お役に立てば幸いです。
それが他の音と混ざっている場合、あなたがそれを定義したように正確ではありません、そしてここに理由があります。その逆と正確に混合された波の効果を考慮してください。結果はフラットな応答です。波の混合は単調な機能を持つことができます。つまり、最初の波を取得できないように、ある波を別の波で効果的にマスクすることができます。
とはいえ、結果として得られる複合Waveファイルに存在する可能性が高いように、Waveの「シグニチャ」を特徴付ける方法はありそうですが、そのシグニチャは、Waveファイルの長さとある程度のタイプに依存します。組み合わせの組み合わせは、それに基づいて行われることが期待されていました。
あなたの質問はおそらく、ある作品のサンプルが別の複合的な作品の中に存在するかどうかを判断することと関係があります。一般に、はい、FFTは、特定のウェーブの「シグニチャ」を決定し、別のウェーブからその「シグニチャ」を抽出できるようにするために役立ちます。それらはいくつかのこと(周波数シフトなど; FFTの変位として表示される)には適していますが、他のこと(たとえば、周波数変調の変化;元の高(または不均一)帯域幅圧縮)にはあまり適していません信号)。別の言い方をすれば、FFTはサンプルの「ナイーブ」な使用を検出するための良い方法ですが、決定されたリサンプラーは、それが使用される検出手法であることがわかっている場合、元のサンプルを変更してFFTによる検出を困難にすることができます。
サンプルの正確な性質(ビット単位の長さなど)を知っている場合、それは非常に可能です。それが何らかの形で変化した場合、最初に行うべき多くの作業が必要になります。
WAVファイルのエンコード方法が原因で(トラックごとに順番に-最初のトラックの最初のロットのビット、2番目のトラックの最初のロットのビット、最初のトラックの2番目のロットのビットを取得します)
これは明らかに同じ数のトラックで繰り返すことができます。探しているWAVファイルがこれらのトラックの1つに具体的にエンコードされていることがわかっている場合は、各トラックを分離して操作を実行できます。
明らかに、サンプルの速度、テンポ、ピッチなどが異なる場合は、ビットシグネチャが異なるため、トラックを正規化する必要があります。