摘要:本文介绍了一种特别的基于G.729算法的数字语音录放系统。通过利用语音压缩算法对采集语音进行处理、压缩,可提高存储器效率,从而可在保证大容量存储的条件下实现系统的小型化。该系统采用了TI公司的TMS320VC5402定点数字信号处理器作为语音压缩处理器,同时另设置MCU单元作为系统操作的控制器。此外,通过RS232通信接口,可方便的与外界设备进行互连互通,从而更具有一般个人数字设备的普遍特点。文中对系统的硬件、软件设计进行了介绍和讨论。
关键词:数字语音录放系统,G.729,TMS320VC5402,RS232
1. 概述
数字语音录放是指利用数字技术对语音信号进行采集、处理、并且在一定存储设备中进行存储,并可在需要时进行输出的过程。由于相对于模拟设备来说,数字设备易于集成、小型化、成本更低,同时更为稳定,且操作更为直接、方便,使得数字语音录放系统目前在各种领域中都得到了广泛的应用。例如监控环境中使用的语音采集系统;再如家庭或学校中使用的语音复读机等,都可看作是数字语音录放系统的典型应用。
然而目前一般的数字语音录放系统中,对语音只是进行简单的采集、存储和播放;虽然可以较大程度上保证语音的保真度,但过多的语音数据会造成对大量存储设备的需求。对于大型系统,可通过采用大容量的硬盘、甚至大规模的磁盘阵列来解决;但是对于小型的设备,例如便携式的语音复读机,由于容量有限,则不能采用同样的方法。
近年来,语音信号处理技术研究的突飞猛进,为数字语音录放系统提供了新的发展空间。对语音的采集、处理从以前简单的波形编码转变为进行参数编码、压缩,从而大大减少了存储数据。举例来说,原始语音一般都是采用8KHz抽样,16bits的线性PCM编码进行采集,在一般的系统中就直接将采集后的数据进行存储;而如果采用参数编码对采集后的数据进行压缩,存储量则可以大大减少,当需要恢复语音时,可利用编码后的参数进行合成,可以得到质量令人满意的结果。
ITU-T的G.729编码规范就是一种能实现上述要求的语音压缩技术。该规范被ITU-T推荐为IP电话的语音压缩标准之一,其结构采用共轭结构码激励线性预测(Conjugate- Structure AlgebraIC-Coder-Excited Linear PreDICtion,CS-ACELP)模型,具有编码输出速率低(8Kb/s),较小的时间延迟(10ms)和适中的处理复杂度,而且重构的语音具有较高的质量。ITU-T的第15研究组(SG15)得到的结论是:G.729编码器满足了在大多数使用情况下提供长途质量的最初要求。因此,在数字语音录放系统中采用G.729对语音进行处理是可行的。
采用G.729进行语音的压缩时,对以8KHz采样的原始语音,以10ms为为一帧,对原始的80个线性PCM采样数据进行分析,抽取CELP模型的参数(线性预测滤波系数,自适应和固定码本索引和增益),编码为80bits数据进行存储。在重构语音时,利用这些参数完成语音的合成。从80×16bits 的原始数据压缩为80bits的编码数据,压缩比率约为16:1。当对压缩后数据进行存储时,一个4M×8的存储器就可存储超过1小时的语音数据,因此可大大减小存储器的开销,有利于系统的集成。
2. 基于G.729的数字语音录放系统的硬件结构
一般的数字语音录放系统,应至少具有语音采集/播放、语音存储等模块,并应包括控制模块;而基于G.729的数字语音录放系统,由于需要进行语音压缩处理,因此需要具有能提供强大算法处理能力的处理器。此外,为了能实现更好的扩展性、更强的数据交换能力,该系统应具有与一般PC进行通信的能力。基于这些设想,提出了一种以TI 公司TMS320VC5402数字信号处理器(DSP)为核心,包括语音采集/播放、大容量存储器等模块的数字语音录放系统,并另加通用微处理器为用户提供对系统的操作。此外,为实现与PC或其它设备的互联互通,系统中还集成了RS232串行接口。
图1是系统的设计原理图:

