3

HPS方式を使用してiPhoneに音声ピッチ検出を実装することを検討していました。しかし、検出されたトーンはあまり正確ではありません。Performousはピッチ検出のまともな仕事をします。

コードを調べましたが、計算の背後にある理論を完全には理解できませんでした。彼らはFFTを使用して、ピークを見つけます。しかし、彼らがFFT出力の位相を使用している部分は、私を混乱させました。彼らは音声周波数にいくつかのヒューリスティックを使用していると思います。

では、Performousでピッチを検出するために使用されるアルゴリズムを誰か説明してもらえますか?

4

1 に答える 1

2

[Performous][1]マイクからピッチを抽出します。また、コードはオープンソースです。これは、アルゴリズムをコーディングした人(irc.freenode.net#performousのTronic)による、アルゴリズムの機能の説明です。

  • PCM入力(バッファリング付き)
  • FFT(一度に1024サンプル、後でバッファーの前から200サンプルを削除)
  • 再割り当て方法(以前は200サンプルだった以前のFFTに対して)
  • ピークのフィルタリング(この部分ははるかに優れているか、省略されている可能性があります)
  • ピークを倍音のセットに結合する(この組み合わせをトーンと呼びます)
  • トーンの時間フィルタリング(新しく検出されたトーンを単に使用するのではなく、以前に検出されたトーンのセットを更新します)
  • 最適なボーカルトーンを選択します(周波数制限、均等化、ハーモニックアレイも使用できますが、使用しないと思います)

私はまだこの情報からそれを理解して実装することができませんでした。誰かがこれを管理している場合は、ここに結果を投稿し、SOが私に通知するようにこの応答にコメントしてください。

タスクは、このコードの周りに最小限のC++ラッパーを作成することです。

于 2010-11-17T21:16:06.327 に答える