打印

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

[复制链接]
28401|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卡语音播放模块。

使用特权

评论回复
5
haohaozhuzhu|  楼主 | 2010-5-21 08:03 | 只看该作者
4# mcuisp :能不能把你的电路给我参考下呢,谢谢啦,主要是时钟和数据线的模拟

使用特权

评论回复
6
mcuisp| | 2010-5-21 10:15 | 只看该作者
我没有用外部codec/dac,所以没有“时钟和数据线的模拟”问题

使用特权

评论回复
7
haohaozhuzhu|  楼主 | 2010-5-21 12:55 | 只看该作者
6# mcuisp 哦,明白了,DAC输出数据直接接放大器,然后接喇叭吧

使用特权

评论回复
8
haohaozhuzhu|  楼主 | 2010-5-21 12:56 | 只看该作者
6# mcuisp 在软件编写上能不能给个输入,谢了

使用特权

评论回复
9
rockli| | 2010-5-21 13:31 | 只看该作者
楼主什么都不思考,吃现成的啊

使用特权

评论回复
10
mcuisp| | 2010-5-21 20:42 | 只看该作者
软件编写很简单,只把wave文件的采样值往pwm里面丢就可以了。
当然,pwm信号一般需要加滤波电路才能送往功放、喇叭。
一般采用16kbps的采样率,滤波电路会简单。
采用32kbps的话,滤波电路就可以非常简单了。
倒是把wave文件转换成适合播放的波形文件,需要写个windows程序。

使用特权

评论回复
评论
shizaigaole 2013-9-17 13:12 回复TA
其实也不用转换,直接把文件读进去,播放的时候跳过,前面的文件头,把数据区数据PWM解码即可 
11
zwll| | 2010-5-21 21:16 | 只看该作者
楼主什么都不思考,吃现成的啊
rockli 发表于 2010-5-21 13:31
有道理

使用特权

评论回复
12
haohaozhuzhu|  楼主 | 2010-5-22 08:57 | 只看该作者
11# zwll 闷,咋这么大口气呢,硬件电路我自己搭好了,我只不过让mcuisp在软件上给个思路,又不是叫他把源代码给我,我想你们在菜鸟的时候也应该跟人家要过源代码,至少我还没有过。

使用特权

评论回复
13
haohaozhuzhu|  楼主 | 2010-5-22 08:58 | 只看该作者
11# zwll 我怎么就没思考呢,至少上面三套方案是我通过查资料得来的吧,而且第三套IIS比较简单,软件硬件都实现了

使用特权

评论回复
评论
shizaigaole 2013-9-17 13:17 回复TA
如果,要求随时能更换语音MCUISP的方案就很好。当然存储除了SD卡,以外,也可以用at45db161之类的基于SPI口线的存储器 
shizaigaole 2013-9-17 13:14 回复TA
IIS 搞的太复杂了,如果语音固定,就几种,联系个厂家让人家把你的语音直接烧录好,直接控制芯片播放相关语音就可以了 
14
embtor| | 2013-4-18 20:34 | 只看该作者
用类似 LM4890M 这种几毛钱(MSOP8占面积也小)的功放芯片,外接几个电阻电容。语音 PCM 数组写死进程序,比如用 8K/8BIT 的PCM, STM32 开 8K 的定时器,给 DAC 喂数据,DAC 管脚直接去功放,声音就出来了。另外 PWM 的方式我也试过,效果极一般,音量也不够大

使用特权

评论回复
15
jcsasm| | 2013-8-27 16:05 | 只看该作者
MARK

使用特权

评论回复
16
cjhk| | 2013-8-27 19:01 | 只看该作者
我感觉   第三种方法   在技术层面   比较容易实现   我是这样理解的

使用特权

评论回复
评论
shizaigaole 2013-9-17 13:19 回复TA
最简单的方法是使用专用语音芯片,让厂家烧录好语音 
17
newsoule| | 2013-9-17 11:39 | 只看该作者
好帖

使用特权

评论回复
18
zhangyu198530| | 2013-9-17 17:27 | 只看该作者
第三种方法比较容易实现,效果还可以。就是报警语音是固定的这一点不是很方便。

使用特权

评论回复
19
lyh123456| | 2014-2-10 14:36 | 只看该作者
利用DMA+TIM+DAC,外接语音放大电路+喇叭,我用软件把16位的WAV文件转换成8位的C数组数据是可以成功播放了,但是或大或小都会有沙沙声,请问一下各位有没有比较好的方案来保证播放的音质呢?

使用特权

评论回复
20
guodiqing| | 2016-1-4 15:58 | 只看该作者
好贴呀,怎么就沉了呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

43

帖子

1

粉丝