サウンドレイテンシーテストを行っています。私のデバイスは、ビープ信号または無音信号を受信します。これらの信号を区別するにはどうすればよいですか。私を助けてください。前もって感謝します..
3 に答える
約 10 ミリ秒相当のサンプル (たとえば、44.1 kHz で 441 サンプル) を見て、そのバッファー内のエネルギーを測定します。あるしきい値を超えていれば信号であり、しきい値を下回っていれば無音です。
エネルギーを測定するには、バッファ内の各サンプルの二乗値を合計し、サンプル数で割ります。
場合によります。デジタル オーディオが (別の関数のように) 合成的に生成されたものであり、ある場合には真のデジタル無音 (ゼロ化されたサンプル) が得られるという事実に依存できる場合、解決策は単純にゼロ化されたサンプルをテストすることです。測定窓の上。ゼロ以外は沈黙ではありません。
ただし、マイクなどから録音された現実世界のオーディオを扱っていると思います。この場合、時間ウィンドウでエネルギーを測定し、それをしきい値と比較することは確かに理にかなっています。決定する必要がある 2 つのパラメーターは次のとおりです。
- 閾値エネルギーレベル
- 時間枠の長さ
しきい値が低すぎると、偽陽性率が高くなりすぎます。ビープ音ではないバックグラウンド ノイズがビープ音として解釈される場合があります。逆に、しきい値が高すぎると、システムがビープ音をノイズとして分類する可能性があります。幸いなことに、バックグラウンド ノイズがかなり低いオーディオを行っている場合、パフォーマンスはこのしきい値にあまり敏感ではありません。
ウィンドウの長さが長くなると、これらの偽陽性/偽陰性の割合が減少し、システムがより堅牢になりますが、ウィンドウが長すぎるとシステムの使いやすさが低下する可能性があります。たとえば、自動電話システムは、メニュー ナビゲーションを支援するためにキー押下を分類します。ユーザーが各キーを一度に 3 秒間押し続ける必要がある場合、精度は向上しますが、ほとんどすべての操作性が犠牲になります。
ポールが提案したように、1 つの最大サンプルのみに基づいて決定を下さないことをお勧めします。これを行うと、サンプリング ウィンドウの長さによって提供される偽陽性に対する耐性が完全に損なわれます。
ループバック方式を使用する場合、ノイズは考慮されますか? たとえば、ビープ音を 2 番目のデバイスに送信した場合、ループバックして送信者に送り返し、無音パケットを送信して同じことを行います。送信者レベルで遅延を測定できませんか (実際のネットワーク遅延を知っている場合)。 .