基于单片机的数码录音与播放系统设计-精品内容摘要:

(3) 页写流程图 (4)写结束判断流程图 ( 1)去掉写保护流程图 ( 2)片擦除流程图 系统结构图 图 36数码录音播放系统结构图 本系统包括按键部分、音频录入部分、音频输出部分和 W29C040 存储扩展等四部分。 按键部分:按键 1 开始语音录入 按键 2 停止录音,播放语音。 音频录入部分:主要是由 MIC、自动增益电路、 AD 转换电路构成,通过 MIC采样语音数据,并经内置自动增益电路处理、 AD 转换后,编码并存储到 W29C040 FLASH 中。 音频输出部分:主要是将 SPCE061A 两路音频输出端通过 LM386 放大,经喇叭播放。 W29C040 存储扩展部分:通过 SPCE061AIO 口的控制,将录音编码后的数据存储到 W29C040 中。 系统实现的功能:通过按键 1,开始录音,按键 2,结束录音并播放所录的语音。 播放结束后,可以继续录入下一段语音。 SPCE061A 与 W29C040 的硬件连接图 本系统硬件电路包括按键部分、音频录入部分、音频输出部分和 W29C040存储扩展等四部分电路。 音频录入部分详细电路图如图 37 图 37音频录入部分电路原理图 音频输出部分详细电路图如图 38 图 38音频输出部分原理图 第 4 章 软件系统的设计与实现 凌阳音频介绍 我们所说的音频是指频率在 20 Hz~ 20 kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。 语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。 语 音是对讲话声音的一次抽象。 是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。 音乐与语音相比更规范一些,是符号化了的声音。 但音乐不能对所有的声音进行符号化。 乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容。 数字音频的采样和量化 将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面。 数字音频的质量取决于:采样频率和量化位数这两个重要参数。 此外,声道的数目、相应的音频设备也是影响音频质量的原因。 音 频格式的介绍 音频文件通常分为两类:声音文件和 MIDI 文件 ( 1)声音文件:指的是通过声音录入设备录制的原始声音,直接记录了真实声音的二进制采样数据,通常文件较大; ( 2) MIDI 文件:它是一种音乐演奏指令序列,相当于乐谱,可以利用声音输出设备或与计算机相连的电子乐器进行演奏,由于不包含声音数据,其文件尺寸较小。 语音压缩编码基础 语音压缩编码中的数据量是指:数据量 =(采样频率 x 量化位数 )/8(字节数 ) x声道数目。 压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息。 压缩编码的必要性:实际应用中,压缩编码的音频资料量很大,进行传输或存储资料量是不现实的。 所以要通过对信号趋势的预测和冗余信息处理,进行资 料的压缩,这样就可以使我们用较少的资源建立更多的信息。 举个例子,没有压缩过的 CD 品质的资料,一分钟的内容需要 11MB 的内存容量来存储。 如果将原始资料进行压缩处理,在确保声音品质不失真的前提下,将数据压缩一半, 就可以完全还原效果。 而在实际操作中,可以依需要来选择合适的算法。 常见的几种音频压 缩编码: 1) 波形编码:将时间域信号直接变换为数字代码,力图使重建语音波形保持原语音信号的波形形状。 波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示。 译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号。 如:脉冲编码调制 (pulse code modulation, PCM)、差值脉冲编码调制( DPCM)、增量调制 (DM)以及它们的各种改进型自适应差分编码( ADPCM)、自适应增量调制( ADM)、自适应差值脉冲编码调制 (ADPCM) 、自适应传输编 码( Adaptive Transfer Coding, ATC)和子带编码( SBC)等都属于波形编码技术。 波形编码特点:高话音质量、高码率,适于高保真音乐及语音。 2) 参数编码:参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输。 译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号。 具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的 差别。 参数编码特点:压缩比大,计算量大,音质不高,廉价。 3) 混合编码:混合编码使用参数编码技术和波形编码技术,计算机的发展为语音编码技术的研究提供了强有力的工具,大规模、超大规模集成电路的出现,则为语音编码的实现提供了基础。 80 年代以来,语音编码技术有了实质性的进展,产生了新一代的编码算法,这就是混合编码。 它将波形编码和参数编码组合 起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,力图保持波形编码的高质量和参数编码的低速率。 如:多脉冲激励线性预测编码( MPLPC),规划脉冲激励线性预测 编码( KPELPC),码本激励线性预测编码( CELP)等都是属于混合编码技术。 其数据率和音质介于参数和波形编码之间。 总之,音频压缩技术之趋势有两个: 1)降低资料率,提高压缩比,用于廉价、低保真场合(如:电话)。 2)追求高保真度,复杂的压缩技术(如: CD)。 凌阳音频编码算法 表 41 音频质量等级的编码技术标准(频响): 表 41 频率范围( Hz)采样率( kHz)量化精度(位) 电话话音 200~3400 8 8 宽带音频( AM 质量) 50~7000 16 16 调频广播( FM 质量) 20~15k 16 高质量音频( CD 质量) 20~20k 16 凌阳音频压缩算法处理的语音信号的范围是 200HZ- 的电话话音。 4. 压缩分类 压缩分无损压缩和有损压缩 ,无损压缩一般指:磁盘文件,压缩比低: 2:1~ 4:1。 而有损压缩则是指:音/视频文件,压缩比可高达: 100:1。 凌阳音频压缩算法根据不同的压缩比分为以下几种 (具体可参见语音压缩工具一节内容 ): SACMA2020:压缩比为 8:1, 8:, 8: SACMS480: 压缩 比为 80:3, 80: SACMS240: 压缩比为 80: 4. 2. 2 凌阳常用的音频形式和压缩算法 1) 波形编码: subband 即 SACMA2020 特点:高质量、高码率,适于高保真语音/音乐。 2) 参数编码:声码器( vocoder)模型表达,抽取参数与激励信号进行编码。 如: SACMS240 特点:压缩比大,计算量大,音质不高,廉价。 3) 混合编码: CELP即 SACMS480 特点:综合参数和波形编码之优点。 除此之外 ,还具有 FM 音乐合成方式即 SACMMS01。 4. 2. 3 凌阳语音的播放、录制、合成和辨识 凌阳的 SPCE061A 是 16 位单片机,具有 DSP 功能,有很强的信息处理能力,最高时钟可达到 49M,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。 凌阳压缩算法中 SACM_A20 SACM_S480、 SACM_S240 主要是用来放音,可用于语音提示,而 DVR 则用来录放音。 对于音乐合成 MS01,该算法较繁琐,而且需要具备音乐理论、配器法及和声学知识,所以对于特别爱好者可以到我们的网站去了解相关内容,这里只给出它的 API 函数 介绍及程序代码的范例,仅供参考。 对于语音辨识主要有以下两种: 1) 特定发音人识别 SD( Speaker Dependent):是指语音样板由单个人训练,也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。 2) 非特定发音人识别 SI( Speaker Independent):是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。 语音识别电路基本结构如图 41 所示 : 滤除噪音预加重滤波器组 PARCOR 系数线性预测系数过零次数能量相关函数等模式匹配词典语音分析语 音识别结果输出 图 41 识别电路结构 语音录入使用介绍 SACMDVR 具有录音和放音功能,并采用 SACM_A2020 的算法,录音时采用 16K资料率及 8K 采样率获取语音资源,经过 SACM_A2020 压缩后存储在扩展的 SRAM 628128A 里,录满音后自动开始放音。 其相关 API 函数如下所示: int SACM_DVR_Initial(int Init_Index) //初始化 void SACM_DVR_ServiceLoop(void) //获取资料,填入译码队列 void SACM_DVR_Encode(void) //录音 SACM_DVR_StopEncoder()。 //停止编码 SACM_DVR_InitEncoder(RceMonitorOn) //初始化解码器 void SACM_DVR_Stop(void) //停止录音 void SACM_DVR_Play(void) //开始播放 unsigned int SACM_DVR _Status(void) //获取 SACM_DVR模块的状态 void SACM_DVR _InitDecode(void) //开始译码 void SACM_DVR _Decode(void) //获取语音资料并译码,中断播放 SACM_DVR_StopDecoder()。 //停止解码 unsigned int SACM_DVR _ TestQueue(void) //获取语音队列状态 int SACM_DVR _Fetchqueue(void) //获取录音编码数据 void SACM_DVR_FillQueue(unsigned int encodeddata) //填充 资料到语音队列,等待播放 int GetResource(long Address) —— (Manual) // 从资源文件里获取一个字型语音资料 中断服务函数: Call F_FIQ_Service_ SACM_DVR //playing Call F_IRQ1_Service_ SACM_DVR //recode 具体函数如下: 1) 【 API 格式】 C: void SACM_ DVR _Initial(int Init_Index) ASM: R1=[ Init_Index] Call F_ SACM_ DVR _Initial 【功能说明】 SACM_ DVR 语音播放之前的初始化:设置中断源、定时器以及播放方式(自动、手动) 【参数】 Init_Index=0 表示手动方式; Init_Index=1 则表示自动方式。 【返回值】无 【备注】 ① 对于 SACM_DVR 模块,需要一些 I/O 口来连接外部的 SRAM,用以存放录音资料。 ② 录放音的格式采用 SACM_A2020。 2) 【 API 格式】 C: void SACM_DVR_ServiceLoop(void) ASM: Call F_ SACM_DVR _ServiceLoop 【功能说明】在录音期间从 ADC 通道获取录音资料,且将其以 SACM_A2020格式进行编码后存入外接 SRAM 中;而在播放期间从 SRAM 中获取语音资料,对其进行解码,然后等候中断服务子程序将其送出 DAC 通道。 【参数】无。 【返回值】无。 3)【 API 格式】 C: void SACM_DVR_Encode(void); ASM: Call F_ SACM_DVR_ Encode 【功能说明】开始以自动方式录制声音资料到外接 SRAM 中。 【参数】无。 【返回 值】无。 【备注】该函数仅适用于 SACM_DVR 模块,且只有自动方式。 4)【 API 格式】 C: void SACM_DVR _Stop(void); ASM: Call F_ SACM_DVR _Stop 【功能说明】以自动方式停止录音。 【参数】无。 【返回值】无。 5)【 API 格式】 C: int SACM_DVR _Play(int Speech_Index, int Channel, int Ramp_Set); ASM: Call SACM_DVR _Play。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。