新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用ISD器件实现现场语音分段录音与随机组合放音

用ISD器件实现现场语音分段录音与随机组合放音

作者:时间:2006-05-07来源:网络收藏

摘要:在分析了ISD语音处理器件在工作机制的基础上,介绍了用单片机跟踪各语音段的地址变化和记录各段起止地址以及根据各段的地址进行随机组合放音的方法。提出了通用的硬件设计方案,给出了实际应用的电路图和软件流程。总结了使用ISD器件的注意事项。

本文引用地址:http://www.eepw.com.cn/article/242262.htm

关键词:ISD语音处理器件 信息段 单片机 定时器 中断

对一些语音内容不固定并要求现场录音和放音的系统,采用一般语音芯片实现,录放音的质量难以控制。美国ISD(Information Storage Devices)公司的ISD系列芯片采用直接模拟存储专利技术,把语音信号以原始的模拟形式直接存储在片内EEPROM存储器中,无需进行A/D转换和压缩处理等,从而减少了失真、大大提高了录放音质量,并具有抗断电、音质好、使用方便、可反复录放、无需专用的语音开发工具、能随意列改内容和耗电省等优点,很适合于现场录放音系统。

但是ISD器件只有地址输入线,在分段录放音时,其内部各语音段的地址无法直接读出。虽然通过专用的ISD开发设备可以读出地址,但无法实现现场多次重复的录放音操作,不具有实时性。我们在实践中,通过分析ISD的工作原理和内部特性,用单片机的定时中断来计算各段的时长和起始地址,从而实现了分段录音与组合放音。该方法已应用在电缆故障自动定位仪中。

1 ISD 2500系列芯片简介

ISD公司的2500系列芯片,按录放时间60秒、75秒、90秒和120秒分成ISD2560、2575、2590和25120四个型号。ISD器件设有OVF(溢出)端,便于多个器件级联。

ISD2500系列片内EEPROM容量都为480K,最多能分600段。四个型号的不同录放时间是靠不同的输入采样率来实现的,它们分别为:8.0、6.4、5.3、4.0kHz。

DIP器件封装为28脚,各引脚功能如下:

1~7 A0/M0~A6/M6地址/模式选择

8~10 A7~A9输入地址线

11 AUX IN辅助输入

12、13 VSSD、VSSA数字地和模拟地

14、15 SP+、SP-扬声器输出

16 VCCA模拟信号电源正极

17、18 MIC、MIC REF 麦克风输入端和输入参考端

19 AGC自动增益控制

20、21 ANA IN、ANA OUT 模拟信号输入和输出

22 OUF 溢出

23 CE 片选(低电平允许芯片工作)

24 PD 芯片低功耗状态控制

25 EOM 录放音结束信号输出

26 XCLK 外部时钟

27 P/R 录/放控制选择

28 VCCD 数字信号电源正极

2 工作原理

2500系列有10个地址输入端A0~A9,录址能力可达1024位,地址空间为0~1023。其分配情况是:地址0~299作为分段用,地址600~767未使用,地址768~1023为工作模式选择(即A8、A9均为高)。2500系列的地址线有两种用途,一是作为工作模式控制,二是作为分段录放音的起始段地址。当最高位地址(MSB)A8、A9都为高电平时(即地址768~1023),地址端A0~A6就作为工作模式选择端M0~M6,对应7种工作模式。当A8、A9任一位为低或都为低时(即地址0~599),只要在分段录/放音操作前(不少于300ns)给地址A0~A9赋值,操作就从该地址开始。

2500系列语音芯片将480K的EEPROM分为600个信息段,每段800个字节。作为一个整体单位进行寻址和控制,应给每个信息段分配一个供外部控制的地址,而不是对每个字节进行寻址,否则至少需要19个地址端口。这样,大大减少了信息检索所需要的地址线。对较长的语音信号可以跨越多个信息段进行录音,不受内部存储信息段的限制,且内部的信息段址会自动增加。在每个语音段的尾部自动增加一个结束标志EOM,组合放音时,通过检测EOM来控制各语音段的结束和下一段的开始。

