用STM32做音频项目,三种方案

[复制链接]
30199|31
 楼主| haohaozhuzhu 发表于 2010-5-20 15:16 | 显示全部楼层 |阅读模式
现在用STM32做一个语音到站钟的项目,音质要求不高,就是报“一楼到了,上行”,“二楼是酒店”之类的语音,CPU上资源有PWM/DAC/IIS,通过上网查资料,网上解决的方案大体有以下三种:
1 PWM+SPI PWM模拟时钟时序,SPI传输数据,采用PCM编码方式,然后接放大器+喇叭;
2 DAC DAC+放大器+喇叭,一般语音芯片都是用这种方式做的,但是应该是专用的DAC语音芯片;
3 IIS+语音解码芯片
请问一下各位大侠,以上三种方式还有谁实现过的?
mohanwei 发表于 2010-5-20 16:01 | 显示全部楼层
普通的录音语音芯片+小MCU寻址即可,其它方案不是不行,只是不太适合在这种项目。
其次是专用语音库芯片,通过串行接口给它一个字符串,让它念出来(公交报站和自动语音电话就是这种方案)
 楼主| haohaozhuzhu 发表于 2010-5-20 16:35 | 显示全部楼层
2# mohanwei :你好,第一种方案我在网上看有人做出来了,但具体音质没法考证,请问用第一种方案有什么问题吗?
录音语音芯片+小MCU:能不能给我提供一款这样芯片的型号?
专用语音芯片的串行接口就是IIS吧,听说有SPI接口的,但我没有找到
mcuisp 发表于 2010-5-20 22:44 | 显示全部楼层
直接用pwm播放就可以了。语音可存储在SD卡里,或NOR FLASH都可以。
我做过一个stm32的sd卡语音播放模块。
 楼主| haohaozhuzhu 发表于 2010-5-21 08:03 | 显示全部楼层
4# mcuisp :能不能把你的电路给我参考下呢,谢谢啦,主要是时钟和数据线的模拟
mcuisp 发表于 2010-5-21 10:15 | 显示全部楼层
我没有用外部codec/dac,所以没有“时钟和数据线的模拟”问题
 楼主| haohaozhuzhu 发表于 2010-5-21 12:55 | 显示全部楼层
6# mcuisp 哦,明白了,DAC输出数据直接接放大器,然后接喇叭吧
 楼主| haohaozhuzhu 发表于 2010-5-21 12:56 | 显示全部楼层
6# mcuisp 在软件编写上能不能给个输入,谢了
rockli 发表于 2010-5-21 13:31 | 显示全部楼层
楼主什么都不思考,吃现成的啊
mcuisp 发表于 2010-5-21 20:42 | 显示全部楼层
软件编写很简单,只把wave文件的采样值往pwm里面丢就可以了。
当然,pwm信号一般需要加滤波电路才能送往功放、喇叭。
一般采用16kbps的采样率,滤波电路会简单。
采用32kbps的话,滤波电路就可以非常简单了。
倒是把wave文件转换成适合播放的波形文件,需要写个windows程序。

评论

其实也不用转换,直接把文件读进去,播放的时候跳过,前面的文件头,把数据区数据PWM解码即可  发表于 2013-9-17 13:12
zwll 发表于 2010-5-21 21:16 | 显示全部楼层
楼主什么都不思考,吃现成的啊
rockli 发表于 2010-5-21 13:31
有道理
 楼主| haohaozhuzhu 发表于 2010-5-22 08:57 | 显示全部楼层
11# zwll 闷,咋这么大口气呢,硬件电路我自己搭好了,我只不过让mcuisp在软件上给个思路,又不是叫他把源代码给我,我想你们在菜鸟的时候也应该跟人家要过源代码,至少我还没有过。
 楼主| haohaozhuzhu 发表于 2010-5-22 08:58 | 显示全部楼层
11# zwll 我怎么就没思考呢,至少上面三套方案是我通过查资料得来的吧,而且第三套IIS比较简单,软件硬件都实现了

评论

如果,要求随时能更换语音MCUISP的方案就很好。当然存储除了SD卡,以外,也可以用at45db161之类的基于SPI口线的存储器  发表于 2013-9-17 13:17
IIS 搞的太复杂了,如果语音固定,就几种,联系个厂家让人家把你的语音直接烧录好,直接控制芯片播放相关语音就可以了  发表于 2013-9-17 13:14
embtor 发表于 2013-4-18 20:34 | 显示全部楼层
用类似 LM4890M 这种几毛钱(MSOP8占面积也小)的功放芯片,外接几个电阻电容。语音 PCM 数组写死进程序,比如用 8K/8BIT 的PCM, STM32 开 8K 的定时器,给 DAC 喂数据,DAC 管脚直接去功放,声音就出来了。另外 PWM 的方式我也试过,效果极一般,音量也不够大
jcsasm 发表于 2013-8-27 16:05 | 显示全部楼层
cjhk 发表于 2013-8-27 19:01 | 显示全部楼层
我感觉   第三种方法   在技术层面   比较容易实现   我是这样理解的

评论

最简单的方法是使用专用语音芯片,让厂家烧录好语音  发表于 2013-9-17 13:19
newsoule 发表于 2013-9-17 11:39 | 显示全部楼层
zhangyu198530 发表于 2013-9-17 17:27 | 显示全部楼层
第三种方法比较容易实现,效果还可以。就是报警语音是固定的这一点不是很方便。
lyh123456 发表于 2014-2-10 14:36 | 显示全部楼层
利用DMA+TIM+DAC,外接语音放大电路+喇叭,我用软件把16位的WAV文件转换成8位的C数组数据是可以成功播放了,但是或大或小都会有沙沙声,请问一下各位有没有比较好的方案来保证播放的音质呢?
guodiqing 发表于 2016-1-4 15:58 | 显示全部楼层
好贴呀,怎么就沉了呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

43

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部