ImageVerifierCode 换一换
格式:DOC , 页数:53 ,大小:138.50KB ,
资源ID:6545782      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6545782.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(音频压缩算法.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

音频压缩算法.doc

1、第 7 章凌阳 音频压缩算法 261第 7 章凌阳音频压缩算法7.1 背景介绍7.1.1 音频的概述(特点,分类)我们所说的音频是指频率在 20Hz20kHz 的声音信号,分为:波形声音,语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础.语音也可以表示为波形声音,但波形声音表示不出语言,语音学的内涵.语音是对讲话声音的一次抽象.是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号.音乐与语音相比更规范一些,是符号化了的声音.但音乐不能对所有的声音进行符号化.乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容.7.1.2 数字音频的采样和量化将模拟的(

2、连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面.数字音频的质量取决于:采样频率和量化位数这两个重要参数.此外,声道的数目,相应的音频设备也是影响音频质量的原因.7.1.3 音频格式的介绍音频文件通常分为两类:声音文件和 MIDI 文件(1)声音文件:指的是通过声音录入设备录制的原始声音,直接记录了真实声音的二进制采样数据,通常文件较大;(2)MIDI 文件:它是一种音乐演奏指令序列,相当于乐谱,可以利用声音输出设备或与计算机相连的电子乐器进行演奏,由于不包含声音数据,其文件尺寸较小.1)声音文件的格式WAVE 文件*.WAVWAVE 文件使用三个

3、参数来表示声音,它们是:采样位数,采样频率和声道数.在计算机中采样位数一般有 8 位和 16 位两种,而采样频率一般有11025Hz(11KHz),22050Hz(22KHz),44100Hz(44KHz)三种.我们以单声道为例,则一般 WAVE 文件的比特率可达到 88K704Kbps.具体介绍如下:(1)WAVE 格式是 Microsoft 公司开发的一种声音文件格式,它符合RIFF(ResourceInterchangeFileFormat)文件规范;第 7 章凌阳音频压缩算法 262(2)用于保存 Windows 平台的音频信息资源,被 Windows 平台及其应用程序所广泛支持.(3

4、)WAVE 格式支持 MSADPCM,CCITTALaw,CCITTLaw 和其它压缩算法,支持多种音频位数,采样频率和声道,是 PC 机上最为流行的声音文件格式.(4)但其文件尺寸较大,多用于存储简短的声音片段.AIFF 文件AIF/AIFF(1)AIFF 是音频交换文件格式(AudioInterchangeFileFormat)的英文缩写,是苹果计算机公司开发的一种声音文件格式;(2)被 Macintosh 平台及其应用程序所支持,NetscapeNavigator 浏览器中的LiveAudio 也支持 AIFF 格式,SGI 及其它专业音频软件包同样支持这种格式.(3)AIFF 支持 A

5、CE2,ACE8,MAC3 和 MAC6 压缩,支持 16 位 44.1Kz 立体声.Audio 文件*.Audio(1)Audio 文件是 SunMicrosystems 公司推出的一种经过压缩的数字声音格式,是Internet 中常用的声音文件格式;(2)NetscapeNavigator 浏览器中的 LiveAudio 也支持 Audio 格式的声音文件.MPEG 文件*.MP1/*.MP2/*.MP3(1)MPEG 是运动图像专家组(MovingPictureExpertsGroup)的英文缩写,代表MPEG 标准中的音频部分,即 MPEG 音频层(MPEGAudioLayer);(2

6、)MPEG 音频文件的压缩是一种有损压缩,根据压缩质量和编码复杂程度的不同可分为三层(MPEGAudioLayer1/2/3),分别对应 MP1,MP2 和 MP3 这三种声音文件;(3)MPEG 音频编码具有很高的压缩率,MP1 和 MP2 的压缩率分别为 4:1 和 6:18:1,而 MP3 的压缩率则高达 10:112:1,也就是说一分钟 CD 音质的音乐,未经压缩需要 10MB 存储空间,而经过 MP3 压缩编码后只有 1MB 左右,同时其音质基本保持不失真,因此,目前使用最多的是 MP3 文件格式.RealAudio 文件*.RA/*.RM/*.RAM(1)RealAudio 文件是

7、 RealNerworks 公司开发的一种新型流式音频(StreamingAudio)文件格式;(2)它包含在 RealMedia 中,主要用于在低速的广域网上实时传输音频信息;(3)网络连接速率不同,客户端所获得的声音质量也不尽相同:对于 28.8Kbps 的连接,可以达到广播级的声音质量;如果拥有 ISDN 或更快的线路连接,则可获得 CD 音质的声音.2)MIDI 文件*.MID/*.RMI(1)MIDI 是乐器数字接口(MusicalInstrumentDigitalInterface)的英文缩写,是数字音乐/电子合成乐器的统一国际标准;(2)它定义了计算机音乐程序,合成器及其它电子设

8、备交换音乐信号的方式,还规第 7 章凌阳音频压缩算法 263定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可用于为不同乐器创建数字声音,可以模拟大提琴,小提琴,钢琴等常见乐器;(3)在 MIDI 文件中,只包含产生某种声音的指令,这些指令包括使用什么 MIDI设备的音色,声音的强弱,声音持续多长时间等,计算机将这些指令发送给声卡,声卡按照指令将声音合成出来,MIDI 在重放时可以有不同的效果,这取决于音乐合成器的质量;(4)相对于保存真实采样资料的声音文件,MIDI 文件显得更加紧凑,其文件尺寸通常比声音文件小得多.7.1.4 语音压缩编码基础语音压缩编码中的数据量是指

9、:数据量=(采样频率量化位数)/8(字节数)声道数目.压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息.压缩编码的必要性:实际应用中,未经压缩编码的音频资料量很大,进行传输或存储是不现实的.所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息.举个例子,没有压缩过的 CD 品质的资料,一分钟的内容需要 11MB 的内存容量来存储.如果将原始资料进行压缩处理,在确保声音品质不失真的前提下,将数据压缩一半,5.5MB 就可以完全还原效果.而在实际操作中,可以依需要来选择

10、合适的算法.常见的几种音频压缩编码:1)波形编码:将时间域信号直接变换为数字代码,力图使重建语音波形保持原语音信号的波形形状.波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示.译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号.如:脉冲编码调制(PulseCodeModulation,PCM),差分脉冲编码调制(DPCM),增量调制(DM)以及它们的各种改进型,如自适应差分脉冲编码调制(ADPCM),自适应增量调制(ADM),自适应传输编码(AdaptiveTransferCoding,ATC)和子带编码(SBC)等都属于波形编码技术.波

11、形编码特点:高话音质量,高码率,适于高保真音乐及语音.2)参数编码:参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输.译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号.具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的差别.第 7 章凌阳音频压缩算法 264如:线性预测编码(LPC)及其它各种改进型都属于参数编码.该编码比特率可压缩到 2Kbit/s-4.8Kbit/s,甚至更低,但语音质量只能达到中等,特别是自然度较

12、低.参数编码特点:压缩比大,计算量大,音质不高,廉价!3)混合编码:混合编码使用参数编码技术和波形编码技术,计算机的发展为语音编码技术的研究提供了强有力的工具,大规模,超大规模集成电路的出现,则为语音编码的实现提供了基础.80 年代以来,语音编码技术有了实质性的进展,产生了新一代的编码算法,这就是混合编码.它将波形编码和参数编码组合起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,力图保持波形编码的高质量和参数编码的低速率.如:多脉冲激励线性预测编码(MPLPC),规划脉冲激励线性预测编码(KPELPC),码本激励线性预测编码(CELP)等都是属于混合编码技术.其数据率和音质介于参数和

13、波形编码之间.总之,音频压缩技术之趋势有两个:1)降低资料率,提高压缩比,用于廉价,低保真场合(如:电话).2)追求高保真度,复杂的压缩技术(如:CD).语音合成,辨识技术的介绍:按照实现的功能来分,语音合成可分两个档次:(1)有限词汇的计算机语音输出(2)基于语音合成技术的文字语音转换(TTS:Text-to-Speech)按照人类语言功能的不同层次,语音合成可分为三个层次:(1)从文字到语音的合成(Text-to-Speech)(2)从概念到语音的合成(Concept-to-Speech)(3)从意向到语音的合成(Intention-to-Speech)图 7.1 是文本到语音的转换过程:

14、文本处理语音合成韵律处理语音数据库词典及语言规范合成语音输出文本输入图 7.1 从文本到语音转换过程示意语音辨识:语音辨识技术有三大研究范围:口音独立,连续语音及可辨认字词数量.口音独立:1)早期只能辨认特定的使用者即特定语者(SpeakerDependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),作简单快速的训第 7 章凌阳音频压缩算法 265练纪录使用者的声音特性来加以辨认.随着技术的成熟,进入语音适应阶段SA(speakeradaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率.2)非特定语者模式(Sp

15、eakerIndependent,SI),使用者无需训练即可使用,并进行辨认.任何人皆可随时使用此技术,不限定语者即男性,女性,小孩,老人皆可.连续语音:1)单字音辨认:为了确保每个字音可以正确地切割出来,必须一个字一个字分开来念,非常不自然,与我们平常说话的连续方式,还是有点不同.2)整个句子辨识:只要按照你正常说话的速度,直接将要表达的说出来,中间并不需要停顿,这种方式是最直接最自然的,难度也最高,现阶段连续语音的辨识率及正确率,虽然效果还不错但仍需再提高.然而,中文字有太多的同音字,因此目前所有的中文语音辨识系统,几乎都是以词为依据,来判断正确的同音字.可辨认词汇数量:内建的词汇数据库的

16、多寡,也直接影响其辨识能力.因此就语音辨识的词汇数量来说亦可分为三种:1)小词汇量(10-100)2)中词汇量(100-1000)3)无限词汇量(即听写机)图 7.2 是简化的语音识别原理图,其中实线部分成为训练模块,虚线部分为识别模块.复杂声学,言语条件下的语音输入语音模型声学模式训练语音匹配语音模式训练语音处理识别结果,理解结果语言模型图 7.2 语音识别原理简图第 7 章凌阳音频压缩算法 2667.2 凌阳音频简介7.2.1 凌阳音频压缩算法的编码标准表 7.1 是不同音频质量等级的编码技术标准(频响):表 7.1信号类型频率范围(Hz)采样率(kHz)量化精度(位)电话话音 20034

17、0088宽带音频(AM 质量)5070001616调频广播(FM 质量)2015k37.816高质量音频(CD 质量)2020k44.116凌阳音频压缩算法处理的语音信号的范围是 200Hz-3.4KHz 的电话话音.7.2.2 压缩分类压缩分无损压缩和有损压缩.无损压缩一般指:磁盘文件,压缩比低:2:14:1.而有损压缩则是指:音/视频文件,压缩比可高达 100:1.凌阳音频压缩算法根据不同的压缩比分为以下几种(具体可参见语音压缩工具一节内容):SACM-A2000:压缩比为 8:1,8:1.25,8:1.5SACM-S480:压缩比为 80:3,80:4.5SACM-S240:压缩比为 8

18、0:1.5按音质排序:A2000S480S2407.2.3 凌阳常用的音频形式和压缩算法1)波形编码:sub-band 即 SACM-A2000特点:高质量,高码率,适于高保真语音/音乐.2)参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码.如:SACM-S240.特点:压缩比大,计算量大,音质不高,廉价!3)混合编码:CELP 即 SACM-S480特点:综合参数和波形编码之优点.除此之外,还具有 FM 音乐合成方式即 SACM-MS01.第 7 章凌阳音频压缩算法 2677.2.4 分别介绍凌阳语音的播放,录制,合成和辨识凌阳的 SPCE061A 是 16 位单片机,

19、具有 DSP 功能,有很强的信息处理能力,最高时钟频率可达到 49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放,录放,合成及辨识提供了条件.凌阳压缩算法中 SACM_A2000,SACM_S480,SACM_S240 主要是用来放音,可用于语音提示,而 DVR 则用来录放音.对于音乐合成 MS01,该算法较繁琐,而且需要具备音乐理论,配器法及和声学知识,所以对于特别爱好者可以到我们的网站去了解相关内容,这里只给出它的 API 函数介绍及程序代码的范例,仅供参考.对于语音辨识主要有以下两种:1)特定发音人识别 SD(SpeakerDependent):是指语音样板由单个人训练,也只能

20、识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别.2)非特定发音人识别 SI(SpeakerIndependent):是指语音样板由不同年龄,不同性别,不同口音的人进行训练,可以识别一群人的命令.语音识别电路基本结构如图 7.3 所示:滤除噪音预加重滤波器组PARCOR 系数线性预测系数过零次数能量相关函数等模式匹配词典语音分析语音识别结果输出图 7.3 语音识别电路结构具体应用及程序代码可参考 7.3.47.3 常用的应用程序接口 API 的功能介绍及应用7.3.1 概述表 7.2 所列出的是凌阳音频的几种算法:表 7.2SACM-lib 库中模块及其算法类型模块名称(Model-

21、Index)语音压缩编码率类型资料采样率SACM_A200016Kbit/s,20Kbit/s,24Kbit/s16KHzSACM_S480/S7204.8Kbit/s,7.2Kbit/s16KHz第 7 章凌阳音频压缩算法 268SACM_S2402.4Kbit/s24KHzSACM_MS01 音乐合成(16Kbits/s,20Kbits/s,24Kbits/s)16KHzSACM_DVR(A2000)16Kbit/s 的资料率,8K 的采样率,用于 ADC 通道录音功能16KHz语音和音乐与我们的生活有着非常密切的关系,而单片机对语音的控制如录放音,合成及辨识也广泛应用在现实生活中.我们知

22、道对于语音处理大致可以分为 A/D,编码处理,存储,解码处理以及 D/A 等见图 7.4 所示.然而,通过前面介绍我们知道麦克风输入所生成的 WAVE 文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的 SPCE061A 提出了解决的方法,即 SACM-LIB,该库将 A/D,编码,解码,存储及 D/A 作成相应的模块,对于每个模块都有其应用程序接口 API,所以您只需了解每个模块所要实现的功能及其参数的内容,然后调用该API 函数即可实现该功能,例如在程序中插入语音提示,或连续播放一段语音或音乐,也可以根据自己需要的空间或使用范围选择适合自己的算法如表 7.

23、2 所示.麦克风 A/D 转换存储喇叭编解码处理 D/A 转换图 7.4 单片机对语音处理过程以下就不同的算法具体介绍各自的 API 函数的格式,功能,参数,返回值,备注及应用范例.7.3.2SACM_A2000该压缩算法压缩比较小(8:1)所以具有高质量,高码率的特点适用于高保真音乐和语音.其相关 API 函数如下所示:voidSACM_A2000_Initial(intInit_Index)/初始化voidSACM_A2000_ServiceLoop(void)/获取语音资料,填入译码队列voidSACM_A2000_Play(intSpeech_Index,intChannel,intR

24、amp_Set)/播放voidSACM_A2000_Stop(void)/停止播放voidSACM_A2000_Pause(void)/暂停播放voidSACM_A2000_Resume(void)/暂停后恢复voidSACM_A2000_Volume(Volume_Index)/音量控制unsignedintSACM_A2000_Status(void)/获取模块状态第 7 章凌阳音频压缩算法 269voidSACM_A2000_InitDecode(intChannel)/译码初始化voidSACM_A2000_Decode(void)/译码voidSACM_A2000_FillQueue

25、(unsignedintencoded-data)/填充队列unsignedintSACM_A2000_TestQueue(void)/测试队列CallF_FIQ_Service_SACM_A2000/中断服务函数下面对各个函数进行具体介绍:1)【API 格式】C:voidSACM_A2000_Initial(intInit_Index)ASM:R1=Init_IndexCallF_SACM_A2000_Initial【功能说明】SACM_A2000 语音播放之前的初始化.【参数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式.【返回值】无【备注】该函数用于对

26、定时器,中断和 DAC 等的初始化.2)【API 格式】C:voidSACM_A2000_ServiceLoop(void)ASM:CallF_SACM_A2000_ServiceLoop【功能说明】从资源中获取 SACM_A2000 语音资料,并将其填入译码队列中.【参数】无.【返回值】无.3)【API 格式】C:voidSACM_A2000_Play(intSpeech_Index,intChannel,intRamp_Set);ASM:R1=Speech_IndexR2=ChannelR3=Ramp_SetCallSACM_A2000_Play【功能说明】播放资源中 SACM_A2000

27、 语音或乐曲.【参数】Speech_Index:表示语音索引号.Channel:1.通过 DAC1 通道播放;2.通过 DAC2 通道播放;3.通过 DAC1 和 DAC2 双通道播放.Ramp_Set:0.禁止音量增/减调节;1.仅允许音量增调节;2.仅允许音量减调节;3.允许音量增/减调节.【返回值】无.【备注】SACM_A2000 的数据率有 16Kbps20Kbps24Kbps 三种,可在同一模块的几种算法中自动选择一种.第 7 章凌阳音频压缩算法 270Speech_Index 是定义在 resource.inc 文件中资源表(T_SACM_A2000_SpeechTable)的偏移

28、地址.中断服务子程序 F_FIQ_Service_SACM_A2000 必须安置在 TMA_FIQ 中断向量上(参见第五章中断系统内容).函数允许 TimerA 以所选的的数据采样率(计数溢出)中断.程序 7-1 以自动方式播放一段 SACM_A2000 语音,并自动结束.(见光盘)SACM_A2000 自动方式主程序流程图:SACM_A2000 放音的初始化SACM_A2000 压缩播放获取语音数据并解码等待中断播放图 7.5A2000 自动方式主程序流程前台程序:#defineSpeech_10#defineDAC11#defineDAC22#defineRamp_UpDn_Off0#de

29、fineRamp_Up_On1#defineRamp_Dn_On2#defineRamp_UpDn_On3Main()SACM_A2000_Initial(1);SACM_A2000_Play(Speech_1,DAC1+DAC2,Ramp_UpDn_On);/放音while(SACM_A2000_Status()背景程序:.TEXT第 7 章凌阳音频压缩算法 271.INCLUDEhardware.inc.INCLUDEA2000.inc.INCLUDEResource.inc/=/函数:FIQ()/语法:voidFIQ(void)/描述:FIQ 中服务断函数/参数:无/返回:无/=.PUB

30、LIC_FIQ;_FIQ:PUSHR1,R4TOsp;/入栈保护R1=0x2000;TESTR1,P_INT_Ctrl;/是否为定时器 A 中断JNZL_FIQ_TimerA;R1=0x0800;TESTR1,P_INT_Ctrl;/是否为定时器 B 中断JNZL_FIQ_TimerB;L_FIQ_PWM:R1=C_FIQ_PWM;P_INT_Clear=R1;/清中断POPR1,R4fromsp;/恢复现场RETI;L_FIQ_TimerA:/定时器 A 中断处理P_INT_Clear=R1;/清中断CALLF_FIQ_Service_SACM_A2000;/调用 A2000 中断服务函数P

31、OPR1,R4FROMsp;/恢复现场RETI;L_FIQ_TimerB:/定时器 B 中断处理P_INT_Clear=R1;/清中断POPR1,R4FROMsp;/恢复现场RETI;/中断返回/*/注:播放语音文件中数据,当出现 FFFFFFH 数据时便停止播放.4)【API 格式】C:voidSACM_A2000_Stop(void);ASM:CallF_SACM_A2000_Stop【功能说明】停止播放 SACM_A2000 语音或乐曲.【参数】无.【返回值】无.5)【API 格式】C:voidSACM_A2000_Pause(void);ASM:CallF_SACM_A2000_Pau

