语音压缩存储与回放实验报告.docx

上传人:b****3 文档编号:1499452 上传时间:2022-10-22 格式:DOCX 页数:21 大小:383.34KB
下载 相关 举报
语音压缩存储与回放实验报告.docx_第1页
第1页 / 共21页
语音压缩存储与回放实验报告.docx_第2页
第2页 / 共21页
语音压缩存储与回放实验报告.docx_第3页
第3页 / 共21页
语音压缩存储与回放实验报告.docx_第4页
第4页 / 共21页
语音压缩存储与回放实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

语音压缩存储与回放实验报告.docx

《语音压缩存储与回放实验报告.docx》由会员分享,可在线阅读,更多相关《语音压缩存储与回放实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

语音压缩存储与回放实验报告.docx

语音压缩存储与回放实验报告

 

DSP课程设计

实验报告

语音压缩、存储和回放

 

目录

一、设计任务书封面…………………………………………………1

二、设计内容与要求…………………………………………………3

三、设计算法原理说明………………………………………………4

四、程序设计、调试与结果分析……………………………………7

CMD程序,C语言程序……………………………………………7

调试过程…………………………………………………………15

波形与数据显示…………………………………………………16

五、设计(安装)与调试的体会……………………………………17

六、参考文献…………………………………………………………18

语音的压缩、存储与回放

一、设计要求与目标

(1)使用DSP实现语音压缩和解压缩的基本算法,算法类型自定,例如可以采用G.711、G.729等语音压缩算法。

(2)采用A/D转换器从MIC输入口实时采集语音信号,进行压缩后存储到DSP的片内和片外RAM存储器中,存储时间不小于10秒。

(3)存储器存满之后,使用DSP进行实时解压缩,并从SPEAKER输出口进行回放输出。

(4)使用指示灯对语音存储和回放过程进行指示。

发挥部分:

使用多种算法进行语音的压缩、存储和解压缩,比较它们之间的优缺点。

二、实验目的

1、通过本实验掌握5402DSP片上外设多通道缓冲串行口mcbsp。

2、学习掌握tlc320ad50CODEC编译码器的内部结构、工作原理。

3、学习A律语音压缩以及C语言下的编程方法。

三、实验原理

1.语音采集与输出模块

语音采集与输出模块采用的是TI公司推出的一款高性能的立体声音频Codec芯片TLC320AD50C,内置耳机输出放大器,支持MIC和LINEIN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。

AD50的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。

与此同时,AD50还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。

由于具有上述优点,使得AD50是一款非常理想的音频模拟I/O器件,可以很好的应用在随声听(如CD,MP3……)、录音机等数字音频领域[2]。

由TLC320AD50C组成的语音输入与输出模块不仅采样率高最高可达96K,且外围电路简单,性价比高。

2.语音编码

(1)概念:

语音编码一般分为两类:

一类是波形编码,一类是被称为“声码器技术”的编码。

PCM编码即脉冲编码调制。

波形编码的最简单形式就是脉冲编码调制(Pulsecodemodulation),这种方式将语音变换成与其幅度成正比的二进制序列,而二进制数值往往采用脉冲表示,并用脉冲对采样幅度进行编码,所以叫做脉冲编码调制。

脉冲编码调制没有考虑语音的性质,所以信号没有得到压缩。

(2)量化:

脉冲编码调制用同等的量化级数进行量化,即采用均匀量化,而均匀量化是基本的量化方式。

但是均匀量化有缺点,在信号动态范围较大而方差较小的时候,其信噪比会下降。

国际上有两种非均匀量化的方法:

A律和u律,u律是最常用的一种。

在美国,7位u律是长途电话质量的标准。

而我国采用的是A律压缩,而且有标准的A律PCM编码芯片。

(3)DPCM&ADPCM:

降低传输比特率的方法之一是减少编码的信息量,这要消除语音信号中的冗余度。

相邻的语音样本之间存在明显的相关性,因此对相邻样本间的差信号进行编码,便可使信息量得到压缩。

因为差分信号比原语音信号的动态范围和平均能量都小。

这种编码叫DifferentialPCM,简称DPCM,即差分脉冲编码调制。

ADPCM即自适应差分脉冲编码调制,是包括短时预测的编码系统。

CCITT(国际电报电话咨询委员会)在1984年提出的32kbit/s的编码器建议就是采用ADPCM作为长途传输中的国际通用语音编码方案。

这种ADPCM编码方案达到64kbit/sPCM的语音传输质量,并具有很好的抗误码性能。

(4)a律压缩

a律压缩示意图

A律压缩编码表

A律压缩编码表

线性输入编码

压缩编码

0000000wxyza

000wxyz

0000001wxyza

001wxyz

000001wxyzab

010wxyz

00001wxyzabc

011wxyz

0001wxyzabcd

100wxyz

001wxyzabcde

101wxyz

01wxyzabcdef

110wxyz

1wxyzabcdefg

111wxyz

采用DSP可以直接对PCM编码后的语音信号进行μ律和A律压缩。

