基于51单片机的数字语音存储与回放系统设计.docx
《基于51单片机的数字语音存储与回放系统设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字语音存储与回放系统设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于51单片机的数字语音存储与回放系统设计
基于51单片机的数字语音存储与回放系统设计
摘要
该文采用AT89C51单片机和ISD2560语音芯片设计一款实时语音录放系统,能实现录音时间达60s、录放音受按键控制、可复位且音量可调等诸多功能。
整个系统共有三大模块:
单片机控制模块、语音录放模块、功放模块。
控制模块核心是51单片机的口线功能,通过对按键的识别来控制语音录放模块的工作模式;语音录放模块能实现对声音的处理、存储以及复原的功能;功放模块能对复原好的音频信号加以放大,使声音更加清晰明亮。
整个设计围绕以下三方面进行研究:
总体方案设计、硬件电路设计、软件设计。
关键词:
AT89C51单片机,语音存储,语音回放
DESIGNOFVOICERECORDINGANDPLAYBACKSYSTEMBASEDONAT89C51
ABSTRACT
Theproposeofthispaperistodesignareal-timespeechrecordingsystemwithAT89C51microcontrollerandISD2560voicechip,itcanrealizetherecordingtimeof60s,soundrecordingandplaybackcontrolledbybutton,canresetandvoicecanadjust.
Thesystemincludesthreemodules:
singlechipmicrocomputercontrolmodule,voicerecordingmodule,poweramplifiermodule.Coreofcontrolmoduleis51SCMmouthlinefunction,throughtheidentificationofkeytocontrolthevoicerecordingmoduleworkmodel;voicerecordingmodulecanrealizevoiceprocessing,storageandplayback;poweramplifiermoduleforaudiosignalamplified,tomakethesoundmoreclearandbright.Thewholedesignaroundthefollowingthreeaspects:
theoveralldesign,hardwarecircuitdesign,andthedesignofsoftware.
KeyWords:
AT89C51,phoneticstorage,phoneticplayback
第1章绪论
1.1课题研究背景
随着生活节奏的日益加快,城市智能化建设的不断发展,在智能仪器仪表和工业控制系统中增加语音录放功能成为了极为普遍的现象。
添加语音功能不仅使得机器更加“聪明”和人性化,还能让使用者操作更加得心应手。
当前把语音作为服务手段的行业越来越多,如电脑语音钟、语音型数字万用表、移动智能语音系统、叫号机、语音监控报警系统、公交车报站器和卫星导航系统等[1]。
可以说,语音系统是社会生活和生产不可缺少的东西,它的发展是社会进步的必然结果。
语音系统需要建立在硬件基础之上,而其系统的控制核心一般是使用单片机。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。
它几乎渗透到我们生活的各个领域:
军事领域的各类导航系统,电脑网络通讯与数据传输系统,各类工控企业的自动化实时控制和数据处理系统,各类智能IC卡,汽车的报警、导航、安全、娱乐系统,录音、摄像机,全自动洗衣机系统以及各类发生遥控玩具和电子宠物等等。
可以说,单片机表达的是它强大的控制能力。
数字语音录放技术是指利用数字化技术对语音信号进行采集、处理、并且在一定存储设备中进行存储,并可在需要时进行输出的过程。
相对于模拟设备来说,数字设备易于集成、小型化、成本更低,同时更为稳定,且操作更为直接、方便,使得数字语音录放系统目前在各种领域中都得到了广泛的应用[2]。
例如监控环境中使用的语音采集系统;再如家庭或学校中使用的语音复读机等,都可看作是数字语音录放系统的典型应用。
在对语音信号的处理方面,常规方法是采用滤波器处理接收到的模拟语音信号,通过模数转换成为数字信号,再由单片机控制存储到存储器中。
在需要输出语音信号时,亦可由单片机控制从存储器中输出,再经数模转换成模拟信号,通过I\V变换成电压信号,滤波后通过功放将语音信号输出。
但是这种方法的缺点是,输出不稳定,语音信号有杂音或者变音,这是模拟电路所不能防止的缺点[3]。
为了解决这个问题,我们可以采用专用的语音芯片,利用其模拟信号技术直接存储技术来解决上述问题。
语音芯片可以很方便的和单片机系统相结合,其体积和重量也能符合单片机系统的要求。
因此,基于单片机和语音芯片的语音系统应运而生。
1.2国内外研究现状
近年来,语音信号处理技术的发展可谓日新月异,新技术的出现为语音录放系统的发展指引了新的方向。
对语音信号的前期采集、中期的处理从之前的对波形进行编码和压缩转变为现在的参数编码和压缩,从而大大减少了需要存储的数据,节省了硬件存储空间。
举例来说,原始语音一般都是采用8KHz抽样,16bits的线性PCM编码进行采集,在一般的系统中就直接将采集后的数据进行存储;而如果采用参数编码对采集后的数据进行压缩,存储量则可以大大减少,当需要恢复语音时,可利用编码后的参数进行合成,可以得到质量令人满意的结果。
目前比较典型的语音器件有早些的ISD2560、ISD1420到现在的ISD4004、ISD1700,ISD系列是由美国ISD公司研发的专业语音处理芯片。
芯片采用模拟信号直接存储技术,将声音信号直接写入存储单元而不经A/D或D/A转换,所以使用ISD芯片能非常好的再现语音,可防止因一般固体语音电路的量化和压缩所引起的量化噪声和失真情况。
另外芯片功能强大:
即录即放、语音可掉电保存、10万次的擦写寿命、手动操作和CPU控制兼容、可多片级联、无需开发系统等等,确实给欲实现语音功能的单片机应用设计人员提供了解决方案。
现在市场上已有公司将以AT89C2051单片机与ISD语音芯片组成的语音组合板,用串口通信,芯片里固化有一些常用语音词汇,用户不需了解语音功能的工作原理,只需通过串口按一定协议发送代码即可送出语音。
1.3语音存储技术的发展前景
未来语音存储技术的革新主要是硬件技术〔处理能力〕以及语音编码技术的进步。
单片机技术的发展越来越快,未来将向低功耗、微型化发展。
以51为基础的模式不会动摇,但在容量和性能上将作出很大提高,而串行总线结构可以使得单片机系统结构更加简单和标准。
语音存储与回放技术的核心是语音编码,它是现代语音技术的三大核心之一〔语音识别、文本语音转换、语音编码〕。
在未来,实现速度在2.4~4.8Kbps的高质量的加密方式。
另一方面,将采用更先进的技术对语音信号进行处理,减少存储空间。
而在整体的语音技术发面,智能语音将是未来发展的主要方向。
语音识别技术和语音合成技术,将是未来的主导,他们将推动语音技术向语境真实化和多模态化发展,但是面临的核心技术也将越来越难[4]。
而在另一方面,未来数字化和信息化的联系日益紧密,继而影响科技进步和现代化进程。
在现代社会,推动时代发展的根本力量,仍然是信息化和科技进步推动的全球经济一体化。
像语音存储技术一样的数字化技术的进步,一方面能推动人类社会的发展;另一方面,人类综合能力、实践能力和创新能力的提高,也会推动数字信息化在更高领域里德创造。
1.4设计任务与要求
本文的设计任务是用AT89C51单片机设计一款数字语音存储与回放系统,要求整个系统录音时间到达60s,放音效果真实清晰,采样频率达8KHZ,工作电压5V,系统录放音可受按键控制,可复位且音量可调有较强的抗干扰能力。
设计要求:
首先要确定总体的设计方案,绘制出总体结构框图,分析系统的工作原理以及各个元器件的功能作用;再完成各单元具体电路的设计,包括单片机最小系统硬件电路、外围、语音录放、功放、键盘输入等电路;最后用编程软件完成程序编写和烧入并对系统进行调试。
第2章总体方案设计
2.1总体方案论证
方案一:
利用单片机及其外围硬件电路,包括A/D、D/A、滤涉及放大电路等,就能完成语音信号的数字化采集、存储和回放的功能。
系统主要由ATMEL公司的AT89C51、ADC、DAC及闪速存储器组成。
它的原理图如图2-1所示。
录音时,模拟语音信号先通过MIC转换成微弱的电信号,再经专用的音频前置放大器放大和带通滤波器滤波后,由模数转换器A/D转换成数字信号,单片机控制数字信号存储在存储器中;在需要放音时,单片机控制数字信号从存储器中读出,再经D/A的转换复原成模拟信号,再通过滤波、放大后由扬声器输出[5]。
这种方法过程简单,但是语音信号容易受到外界的干扰而失真,并且信号的压缩存储比较复杂,硬件电路不宜调试。
图2-1方案一系统原理图
方案二:
可采用单片机与专用的语音处理芯片来设计语音存储与回放系统,实现对语音的录放功能。
采用语音芯片技术来处理语音信号,系统具有抗干扰能力强,存储方便,调试简单,可作为语音服务的子系统等纵多优点。
在一块芯片上集成有麦克风前置放大器、自动增益控制电路、抗混淆和平滑滤波器、模拟存储阵列、扬声器驱动器、控制接口和内部精确的参考时钟。
加上麦克风、扬声器,开关和少数的几个电容、电阻和电源,就可构成一个完整的语音录放系统。
我们以ISD公司的生产的ISD2560系列语音芯片为例,系统原理框图如图2-2所示。
模拟语音语音信号进过麦克风之后直接送入ISD2560芯片加以处理和存储,放音时,ISD2560芯片再把存储好的数字信号复原成模拟信号,再通过放大器把信号放大,最后用扬声器放出来[6]。
该系统具有重复录放、音质好、低功耗、抗强干扰等优点。
图2-2方案二系统原理图
通过有效性和实用性比照,发现方案二具有更强的优势,因此选择方案二。
下面,就针对此方案做具体的介绍。
2.2器件选择
2.2.1单片机的选择
单片机是一种集成电路芯片,即在一块集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成单芯片的微型电脑。
它具有中断、独立定时器/计时器等功能,有着出色的控制能力。
进过数十年的研究发展,目前单片机家族复杂庞大,包括STC单片机、PIC单片机、MCS系列单片机、ATMEL单片机、TI单片机和AVR单片机等等。
单片机有着强大的线控能力,和我们日常生活、生产息息相关。
本文选用目前普遍使用的ATMEL公司的51系列单片机作为控制核心,以下是两款51单片机的性能比照表。
AT89C51是带4K字节FLASH存储器的低电压、高性能8位单片机,有两个定时计数器和六个中断源。
而AT89C2051作为AT89C51的精简版本只带2K字节闪存且口线较少,不利后期口线拓展,因此我们选AT89C51单片机。
表2-1AT89C51和AT89C2051主要性能比照
项目
AT89C51
AT89C2051
存储器
4KB可编程Flash存储器
2KB可编程Flash存储器
存储器保密
三级程序存储器保密
两级程序存储器保密
内部RAM
128字节
128字节
静态工作频率
0Hz~24MHz
0Hz~24MHz
定时/计数器
2个16位定时/计数器
2个16位定时/计数器
串行通讯口
1个串行通讯口
1个串行通讯口
中断源
6个中断源
6个中断源
I/O引线
32条I/O引线
15条I/O引线
2.2.2语音芯片选择
语音芯片分语音IC和音乐IC,它内部集成有麦克风前置放大器、自动增益控制电路、抗混淆和平滑滤波器、模拟存储阵列、扬声器驱动器、控制接口和精确的参考时钟。
它能自动完成语音数据的采集、分析、压缩、存储等步骤,一次录放音包括ADC和DAC两个过程:
语音信号通过采样转化为数字,存储在IC的ROM中,再通过电路将ROM中的数字复原成语音信号。
本设计要求系统录音时间到达40s以上,采样频率达8KHz,因此可选用普遍使用的ISD2560语音芯片。
2.2.3功放选择
为使系统外围元件最少,信号谐波失真率小和信号增益调节范围大,我们可使用美国国家半导体公司生产的LM386音频集成功率放大器。
2.3各芯片详细说明
2.3.1AT89C51芯片
AT89C51单片机是一款自带4KB字节FLASH存储器的高性能微处理器,分辨率为8位。
该器件采用ATMEL独有存储技术制造,兼容工业标准的MCS-51指令集。
以下是它的主要特点:
〔1〕与MCS—51兼容
〔2〕4k字节可编程Flash闪速存储器
〔3〕寿命:
1000写/擦循环,数据保留时间:
10年
〔4〕全静态操作:
0Hz—24MHz
〔5〕三级加密程序存储器
〔6〕128×8字节内部RAM
〔7〕32个可编程I/O口线
〔8〕2个16位定时/计数器
〔9〕5个中断源
〔10〕可编程串行UART通道
〔11〕低功耗空闲和掉电模式
〔12〕片内振荡器和时钟电路
AT89C51芯片引脚排列详见附录1,下面就本设计的相关的引脚作功能介绍。
P0口是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线〔低8位〕和数据总线复用。
外部不扩展而单片应用时,则作一般双向I/O口用。
P0口每一个引脚可以推动8个LSTTL负载。
P1口是具有内部提升电路的双向I/O端口〔准双向并行I/O口〕,其输出可以推动4个LSTTL负载且仅可以作为用户的输入输出端口。
P2口也是具有内部提升电路的双向I/O端口〔准双向并行I/O口〕,如果程序访问的是外部ROM时,它是作高8位地址。
当仅使用内部ROM时,则作一般双向I/O口。
每一个引脚输出可以推动4个LSTTL负载[7]。
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口除了作为一般的I/O口线外,更重要的用途是它的复用功能,如表2-2所示。
RST:
复位输入。
VCC:
AT89C51的正极,输入+5V电压。
GND:
电源接地端。
XTAL1:
接外部晶振的一个引脚。
在单片机内部,它是一反相放大器输入端,
这个放大器构成了片内振荡器。
当它采用外部振荡器时,一些引脚应接地。
表2-2P3口复用功能表
端口引脚
复用功能
RXD〔串行通信输入〕
TXD〔串行通信输出〕
INT0〔外部中断0输入,低电平有效〕
INT1〔外部中断1输入,低电平有效〕
T0〔计数器0,外部事件计数输入端〕
T1〔计数器1,外部事件计数输入端〕
WR〔外部随机存储器的写选通,低电平有效〕
RD〔外部随机存储器的读选通,低电平有效〕
XTAL2:
接外部晶振的一个引脚。
在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。
当采用外部振荡器时,则此引脚接外部振荡信号的输入。
EA/VPP:
当该引脚为低电平时,单片机读取的是外部的程序存储器中的程序来执行。
因此对于8031来说,EA脚必须接低电平,因为它无片内程序存储器。
而对于AT89C51或其它内部有程序存储器的单片机来说,当初引脚接高电平时,单片机首先会在片内程序存储器中取指令,当PC的内容超过FFFH时系统会自动转向片外程序存储器中取指令。
2.3.2ISD2560语音芯片
用ISD系列语音芯片进行录音可具有音质自然、单片存储、反复录放、低功耗等优点。
一块ISD芯片上集成有麦克风前置放大器〔AMP〕、自动增益控制电路〔AGC〕、抗混淆和平滑滤波器、模拟存储阵列、扬声器驱动器、控制接口和内部精确的参考时钟,加上外部元件〔液晶、麦克风、扬声器、开关和少数电阻、电容〕,再加上电源即可组成最简单语音系统。
ISD2560语音芯片是美国ISD公司较为成熟的语音录放产品。
它是一种永久记忆型语音录放电路,录音时间达60s,可重复录放10余万次。
芯片采用多电平模拟量直接存储专利技术,无需外围的A/D、D/A转换电路。
每个采样数据值直接由芯片自动存储在片内ROM单元中,播放时直接将存储的数据导出,所以它能十分真实地再现人声、音乐、语调和声效,可防止一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。
ISD2560集成度较高,内部有前置放大器、自动增益控制、内部时钟、定时器、采样时钟、滤波器、逻辑控制、模拟收发器、解码器和480K的EEPROM等[8]。
2.3.2.1ISD2560引脚说明
ISD2560的引脚排列详见附录1,各引脚的主要功能说明如下:
A0/M0~A6/M6、A7~A9:
地址线,ISD器件可以实现1~600段录放语音功能,每段录放音都有一个起始端,该起始地址的选择由A0~A9确定。
当A8、A9同时为高电平时可以选择工作模式。
AUXIN:
当
和
为高,放音不进行,或处于放音溢出状态时,本端的输入信号通过内部功放驱动喇叭输出端。
VSSD、VSSA:
数字地和模拟地,这两脚最好在引脚焊盘上相连。
SP+、SP-:
扬声器输出。
VCCA、VCCD:
模拟电源、数字电源,尽可能在靠近供电端处相连。
MIC:
本端连至片内前置放大器,外接话筒应通过串联电容耦合到本端,耦合电容值和本端的10KΩ输入电阻。
MICREF:
本端是前置放大器的反向输入。
当以差分形式连接话筒时,可减小噪声,提高共模抑制比。
AGC:
AGC动态调整前置增益以补偿话筒输入电平的宽幅变化,使得录制变化很大的音量时失真都能保持最小。
响应时间取决于本端的5KΩ输入阻抗外接的对地电容的时间常数。
释放时间取决于本端外接的并联对地电容和电阻的时间常数。
470KΩ和4.7uF的标称值在绝大多数场合下可获得满意的效果。
ANAIN:
芯片录音信号输出端,它通过外接电容与话筒的ANAOUT端相连接。
ANAOUT:
前置放大器的输出,前置电压增益取决于AGC端电平。
:
芯片处于存储空间末尾时本端输出低电平脉冲表示溢出,之后状态随
端变化,直至PD端变为高电平。
:
当低电平有效时〔而且PD为低〕,允许语音芯片进行录放操作。
芯片在本端的下降沿锁存地址线和
端的状态。
PD:
当该端为高电平时,芯片停止工作,且不耗电,芯片发生溢出,即
端输出低电平后,本端口短暂变高电平。
只有复位芯片,才能使之再次工作。
:
EOM是在录音时由芯片自动插入到语音信息的结尾作为结束的标志。
当放音时,一遇到EOM,本端口即刻输出低电平脉冲。
芯片内部会检测电源电压以维护信息的完整性,当电压低于3.5V时,本端变低,芯片只能放音。
XCLK:
外部时钟输入端。
本端内部有下拉元件,不用时应接地。
:
本端口状态在
的下降沿锁存。
为高电平时选择放音,为低电平时选择录音。
录音时,由地址端提供起始地址,录音持续到
或PD变高,或内存空间溢出;如果是前一种情况,芯片自动在录音结束处写入EOM标志,说明录音结束。
放音时由地址端提供起始地址,放音直至遇到EOM停止标志。
如果
一直为低,或芯片工作在某些操作模式,放音会忽略EOM,继续进行下去。
由于ISD2560内置了假设干种操作模式,因而可用最少的外围器件实现最多的功能。
操作模式也由地址端控制,当最高两位〔A8、A9〕都为1时,其它地址端置高可选择某个〔或某几个〕特定模式。
因此操作模式和直接寻址相互排斥。
具体操作模式如表2-3所示。
操作模式可由微控制器也可由硬件实现。
表2-3模式控制说明表
模式控制
功能
典型应用
A0/M0
信息检索
快速检索信息
A1/M1
删除EOM标志
在全部语音录放结束时,给出EOM标志
A2/M2
未用
当工作模式操作时,此端应接低电平
A3/M3
循环放音
从0地址开始连续重复放音
A4/M4
连续寻址
可录放连续的多段信息
A5/M5
CE电平触发
允许信号中止
A6/M6
按钮控制
简化器件接口
使用操作模式时需要注意两点:
(1)任何操作模式都是从0地址开始,随着不同操作模式,继而对应相应的地址。
当系统录音转为放音或进入省电状态时,地址计数器复位为0。
当CE变低且最高两地址位同为高时,执行操作模式。
这种操作模式将一直有效,直到CE再次由高变低,芯片重新锁存当前的地址/模式端电平并执行相应的操作为止。
(2)操作模式位不加锁定,可以在MSB〔A8、A9〕地址位为高电平时,CE电平变低的任何时间执行操作模式操作。
如果下一片选周期MSB〔A8、A9〕地址位中有一个(或两个)变为低电平,则执行信息地址,即从该地址录音或放音,原来设定的操作模式状态将丧失。
2.3.2.2ISD2560的分段录放音功能
2500系列最多可分为600段,只要在分段录/放音操作前(不少于300纳秒),给地址A0~A9赋值,录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志〔EOM〕;而放音时芯片遇到EOM标志即自动停止放音。
2500系列地址空间是这样分配的:
地址0~599作为分段用(见表2-4),地址600~767未使用,地址768~1023为工作模式选择。
表2-42500系列地址空间表
十进制
二进制
信息时间(秒)
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
2560
2575
2590
0
0
0
0
0
0
0
0
0
0
0
0
0
0
50
0
0
0
0
1
1
0
0
1
0
100
0
0
0
1
1
0
0
1
0
0
250
0
0
1
1
1
1
1
0
1
0
300
0
1
0
0
1
0
1
1
0
0
400
0
1
1
0
0
1
0
0
0
0
500
0
1
1
1
1
1
0
1
0
0
599
1
0
0
1
0
1
0
1
1
1
2.3.2.3ISD2560的应用电路
ISD2560芯片内部EEPROM存储单元被均匀分为600行,共600个地址单元。
每个地址单元指向其中一行,每一个地址单元的地址分辨率为100ms,共计60s。
ISD2560控制电平与TTL电平兼容,接口简单,使用方便。
图2-3是ISD2560语音录放的基本电路原理图[9]。
图2-3ISD2560基本电路原理图
录音时按下录音键S2、S3接地,使节电控制键PD端、录放模式键
端为低电平。
此时启动录音;结束时松开按键,单片机又让录放模式键
端回到高电平,即完成一段语音的录制。
同样的,按下录放模式键
接高电平,使节电控制键PD端为低电平启动放音功能;结束时,松开按键,即完成一段语音的播放。
2.3.3LM386集成功率放大器芯片
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类电子产品的放大。
它起始内部电压增益为20,因此可以节省大量外部电路元件。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
LM386芯片的电子特性如表2-5所示。
输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电