32、se【功能说明】暂停播放 SACM_A2000 语音或乐曲.第 7 章凌阳音频压缩算法 272【参数】无.【返回值】无.6)【API 格式】C:voidSACM_A2000_Resume(void);ASM:CallF_SACM_A2000_Resume【功能说明】恢复暂停播放的 SACM_A2000 语音或乐曲.【参数】无.【返回值】无.7)【API 格式】C:voidSACM_A2000_Volume(Volume_Index);ASM:R1=Volume_IndexCallF_SACM_A2000_Volume【功能说明】在播放 SACM_A2000 语音或乐曲时改变主音量.【参数】Vo

33、lume_Index 为音量数,音量从最小到最大可在 015 之间选择.【返回值】无.8)【API 格式】C:unsignedintSACM_A2000_Status(void);ASM:CallF_SACM_A2000_Status返回值=R1【功能说明】获取 SACM_A2000 语音播放的状态.【参数】无.【返回值】当 R1 的 bit0=0,表示语音播放结束;bit0=1,表示语音在播放中.9)【API 格式】ASM:CallF_FIQ_Service_SACM_A2000【功能说明】用作 SACM_A2000 语音背景程序的中断服务子程序.通过前台子程序(自动方式的 SACM_A20

34、00_ServiceLoop 及手动方式的 SACM_A2000_Decode)对语音资料进行解码,然后将其送入 DAC 通道播放.【参数】无.【返回值】无.【备注】SACM_A2000 语音背景子程序只有汇编指令形式,且应将此子程序安置在 TMA_FIQ 中断源上.10)【API 格式】C:voidSACM_A2000_InitDecode(intChannel);ASM:CallF_SACM_A2000_Decode【功能说明】开始对 SACM_A2000 语音资料以非自动方式(编程控制)进行译码.【参数】Channel=1,2,3;分别表示使用 DAC1,DAC2 通道以及 DAC1 和

