3

オーディオ信号のゼロクロス率を取得したいと思います。この式のコードを書き込もうとしました:

ここに画像の説明を入力

しかし、私は式全体を正確に理解していません。

コードを処理するために、信号をブロックごとに分割します。つまり、「フレーム ブロッキング」です。たとえば、ブロックの各長さは 512 です (512 の信号サンプルがあります)。そして、100個のブロックがあるとしましょう。それでは、ゼロクロッシング率はブロックごとに 1 つの値だけを返しますか? 式に従って、信号全体に 100 の値を与えるということですか?

また、 w() の意味もわかりません。ウィンドウ処理に使用するのはハミングですか?そして、どのようにnmを計算できますか? 負の数になる可能性が高いですか?

私は非常に混乱しています助けてください?

4

1 に答える 1

6

式を忘れてください。そのように表現しようとすると、式がより複雑になります。

ゼロ交差率は、一定時間 (通常は 1 秒) 内に信号の符号が変化する回数です。あなたが知る必要があるのはそれだけです。通常、符号が変わるたびにではなく、負から正またはその逆になる率のみに関心があります。マイナスからプラスに変わる回数を見ると、信号の周波数の代用として使用できます。

w(nm) とは何かというと、それはウィンドウ関数です。これが、式が「信号がゼロを超えた回数」からの答えを変えるものです。「最後の n サンプルで信号がゼロを横切った回数は?」正直なところ、ちょっと目がくらむようなので、理解できなくても気にしないでください。私も混乱します。ゼロクロッシング率の場合、w が特定の範囲で 1 を返し、それ以外の場合は 0 を返すようなウィンドウ関数を選択します。(これを矩形ウィンドウと呼びます)。この種のウィンドウの式を表現するより良い方法は、一般的な概念としての「ウィンドウ処理」を忘れて、シグマの境界を制限することです (申し訳ありませんが、SO で式を表現する方法がわかりません)。

Z_n(m) = sum_{m=xn}^0|sign[x(m)] - sign[x(m-1)]|

n = サンプル レートの場合、ゼロ クロス レートが Hz で表示されます。それはより理にかなっています: w と無限大はもうありません! 使用していたソースには、一般化するためにウィンドウが含まれている可能性がありますが、この場合、得られるものは何もありません (私の知る限り、すべてを知っているわけではありません!)。

于 2013-03-14T18:51:03.823 に答える