打印

单片机播放语音讨论贴

[复制链接]
11919|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdpz|  楼主 | 2011-4-15 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于单片机实现语音播放,我的理解是:
比如播放8bit, 8khz的PCM数据,是在每125us内,将8位数据value(每位占15.625us)逐位依次输出吗?

还是当成是电压幅度,只输出一个宽度为 value/256*125us 的电平?这样可以用定时器的输出比较功能来做?

相关帖子

沙发
shizaigaole| | 2011-4-15 11:31 | 只看该作者
数据是大小是量化的结果,当然是第二种。

最好用PWM来做。

当然比较功能亦可,

只是占用麻烦一点,占用资源多一点。

PWM的硬件实现本来也就是基于定时器的比较功能的。

使用特权

评论回复
板凳
squall9676| | 2011-4-18 09:33 | 只看该作者
语音。。。。。

使用特权

评论回复
地板
coody| | 2011-4-18 12:02 | 只看该作者
电压幅度,送DAC或PWM

使用特权

评论回复
5
sdpz|  楼主 | 2011-4-18 14:50 | 只看该作者
嗯,已试验成功。
顺便说说我的做法:
PCM数据采用8khz, 8bits, signed
用两个支持PWM的IO口分别接压电陶瓷两端
当数值大于等于0时,第一路输出PWM,第二路输出低电平
当数值小于0时,第一路输出低电平,第二路输出PWM
听起来音质还不错。不过我见网上的人只用一路PWM来输出,这只用一路我反而不会做。
两路PWM输出脉冲的音量好像没有一路的高。。。

使用特权

评论回复
6
shizaigaole| | 2011-4-18 14:58 | 只看该作者
一路更容易。
好比回放的采样值为0x7F ,那么输出50%占空比的脉冲即可。

使用特权

评论回复
7
sdpz|  楼主 | 2011-4-18 15:08 | 只看该作者
问题是一路如何区分语音的正负极性?难道舍弃其中一个极性?

另外想请教一个问题,有什么办法能提高压电陶瓷的音量?
现在已经带共振腔的,就电子手表那种音量,我想再提高一点。

使用特权

评论回复
8
hnnhu| | 2011-4-18 15:37 | 只看该作者
用DAC效果比PWM好

使用特权

评论回复
9
sdpz|  楼主 | 2011-4-19 08:25 | 只看该作者
成本问题

使用特权

评论回复
10
shizaigaole| | 2011-4-19 08:34 | 只看该作者
一般PWM语言,是输出PWM波,后面接一个有源低通滤波器,驱动扬声器。
PWM波形高,相当于高电平,低相当于接地。不存在负极性的问题。

驱动压电陶瓷,声音效果不好。

使用特权

评论回复
11
huangqi412| | 2011-4-19 08:55 | 只看该作者
PWM要滤波吧。。。

使用特权

评论回复
12
wljs012| | 2011-4-19 11:30 | 只看该作者
只用语音芯片做过,楼主的意思是用DA驱动蜂鸣器发语音?

使用特权

评论回复
13
sdpz|  楼主 | 2011-4-19 11:50 | 只看该作者
PWM要滤波吧。。。
huangqi412 发表于 2011-4-19 08:55


理论上是要的。。。但压电陶瓷是容性负载,起到一定滤波作用。到底是不是这样,我也说不清楚,而实际上听起来感觉是很好的,也就没做什么滤波工作。另外它也能直接驱动感性的喇叭。

使用特权

评论回复
14
squall9676| | 2011-4-21 10:17 | 只看该作者
一个语音芯片就可以搞定,为什么要那么复杂的去用单片机,语音效果也不一定理想。

使用特权

评论回复
15
sdpz|  楼主 | 2011-4-21 10:32 | 只看该作者
;P  不但很简单,而且效果还很理想!

反问一句,一个单片机几乎不占什么资源就能搞定,为什么要那么复杂地增加成本地用语音芯片?

使用特权

评论回复
16
sdpz|  楼主 | 2011-4-21 10:35 | 只看该作者
不好意思,看到你是卖语音芯片的,希望这帖子对你没影响。毕竟用单片机实现不是谁都会做的。

使用特权

评论回复
17
saiyang0| | 2011-4-30 20:17 | 只看该作者
呵呵,有意思,我也是卖语音芯片的。很多防盗器的报警声音就是单片机PWM产生声音的,如果做复杂的声音,关键是怎么用电脑将WAV的声音转换成单片机识别的PCM数据,我记得有一个高人在BLOG介绍过如何用C++将WAV的语音文件的PCM数据读出。

使用特权

评论回复
18
dqyubsh| | 2011-4-30 21:03 | 只看该作者
单片机读出WAV很容易啊,网上有大把的数据格式。我把DSP硬件采集的波形存成WAV格式,再用单片机播放出来,做硬件模拟盒。感觉单片机干这事真是一个慢。。。

使用特权

评论回复
19
coody| | 2011-4-30 23:11 | 只看该作者
偶做的:STC12LE5A16S2 + Micro SD卡 + TM8211 + LMV358,播放WAV立体声16bit,22.05KHZ采样。

语音:STC12LE5608 + SST25VF032B + TM8211 + LMV358,录放,u-lwa或A-law或DPCM或ADPCM,10bit单声道,8~16K采样,256~1024秒

使用特权

评论回复
20
JLINGON| | 2011-4-30 23:56 | 只看该作者
学习~~

使用特权

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

本版积分规则

0

主题

300

帖子

1

粉丝