35、DAC2 双通道.【返回值】无.【备注】用户只能通过非自动方式对语音资料解压缩.11)【API 格式】C:voidSACM_A2000_Decode(void);ASM:CallF_SACM_A2000_Decode第 7 章凌阳音频压缩算法 273【功能说明】从语音队列里获取的 SACM_A2000 语音资料,并进行译码,然后通过中断服务子程序将其送入 DAC 通道播放.【参数】无.【返回值】无.【备注】用户仅能通过非自动方式对语音资料进行译码.12)【API 格式】C:voidSACM_A2000_FillQueue(unsignedintencoded-data);ASM:R1=语音编码

36、资料CallF_SACM_A2000_FillQueue【功能说明】将从用户存储区里获取 SACM_A2000 语音编码资料,然后将其填入语音队列中等候译码处理.【参数】encoded-data 为语音编码资料.【返回值】无.【备注】用户仅能通过非自动方式对语音资料进行译码.13)【API 格式】C:unsignedintSACM_A2000_TestQueue(void);ASM:CallF_SACM_A2000_TestQueue返回值=R1【功能说明】获取语音队列的状态.【参数】无.【返回值】R1=0,1,2;分别表示语音队列不空不满,语音队列满及语音队列空.【备注】用户仅能通过非自动方

37、式测试语音队列状态.程序 7-2SACM_A2000 非自动方式(编程控制)播放语音.(见光盘)SACM_A2000 非自动方式主程序流程见图 7.6:第 7 章凌阳音频压缩算法 274A2000 播放初始化获取语音资源并填充语音队列解码获取数据并播放判断语音队列是否满判断是否到语音的结束地址放音结束结束开始是否否是图 7.6SACM_A2000 非自动方式主程序流程中断服务子程序流程见图 7.7:FIQ 是 TimerA 中断吗填充语音队列清中断状态否是中断返回寄存器组出栈开始图 7.7SACM_A2000 中断服务子程序流程前台程序:第 7 章凌阳音频压缩算法 275#defineManu

