美文网首页
简析PCM与WAVE格式的关系

简析PCM与WAVE格式的关系

作者: 刘小白DOER | 来源:发表于2022-05-04 23:53 被阅读0次

        今天解决了以前的一个小问题。VOIP语音抓包、解码与带宽计算 - 简书 (jianshu.com)在以前的实践中,笔者想到把G771A编码后的pcm语音再次转换为16bit的数据,然后回放语音时有很多背景噪声,当时一直没有找到答案,一直搁置没有解决。在这段时间的wave文件的操作中找到灵感,然后基于python来完成这个疑问的解答。

        wav存储的一般是解码后为[-1, 1]的float数据,文件头有44个字节记录文件的采样率、长度等等信息。pcm存储的是int型整数,不含任何采样率相关信息。Python 播放 PCM 音频文件 里面有关于wave与pcm格式的详细说明。那么wav与pcm之间的转换方法如下:

        wav转pcm:将文件头去掉,数据转成int型即可。

        pcm转wav:Python 中内置了 wave 库给音频数据加上一个头部信息。  ffmpeg工具也可以完成。下面是基于python的格式转换函数pcm2wav,同时利用PyAudio可以 直接播放 PCM 音频。

            联想到神经网络的音频处理tensorflow-io库,tensorflow-io 软件包提供了不少与音频相关的 API。音频数据准备和增强 中,AudioIOTensor 延迟加载张量返回的就是int16 类型的samples,可以通过Audio(audio_tensor.numpy(), rate=audio.rate.numpy()) 来播放。除于32768之后,将张量转换为浮点数并在计算图中显示音频片段。

        那么AudioIOTensor 直接返回的就是PCM数据,除于32768之后再添加头部就是wave格式数据。

    相关文章

      网友评论

          本文标题:简析PCM与WAVE格式的关系

          本文链接:https://www.haomeiwen.com/subject/gkxnyrtx.html