qq_42331499 2023-07-21 10:08 采纳率: 0%
浏览 60
已结题

zx303定位录音模块录音数据转录音文件

zx303定位录音模块
设备上传的16进制录音数据,转为音频文件,这个怎么转? 淘宝上相应设备 早已经做好了,录音功能 也 健全 ,我们现在自己制作,不知道代码。 java版本。天琴协议。 java的AudioSystem已经试过了,无效。 csdn上的chatgpt已经问过了,无效。java的文件输入流不支持bin文件读取。目前为止,前六条都已经测试过了,无效。

  • 写回答

8条回答 默认 最新

  • CSDN专家-sinJack 2023-07-26 15:03
    关注

    转换一下就好了。

    import javax.sound.sampled.*;
    
    public class ConvertHexToAudio {
        public static void main(String[] args) {
            try {
                // 打开输入流并读取 16 进制数据
                FileInputStream fis = new FileInputStream("input.bin");
                
                // 解析 16 进制数据为 PCM 音频样本
                byte[] pcmData = parseHexData(fis);
                
                // 创建 WAV 文件
                AudioFormat audioFormat = new AudioFormat(44100, 16, 1, true, false);
                AudioInputStream audioStream = new AudioInputStream(new ByteArrayInputStream(pcmData), audioFormat, pcmData.length / audioFormat.getFrameSize());
                
                // 写入音频数据到 WAV 文件
                File outputFile = new File("output.wav");
                AudioSystem.write(audioStream, AudioFileFormat.Type.WAVE, outputFile);
                
                System.out.println("转换完成!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        private static byte[] parseHexData(FileInputStream fis) throws IOException {
            // 解析过程根据天琴协议或相关文档进行具体实现
            
            // 示例:直接将每个字节转换为 PCM 样本
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            int data;
            while ((data = fis.read()) != -1) {
                bos.write(data);
            }
            
            return bos.toByteArray();
        }
    }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月28日
  • 修改了问题 7月26日
  • 赞助了问题酬金15元 7月25日
  • 修改了问题 7月25日
  • 展开全部