非常に小さな (長さ 1 ~ 3 秒) の効果音を検出しようとしています。現在、FMod を使用して、ループバック手法を使用して (別のプログラムで再生される) 音をキャプチャしています。
私は過去数日間、キャプチャした効果音を保存した約50のデータベースと比較する方法を研究してきました.各バイナリバイトを比較すると、わずかな干渉が発生して変更されることがわかっています. サウンドは、毎回キャプチャされる正確なオーディオ ファイルです。したがって、特性は毎回ほとんど死んでいるはずです。
少なくとも 10 ~ 90 秒のオーディオを録音する必要があるため、既に公開されているフィンガープリンティング ライブラリは使用できません。
音は非常に小さく、数も少ないので、そこにいる専門家の 1 人が簡単な解決策を知っていると思います。私は FFT を使用していくつかの周波数などを比較したかったのですが、Kiss FFT ライブラリをそのまま動作させることはできません。絶対にDOCSではありません。
また、チャネルを分割する関数を作成しました。ここ
int SeperateChannels(FMOD::Sound *sound)
{
byte *ptr1, *ptr2;
unsigned int lenbytes, len1, len2;
sound->getLength(&lenbytes, FMOD_TIMEUNIT_PCMBYTES);
sound->lock(0, lenbytes, (void**)&ptr1, (void**)&ptr2, &len1, &len2);
byte *bufferLeft = new byte[(lenbytes/2)];
byte *bufferRight = new byte[(lenbytes/2)];
for(int i = 0; i < lenbytes; i += 4)
{
bufferLeft[i] = ptr1[i];
bufferLeft[i+1] = ptr1[i+1];
bufferRight[i] = ptr1[i+2];
bufferRight[i+1] = ptr1[i+3];
}
// Kiss FFT????
return 1;
}
どんな助けでも大いに感謝します。-キュー