图1是DSP硬件实现数据压缩解压的简单流程,DSP将传输来的压缩后的数据进行解压成16位或者32位,然后对解压后的数据进行分析、处理,最后将处理后的数据按照要求压缩成8位的数据格式输出到相应设备,供其他设备读取。

图1数据压缩解压流程

图2是DSP将数据解压的值,DSP将压缩的8位数据解压成16位的DSP通用数据格式,其中高13位为解压后的数据,低3位补0。

这是因为6.711的A律压缩只能对13位数据操作。

DSP将解压后的数据放在缓冲串口的发送寄存器中,只要运行发送指令,缓冲串口就会将数据发送出去。

缓冲串口对接收数据的解压过程和压缩过程完全相反。

图3是μ律数据解压的示意图。

图2A律数据解压

图3μ律数据解压

 DSP内部的缓冲串口(McBSPs)带有硬件实现的μ律/A律压缩解压,用户只需要在相应寄存器中进行设置就可以了。

在进行A律压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变,原数据的后11位要压缩成7位。

这7位码由3位段落码和4位段内码组成。

具体的压缩变换后的数据根据后11位数据大小决定。

 表2   A律数据压缩表

除对串行口数据实现压扩处理外,这套硬件在McBSP不使用时还可以当作一个特殊的处理单元对内部数据实现压扩处理,他有两种实现方法。

法一:

当串行口的发送和接受部分都处于复位状态时,DRR1和DXR1内部通过压扩逻辑连接在一起,数据从DXR1写入并根据XCOMPAND处理,然后根据RCOMPAND再处理,在4个CPU时钟后从DRR1中读出数据。

该处理比软件实现快,不利之处在于处理完后没有同步信息通知CPU和DMA。

法二:

在数据环回模式下,McBSP也实现了一种内连。

数据处理与第一种方法相同,但它可以提供中断信号(或同步事件)给CPU(或DMA)。

这里数据处理的时间是根据串行口的比特律确定的。

另外,在通常情况下McBSP先传输信号的高位后传输低位,但是在字长为8比特的数据传输时,McBSP提供了比特倒序的功能,即可以先传输低位后传输高位。

在本实验中,我们通过软件编程来完成线性码转换成A律。

语音信号通常是小信号概率大,大信号出现的概率小,为提高小信号时的量化信躁比,压缩比特速率,可为非线性量化。

语音压缩是把16位的数据比特转化为8位数据比特,从而到达语音压缩的目的。

在主程序中通过A/D抽样量化,可以得到16位的线性编码,再由编码表通过软件计算得到8位A律编码,其中最高位为符号位,第6位到第4位为段落码,低4位为段内码。

将8位的压缩结果存储到系统RAM中进行缓存,根据抽样率、语音存储时间以及系统RAM的容量设置语音存储缓冲区的大小,待缓冲区存满后,将缓冲区内的数据进行解压缩,然后输出到SPEAKER接口输出端。

若使用A/D转换器,必须首先对A/D转换器进行初始化设置,即设置A/D转换器的工作模式、输入增益以及抽样频率等。

 

3.程序设计

(1)、程序流程

存储器的分配(5402.cmd)

MEMORY

{

PAGE0:

VECS:

origin=0080h,length=0080h/*InternalProgramRAM*/

PRAM:

origin=7600h,length=8000h/*InternalProgramRAM*/

PAGE1:

SCRATCH:

origin=0060h,length=0020h/*ScratchPadDataRAM*/

DMARAM:

origin=0C00h,length=0300h/*DMAbuffer*/

DATA:

origin=1100h,length=0080h/*InternalDataRAM*/

STACK:

origin=1180h,length=0560h/*StackMemorySpace*/

INRAM:

origin=1900h,length=0100h/*InternalDataRAM*/

HPRAM0:

origin=1A00h,length=0002h/*HPImemoryaccessiblebyHostandDSP*/

HPRAM1:

origin=1A02h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/

HPRAM2:

origin=1C82h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/

EXRAM:

origin=1F10h,length=9000h/*ExternalDataRAM*/

}

 

SECTIONS

{

.cinit>PRAMPAGE0

.text>PRAMPAGE0

.vectors>VECSPAGE0

init_var>PRAMPAGE0

detect>PRAMPAGE0

vrcprg>PRAMPAGE0

matprg>PRAMPAGE0

.stack>STACKPAGE1

.trap>SCRATCHPAGE1

.const>EXRAMPAGE1

.data>EXRAMPAGE1

.bss>EXRAMPAGE1

.cio>EXRAMPAGE1

.switch>EXRAMPAGE1

tables>EXRAMPAGE1

var>EXRAMPAGE1

svctab>EXRAMPAGE1/*SS_VLSPtable*/

vctab>EXRAMPAGE1/*VLSPtable*/

uvctab>EXRAMPAGE1/*UVLSPtable*/

cuvtab>EXRAMPAGE1/*Stochasticcodebook*/

cdbktab>EXRAMPAGE1/*variouscodebooktables*/

logtab>EXRAMPAGE1/*tableforlog2*/

powtab>EXRAMPAGE1/*tableforpow2*/

hamtab>EXRAMPAGE1/*tableforhamming*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1