私は前に尋ねたものと同様の質問をして申し訳ありませんが(FFT Problem (Returns random results))、ピッチ検出と自己相関を調べてピッチ自己相関を用いた検出。自己相関は、マイク入力(ハイパスフィルタを使用)でランダムな結果を返します。
私は歌うユーザーのピッチ検出をしようとしています。問題は、ランダムな結果を返すことです。私はhttp://code.google.com/p/yaalp/からいくつかのコードを取得しましたが、これはC++に変換して変更しました(下記参照)。私のサンプルレートは2048、データサイズは1024です。私は正弦波とマイク入力の両方のピッチを検出しています。正弦波の周波数は726.0であり、それは722.950820であることがわかりましたが(これは問題ありません)、マイクのピッチを約100から約1050までの乱数として検出します。
私は今ありますハイパスフィルタを使用してDCオフセットを除去しても動作しません。私はそれを正しくやっていますか?もしそうなら、それを解決するために他に何ができますか?どんな助けでも大歓迎です! (固定)
おかげで、
ニール。
編集:カットオフ30hzのハイパスフィルタを実装するようにコードを変更しました(What Are High-Pass and Low-Pass Filters?から、コンバージョンを使用してローパスフィルタをハイパスに変換する方法を教えてください)。ランダムな結果。それをVSTホストに接続し、VSTプラグインを使用してスペクトルを比較することは、残念なことに私にとっては選択肢ではありません。
編集:すべての人の助けを借りてくれてありがとうございましたが、今は新しいコードを使用しても問題はありません。
BTW:割り当てたメモリの割り当てを解除することはないので、メモリ管理が改善されるはずですが、アルゴリズムを実行しておきたいと思います。しかし、あなたはそれを忘れるべきではありません! – mmmmmmmm
なぜこのタグはC++ですか?そのコードはC++ではありません。 – GManNickG
そこには1つのC++ラインはありませんが、Niallはこれを好きです。 – gimpf