私はオーディオ分析は初めてですが、(一見)簡単なタスクを実行する必要があります。16 ビットの録音 (単一チャネル) と 44100 のサンプル レートを含むバイト配列があります。特定の瞬間の音量を取得するための簡単な分析を実行するにはどうすればよいですか? しきい値を計算する必要があるため、特定の振幅 (ボリューム) を超えている場合は true を返し、そうでない場合は false を返す関数です。バイト配列を反復処理してその値を確認できると思いました.255が最も大きいですが、何も録音していなくてもバックグラウンドノイズが入り、配列の一部がいっぱいになっているため、これは機能しないようです255.どんな提案も素晴らしいでしょう。ありがとう
2071 次
3 に答える
4
16 ビットのデータがあるため、信号は -32768 から +32767 の間で変化することが予想されます。ボリュームを計算するには、たとえば 1000 サンプルの間隔を取り、それらの RMS 値を計算します。サンプル値の 2 乗を合計して 1000 で割り、平方根をとります。この数をしきい値と照合してください。
于 2010-12-06T08:22:04.443 に答える
0
標準偏差のスライディング ウィンドウを適用してみるかもしれません。OTOH、私は 255 = 最大音量だとは思いませんでした。そうかもしれませんが、どのエンコーディングが使用されているか知りたいです。圧縮が存在する場合、255 が「最も大きい」とは思えません。
于 2010-12-06T03:38:01.760 に答える