每个信息段的录放音时间等于总时间除以600。如ISD2560的总时间为60s,则每个信息段的录放音时间为100ms;ISD25120的总时间为120s,则每个信息段的时间为200ms。因此可以利用该时间长度作为一个段地址,通过单片机定时器的计时平行地映射信息段的地址,从而得到每段录音的起始地址。这样,就需要设置一个地址计数器。一般录音从0地址开始,首先通过CPU将它赋给A0~A9,然后通过单片机控制ISD启动录音,同时启动单片机的定时器开始计时,每到一个信息段的时间,就给地址计数加1。当单片机停止控制ISD录音时,同时停止定时器计时。此时地址计数器的值即为该段语音的未地址,加1即为下一段语音的首地址,并将它存在EEPROM中,为下一将放音提供的地址信息。通过CPU将该地址赋给A0~A9,即可录制下一段语音。依次下去,即可在录制完所有语音段的同时得到各段的起始地址。如果不是从0地址开始的语音段,只需将初始地址赋给A0~A9,加上地址计数器的值,即可得到语音段的末地址。这里不用同时保存各语音段的起始地址和结束地址,因为各个段是相邻的,前一段的末地址加1即是本段的起始地址,且每个语音段的结尾均有EOM标志,并可发出中断。放音时利用它和保存在EEPROM中各语音段的起始地址即可按任意顺序组合各个语音段。

3 硬件电路设计

系统硬件电路框图如图1所示。ISD器件选用录音时间为120s的ISD25120器件,以单片机为处理机,外接控制每个语音段录音开始与停止按键,外部存储器EEPROM用于保存每个语音首地址。ISD的外围电路及其与单片机连接的硬件电路如图2所示。

ISD与89C51的接口部分包含输入地址线A0~A9、片选CE(CE=0选中ISD芯片)、芯片低功耗状态控制PD、录放音控制选择P/R(P/R=0为录音;P/R=1为放音)、录放音结束信号输出EOM,将它作为89C51外部中断0的输入信号,放音时通过它告知本语音段结束,便于单片机立即播放另一个语音段;我们需要的语音总时间小于120s,溢出端VOF未用;若需要总时间大于120s,可经级联多个ISD25120,此时需要使用溢出端VOF。ISD25120一共需要11根控制线和一个外部是中断口,这里11根控制线使用89C51的P1和P3的部分端口,若系统中其它电路占用了部分P1,则可使用其它I/O口扩展器件(如82C55、373等)的扩展I/O口来控制ISD25120。ISD25120的其它管脚所连电路为典型外围器件配置,用于模拟语音的输入输出。

4 软件设计

按照前面的分析和硬件原理图,软件部分主要涉及启动录音和停止录音、启动放音和停止放音、检测EOM信号的外部中断0、定时中断等六个子程序模块。播放语音时,语音段尾的EOM信号触发外部中断0,进入服务子程序。首先停止语音播放,然后设置下一段语音播放标志。各个语音段的组合播放顺序由主程序根据外部情况或设置情况自动变动,如在电缆故障自动定位仪中,测试出故障点后,根据故障点的距离组合存放数字的各个语音段进行播放。定时中断采用工作方式2,定时周期为5ms。为产生ISD25120每个信号段的200ms时间,设置一个定时计数器,计满40次定时周期即得到200ms的时间,产生一次中断。六个子程序模块的软件流程如图3~图8所示。

5 本方法的特点

(1)能进行在系统现场录音,随录随放,修改语音方便。

(2)修改录音内容时,可以从其中任意一段开始,修改其后的所有录音内容,不必从第一段开始全部修改。这对一些需要厂家固定一些语音段的系统很有好处,将固定的语音段放置在前面的段落中,允许用户录制的放在后面,用户修改录音内容时只需修改后面的语音段即可,不影响厂家录制的语音。

(3)分段灵活。单片ISD可分1~600个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器件的总时间之内即可。工

(4)价格便宜。录制语音时,只需用软件立即可得到各段的地址进行录音,不需专用的设备。

6 使用ISD器件应注意的几个问题

(1)ISD语音段尾的EOM标志并不是器件检测到语音结束时自动产生,实际是通过控制器件的工作方式来停止录音而产生的。在录音状态下将CE和PD置高时,则停止录音,在语音段尾产生EOM标志;同时ISD器件在播放时遇到段尾的EOM时也并不自动停止播放,必须用中断捕捉它后,再用软件停止播放。

(2)ISD器件的音频信号输出功率很小,并不能直接驱动扬声器,需要加音频功放,如LM386。同时ISD送出的信号直流分量,直接加在LM386上,会使它处于饱和状态,无声音输出,需要通过电容耦合送入LM386,隔断直流。

(3)ISD的CE、P/R、PD在接控制信号时,一定要保证复位时为高电平。否则上电或复位时全为低,恰好处于录音状态,会冲掉芯片中原来的录音。



评论


相关推荐

技术专区

关闭