38、al0#defineAuto1#defineFull1#defineEmpty2#defineDAC11#defineDAC22Main()Addr=RES_A32_SA;/长整型资源地址SACM_A2000_Initial(Manual);/选择非自动方式SACM_A2000_InitDecode(DAC1+DAC2);/使用双通道While(SACM_A2000_TestQueue()!=Full)/若队列不满,填入资料Ret=GetResource(Addr);/从 ROM 中取语音资料SACM_A2000_FillQueue(Ret);/将语音资料填入队列Addr+;/指向下一个资料地

39、址While(1)If(SACM_A2000_TestQueue()!=Full)/继续填资料到队列中Ret=GetResource(Addr);SACM_A2000_FillQueue(Ret);Addr+;if(AddrRES_A32_EA)SACM_A2000_Decode();/对语音资料进行译码elseSACM_A2000_Stop();/地址结束,停止播放注:1)文件的结束是由用户位址变量控制的.2)在非自动方式播放语音,其音量的增/减是通过外部子程序(SP_Ramp_Up,SP_Ramp_Dn)控制的.7.3.3SACM_S480该压缩算法压缩比较大 80:3,存储容量大,音质介

40、于 A2000 和 S240 之间,适用于语音播放,如“文曲星“词库.其相关 API 函数如下所示:intSACM_S480_Initial(intInit_Index)/初始化voidSACM_S480_ServiceLoop(void)/获取语音资料,填入译码队列voidSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set)第 7 章凌阳音频压缩算法 276/播放voidSACM_S480_Stop(void)/停止播放voidSACM_S480_Pause(void)/暂停播放voidSACM_S480_Resume(void)/暂停