图1 基于G.729的数字语音录放系统硬件框图
89C51作为MCU,主要完成与用户的交互,并根据用户的要求控制C5402的工作,同时将操作结果反馈给用户;用户接口将直接完成上述的交互过程。此外,89C51还可通过数据交换接口与其它设备进行数据信息的交换。
语音采集/播放部分采用一片MC145503,进行采集时将完成对语音从模拟到数字的抽样、编码;输出时则完成相反的过程。
录制、压缩后的语音,应存放在较大容量的存储器中。为此,系统中采用了一片三星的KM29W16000 2M×8bit的闪存。
RS232接口在C5402上通过软件实现,可提供最高达38400波特的UART通信接口。
系统的核心是TMS320VC5402。C5402是一种具有高处理能力和低功耗特性的16位定点DSP芯片,其主要特点有:1)处理能力高达 100MIPS,而且片内集成了16K字的双存取RAM,程序地址空间最多可扩展到1M字;2)片上外设接口包括2个多通道带缓冲的串口(McBSP), 1个HPI口,2个定时器,和1个可编程时钟发生器;3)核心电压为1.8V,I/O电压为3.3V,而且提供多种降低功耗的措施,包括系统空闲时可以暂时停止时钟发生器的工作,大大减少了系统的耗电量,尤其适合于便携式或使用电池供电的设备。因此,在该处理器上完全能够实现G.729的复杂算法,从而满足数字语音录放系统对采集语音进行实时处理及合成的要求,并可使系统集成度更高、更加小型化。
89C51和C5402之间采用主从方式连接,通过HPI接口进行通信和交互。
下面将以C5402为主要对象,介绍系统的存储器配置、接口设计、以及系统的软件设计、工作过程。
3. 存储器配置
系统的存储器包括两部分,除了用于录制语音存放的闪存外,C5402自身还需一定的外置存储器。
C5402中虽然集成了16K字的双存取RAM,但是G.729算法本身非常复杂,需要较大的程序空间、以及运行时所需的数据空间;同时系统还要为闪存的控制、RS232等接口的操作提供支持,因此片上的存储空间是不够的。为了解决这类问题,C5402允许程序地址空间进行扩展,通过使用片外的存储器,最多可扩充至1M字。本系统中,使用了一片64K×8bit的SRAM作为片外空间,和片上的一部分空间共同作为系统地程序存储空间;剩余的片上空间则作为数据存储空间。上述配置可用图2表示:

图2 C5402存储空间配置
图2中方格状空间为片上的16K双存取RAM;逻辑上,C5402的程序、数据空间虽然独立,但在物理上由于均使用这部分空间,所以任何一方使用的区域,在另一方的地址空间中应"禁用"以避免重叠。
用于存放录制、压缩后语音的闪存,由于其地址、数据端口采用复用的方式,因此将其映射在C5402的I/O空间中,通过C5402的地址线、各种控制线进行综合控制,并按照"命令入→地址入→数据入/出"的节拍进行工作。
4. C5402和MCU之间的HPI接口
HPI接口是TI公司为其DSP专门设计的、用于在主从连接中与主设备进行交互、通信的并行双向接口。通过HPI,主设备可访问DSP的存储器,并可通过中断或其它方式与其进行通信,从而实现两者的交互。本系统中,通过HPI接口,MCU将在系统初始化的过程中向DSP装载程序代码以使其完成自举(Boot);并在系统的运行过程中,根据用户接口的信息完成对DSP的控制及相应反馈信息的获取。图3显示了C5402通过HPI接口与MCU进行连接的原理图:

图3 HPI连接原理图上述连接中,由于作为MCU的89C51访问映射在外部空间的C5402时,地址、数据信号是采用复用的方式,因此需要利用MCU的ALE信号作为地址锁存从而将两者区分开来。另外由于C5402的HPI接口带宽只有8bits,而在C5402的内部均采用16-bit字,所以还要利用HBIL信号以确定 MCU当前传输的8bits为16-bit字的高或低8位。
对应于HPI连接,C5402内部利用控制、地址和数据等寄存器来完成与MCU的交互过程,整个交互过程包括:1)访问控制寄存器,为即将进行的HPI通信进行初始化;2)访问地址寄存器,确定MCU将访问的DSP存储器地址;3)访问数据寄存器,写入或读出所需数据。作为主设备,MCU可通过上述过程访问DSP的存储空间,并可通过控制寄存器向DSP进行通告;而作为从设备,DSP只是在接收到MCU的通告后才进行相应的数据处理或其它操作,而通过访问控制寄存器,DSP可以中断地方式向MCU进行消息通知。MCU通过HPI访问DSP内部寄存器时,将使用到HCNTL0/1信号。
通过使用主从连接和HPI接口,系统可将复杂的用户接口处理交给MCU来完成。由于一般的通用处理器都能较好的处理类似于键盘输入,输出显示等操作,因此运算能力突出的C5402可以只专心于其它对数值处理能力要求高的操作。当MCU完成用户接口处理后,通过HPI可以很方便迅速的与DSP进行通信,并控制DSP按照相应的用户要求进行工作。
5. 基于C5402的软RS232接口
具备数据交换接口,从而可与PC或其它外部设备进行互连、通信,已成为个人数据设备的必要环节。本系统通过RS232为低速率连接提供通信接口,可将压缩处理后的语音数据上载到其它备上进行存储,也可从这些设备下载语音数据,另外还可在其它设备上通过软件进行语音数据的还原播放。
利用一路C5402片上的多通道缓冲串口(McBSP)可构造简易的RS232接口:BDR作为接收端口,BDX作为发送端口;此外由于RS232是异步通信方式,为了进行帧同步,将接收线也连接到BFSR上:当接收线上出现第一个低电平时,认为一帧开始,然后启动软件进行接收。工作时钟由内部供给,约为通信波特率的16倍;这样1波特数据将在BDR端口上抽取为16bits,取中间的4bits进行判决,从而大大提高数据传输的可靠性。RS232接口的原理图如图4所示:

