如何在Java中以给定的采样率播放声音?

我想知道是否有一个库或某些东西在给定的采样率(20-20,000 Hz)下播放声音。 实际上,我发现了一些东西,但我不明白我是如何让它发挥作用的!

这是完整的示例,不需要任何外部库:

import javax.sound.sampled.*; public class SoundUtils { public static float SAMPLE_RATE = 8000f; public static void tone(int hz, int msecs) throws LineUnavailableException { tone(hz, msecs, 1.0); } public static void tone(int hz, int msecs, double vol) throws LineUnavailableException { byte[] buf = new byte[1]; AudioFormat af = new AudioFormat( SAMPLE_RATE, // sampleRate 8, // sampleSizeInBits 1, // channels true, // signed false); // bigEndian SourceDataLine sdl = AudioSystem.getSourceDataLine(af); sdl.open(af); sdl.start(); for (int i=0; i < msecs*8; i++) { double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI; buf[0] = (byte)(Math.sin(angle) * 127.0 * vol); sdl.write(buf,0,1); } sdl.drain(); sdl.stop(); sdl.close(); } public static void main(String[] args) throws Exception { SoundUtils.tone(1000,100); Thread.sleep(1000); SoundUtils.tone(100,1000); Thread.sleep(1000); SoundUtils.tone(5000,100); Thread.sleep(1000); SoundUtils.tone(400,500); Thread.sleep(1000); SoundUtils.tone(400,500, 0.2); } } 

资料来源: http : //www.rgagnon.com/javadetails/java-0499.html