3

私は現在、ゼロクロッシング推定を使用して着信信号の周波数を検出する必要があるオーディオ処理ソフトウェアを開発しています。完全な正弦波が入力された場合の周波数の推定は難しくありませんが、ピアノの場合は音波が異なり、その背後にある理論が変わります。

現時点では、ソフトウェアはすべてのゼロを検出し、それと前のゼロの間のインデックス位置を保存します (サンプルの数を記録するため)。

以下は、44.1kHz でサンプリングされた 130 Hz ピアノ C ノートの各ゼロ間のサンプルを含む配列です。

44  11  36  65  56  12  37  66  52  13  38  67  51  11  39  68  50  11  47  60  49  11  48  61  47  14  47  66  43  13

タスクは、未知の長さの未知のパターンを決定することです。ただし、これらのパターンには誤差が生じる場合があります。例えば、

44, 11, 36, 65
56, 12, 37, 66
52, 13, 38, 67

パターンです。そのため、パターンの平均和を処理した後、周波数を簡単に検出できます。 パターンがそのままで、その長さが不明であることを知っている場合、これらのタイプのパターンをどのように検出できますか。

4

1 に答える 1

1

最初に信号をローパスしてみてください。これにより、余分なゼロ交差につながる高い倍音を含む信号成分が減少します。ここでのポイントは、他の高調波に比べて基本波の強度を高めることです。これは、無関係なゼロ交差を効果的に作成するだけです。

EQ に関するいくつかのヒント:

http://blog.bjornroche.com/2012/08/basic-audio-eqs.html

特にピッチ検出に関連する eq:

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

信号によっては、高次や異なる種類のフィルターなど、より急峻なものが必要になる場合があります。

もちろん、zeroX ピッチ検出は本質的に制限されており、ローパスでは不十分な場合があります。

更新: ローパスの目的は、ノイズを除去することではなく、基音を強調することであることを明確にしました。

于 2013-03-08T19:00:41.020 に答える