图4 C5402与RS232接口的连接
RS232 接口由C5402的软件实现;系统中除了RS232线路芯片用于进行电平转换、以使C5402的数据电平与RS232标准进行匹配外,没有采用其它硬件,从而简化系统,降低成本。数据帧采用1bit起始位("0")+8bits数据位+0.5bit停止位("1")进行封装,传输波特率为38400,并可设置为其它速率。
6. 系统软件构成
系统的软件部分除了对上述硬件接口的操作进行支持外,最重要的环节是G.729压缩算法部分、以实现对录制语音的实时处理以及对压缩数据的实时合成;此外还需一定的开销用于对存储数据的闪存进行。为了便于规划以及将来的扩展,系统的软件部分以模块的形式进行设计。图5显示了各个模块如何构成整个系统。

图5 系统软件构成系统软件的核心将是语音处理模块,该模块将完成对原始语音的处理、压缩及相逆的合成过程。G.729算法作为对语音实时处理操作的支持,其实现效率将决定系统质量的优劣。"ITU-T Recommendation G.729"中提供了算法实现的C代码,但实时效率较差,只能用于软件仿真或非实时环境下的处理。为了在C5402上实现其实时算法,必须使用汇编代码进行优化。本系统中采用的是已优化后的代码,运行开销约为30MIPS;当系统工作在40MHz下时,完全能满足实时的要求。当进行录音操作时,每隔 10ms时间对采集的语音进行处理,按照16:1的比例,将80×16bits的原始数据压缩成80bits的数据,并编成5个16bits字;而放音时,则将这5个16bits字解开,进行合成后输出。
语音采集及合成语音播放模块将完成对A→D及D→A过程的支持。该模块完成原始语音的采集,并将其送到指定数据区中等待处理;或将需播放后的语音从数据区中取出并输出。经压缩处理后的数据或待合成的数据被放在其它数据区内,而这些数据区与闪存的数据交换则通过闪存操作模块来完成。
DSP主控模块完成对整个DSP工作的流程控制。它负责接受MCU发送的包含用户指令的消息,进行相应的分析以确定所需的操作。然后调用相应的模块进行处理,并监视操作的完成情况。待操作完成后,将用户所需的反馈信息送回MCU。除了完成上述交互外,主控模块还将完成对系统软、硬件的配置,并随时分析、处理DSP中出现的错误。
RS232通信支持模块完成RS232接口的操作,通过串行方式与外界交换数据。
DSP软件部分是系统软件的主体部分,而MCU软件部分主要是用于完成对用户界面的支持。用户通过键盘输入需要执行的操作,MCU将其转换成相应的指令码、通过HPI发送至C5402;而将C5402送回的反馈信息输出显示给用户。而MCU也可能需要进行数据交换,这部分功能由数据交换支持模块完成。
HPI接口支持模块完成对MCU与C5402之间的HPI连接的支持。
7. 结束语
基于上述的构成,我们实现了一套基于G.729的数字语音录放系统。通过G.729算法的压缩处理,可以较高效的利用存储器存放更多的语音数据。由于 G.729的合成语音质量较高,其MOS打分可达4.0,性能甚至优于ADPCM的输出质量,因此尽管无法实现完全保真的效果,但是用于一般话音的录放、存储还是足可胜任的。经过一定的处理和封装,该系统完全可以成为一套理想的便携式大容量数字语音录放系统。
随着个人便携式数字设备的发展,类似于上述讨论的系统应有广阔的前景。除了作为数字设备、具有模拟设备所无法比拟的优势,并能在低成本的情况下满足一般的要求外,更重要的是,该系统具有很好的扩展和升级能力。在系统软件构成的讨论中我们注意到,语音处理、压缩模块是相对独立的,而DSP硬件设备又具有设置、操作简易的特点,因此经过很小的改进,该系统可采用其它的压缩算法构成新的系统。例如使用G.723算法,可以使压缩比例更大、存储器效率更高;甚至可以利用MP3算法,从而构造出性价比很高的MP3播放器。