- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于ISD4004语音芯片的语言学习机的设计
ISD公司多电位直接模拟量存储的专利技术成功地将模拟语音数据直接写入片内存储单元中,不需要经过A/D或D/A转换即可真实地、自然地再现语音信号。ISD4004系列语音芯片是其新的代表产品,它可提供一个高性能的单芯片语音录放存储的解决方案,芯片采用CMOS技术,内含振荡器、平滑滤波器、自动静噪、音频放大器以及多电平闪速存储器阵列,该芯片为非易失性器件(nonvolatile),无需电源可保存数据长达100年,记录时间长,有8、10、12、16分钟多种芯片,重复记录可100000次。芯片设计是基于所有操作必须由微控制器控制,通过SPI总线和处理器相连,外围电路简单。
语言学习机在外语教学中的应用非常广泛,它主要提供语音的标准录放功能以外,还提供书签、自动断句、句子重复等功能,以及与主机的通信、接受主机的集中控制命令进行操作,是外语教学的重要手段之一。作者利用ISD4004语音芯片设计了一款语言学习机,ISD4004语音芯片提供了录音、放音、停止等操作,但没有提供暂停和自动断句功能,本文介绍ISD4004语音芯片在语言学习机中的主要应用电路及实现暂停和自动断句等功能的软件编程算法,ISD4004系列芯片的详细引脚说明及内部电路可查阅ISD公司提供的芯片资料。
一、 硬件电路的设计
语言学习机电路主要由显示单元、键盘阵列、录放电路、音频控制、音频放大等电路单元组成,这里主要介绍音频控制部分和微控制器的接口电路,如图1所示,电路主要由单片机AT89C52和ISD4004组成,其中89C52的P0、P2口分别用作键盘显示和其它控制口。
ISD4004芯片的工作电压是3V,而89C52是的供电电压是5V,图中用7805提供5V电源,经LM317降压提供3V电压;两者之间的信号连接要考虑电平匹配,其中ISD4004的3V电平输入引脚可直接连接到89C52的5V的I/O引脚,如MOSI、/SS、SCLK;而其输出引脚(除MISO引脚外)都是漏极开路信号,连接到89C52时都必须加上5V上拉电阻,如/INT、RAC引脚;其中MISO(串行输出端)要求较特殊,需增加电平转换电路,图中简单地用三极管Q1实现的3V-5V的电平转换,这里要注意的是5V信号从Q1的集电极引出,引起信号反相,89C52读入信号后应进行反相处理以恢复信号MISO,代表从ISD4004读出的状态和地址数据。P1.4接ISD4004的片选引脚/SS,以便与89C52进行SPI通信时控制选通ISD4004芯片。P1.1(SOUT)接ISD4004的SPI串行输入引脚MOSI,从该引脚给出放音和录音的起始地址。由89C52的P1.2提供SPI接口的时钟脉冲到ISD4004的SCLK引脚。ISD4004的中断信号/INT接P3.1(OVF),作放音结束的触发信号。ISD4004的行地址时钟RAC输出到P1.5,因ISD4004芯片不提供控制放音结束的预置地址,用RAC可控制放音的长度以及定位,从而实现语言学习机的句子或段落的重复功能。
录音输入信号从AN IN+、AN IN-引入;音频输出信号由ADUOUT引出,一路信号可经功放电路LM386输出到扬声器或耳机,另一路经电阻分压后送到比较器LM339的同相端,检测到音频信号中的静音区时输出低电平到P3.5(T1)引脚,给自动断句功能提供触发判断信号,标准语言教学的语音信号句子之间一般可提供1.0至1.5秒的静音区。
89C52的串行口引脚TXD、RXD用于接收主机的集中控制命令并回送状态数据给主机。
二、 软件设计
2.1 软件的主框图
语言学习机主要有录音、标准放音、SP放音、SSP放音、暂停、书签等操作方式,其中SP、SSP放音是自动断句放音,学习机自动识别一个语句的开始位置,遇到静音区后暂停,暂停时间为句子放音时间长度的1.5倍,然后自动继续下一语句或自动重复该语句两遍后学习机继续下一语句;书签功能是可记忆5个位置,按相应的书签按键可从该位置开始放音;所有的操作都在89C52芯片内的软件控制下完成。
主程序软件框图如图2所示,上电后进入系统主程序,初始化各种参数,学习机等待键盘操作或主控机的命令;收到命令后进入相应的工作模式,完成任务再返回到命令等待模式。
2.2软件编程思想
ISD4004芯片的放音、录音、停止都有对应的操作指令,容易实现,而语言学习机的SP放音、SSP放音及暂停操作都需要ISD4004完成暂停功能,而芯片本身没有暂停指令,下面的重点介绍录放的暂停和SP放音操作的软件编程方法,SSP、书签操作功能可参照SP和暂停操作进行,不再重复,源程序略。
2.2.1录音暂停功能
ISD4004语音芯片的录音操作必须接收到STOP命令,该命令会将一个EOM信息位写进芯片内来标志停止位置,下次放音时,到该位置时就会自动停止放音。学习机录音暂停功能则要求停止录音而不写入EOM停止标志,那么在放音时到该位置就不会停止。可采取如下措施实现:
(1) 首先给芯片发出RECORD命令,启动录音操作
(2) 按下PAUSE按键或收到需要暂停的其它触发信号后,允许ISD4004继续录音单位计数长度的时间(一行),这个一行的结束可由RAC的高电平来识别。这确保接到STOP命令时,EOM停止标志位写入按下PAUSE键后的那一行(无效行)。
(3) 发出STOP命令,停止芯片录音,ISD4004自动记录EOM信息位。
(4) 发出一条无效指令,使指令的RUN位为0,从MISO读出当前的地址数据(行位置),因为该数据反相,从引脚P1.0读出的数据应按位取反, 该行中包含有EOM位,将读出的地址减一后保存。
(5) 再按暂停键时,以前面保存的地址为录音起始地址,发出RECORD命令,这样就将前面的EOM信息位擦除,并继续录音。
(6) 当放音时,按暂停键的位置就不会有EOM标志,放音继续。
2.2.2放音暂停功能
(1)发出PLAY命令启动放音操作
(2)按下PAUSE按键或收到需要暂停的其它触发信号后,发出STOP命令
(3)发出一条无效指令,使指令的RUN位为0,读出当前的地址数据,将读出的地址按位取反减一后保存。
(4)再按暂停键时,以前面保存的地址为放音起始地址,发出SET PLAY命令。
(5)发出PLAY命令从当前位置开始放音,从而实现放音暂停。
2.2.3 SP操作功能
SP放音关键在于寻找语音信号中的静音区长度是否达到1.0-1.5s(取1.2s作判断条件), 找到就认为是断句, 然后控制芯片暂停放音。为此设89C52定时器0每10ms产生一次中断, 设定静音时间计数单元初值为0。
(1)发出PLAY放音命令,启动判断P3.5(T1)引脚是否高电平
(2)P3.5高则发出一条无效指令,使指令的RUN位为0,读出当前的地址数据,将读出的地址按位取反减一后保存,作为语句的起始地址,并启动定时器0开始计时。
(3)在定时器0的中断服务程序中,检测P3.5是否高或低电平,若高表明有语音输出,清零静音时间计数单元并退出中断服务程序,等待下一次中断;若为低电平,表明为静音,静音时间计数单元加1,然后判断是否静音时间计数单元内容是否120(即是否找到1.2s的语句间静音区)。若找到,设置找到标志位,退出中断服务程序;否则清除找到标志位,退出中断服务程序,等待下一次中断。
(4)若遇到语音停止标志EOM或放音操作已到存储器末尾(OVF),/INT发出低电平,引起中断,应发出STOP命令,停止操作。
(5)判断找到标志位是否有效,无效则重复第(4)步
(6)找到标志位有效,则发出STOP命令,然后再发出一条无效指令,使指令的RUN位为0,读出当前的地址数据,将读出的地址按位取反后保存为语句结束地址
(7)通过起始地址和结束地址可计算语句放音的时间长度,乘以1.5作为暂停时间的长度
(8)暂停时间到后重复(1)至(8)的过程.
三、 结束语
ISD4004语音芯片单芯片集语音信号的采集、播放、存储于一体,大大简化了电路的设计,本文语言学习机电路结构简捷, 经实际运行测试证明,文中的编程方法实现了学习机所要求的各种功能,运行可靠, 满足外语教学中语言学习的操作要求。
上一篇:X波段低噪声放大器设计分析
下一篇:用FPGA设计MP3个人数字播放机