📄 200842322252235201.doc
字号:
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=GB2312"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./中国经理人.files/filelist.xml"> <title>中国经理人</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>h</o:Author> <o:LastAuthor>h</o:LastAuthor> <o:Revision>1</o:Revision> <o:TotalTime>2</o:TotalTime> <o:Created>2008-04-19T00:44:00Z</o:Created> <o:LastSaved>2008-04-19T00:46:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Company>h</o:Company> <o:Lines>1</o:Lines> <o:Paragraphs>1</o:Paragraphs> <o:Version>9.2812</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:UseFELayout/> </w:Compatibility> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} --> </style> </head> <body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'> <div class=Section1 style='layout-grid:15.6pt'> <p class=MsoNormal align=center style='text-align:center'><b><span style='font-size:16.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"'>纯软件实时实现ADPCM语音压缩算法</span></b><b><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt'><o:p></o:p></span></b></p> <p class=MsoNormal><b><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size: 12.0pt'><br> </span></b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family: 宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>
<p>通信系统的要求一样,这些新技术也需要语音压缩技术的支持,而且仍然追求在允许的运算复杂度和存储复杂度的条件下,尽最大可能提高语音质量和降低编码速率。本文在CCITT 32 kbit/s ADPCM标准算法(G.721)的基础上,针对语音压缩存储系统不同于话音通信传输系统的一些特征,专门简化设计了一个新的ADPCM算法,使之能够在PC-386微型计算机上,用纯软件(即不用DSP加速板)半双工地实时实现语音的编译码(语音的长时间压缩录放),其中压缩语音的放音可以直接针对微机的硬盘存储器进行。1 标准ADPCM算法(G.721)分析CCITT在1986年提出了32 kbit/s ADPCM标准算法结构(G.721),作为长途通信传输中的一种新型国际通用的语音压缩编码方法,其编译码原理框图如图1、图2所示:由于CCITT制定32 kb it/s ADPCM语言编码标准的目的是为了扩充原有的压扩PCM方式的数字长途通信的信道容量,所以在G.721算法标准中安排有与压扩PCM 数字通信系统有关的输入输出接口。新编码器的处理过程而言,算法先经PCM扩张模块把8 bit的压缩PCM信号扩张成13 b it(A律)或15 bit(μ津)的线性PCM信号,这部分算法在CCITT的G.711标准中有详细的描述,在此就不赘述。以下仅简述线性PCM信号Sl(k)如何进行ADPCM压缩处理得到4 bit的编码输出I(k),其编码流程是(图1):第一步:计算Sl(k)与自适应预测器输出Se(k)的差值E(k)=Sl(k)-Se(k)。第二步:依据自适应量化标度因子Y(k),通过自适应量化模块对E(k)-Y(k)进行量化,得到量化输出码流I(k),输出给译码器(或存储在存储器中)。第三步:依据第二步算出的新的I(k),通过量化标度因子自适应模块计算新的(自适应)量化标度因子Y(k)。第四步:依据重建信号Sr(k)[其中:Sr(k)=Se(k)+E(k)]和预测器输出Se(k)的值,计算新的自适应预测器预测系数(即两个极点预测系数A1,A2和六个零点预测系数B1,B2,B3,B4,B5,B6)。第五步:依据新的预测器预测系数,得到新的预测器输出Se(k)。如此又回到第一步,进行下一个语音样值的压缩,直到永远。就译码器的处理过程而言,每当从编码器(或从存储器中)接收到一个压缩码字I(k)以后,依如下方式进行译码:第一步:依据I(k)经自适应逆量化模块得归一化量化误差Dq(k),加上即刻的自适应量化标度因子Y(k)和自适应预测器输出Se(k),就得到重建的语音信号Sr(k)。这一步和编码器的对应部分完全相同。第二步:和编码器中的算法一样,译码器以完全相同的算法自适应地更新量化标度因子Y(k)、预测系数A1,A2;B1,B2,B3,B4,B5,B6和预测器输出Se(k)。第三步:对重建信号Sr(k)进行PCM压缩(即G.711算法),得压缩的PCM语音信号。这一步的目的完全是为了与PCM设备接口。第四步:为了实现双向通信,在译码器的输出端还插入有同步码元调整单元。在完成第四步运算后,接受新的I(k),回到第一步并依此循环。2 标准ADPCM算法(G.721)的简化我们知道,CCITT提出的32 kbit/s ADPCM标准算法是为话音的长途通信之用,但是现在我们的目标是把这个算法用于语音存储中(即多媒体计算机技术、语音邮件传递技术),所以完全有可能和有必要对这个算法进行简化和改进。本文提出了一些改进措施,可以使新的简化算法能够在PC-386(33 MHz)微型计算机上用软件实时实现。具体的简化措施主要有:(1)语音存储和通信传输最根本的不同是语音存储不需要进行异地传输,所以新算法可以把为实现通信同步的译码器中的同步码调整模块取消 ,这样我们在降低了算法运算复杂度的同时,对输出合成语音的质量却丝毫没有影响。 (2)CCITT的32 kb it/s ADPCM标准算法使用的场合是对原PCM信道增容,即在原来只能进行30(32)路PCM方式数字通信的一次群信道中,进行60路ADPCM方式的数字通信(详细描述见CCITT的G.761建议),为了实现与原有设备的兼容, 在本标准算法中设计了相应的PCM扩张和压缩的接口。本文遇到的原始信号就是线性PCM信号,没有必要再进行PCM 的压扩运算,所以算法中编译码器各自的PCM压(或扩)模块都是可以省略的。这样一方面可以降低整个算法的运算复杂度;另一方面,因为我们直接对线性PCM进行ADPCM压缩,从理论上说将因压扩PCM的量化误差的消失而使总的语音编码的失真降低,从而提高合成语音的质量。(3)简化的算法可以省略单音/过渡音检测单元。因为单音/过渡音检测单元是在1.2 kbit/s FSK(移频键控)信号经ADPCM编码后,在传输ASCII字符时会产生严重误码,而加入的补偿性措施 ,在本文单纯的语音录放系统中是不必要的,可以不进行这个模块的运算。(4)在对量化标度因子Y(k)进行自适应更新的过程,考虑到长途通信线路中的非话音信号(例如MODEM信号等),设置有自适应速度的控制单元,其主要的目的是为了使自适应量化器能对语音信号(高非平稳信号)和非话(如数据MODEM)信号(平稳信号)都可以获得最佳自适应特性。其算法关系为: Y(k)=a(k)*Yu(k-1)+[1-a(k)]*Yl(k-1)式中,u(k)为上一帧的快速变化(如为语音)信号对应的标度因子分量;Yl(k)为上一帧的慢速变化(非话信号)信号对应的标度因子分量;a(k)为速度控制系数。实践证明在一般情况下,当只有语音信号时,a(k)的值是趋向于1的,而当算法的输入为平稳信号[如数据MODEM信号、单音信号、D TMF(双音多频)信号]时,a(k)的值则在(0~1)之间。所以对语音存储系统,在输入只有语音的情况下我们可以粗略地认为a(k)的值近似为1,这样就可以不进行自适应速度控制模块的运算(不计算a(k)的值),而直接把计算得到的快速量化标度因子Yu(k)作为新的量化器标度因子Y(k),从而降低算法的运算复杂度。当然这样作对合成语音的质量是有影响的,但因为实验证明简化后的算法,其合成语音的质量是可以接收的(非正式听音测试),所以我们认为这种简化仍然是合理的。 (5)标准ADPCM算法中,其内部变量的数据结构,为了硬件实现的方便而有许多种类型,但是这种数据结构不适合微机的高级语言软件编程。为了更方便地在微机上用高级语言编程,我们设计了一个新的数据结构,除输出码元I(k)外,其余的变量都为16 bit的补码方式的整型数。I(k)为一4 bit的无符号整数。在ADPCM编码器输出四个码元后,再组成一无符号整数存储在磁盘中,这样我们就实现了一个全定点的ADPCM编译码算法。(6)对于算法中的对数和反对数运算,在程序实现时借助于查表的方法,这样可以在不影响运算结果的前提下降低部分运算复杂度。经过以上的算法简化过程后,我们可以得到如图3、图4所示的语音编解码框图。3 软件框图软件框图如图5、图6所示。图5 编码器程序流图4 实验结果(1)语音编译码算法的环境要求:新的32 kbit/s 5 结 论新的简化的ADPCM语音编码算法可以在PC-386的机器上,勿需借助DSP加速板直接用软件实时实现之。在PC-386微机上可直接对硬盘的语音数据进行译码放音,而在PC-486上可直接在硬盘 ADPCM语音编码算法可以在PC-386上用软件实时实现,其实验环境为:PC-386(DX2),33 MHz,4 MB RAM;A/D&D/A语音录放采集板。(2)语音编译码算法的速度:其中对133.12 s的一段语音,其编码所需时间为110.57 s,译码所需时间为104.58 s,分别占全部语音时间的83.06%和78.56%,所以说这个编译码算法可以在PC-386上实现半双工实时录放。(3)语音编译码算法的性能:和标准ADPCM算法(G.721)比较,合成语音质量在非正式主观测试中难于分辨优劣,但分段信噪比新的简化算法却比标准算法下降了3~5 dB。我们用八段语音(男女各四段)对此进行比较测试,测试结果如附表。附表dB男第一段第二段第三段第四段女第一段第二段第三段第四段标准算法27.12 29.74 28.50 30.02 29.09 29.40 28.58 31.52简化算法24.63 25.59 23.88 28.07 26.85 25.53 24.44 27.45 中进行编译码的实时操作,我们预计这项技术可望在多媒体技术和电子邮件(语音邮件)技术中广泛的应用。(原载《电信科学》1994年第10期)</span><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><o:p></o:p></span></p> <br><p class=MsoNormal><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt; font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"'>作者: 傅秋良 袁保宗 </span><b><span lang=EN-US style='font-size:16.0pt; mso-bidi-font-size:12.0pt'><o:p></o:p></span></b></p></div> </body> </html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -