没有合适的资源?快使用搜索试试~ 我知道了~
首页基于STM32的WAV音频格式播放器
资源详情
资源评论
资源推荐

正在做的项目中需要 STM32 从 SD 卡中读取语音文件进行播放,因此需要
对语音进行解码,刚开始就一直使用 Speex 的音频压缩格式,最近发现,在进
行语音格式转换时,我们不能很好地分析 spx 格式音频文件的文件头,这样就
会导致语音的播放出现问题。由于 WAV 采用 PCM 编码,音质也十分不错,于
是考虑用 STM32 对 WAV 格式音频文件进行解码,上周末开始找资料和编程,
其中也遇到了不少问题,不过功夫不负有心人,最终还是顺利的跑起来了。先
将资料和编程过程整理成本文,供大家一起学习和进步。
WAV 文件格式是一种重要的用于存放声音文件的文件格式,尽管现在有
MP3,RAM 等压缩效率更高的声音文件格式,并且广泛被音乐文件所采用,但
是又很多的应用程序仍然采用 WAV 文件格式。由于 WAV 文件没有采用压缩技
术,所以它的文件很庞大,一般都在几 MB 以上。但也正是因为没有采用压缩
技术,声音的采样数据很容易被读出来,便于用作其他的处理。
废话不多说了,我们直接去解析 WAV 文件格式吧。
WAV 格式符合 RIFF(Resource interchange File Format)规范。所
有的 WAV 都有一个头文件,这个头文件音频流的编码参数。

表 1、WAV 文件的文件头
表 2、WAV 声音文件的数据块
接下来我们用已经编好的程序来读取一个 WAV 文件的文件头和数据块,看看
各个内容都表示什么含义。

图 1、WAV 源文件

图 2、用 WinHex 软件解析 WAV
图 3、STM32 读取 WAV 的信息
头文件样例说明:
Ø “52 49 46 46”这个是 Ascii 字符“RIFF”,这部分是固定格式,表明这是一个 WAVE 文
件头。
Ø “24 33 AE 00”这个是我的 WAV 文件的数据大小,这个大小包括除了前面
4 个字节的所有字节,也就是等于文件总字节数减去 8。得到图 3 中的
11416356。11416356+8=11416364Byte=10.88Mb。
Ø “57 41 56 45 66 6D 74 20”,也是 Ascii 字符“WAVEfmt”,这部分是固
定格式。以后是 PCMWAVEFORMAT 部分。
剩余19页未读,继续阅读




















RockWu_sz
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0