41、后恢复voidSACM_S480_Volume(Volume_Index)/音量的控制unsignedintSACM_S480_Status(void)/获取模块的状态CallF_FIQ_Service_SACM_S480/中断服务函数各函数具体内容如下:1)【API 格式】C:intSACM_S480_Initial(intInit_Index)ASM:R1=Init_IndexCallF_SACM_S480_Initial【功能说明】SACM_S480 语音播放之前的初始化.【参数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式.【返回值】0:代表语音模块

42、初始化失败1:代表初始化成功.【备注】该函数用于对定时器,中断和 DAC 等的初始化.2)【API 格式】C:voidSACM_S480_ServiceLoop(void)ASM:CallF_SACM_S480_ServiceLoop【功能说明】从资源中获取 SACM_S480 语音资料,并将其填入解码队列中.【参数】无.【返回值】无.【备注】播放语音文件中数据,当出现 FFFFFFH 数据时便停止播放.3)【API 格式】C:intSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set);ASM:R1=Speech_IndexR2=Chan

43、nelR3=Ramp_SetCallSACM_S480_Play【功能说明】播放资源中 SACM_S480 语音.【参数】Speech_Index 表示语音索引号.Channel:1.通过 DAC1 通道播放;2.通过 DAC2 通道播放;3.通过 DAC1 和 DAC2 双通道播放.Ramp_Set:0.禁止音量增/减调节;1.仅允许音量增调节;2.仅允许音量减调节;3.允许音量增/减调节.【返回值】无.第 7 章凌阳音频压缩算法 277【备注】SACM_S480 的数据率有 4.8Kbps7.2Kbps 三种,可在同一模块的几种算法中自动选择一种.Speech_Index 是定义在 res

