3

私はオーディオ分析は初めてですが、(一見)簡単なタスクを実行する必要があります。16 ビットの録音 (単一チャネル) と 44100 のサンプル レートを含むバイト配列があります。特定の瞬間の音量を取得するための簡単な分析を実行するにはどうすればよいですか? しきい値を計算する必要があるため、特定の振幅 (ボリューム) を超えている場合は true を返し、そうでない場合は false を返す関数です。バイト配列を反復処理してその値を確認できると思いました.255が最も大きいですが、何も録音していなくてもバックグラウンドノイズが入り、配列の一部がいっぱいになっているため、これは機能しないようです255.どんな提案も素晴らしいでしょう。ありがとう

4

3 に答える 3

4

16 ビットのデータがあるため、信号は -32768 から +32767 の間で変化することが予想されます。ボリュームを計算するには、たとえば 1000 サンプルの間隔を取り、それらの RMS 値を計算します。サンプル値の 2 乗を合計して 1000 で割り、平方根をとります。この数をしきい値と照合してください。

于 2010-12-06T08:22:04.443 に答える
3

通常、二乗平均平方根を使用して波のエネルギーを測定します。

知覚的により正確にしたい場合は、離散フーリエ変換を介して時間領域信号を周波数領域信号に変換し、重み付け関数を使用して振幅を統合できます (低周波は高周波よりも知覚的に大きいため)。同じエネルギーの波)。

でも、オーディオのこともよくわからないので、ただのネタバレです。☺</p>

于 2010-12-06T03:37:34.820 に答える
0

標準偏差のスライディング ウィンドウを適用してみるかもしれません。OTOH、私は 255 = 最大音量だとは思いませんでした。そうかもしれませんが、どのエンコーディングが使用されているか知りたいです。圧縮が存在する場合、255 が「最も大きい」とは思えません。

于 2010-12-06T03:38:01.760 に答える