I want to play a WAV file through a GSM modem. Here is my sample code
private final int BUFFER_SIZE = 8; private File soundFile; private AudioInputStream audioStream; private AudioFormat audioFormat; public void playSound(String filename) throws IOException{ String strFilename = filename; try { soundFile = new File(strFilename); } catch (Exception e) { e.printStackTrace(); System.exit(1); } try { audioStream = AudioSystem.getAudioInputStream(soundFile); } catch (Exception e){ e.printStackTrace(); System.exit(1); } audioFormat = audioStream.getFormat(); DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); int nBytesRead = 0; byte[] abData = new byte[BUFFER_SIZE]; while (nBytesRead != -1) { try { nBytesRead = audioStream.read(abData); } catch (IOException e) { e.printStackTrace(); } if (nBytesRead >= 0) { outputStream.write(abData, 0, nBytesRead); outputStream.flush(); } } }
But the problem is that the WAV file sent via the serial port plays very fast. I do not know what's the problem. Here is my description of the WAV file:
ULAW 8000.0 Hz, 8 bit, mono, 1 bytes/frame, Audio Sample Rate 8Khz .
Can someone help me solve the problem?
source share