应用MSP50C30设计电子语音导游机
扫描二维码
随时随地手机看文章
关键词:MSP50C30 MELP算法 语音合成 电子导游机
1 概述
随着我国经济的发展,旅游业也获得了长足的发展,节假日外出旅游已成为人们的首选,对大多数零散游客来说,希望有一种不受制于人的辅助导游手段,迫切需要一种携带方便、存储容量大且不会机械磨损的电子语音导游机(简称导游机),但目前市场上已在使用的导游机,要私体积大,不便于携带;要么容量不够,放音时间有限,因此制约了其应用和推广。要实现较长时间的数字放音有两种方式:一是扩大存储空间,但无限扩大存储空间必增加系统成本,二是采用语音压缩方法来降低数据量。其于上述两种方法,笔者选用了TI公司新近推出的语音合成芯片MSP50C30并采和MELP语音压缩算法,通过外接64M位存储器对语音信号进行了压缩存储和合成。经过这样处理合成后的语音音质良好,放音时间可长达6小时左右,且该机体积很小,较好地解决了上面所提到的问题。
2 MSP50C30的结构特点
MSP50C30是TI公司1998年推出的一款功能强大的语音合成芯片,其内部集成了8位微处理器、双通道语音合成器、RAM、ROM、I/O端口等功能模块。其中微处理器利用其专用的61条指令可完成数字运算、逻辑功能和控制功能;语音合成器则利用其内部集成的12阶格型滤波器,采用LPC压缩算法来合成高质量的语音。在进行语音合成时,微处理器从内部RAM或外部ROM中读取语音数据进行译码,然后将译码后的语音数据送到语音合成器,语音合成器对译码数据进行插值计算并合成语音,再通过D/A变换后送到功放直接驱动扬声器发声。
表1 MSP50C30引脚说明
管 脚 名 称 | 管 脚 说 明 |
DAC+ | D/A输出 |
DAC- | D/A输出 |
ID0ID7 | 数据输入端口 |
INIT | 初始化输入(复位) |
OSC IN | 时钟输入,使用内部时钟接地 |
OSC OUT | 时钟返回,使用内部时钟时,作用PBI的I/O口 |
OA0OA22 | 23位外部存储器地址线64M bit |
PA0PA7 | 8位双向I/O口 |
PB0PB7 | 8位双向I/O口 |
PC0PC7 | 8位双向I/O口 |
PD0PD3 | 4位双向I/O口 |
VDD | 5V电压输入 |
VSS | 地 |
另外,MSP50C30内部集成有晶体振荡器,可提供系统所需的时钟。
MSP50C30引脚图如图1所示,管脚说明如表1所列。MSP50C30的主要特点如下:
●带有双通道可编程LPC-12语音合成器,可实现立体声效果;
●内含8位微处理器,每秒可执行1.2M条指令;
●有61条指令,并具有单周期的乘法指令;
●具有ROM接口,23根地址线可寻址8M字节;
●带有28个软件可编程双向I/O口;
●具有内嵌和外接两种灵活的时钟方式;
●内嵌D/A,共有2种输出方式;
●含7级堆栈,具有外部控制的中断功能;
●可支持10kHz或8kHz语音采样速率;
●可用软件配置进入低功耗睡眠状态;
●支持LPC、MELP、CELP、FM、PCM等多种压缩算法。
MSP50C30与同步芯片相比,其最大优点在于具有丰富的I/O接口和高达64M位的外部寻址能力,是长时间放音系统的理想选择。
3 硬件电路设计
笔者设计的语音导游机的硬件原理图如图2所示。该系统以MSP50C30为核心,外接存储电路、键盘接口电路、显示电路、功放电路和DC-DC变换电路,其中MSP50C30完成语音的合成与控制功能。存储器选用INTEL公司生产的64M位FLASH ROM 28F640J5,其地址线和数据分别与MSP50C30的地址线(A0~A22)和数据线(ID0~ID7)直接相连,语音数据已事先经TI公司提供的专用软件进行压缩,并通过编程器烧录至FLASH ROM中。为便于数据更换,电路中还设计了存储器和编程器的接口,因此可通过编程并关的切换将28F640J5与语音合成电路分离,从而可方便的实现语音数据的更换。该导游机的键盘采用4×4矩阵式键盘,共设16个按键,其中数字键10个(0~9),用来实现数字选取;6个功能键用来实现播放、暂停、快进、快退等功能。键盘矩阵与MSP50C30端口PA0~PA7相接,系统通过键值扫描程序读取按键状态。液晶显示采用3位LCD数码显示器;ED-S812并用MSP50C30的PB0~PB7作为控制数码显示的I/O口,其驱动芯片采用MC14543来实现BCD译码,交流驱动方波(80Hz~100Hz)通过74HC14振荡电路产生。
为便于导游机的携带,系统采用两节5#电池供电,由于系统需5V电源,故需设计DC-DC变换电路。设计时,选用了MAXIM公司MAX756,该器件的输入电压可低至0.7V,通过管脚2的选择可输出3V和5V两种电压。
当系统复位后,MSP50C30启动键值扫描程序,以使其从PA口读取所按键值,并通过PB口将键值送出,经过MC14543译码,可在液晶显示器上显示相应的数字。然后MSP50C30通过内部程序查表,送给语音合成器,合成后的语音从DAC+和DAC-脚送出,通过外部功放电路驱动扬声器发声。系统所需时钟由内部晶振提供。
4 软件电路设计
4.1 语音合成程序设计
MSP50C30采用MELP算法来合成语音,它是LPC的改进算法,其优点在于:MELP算法不需要专业的修音设备,语音数据由专用的压缩软件来完成,而且合成后的语音音质良好。对于语音实时存储系统来说,它是一种理想的压缩算法。MELP算法的帧格式与LPC帧格式近似,只是在浊音帧中引入了基音抖动参数和清浊强度参数来对浊音帧的基音周期进行修正。若每帧以20ms计算,则MELP算法最大压缩率为62×50=3100bit/s(每帧被量化为62bit)。由于采用了变速率编码方式,从而使平均压缩率变得更低。另外,用户还可根据自己对话音质量的要求,按照自己的算法自行设计帧格式以产生更好的音质。语音合成子程序的流程图如图3所示。
4.2 语音控制软件设计
语音控制软件主要用于完成以下功能:(1)检测按键次数,并计算相应的键值;(2)在液晶显示器上显示键值;(3)根据计算所得键值,选取相应的语音段,从外部28F640J5中读取数据传送给MSP50C30,同时提供给语音成子程序合成语音;(4)在语音合成过程中,检测功能键是否按下,若按下,执行相应的功能键控制子程序。语音控制软件流程图如图4所示。
键盘扫描采用线反转法,其实现方法是:首先将行线编程为输出线,列线编程为输入线,使输出全部为零电平,则列线中电平由高变低的即为按键所在的列;然后将行线编程为输入线,列线编程为输出线,使输出全为零电平,则行线中电平由高变低的即为按键所在的行;这样便可确定键值。在键值扫描子程序中通过软件延时10ms,是为了消除按键所带来的抖动,以避免产生误判。键值检测子程序流程图如图5所示。
在键值扫描的同时对所按数字键进行显示的流程如图6所示。
5 结束语
本文所介绍的整机电路设计简单、性能可靠,所有器件均采用贴片元件,体积小,携带方便。经过听力测试表明:整机具有良好的语音质量,合成语音保持了较高的清晰度、可懂度及自然度。