
课程名称 综合电子设计
题 目 语音存储与回放系统
指导教师 杨鸿波
设计起止日期 2012年4月
系 别 自控
专 业 自动化
学生姓名 袁庚/李超
班级/学号 自控0904 2009010910/930
成 绩 ___________________
摘要
数字化语音存储与回放系统的基本思想是将模拟语音信号通过模数转换器A/D转换成数字信号,再通过单片机控制存储在存储器中,回放时,由单片机控制将数据从存储器中读出,然后通过数模转换器D/A 转换成模拟信号,经放大在扬声器或耳机上输出。
本设计以单片机芯片STCC52作为核心控制器,通过硬件电路的制作以及软件程序,制作出一个数字化语音存储与回放系统。该系统使用Keil51软件为平台,使用C语言编程完成了整个系统的编写和调试,主要包括语音处理前向通道、A/D转换、单片机、D/A转换、键盘显示模块及后向处理通道。本次设计采用2片32k的HY62256存储器组成,基本实现了本次设计的各项功能和技术要求。
一、 功能介绍
语音存储与回放系统能够将语音先行录制,然后再回放,适合应用在一些需要语音播报功能的设备上,如公交车报站器、智能小家电、智能玩具等。
在一些实际应用中,一般录制是在产品出厂时,由专业人员进行录制,而在实际应用中只需要播放,如公交车报站器。但在一些实际应用中,则需要用户既能随意录制,也能随意播放,如智能玩具。
语音存储与回放系统比较重要的两个指标是语音的最大录制时间和语音回放的质量。语音的最大录制时间是由语音存储与回放系统的存储设备的容量来决定的,一般采用RAM,即为系统的存储容量。在一般的单片机系统中,RAM的容量非常有限,需要扩展一定容量的RAM。而语音回放的质量主要由系统中A/D以及D/A来决定,A/D与D/A的精度越高,语音的质量越好,同时系统的噪声抑制能力,如带通滤波器的优劣等,也会影响到语音的质量。
二、方案论证与比较
语音存储与回放系统的实现具有多种方案,一种是利用单片集成的语音存储与回放芯片,如美国ISD公司的ISD1420等;一种是以微控制器为核心,辅以A./D转换、D/A转换以及大容量的存储器。
单片集成的语音存储与回放芯片一般智能性较差,不容易解决音量的问题,同时存放录制时间有限,不能灵活的变化。因此,在多数需要语音存储与回放的场合中,采用了微控制器的语音存储与回放系统。
三、系统设计
语音存储与回放系统的总体原理图如图1-1所示。
图1 语音存储与回放系统总体原理
语音存储与回放系统主要包括微控制器、系统供电电源、键盘、麦克风、前置放大器、前置带通滤波器、A/D、外扩存储器、D/A、后置带通滤波器、后置放大器和喇叭。下面将介绍各个部分的总体设计与选型。
1.微控制器
微控制器主要负责录音、回放中对外部命令的响应,同时需要对存储器进行读写操作。本语音存储与回放系统采用51系列单片机,负责控制与协调其他各个模块的工作,并进行简单的数字信号处理。在整个语音存储与回放系统中,微控制器是系统的控制中心,其工作效率的高低关系到系统效率的高低以及系统运行的稳定性。而51系列单片机具有成本低,稳定性好,且运行速度基本能满足该系统的要求。在本系统中,将采用Atmel公司的ATS52。
2.系统供电电源
在语音存储与回放系统中,需要提供电源的模块有放大电路,有源滤波器以及单片机系统等,其中放大电路需要+12V和-12V的电源,而单片机系统需要一个+5V电源。因此电源电路包括AC/DC转换器和稳压电路两个部分。
3.键盘
在语音存储与回放系统中,需要采用键盘对语音的录制以及回放进行控制。在分段录制与播放中,同时还需要段号的输入等。在本系统中需要的按键数量比较多,可以采用键盘管理芯片ZLG728。
4.麦克风
麦克风的选择对语音质量影响比较明显。麦克风的作用是将语音信号转化成电信号。考虑到驻极体话筒的灵敏度较高,方向性差,若采用单端放大,会有比较大的噪音,因此采用两只(配对)话筒分别接入差分放大器的正负端,可以较好的抑制背景噪声。
5.前置放大器
通常情况下,拾音器输出的是微弱的电信号,因此在拾音器的后端需要将该信号进行放大处理,能完成此功能的电路称为前置放大器。一般情况下,拾音器的输出为毫伏级的电压信号,需要进行放大到伏级的电压信号。在本系统中,采用运算放大器NE5532。
6.前置带通滤波器
拾音器输出的电信号经过放大后,需要再进行滤波处理,该滤波器称为前置滤波器。众所周知,人耳能听到的声音频率范围为20Hz~20kHz,而一般语音的最高频率为3.4kHz,最低频率为300Hz,需要将此频率范围以外的频率成分滤除,以提高语音的信噪比。因此,该滤波器又被称为前置带通滤波器,其带通频率范围为300Hz~3.4kHz。带通滤波器可以很方便地由低通滤波器和高通滤波器级联来实现。可以采用由运算放大器NE5532与R、C组成的有源滤波器来实现,也可以采用多级的切比雪夫滤波器来实现。
7.A/D
由奈奎斯特采样定理可知,A/D的采样频率必须满足信号的最高频率的2倍以上,即满足如下关系:
(1)
其中,为采样频率,为被采样信号的最高频率。
一般语音信号的最高频率为3.4kHz,因此在语音存储与回放系统中,A/D的采样频率必须满足:
(2)
因此我们可以选用ADC0809,ADC0809转换器的分辨率为8位,典型转换时间为100μs,单5V电源供电。
8.外扩存储器
在语音存储与回放系统中,需要录制10s以上的语音,假设采样频率为8kHz,分辨率为8位,那么1秒钟的时间至少需要8kB的存储空间,而单片机的内置存储器无法满足要求,需要外扩存储器。
外扩存储器可以选用256k*8位的SRAM,这样就可以录制至少30s的语音。也可以采用多片32k*8位的SRAM,但是需要分页存储技术来扩展容量。
9.D/A
语音的回放需要将存储的数字化信号进行D/A转换,恢复为模拟信号才能进行播放。
我们可以选用DAC0832来完成数字信号到模拟信号的转换,DAC0832的分辨率为8位,其输出稳定时间为1μs,满足系统要求。
10.后置带通滤波器
D/A输出的模拟信号含有高频噪声,同样需要经过频率范围为300Hz~3.4kHz的带通滤波器进行滤波处理,去除噪声,使得语音输出的质量得以提高。由于该滤波器所处系统中的位置,也被称为后置带通滤波器。类似于前置带通滤波器,可以采用NE5532与R、C组成的有源带通滤波器。
11.后置放大器
D/A输出的信号经过后置带通滤波器后,其输出通常情况下不能满足喇叭对功率的要求。完成D/A输出到喇叭的功率驱动的放大电路称为后置放大器,即为一个功率放大器,我们可以采用低电压音频功率放大器LM386来实现。
12.喇叭
喇叭是语音播放回路的最后输出阶段,喇叭质量的好坏也会关系到语音输出的质量,因此,喇叭的选择也是很重要的一个方面。我们可以选用8欧姆,0.5W的普通喇叭。
系统的总体硬件框图如图19-2所示,主要有ATS52单片机系统,DC/DC、7812等组成的系统供电电源电路,基于ZLG72的键盘,NE5532组成的前置放大器,NE5532与R、C组成的前置/后置带通滤波器,ADC0809组成的A/D转换电路,IS61LV2568组成的数据存取电路,DAC0832组成的D/A转换电路,LM386组成的后置功率放大电路,以及状态指示等。
图2 语音存储与回放系统的总体硬件框图
四、单元电路设计
介绍各单元模块电路设计以及参数选择的原理,需要添加各单元的电路图。本次设计省去了供电电源电路、键盘电路、带通滤波器电路等部分电路的设计,以降低难度。
1.主控制器设计
主控制器即为一个51系列单片机最小系统,单片机选择了Atmel公司的S52,主控制电路如图3所示。
图3 单片机主控电路
2.前置放大电路设计
前置放大电路由基于NE5532的放大电路构成,放大电路如图4所示,由一级电压跟随器和一级同相放大器组成。
图4 放大电路
3.后置功率放大电路设计
4.
A/D采样电路设计
5.D/A转换电路设计
6.数据存取电路设计(62256两片)
五、软件设计(如有)
软件设计部分包括各部分电路的软件设计,包含流程图,状态图,时序图,程序代码放在附录部分。
六、结束语
经测试,本次设计基本达到如下技术指标和功能要求。
1.放大器1的增益为46dB,放大器2的增益为40dB,增益均可调;
2.ADC:采样频率f s=8kHz,字长=8位;
3.语音存储时间≥10秒;
4.DAC:变换频率f c=8kHz,字长=8位;
5.回放语音质量良好。
七、参考文献
[1] 黄恩,魏炜,邹搜涛,等.数字化语音存储与回放系统硬件设计.中国仪器仪表.2003:42-44
[2]申忠如,郭福田,丁晖.现代测试技术与系统设计.西安:西安交通大学出版社
[3] 高海春,任开达,孔德峰,等.数字化语音存储与回放系统.华东船舶工业学院学报.2000:76-79
八、附录
| 编号 | 器件名称 | 型号 | 数量 |
| 1 | 单片机 | ATS52 | 1 |
| 2 | D/A转换器 | DAC0832 | 1 |
| 3 | A/D转换器 | ADC0809 | 1 |
| 4 | 存储器 | IS61LV2568 | 2 |
| 5 | AC/DC电压模块 | ZAT15-5I15-WB | 1 |
| 6 | 稳压管 | 7812 | 1 |
| 7 | 稳压管 | 7805 | 1 |
| 8 | 驻极体话筒 | 1 | |
| 9 | 喇叭 | 8欧姆,0.5W | 1 |
| 10 | 运算放大器 | NE5532 | 1 |
| 11 | 音频功率放大器 | LM386 | 2 |
| 12 | 电阻排 | 9脚,10k欧姆 | 1 |
| 13 | 按键扫描控制芯片 | ZLG72 | 1 |
程序清单:
#include #include #include #define ramaddress XBYTE[0x0000] //外部存儲器地址 看電路 #define uchar unsigned char #define mdata XBYTE[0x0000] #define adnum 32768 sbit cs=P3^2; sbit flag1=P3^1; //录音控制键 sbit flag2=P3^0; //放音控制键 sbit eoc=P3^3; sbit start=P3^4; sbit oe=P3^5; int temp=0; int luyinstop = 0; int fangyinstop = 0; uchar buffer=0; uchar xdata *pt,*pt1; unsigned char sum; sbit ck = P2^7; //void USART_Init(void); //void SendOneChar(unsigned char Data); //void SendString(uchar *s); void Timer0_Init(); void main() { // unsigned int xdata *ptt;//外部存儲器類型指針 //unsigned int i,sumtemp; unsigned char addr[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //flag1 = 1; // flag2 = 0; pt=&ramaddress; //首地址 pt1 = pt; //SendOneChar(&ramaddress); P1=0xff; ck = 0; Timer0_Init(); //USART_Init();