44、ource.inc 文件中资源表(T_SACM_S480_SpeechTable)的偏移地址.中断服务子程序中 F_FIQ_Service_SACM_S480 必须放在 TMA_FIQ 中断向量上(参见 SPCE 的中断系统).函数允许 TimerA 以所选的的数据采样率(计数溢出)中断.程序 7-3 以自动方式播放一段 SACM_S480 语音,并自动结束.(见光盘)SACM_S480 自动方式主程序流程见图 7.8:SACM_S480 放音的初始化SACM_S480 压缩播放获取语音数据并解码等待中断播放图 7.8SACM_S480 自动方式主程序流程中断流程同上.前台程序:/*/描述:s

45、480 只有自动播放方式,在中断 FIQ 的 FIQ_TMA 中断源中通过/主程序的 SACM_S480_ServiceLoop()对语音数据进行解码,然后将其/送入 DAC 通道播放/*/#include“s480.h“#defineSpeech_10#defineDAC11#defineDAC22#defineRamp_UpDn_Off0#defineRamp_UpDn_On3#defineAuto1/=/函数:main()第 7 章凌阳音频压缩算法 278/=main()SACM_S480_Initial(1);/自动方式播放初始化SACM_S480_Play(Speech_1,DAC1

46、+DAC2,Ramp_UpDn_On);/定义语音索引号,播放通道,允许音量增/减调节while(SACM_S480_Status()/获取语音数据并将其填入解码队列背景程序:.TEXT.INCLUDEhardware.inc.INCLUDES480.inc.PUBLIC_FIQ;_FIQ:PUSHR1,R4TOsp;/入栈保护R1=0x2000;TESTR1,P_INT_Ctrl;/是否为定时器 A 中断JNZL_FIQ_TimerA;R1=0x0800;TESTR1,P_INT_Ctrl;/是否为定时器 B 中断JNZL_FIQ_TimerB;L_FIQ_PWM:R1=C_FIQ_PWM;

47、P_INT_Clear=R1;/清中断POPR1,R4fromSP;/恢复现场RETI;L_FIQ_TimerA:/定时器 A 中断处理P_INT_Clear=R1;/清中断CALLF_FIQ_Service_SACM_S480;/调用 S480 中断服务函数POPR1,R4FROMSP;/恢复现场RETI;L_FIQ_TimerB:/定时器 B 中断处理P_INT_Clear=R1;/清中断POPR1,R4FROMSP;/恢复现场RETI;/中断返回注:自动放音时,当语音资源文件中的资料为 FFFFFFH 时便停止播放.4)【API 格式】C:voidSACM_S480_Stop(void);ASM:CallF_SACM_S480_Stop【功能说明】停止播放 SACM_S480 语音.【参数】无.【返回值】无.第 7 章凌阳音频压缩算法 2795)【API 格式】C:voidSACM_S480_Pause(void);ASM:CallF_SACM_S480_Pause【功能说明】暂停播放 SACM_S480 语音.【参数】无.【返回值】无.6)【API 格式】C:voidSACM_S480_Resume(

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报