python 从wav文件中提取pcm数据

目的很简单,我要从wav文件里面提取出来一段纯音频数据变成c语言数组的形式,最后烧录进我的设备中用来播放声音。本来还想自己查资料把wav文件的格式整个摸一遍,但是一搜python库还是有写好的,又省下一下午时间。

首先通过终端 pip install wave 安装一下python的wave库。下面我们就可以借用wave库直接对wav文件操作,下面这几个函数是可能用到的:

  • f=wave.open(“filename”,’rb’)     打开一个wav文件
  • params=f.getparams()   这个函数可以返回 wav文件的参数:声道数、位数、采样频率、采样点数、压缩类型、压缩类型描述  。其中需要注意如果返回的压缩类型不为none的话,wave库是不支持的要确保你的wav文件是没有加过压缩算法的
  • f.readframes(len)  读取len长度的采样点数据,返回的是bytes类型数据,(这里还有个坑,后面会讲)
  • f.rewind()    将文件指针回滚到音频流开头
  • f.setpos()    将文件指针设定位置
  • f.tell()         返回当前文件指针

实际应用中最常用的也就前三个函数,通过这几个函数我们很容易就可以从wav文件里面读取出来bytes类型的pcm音频原数据。但是要把bytes先准换成字符串的时候里面会既包含十六进制的格式还有ascii字符:可以详细看我另一篇文章:https://www.eemaker.com/python-bytes-ascii.html  这个问题解决了就没有什么障碍了。下面看下代码:

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注