在Java中,我們可以使用工具類來獲取hz和響度的數值。
public class AudioUtils { public static double getSampleRate(AudioInputStream audioInputStream) { AudioFormat format = audioInputStream.getFormat(); return format.getSampleRate(); } public static double getDecibelLevel(byte[] bytes) { short[] shorts = toShortArray(bytes); double sum = 0; for (short s : shorts) { sum += s * s; } double rms = Math.sqrt(sum / shorts.length); double dB = 20 * Math.log10(rms); return dB; } private static short[] toShortArray(byte[] bytes) { short[] shorts = new short[bytes.length / 2]; ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shorts); return shorts; } }
上述代碼中,getSampleRate()函數使用AudioInputStream類獲取音頻輸入流的格式,并返回采樣率。
getDecibelLevel()函數先將byte數組轉換成short數組,并使用RMS計算出音頻信號的平均功率。最后再使用dB計算出音量(分貝)。
總的來說,使用Java獲取hz和響度的數值需要使用AudioInputStream類和一些計算方法。以上的代碼可以作為一個參考實現。