您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第八讲-语音处理应用(一)总结
SPCE061A语音处理应用第八讲语音处理应用(一)一、语音基础知识音频概述语音的特点音频的采样和量化语音压缩编码语音识别语音合成SPCE061A用于语音处理1、音频概述音频:人耳可以感觉到的声音频率20Hz~20000Hz语音和音乐是两类特殊的音频信号语音是语言的载体,是对声音的抽象音乐是符号化的声音2、语音的特点语音是由人类发音器官产生的、具有一定意义且能起到社会交际作用的声音。具有抽象表意性频率通常在200Hz~4000Hz之间3、语音处理技术语音处理是建立在语言学和数字信号处理基础之上的综合学科语音分析语音存储与回放语音识别语音合成(1)、语音分析音频采样和量化将模拟的(连续的)声音波形数字化(离散化)语音信号的时域分析直接利用语音信号的时域波形进行分析语音信号的频域分析对语音信号的频谱、功率谱等进行分析语音信号的线性预测分析把语音信号用一个模型来表示,利用模型的参数来描述语音信号的波形和频谱特性3、语音处理技术(2)、音频采样和量化音频采样原理10110010110……音源输入设备AD采集数字信号采样频率采样频率是指采样设备每秒钟对声音信号的采集次数。采样频率越高,声音的还原就越真实越自然。量化位数量化位数是把模拟声音转换为数字信号的二进制位数。量化位数客观地反映了数字声音信号对输入声音信号描述的准确程度。(2)、音频采样和量化(3)、语音压缩编码压缩编码的意义高效存储高速传输压缩编码分类波形编码参数编码混合编码波形编码直接将波形信号转变为数字代码,尽量真实地还原波形声音质量好压缩比低,码率通常在20Kb/s以上适用于高保真音乐及语音场合(3)、语音压缩编码参数编码提取语音信号的特征参数进行编码,尽量保持语音信号的可懂性,而还原后的波形可能与原波形差别很大。压缩比很高,码率可达2.4kb/s以下。语音质量较差,自然度低对环境噪声敏感(3)、语音压缩编码混合编码将参数编码和波形编码技术结合起来,克服了两种编码的缺点。压缩比高,码率为4~16Kb/s音质介于参数编码和波形编码之间音质压缩比计算量波形编码好低小混合编码中中大参数编码差高大(3)、语音压缩编码(4)、凌阳语音压缩算法对于波形编码、参数编码和混合编码,凌阳都开发了相应的压缩算法。属于波形编码的有A2000、A1600等属于参数编码的有S240、S200等属于混合编码的有S480、S530等算法名称编码方式编码率(bit/s)压缩比A2000波形编码16K,20K,24K8/1,8/1.25,8/1.5S480混合编码4.8K,7.2K80/3,80/4.5S240参数编码2.4K80/1.5(5)、语音识别技术语音识别基本原理预处理,语音信号数字化。特征提取,抽取反应语音本质的特征参数,形成特征矢量序列。语音模型库,从一个或多个讲话者多次重复讲话中提取的语音参数模板。模式匹配,把输入语音的特征参数与语音模型库进行比较分析,得到识别结果预处理特征提取模式匹配后处理语音模型库识别识别结果训练输入语音初步识别结果语音识别的类型根据对说话人的依赖程度,分为:特定人语音识别(SD)只能辨认特定使用者的语音,训练-使用非特定人语音识别(SI)可辨认任何人的语音,无须训练根据对说话方式的要求,分为:孤立词识别每次识别的单词之间要有停顿连续语音识别使用者以正常语速说话,即可识别其中的单词(5)、语音识别技术(6)、语音合成技术将以其他方式表示或存储的信息转换成语音。最常见的语音合成技术是将文本转换为语音(TTS)。4、SPCE061A用于语音处理SPCE061A单片机的性能适合数字语音处理10位ADC和10位DAC内置MIC放大器和自动增益功能2个16位定时/计数器CPU时钟最高达49MHz2KWordSRAM空间16位乘法器和内积运算完善的语音处理函数库支持语音播放语音录制Midi播放语音识别4、SPCE061A用于语音处理SPCE061A语音处理应用二、函数库、凌阳音频函数库二、函数库、凌阳音频函数库“库”的概念创建自己的函数库使用函数库修改函数库凌阳音频函数库小结和注意事项1、“库”的概念把一组或多组函数的目标代码(ObjectCode)集合起来,形成一个文件(Library)函数A1函数A2……目标代码A程序文件A函数B1函数B2……目标代码B程序文件B……………………函数库编译编译编译1、“库”的概念函数库的优点便于对函数组织管理提高内聚,降低耦合有利于软件交流和重利用保护代码函数库的组织结构Information(版本信息)Section(段信息)Public(公共变量、常量及函数)External(引用的外部变量、常量及函数)函数集1函数集2…………函数库1、“库”的概念2、创建自己的函数库第一步:组织代码//Book1.c//Book2.asm2、创建自己的函数库第二步:编译代码分别编译每个代码文件(Ctrl+F7),会在工程的Debug文件夹下生成扩展名为“.obj”的目标文件。在弹出对话框中选“New”,新建一个库文件。IDE的Tools菜单下,选择“LibMaker”2、创建自己的函数库第三步:新建函数库2、创建自己的函数库第四步:向库中添加目标文件点击Add按钮,在工程的Debug文件夹下找到要添加的目标文件(*.obj)2、创建自己的函数库此时,函数库已经创建完成了。点击“Exit”按钮退出LibMaker即可。3、使用函数库新建工程选择Project菜单下的“Setting”项3、使用函数库选择Link栏,点击LibraryModules右面的文件夹按钮。在工程所在文件夹中选择刚刚建立的MyLib.lib文件,确定。3、使用函数库现在,函数库已经添加到工程里了。编写的程序可以使用函数库中的函数。为测试函数库的功能,在工程中新建程序文件main.c。3、使用函数库在main.c中编写main()代码,调用库中的函数。3、使用函数库按F7键对工程进行编译和连接,再按F8键下载程序。确认“ToggleWatch”按钮处于按下状态,激活变量观察窗口。3、使用函数库在变量观察窗口中输入要观察的变量a和b,按F10单步执行程序,可以观察a和b变量的数值变化情况是否与预想结果相符。4、修改函数库对于已有的函数库,可以对其进行添加函数集和删除函数集的操作。打开“LibMaker”,点击“Open”按钮,选择一个函数库。4、修改函数库注意,对函数库的修改操作是不可恢复的,在修改之前一定要对函数库进行备份。要从现有函数库中删除一个函数集,选中该函数集,点击“Remove”键即可。4、修改函数库要在库中添加函数集,可以点击Add按钮,选择所需的目标文件(Obj)即可。4、凌阳音频函数库Sacmv26e.lib函数库包括语音录制、播放,以及Midi播放函数集。A2000:播放A2000格式语音资源S480:播放S480格式语音资源S240:播放S240格式语音资源DVR:语音录制与播放MS01:Midi播放4、凌阳音频函数库A2000格式16Kbit/s~24Kbit/s,适用于音乐或高质语音播放。SPCE061A内置Flash空间最多约可存储24秒A2000语音。S480格式4.8Kbit/s~7.2Kbit/s,适用于一般语音播放。SPCE061A内置Flash最多约可存储80秒S480语音。S240格式2.4Kbit/s,适用于低品质语音播放,SPCE061A内置Flash约可存储160秒S240语音。4、凌阳音频函数库DVR-语音录放采用A2000压缩算法进行语音录制,码率为16Kbit/s,最多约可录制20秒语音。MS01-Midi播放最大同时发音数为6路,其中有2路为鼓点音。5、小结和注意事项函数库是由一组或多组函数集组成的文件。函数库是二进制文件,程序代码是不可见的。在使用函数库时,只有被使用的函数集才会真正与工程连接,而其他函数集不会占用硬件资源。凌阳音频函数库提供了为语音录放提供了一条便捷的途径。SPCE061A语音处理应用三、语音播放(自动播放)三、语音播放语音录放流程用SPCE061A播放语音语音播放程序示例用户接口函数创建一个语音播放程序小结和注意事项疑难解答(1)、语音录制存储流程语音采样在定时中断的控制下,以一定的速率(8KHz)进行AD转换压缩编码将采集到的数据以某种算法压缩编码存储将编码后的数据保存到存储介质中语音资源压缩编码存储数据队列定时中断AD采样语音1、语音录放流程(2)、语音播放流程数据提取语音数据送入解压缩队列数据解码解压缩数据并送入输出队列转换为模拟信号在定时中断的控制下进行数模转换转换为声音模拟信号经滤波、放大,通过扬声器输出解压缩队列语音资源解压缩取数据输出队列定时中断DAC输出语音1、语音录放流程2、用SPCE061A播放语音开始播放播放初始化语音资源播放完毕?开始解码,填入播放队列停止播放定时中断从播放队列取出数据送DAC输出返回YN播放队列设置中断播放循环中断服务3、语音播放程序示例//中断服务程序//4、用户接口函数在hardware.asm中定义的用户API,用户可以根据需要修改F_SP_SACM_A2000_Init_F_SP_InitQueueF_SP_ReadQueueF_SP_WriteQueueF_SP_RampUpDAC1…………语音函数库用户API语音播放程序5、创建一个语音播放程序第1步:新建工程5、创建一个语音播放程序第2步:复制语音播放需要的文件到工程所在的文件夹语音播放支持文件,在“IDE安装目录-Example-61_Exa-Record”文件夹下可以找到sacmv26e.libhardware.inchardware.asmA2000格式的语音资源,在“IDE安装目录-Example-VoiceExa-ex1_A2000-Voice”文件夹下可以找到这里选择了d1.24k和ww.24k两个文件5、创建一个语音播放程序第3步:把刚刚复制的支持文件和语音资源添加到工程中。在Project菜单项,选择AddtoProject-Files找到工程所在的文件夹,选择hardware.asm、hardware.inc两个文件(按住Ctrl键点选),确定。IDE的Project菜单项,AddtoProject-Resource选择两个语音文件d1.24k和ww.24k,确定。5、创建一个语音播放程序第4步:把Sacmv26e.lib语音函数库添加到工程中。选择Project-Setting,在左半部分的目录树中点选根目录。选择Link栏,点击LibraryModules右面的文件夹按钮。在工程所在文件夹中选择sacmv26e.lib文件,确定。5、创建一个语音播放程序第5步:编写语音播放函数。在IDE的File菜单项下选择New,在弹出对话框的左半部分选择SPIDECFile。在右半部分的File文本框中输入一个文件名,这里使用main.c,然后点击OK按钮。在main.c中编写一个语音播放函数PlaySnd()5、创建一个语音播放程序第6步:编写中断服务函数在工程中新建一个asm文件,可以取名为ISR.asm。在ISR.asm中编写FIQ中断服务程序。5、创建一个语音播放程序第7步:编写主函数。在IDE中打开main.c文件,编写main()函数。5、创建一个语音播放程序第8步:添加语音资源索引表在IDE的Build菜单下选择Build(或直接按F7键),对工程进行编译和连接。此时会提示“ErrorL0080:Theexternalsymbol“T_SACM_A2000
本文标题:第八讲-语音处理应用(一)总结
链接地址:https://www.777doc.com/doc-7069398 .html