java - 通过 GSM 调制解调器播放 WAV 文件

标签 java serial-port gsm modem

我想通过 GSM 调制解调器播放 WAV 文件。这是我的示例代码

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();
        }
    }
}

但问题是通过串口发送的WAV文件播放速度非常快。我不知道出了什么问题。这是我的 WAV 文件描述:

ULAW 8000.0 Hz,8 位,单声道,1 字节/帧,音频采样率 8Khz

谁能帮我解决这个问题?

最佳答案

我会检查以下内容 - 特别是 #3。

  1. Synchronization
  2. AudioFormat
  3. JSSRC Resampling Library

关于java - 通过 GSM 调制解调器播放 WAV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768031/

相关文章:

java - Repast - 将模型打包并分发为 jar,无需 GUI 和源代码

java - 托管实体上的 Bean 验证

c# - 有没有办法以 2-3 mbps 的速度使用串行端口?

c++ - 收到 GSM 调制解调器响应太迟

java - 在构建之前替换文件中的 token ,但将 token 保留在源中

java - 我怎样才能使黑色在上传的图像之上透明?

c# - 使用serialport.open()时发生I/O异常错误

c# - 串行端口异步读取(非阻塞)+ 线程

android - 获取设备类型,表示 CDMA 或 GS​​M