开发者社区> 问答> 正文

在阿里语音AI我把返回的流解析下来保存成wav不是正常语音全是乱码音,为什么?

在阿里语音AI我把返回的流解析下来保存成wav不是正常语音全是乱码音,为什么?

展开
收起
三分钟热度的鱼 2023-05-23 13:03:54 139 0
1 条回答
写回答
取消 提交回答
  • 如果您使用阿里云语音 AI 的服务,把返回的音频流通过解析保存为 WAV 文件后出现了乱码音的问题,可能是您保存音频时忽略了音频编码格式的问题。阿里云语音 AI 的服务默认输出的音频编码格式是 PCM,即原始的线性脉冲编码调制音频格式,如果在保存的时候没有指定相应的编码格式,会导致音频文件无法正常播放或者播放出现乱码的情况。

    如果您使用的是Java编程语言,可以尝试使用Java提供的AudioInputStream类来对音频进行解析和保存。在使用AudioInputStream解析语音流时,需要指定输入流的格式以及输出流的格式,例如:

    // 根据语音流创建输入流
    AudioInputStream inStream = AudioSystem.getAudioInputStream(new ByteArrayInputStream(rawAudioData));
    
    // 根据输出格式创建输出流
    AudioFormat outFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16, 1, 2, 16000, false);
    AudioOutputStream outStream = AudioSystem.getAudioOutputStream(outFormat, null);
    
    // 根据输入流和输出流之间进行转换
    AudioSystem.write(new AudioInputStream(inStream, inFormat, length), AudioFileFormat.Type.WAVE, outputStream);
    

    在上面的代码中,我们创建了一个输入流(inStream)来读取原始语音流(rawAudioData),并且指定了输入流的编码格式(inFormat)。然后,我们根据输出格式(outFormat)创建一个输出流(outStream),并且使用AudioSystem类的write方法将输入流和输出流之间进行转换,生成WAV音频文件并输出到指定的输出流(outputStream)。

    需要注意的是,在创建输出流时,需要指定使用PCM_SIGNED编码,且使用16KHz的采样率和16位的数据深度,这样可以将原始语音流转换为标准的WAV格式。如果您在使用其他编程语言或者其他工具进行音频解析和转换,请确保使用正确的编码格式和转换方式,以获得正确的音频文件。

    2023-05-24 13:56:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像