DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 146|回复: 0
打印 上一主题 下一主题

单片机的多段语音组合录放系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:42:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:介绍一种基于单片机STC89C52RC、语音芯片ISD1730组成的多段语音录放系统设计方案。描述了语音电路设计、语音分段录入、语音段定位、语音段剪辑、多段语音组合输出等的实现方法;并制作了一个具有语音输出功能的温度测量仪。实验表明,具有语音输出功能的温度测量仪器更便于操作和使用。
关键词:STC89C52RC;多段语音;录放系统

引言
??? 目前,在自动取款机、自动售货机、工业报警系统、公路收费系统、汽车防撞系统、智能玩具等领域具有语音输出功能的仪器设备越来越多。我们的工作和生活环境更加人性化、智能化。但在工业生产现场,数码输出的手持式测量仪器得到大量应用,给测量人员读取测量结果带来了极大的方便。但是具体操作时,测量人员需要将仪器置于便于观察测量结果的地方,然后手持测量探头进行测量,由于测量环境的复杂性,特别是在狭窄的工业生产现场,既便于实施测量作业又便于观测测量结果,二者有时不能兼顾。此时,如果仪器具有语音输出结果的功能,将会给测量工作人员带来极大的方便。笔者设计了一个基于单片机STC89C52RC、DS18B20温度传感器、语音芯片ISD1730构成的语音温度测量系统,给出了语音的分段录入、各段语音存放地址的确定、各段语音的修正、多段语音组合输出等环节的详细设计过程。

1 系统结构及软硬件设计
1.1 系统结构及工作原理
??? 具有语音输出功能的单片机测量、显示系统结构框图如图1所示。系统主要由传感器输入、STC89C52RC及其外围电路、显示电路、语音电路和电源电路构成。设计时将需要播报的语音段(或字)录入语音芯片(系统失电后语音信息并不会丢失),系统工作时STC89C52RC会对传感器的信号进行采集,通过处理后一方面将结果输出显示,另一方面分析需要播报哪些语音段,指令语音模块将需要播报的语音段按要求组合进行播报。




1.2 系统硬件电路
1.2.1 数据采集与显示部分
??? 单片机及其外围电路由STC89C52RC、复位电路、振荡电路等构成单片机最小系统;数字温度传感器DS18B20以一线形式与STC89C52RC的P3.7端口连接;采用4位数码管显示,显示数据通过STC89C52RC的P0口,经过74LS573锁存驱动后对数码管段控制,P2.0~P2.2通过74LS 138译码后对数码管的字控制,实现动态扫描显示。
1.2.2 语音电路设计
??? 语音芯片采用美国Winbond公司的ISD1730,工作电压范围为2.4~5.5V,适合与单片机共用电源。该芯片适用于需要多段语音存储与回放的各种高端电子系统,根据其外接振荡电阻的大小不同,可以存储20~60s的信息。语音电路如图2所示。在电路中,振荡电阻为80kΩ,最小存储分辨率为125 ms,可以存放30 s的语音。信号以自然语音的形式按行存储在其内部的多级固态存储器内,可以通过指令中的11位地址对每一行的信息精确寻址,存储的语音信息断电后不会丢失,理论上可以保持一百年,存储10万次。




                          
                       
                          
                               
??? 对该芯片的操作有独立按键和微控制器SPI接口2种方式。当按键方式操作时,通过将图中的S1~S4分别接地,就可以实现对ISD1730芯片复位、语音删除、语音录入、语音回放等操作,这些操作也可以通过STC89C52RC实现。ISD1730提供了4线(SCLK、MOSI、MISO、


??? 当系统初始化完成后,执行以上程序,利用串口调试程序可以观察到返回的是每段语音存放的开始行的地址。其结束行的地址为下一段语音开始行的前一行地址,这样就可以得到每段语音存放的开始和结束地址。
                          
                       
                          
                               
1.3.3 指定地址段语音的检查和播报地址的确定
??? 知道每段语音的存放地址后,还必须对每段语音进行检查,屏蔽多余的部分。将每段语音的开始地址和结束地址放在一个数组里面,执行下面的程序可以将指定段语音播放出来:
???


??? 采用手动录制的语音,由于抖动和操作者的快慢影响,录制的语音段的前后部分可能存在盲音或者不需要的信息。通过执行上面的程序可以检测出来,然后修改该段语音在数组里的开始和结束地址,继续执行上面的程序,反复几次使效果达到满意,确定最终的播报地址,播报时就屏蔽了不需要的部分。
1.3.4 多段语音回放
??? 确定了每段语音的播放地址后,需要将多段语音组合,流利、自然的播放出来。该系列的语音芯片内部有一个先进先出的缓冲存储器,可以存放2段语音的存放地址。当第1段语音播放完后,忽略其结束标志(EOM)继续播第2段语音,同时将第3段语音的地址装入缓冲存储器。这样,可以减小播放2段信息之间的时间,使语音更流畅,就像播放一段语音一样。图3是连续播放3段语音的流程图。当需要播放更多段语音时,简单修改即可。





结语
??? 介绍了基于单片机STC89C52RC控制的多段语音组合输出设计过程中的几个关键步骤。
??? ①特别是录音时,并不需要知道各段语音的确切地址和精确时间,便于单位和个人制作,并研制了语音测温仪经测试,该测温仪语音播报流畅、连贯、准确。
??? 值得注意的是:
??? 在硬件设计中,数字地和模拟地要单独走线,最后一点接地。
??? ②注意测量数据的显示与语音播报之间的协调,由于显示的速度比播报的速度快得多,在播报语音时,显示数据可能不连续,解决方法是将显示数据锁存或者在播报指定段信息的等待期间插入显示程序。
??? ③在选择单片机STC89C52RC与语音芯片ISD1730的连接端口时,由于各端口的内部结构不一样,带负载的能力不同,选择P1口可靠性较好。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-28 04:21 , 耗时 0.087238 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表