2013年12月4日 星期三

java wav 計算db值

承上篇...
有計算音量的部分(算db值, 只是一個強度相對的大小值)

我忘了是從那邊copy出來的~
不過用google查該method name應該可以找到不少...

反正就把從WaveFile裡面讀到的raw data丟進去就有一個值生出來了XD"

主要計算db的method
/** Computes the RMS volume of a group of signal sizes ranging from -1 to 1. */
    public double volumeRMS(double[] raw) {
        double sum = 0d;
        if (raw.length==0) {
            return sum;
        } else {
            for (int ii=0; ii<raw.length; ii++) {
                sum += raw[ii];
            }
        }
        double average = sum/raw.length;

        double sumMeanSquare = 0d;
        for (int ii=0; ii<raw.length; ii++) {
            sumMeanSquare += Math.pow(raw[ii]-average,2d);
        }
        double averageMeanSquare = sumMeanSquare/raw.length;
        double rootMeanSquare = Math.pow(averageMeanSquare,0.5d);

        return rootMeanSquare;
    }

沒有留言: