6

オーディオ ファイルから振幅などの音楽情報を取得するにはどうすればよいでしょうか。

http://www1.icsi.berkeley.edu/Speech/mr/nearfar.htmlのような曲線を生成できるファイルからデータを抽出したい生のオーディオ ファイルがあるとします。この曲線が得られたら、FFT などを実行します。

ここに画像の説明を入力

私は Java Sound で解決策を検索しようとしていますが、これまでのところわかっているのはbyte[]AudioInputStream. しかし、それをサウンドに関する実際の情報を含むに変換byte[]するにはどうすればよいでしょうか? double[]この場合、 の値は振幅double[]を表します。

Javaでこの問題を解決するソリューションを誰か提供してもらえますか?

4

1 に答える 1

5

一般的な wav ファイルは 16 ビットのリトル エンディアンであるため、連続する 2 バイト (b1 と b2) を取得して、次のように振幅を取得できます。

(double) (b2 << 8 | b1 & 0xFF) / 32767.0;

入力がステレオの場合、最初の 2 バイトが左チャンネルになり、次に 2 バイトが右チャンネルになります。

于 2012-10-23T06:37:44.623 に答える