论文部分内容阅读
随着VoIP技术日趋成熟,VoIP逐渐成为一个热门领域,G723.1、G729、GSM610、iLBC、SPEEX等可以用于VoIP的语音算法也不断的受到业界关注。本论文的主要任务之一就是iLBC语音算法的研究。iLBC算法本质上是一种基于帧的线性预测编码方法,是对CELP的一种发展,其独有的动态码本更新,语音增强算法,及丢包掩蔽技术,使其在VoIP中应用时有更好的性能。根据网络带宽的不同,iLBC提供20ms和30ms两种编码的格式。解码端,iLBC运用了分析合成方法的编解码算法,解码的部分运算量相对要小一些,使其在功能不强的客户端的实时解码成为可能。iLBC对每一个数据包的处理都能够独立于其它数据包来进行,是数据包通信的理想选择。即使IP丢包和延迟现象的恶化,这种编解码器的语音质量下降情况也不会太差。iLBC是一种窄带语音编解码器,使用了整个4kHz频带,而大多数标准低比特率编解码器只利用从300Hz到3400Hz的频带。这一点对音质的影响是相当明显的。此外,iLBC语音编码的频谱特性精确模拟了原始信号的特性,其语音比标准低比特率编解码器的更自然清晰。iLBC算法为数据包网络实现了优良的固定比特率编码,在质量与比特率之间取得了非常出色的平衡。与以往的低比特率语音编解码算法相比,iLBC算法在基于初始状态的动态码本的选取和更新、在帧间独立的长时预测方法基础上的PLC丢包掩蔽技术以及利用有条件限制的优化算法加强残差语音这几个方面采用了与众不同的方法,这些地方都值得研究。本论文的另一主要任务就是iLBC语音算法的DSP实现。在DSP实现时,以IEFE组织给出的rfc3951文档中的C语言iLBC语音算法为标准算法,以Analog Device公司的ADSP2181芯片为核心DSP处理芯片,对C语言的iLBC进行DSP转换,使转换后的汇编代码符合ADSP2181芯片的规则。转换完成后利用大量语音序列对汇编代码进行测试,并在保证语音质量的条件下,从指令集、寻址方式、存储方式、临时变量等方面对代码进行优化。实际话机测试时,选用微掌公司的AR1688芯片话机,其内部DSP兼容ADSP2181芯片指令,功能完备,满足当今VoIP的语音需求,成为实际测试时所选择的硬件平台。