在实际的语音系统中双声道立体声是一项应用最为普遍的技术,他是利用人们的听觉错觉,通过改变两个扬声器的声级差,能使聆听者前方产生一定角度的声音方向信息,从而使人们在聆听时有“身临其境”的听觉感受。然而目前较为简单的语音录放系统多数采用单声道,当需要实现双声道语音系统时,往往采用复杂的硬件电路才能构成一个双声道语音系统,使得双声道语音系统的制作成本大大提高。因此用一个较为简单的电路来实现双声道语音系统就显得很有实用价值。本文正是基于这个思想,应用美国ISD公司制造的语音芯片ISD4004来实现简单的双声道立体声语音录放系统,并采用ATMEL公司的AVR系列单片机MEGA8L作为微控制器。该单片机的工作电压和ISD4004的工作电压相同,均为3 V供电,并且该单片机集成了系统所需要的大部分外围器件,包括8 kB系统内可编程FLASH程序存储器,1 kB SRAM,512 B E2PROM,WATCHDOG以及晶振等,从而大大简化了系统的构成。
1 ISD4004芯片简介
ISD4004芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动降噪及高密度多电平闪烁存贮阵列。引脚包括电源、时钟、语音信号模拟输入/输出端及MCU接口(SPI接口)几部分。芯片采用多级存储技术,即声音无须A/D转换和D/A转换,采用模拟量直接存储技术,因此能够真实、自然地再现声音。ISD4004系列单片录放时间根据不同的采样频率可有8~16 min不等,采样频率可为4.0 kHz,5.3 kHz,6.4 kHz,8.0 kHz,采样频率越低,录放时间越长,但音质有所下降。芯片的所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI)送入。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作,因此对ISD4004而言,在时钟上升沿锁存MOSI引脚的数据,在时钟下降沿将数据送至MISO引脚。ISD4004详细参数可参考文献[3]。
2 立体声录放原理
虽然ISD4004采用的是模拟量直接存储技术,能够真实、自然地再现声音,但是要想不失真地再现原始语音信号,其采样频率也必须满足采样定理:当采样频率Fs大于信号最高频率Fm的2倍时,在采样过程中就不会丢失信息,并且可以用采样后的信号重构原始信号。即:Fs>2Fm(2Fm为最小采样频率,亦为“奈奎斯特频率”)
实际的语音信号常有一些低能量的频率分量超过采样频率的一半,如浊音的频谱超过4 kHz的分量比其峰值要低40 dB以上;而对于清音,即使超过8 kHz,频率分量也没有下降,因此语音信号所占的频率范围可以到达10 kHz以上。然而对语音清晰度有明显影响部分的最高频率为5.7 kHz左右。CCITT(国际电报电话咨询委员会)提出的G.711标准建议采用采样频率为8 kHz。
ISD4004-8M的采样率为8.0 kHz,满足采样定理的频率标准,虽然录放时间较短但是音质较好,甚至可满足播放简单背景音乐的需求。立体声录放的实现采用两片ISD4004-8M芯片构成,如图1所示。
工作原理为:将输入的双声道语音信号分为左右声道分别接入两片ISD4004-8M芯片信号输入端,录音时由单片机发出让两片芯片同时录音的指令,进行同步录音,使得输入的信号在存储的时候就能保证其原有的声级差,从而达到了双声道录音的目的。放音时由单片机同时发出放音指令,两片芯片同时放音,因存储时信号原有声级差已经保存,所以放音时可再现原始的立体声,也可以在放音时对两个芯片发送放音指令的时间间隔进行操作,可达到调整立体声的效果。
3 具有接近功能的立体声系统的硬件原理
该系统的硬件原理如图2所示,本系统的硬件主要由单片机MEGA8L,语音芯片ISD4004-8M,被动式红外传感器等构成。图中PIR(SENSOR)为两元被动红外热释电传感器,其输出信号连接到CPU的中断1的输入端,当有人接近时该传感器输出一个高电平信号,使得CPU进入中断,然后CPU再对ISD4004进行放音操作,使ISD4004输出已录制好的音频信号,再经过功率放大器放大后送入扬声器。两个按键TAPE,PALY是进行录音和放音的人工操作按键,相应有两个指示灯进行状态指示。MEGA8L还通过控制继电器K1来控制音频信号功率放大器的供电,在长时间没有放音时将自动切断其供电,这样降低了系统的功耗,避免了功率放大器长时间通电
由于该系统的硬件设计针对的是语音模拟信号,所以在设计的时候应该注意模拟地和数字地的隔离,特别是在ISD4004芯片的引脚上,须注意不同的接地引脚接相应的地。录音时的输入信号如果是单声道的信号,应在录音时使得左右声道的输入端均接入该信号,并在对两个语音芯片发送录音指令时中间应有短时的时间间隔,可使得单声道产生一定的声级差,从而达到非立体声转换为立体声的效果。
4 软件设计
软件流程图如图3所示。
系统上电后先进行初始化,软件实现的基本操作有:
(1)TAPE为录音按键,PLAY为放音测试按键,当TAPE键按下后,CPU操作ISD4004进行录音,同时相应的LED灯亮表示正在录音,此时当TAPE键再次按下时,录音停止,相应的LED灯灭表示录音停止。PIAY键为录音后的放音测试按键,按键后相当于红外传感器信号有效,CPU操作ISD4004进行放音,相应的LED灯亮表示正在放音,从而实现了语音在线录放;
(2)每次录音时CPU将录音时间的长度记录到其内部的E2PROM中,以便在放音的过程中适时对ISD4004进行相应的启停操作;
(3)CPU通过控制继电器来控制功率放大器的供电,若5 min没有人接近红外传感器,CPU自动切断功率放大器供电,从而减少了功率放大器的通电时间,延长了其使用寿命,减小了整个系统的功耗。
该程序采用的编译环境为:晶士电子Atmanavr C IDEV4.4;
程序烧制软件为:双龙电子的SLISP V1.1;
编译语言:C语言;
对ISD4004操作的例程如下:
5 结 语
本文介绍了由两片ISD4004语音芯片构成的具有接近功能的立体声语音系统,该系统已经成功应用于一个医疗产品展览会,满足自动语音立体声讲解的需求,且可以播放较为简单的背景音乐,能够可靠稳定地工作。该系统亦可应用于多煤体语音教学,语音导向系统等,为立体声语音录放电路设计开辟了一个新的途径。