




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SPCE061A 语音处理应用,第八讲 语音处理应用(一),一、语音基础知识,音频概述 语音的特点 音频的采样和量化 语音压缩编码 语音识别 语音合成 SPCE061A用于语音处理,1、音频概述,音频:人耳可以感觉到的声音频率 20Hz 20000Hz 语音和音乐是两类特殊的音频信号 语音是语言的载体,是对声音的抽象 音乐是符号化的声音,2、语音的特点,语音是由人类发音器官产生的、具有一定意义且能起到社会交际作用的声音。 具有抽象表意性 频率通常在200Hz4000Hz之间,3、语音处理技术,语音处理是建立在语言学和数字信号处理基础之上的综合学科 语音分析 语音存储与回放 语音识别 语音合成,
2、(1)、语音分析,音频采样和量化 将模拟的(连续的)声音波形数字化(离散化) 语音信号的时域分析 直接利用语音信号的时域波形进行分析 语音信号的频域分析 对语音信号的频谱、功率谱等进行分析 语音信号的线性预测分析 把语音信号用一个模型来表示,利用模型的参数来描述语音信号的波形和频谱特性,3、语音处理技术,(2)、音频采样和量化,音频采样原理,采样频率 采样频率是指采样设备每秒钟对声音信号的采集次数。采样频率越高,声音的还原就越真实越自然。 量化位数 量化位数是把模拟声音转换为数字信号的二进制位数。量化位数客观地反映了数字声音信号对输入声音信号描述的准确程度。,(2)、音频采样和量化,(3)、语
3、音压缩编码,压缩编码的意义 高效存储 高速传输 压缩编码分类 波形编码 参数编码 混合编码,波形编码 直接将波形信号转变为数字代码,尽量真实地还原波形 声音质量好 压缩比低,码率通常在20Kb/s以上 适用于高保真音乐及语音场合,(3)、语音压缩编码,参数编码 提取语音信号的特征参数进行编码,尽量保持语音信号的可懂性,而还原后的波形可能与原波形差别很大。 压缩比很高,码率可达2.4kb/s以下。 语音质量较差,自然度低 对环境噪声敏感,(3)、语音压缩编码,混合编码 将参数编码和波形编码技术结合起来,克服了两种编码的缺点。 压缩比高,码率为416Kb/s 音质介于参数编码和波形编码之间,(3)
4、、语音压缩编码,(4)、凌阳语音压缩算法,对于波形编码、参数编码和混合编码,凌阳都开发了相应的压缩算法。 属于波形编码的有A2000、A1600等 属于参数编码的有S240、S200等 属于混合编码的有S480、S530等,(5)、语音识别技术,语音识别基本原理 预处理,语音信号数字化。 特征提取,抽取反应语音本质的特征参数,形成特征矢量序列。 语音模型库,从一个或多个讲话者多次重复讲话中提取的语音参数模板。 模式匹配,把输入语音的特征参数与语音模型库进行比较分析,得到识别结果,语音识别的类型,根据对说话人的依赖程度,分为: 特定人语音识别(SD) 只能辨认特定使用者的语音,训练-使用 非特定
5、人语音识别(SI) 可辨认任何人的语音,无须训练 根据对说话方式的要求,分为: 孤立词识别 每次识别的单词之间要有停顿 连续语音识别 使用者以正常语速说话,即可识别其中的单词,(5)、语音识别技术,(6)、语音合成技术,将以其他方式表示或存储的信息转换成语音。 最常见的语音合成技术是将文本转换为语音(TTS)。,4、SPCE061A用于语音处理,SPCE061A单片机的性能适合数字语音处理 10位ADC和10位DAC 内置MIC放大器和自动增益功能 2个16位定时/计数器 CPU时钟最高达49MHz 2K Word SRAM空间 16位乘法器和内积运算,完善的语音处理函数库支持 语音播放 语音
6、录制 Midi播放 语音识别,4、SPCE061A用于语音处理,SPCE061A 语音处理应用,二、函数库、凌阳音频函数库,二、函数库、凌阳音频函数库,“库”的概念 创建自己的函数库 使用函数库 修改函数库 凌阳音频函数库 小结和注意事项,1、“库”的概念,把一组或多组函数的目标代码(Object Code)集合起来,形成一个文件(Library),1、“库”的概念,函数库的优点 便于对函数组织管理 提高内聚,降低耦合 有利于软件交流和重利用 保护代码,函数库的组织结构,1、“库”的概念,2、创建自己的函数库,第一步:组织代码,2、创建自己的函数库,第二步:编译代码 分别编译每个代码文件(Ct
7、rl+F7),会在工程的Debug文件夹下生成扩展名为“.obj”的目标文件。,在弹出对话框中选“New”,新建一个库文件。,IDE的Tools菜单下,选择“LibMaker”,2、创建自己的函数库,第三步:新建函数库,2、创建自己的函数库,第四步:向库中添加目标文件 点击Add按钮,在工程的Debug文件夹下找到要添加的目标文件(*.obj),2、创建自己的函数库,此时,函数库已经创建完成了。点击“Exit”按钮退出LibMaker即可。,3、使用函数库,新建工程 选择Project菜单下的“Setting”项,3、使用函数库,选择Link栏,点击Library Modules右面的文件夹按
8、钮。 在工程所在文件夹中选择刚刚建立的MyLib.lib文件,确定。,3、使用函数库,现在,函数库已经添加到工程里了。编写的程序可以使用函数库中的函数。 为测试函数库的功能,在工程中新建程序文件main.c。,3、使用函数库,在main.c中编写main()代码,调用库中的函数。,3、使用函数库,按F7键对工程进行编译和连接,再按F8键下载程序。 确认“Toggle Watch”按钮处于按下状态,激活变量观察窗口。,3、使用函数库,在变量观察窗口中输入要观察的变量a和b,按F10单步执行程序,可以观察a和b变量的数值变化情况是否与预想结果相符。,4、修改函数库,对于已有的函数库,可以对其进行添
9、加函数集和删除函数集的操作。 打开“LibMaker”,点击“Open”按钮,选择一个函数库。,4、修改函数库,注意,对函数库的修改操作是不可恢复的,在修改之前一定要对函数库进行备份。,要从现有函数库中删除一个函数集,选中该函数集,点击“Remove”键即可。,4、修改函数库,要在库中添加函数集,可以点击Add按钮,选择所需的目标文件(Obj)即可。,4、凌阳音频函数库,Sacmv26e.lib函数库包括语音录制、播放,以及Midi播放函数集。 A2000:播放A2000格式语音资源 S480:播放S480格式语音资源 S240:播放S240格式语音资源 DVR:语音录制与播放 MS01:Mi
10、di播放,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播放 最大同时发
11、音数为6路,其中有2路为鼓点音。,5、小结和注意事项,函数库是由一组或多组函数集组成的文件。 函数库是二进制文件,程序代码是不可见的。 在使用函数库时,只有被使用的函数集才会真正与工程连接,而其他函数集不会占用硬件资源。 凌阳音频函数库提供了为语音录放提供了一条便捷的途径。,SPCE061A 语音处理应用,三、语音播放(自动播放),三、语音播放,语音录放流程 用SPCE061A播放语音 语音播放程序示例 用户接口函数 创建一个语音播放程序 小结和注意事项 疑难解答,(1)、语音录制存储流程,语音采样 在定时中断的控制下,以一定的速率(8KHz)进行AD转换 压缩编码 将采集到的数据以某种算法压
12、缩编码 存储 将编码后的数据保存到存储介质中,1、语音录放流程,(2)、语音播放流程,数据提取 语音数据送入解压缩队列 数据解码 解压缩数据并送入输出队列 转换为模拟信号 在定时中断的控制下进行数模转换 转换为声音 模拟信号经滤波、放大,通过扬声器输出,1、语音录放流程,2、用SPCE061A播放语音,3、语音播放程序示例,4、用户接口函数,在hardware.asm中定义的用户API,用户可以根据需要修改 F_SP_SACM_A2000_Init_ F_SP_InitQueue F_SP_ReadQueue F_SP_WriteQueue F_SP_RampUpDAC1 ,5、创建一个语音播
13、放程序,第 1 步:新建工程,5、创建一个语音播放程序,第 2 步:复制语音播放需要的文件到工程所在的文件夹 语音播放支持文件 ,在“IDE安装目录 - Example - 61_Exa - Record”文件夹下可以找到 sacmv26e.lib hardware.inc hardware.asm A2000格式的语音资源,在“IDE安装目录 - Example - VoiceExa - ex1_A2000 - Voice”文件夹下可以找到 这里选择了d1.24k和ww.24k两个文件,5、创建一个语音播放程序,第 3 步:把刚刚复制的支持文件和语音资源添加到工程中。 在Project菜单项
14、,选择Add to Project - Files 找到工程所在的文件夹,选择hardware.asm、hardware.inc两个文件(按住Ctrl键点选),确定。 IDE的Project菜单项,Add to Project - Resource 选择两个语音文件d1.24k和ww.24k,确定。,5、创建一个语音播放程序,第 4 步:把Sacmv26e.lib语音函数库添加到工程中。 选择Project - Setting,在左半部分的目录树中点选根目录。 选择Link栏,点击Library Modules右面的文件夹按钮。 在工程所在文件夹中选择sacmv26e.lib文件,确定。,5、
15、创建一个语音播放程序,第 5 步:编写语音播放函数。 在IDE的File菜单项下选择New,在弹出对话框的左半部分选择SP IDE C File。 在右半部分的File文本框中输入一个文件名,这里使用main.c,然后点击OK按钮。 在main.c中编写一个语音播放函数PlaySnd(),5、创建一个语音播放程序,第 6 步:编写中断服务函数 在工程中新建一个asm文件,可以取名为ISR.asm。 在ISR.asm中编写FIQ中断服务程序。,5、创建一个语音播放程序,第 7 步:编写主函数。 在IDE中打开main.c文件,编写main()函数。,5、创建一个语音播放程序,第 8 步:添加语音
16、资源索引表 在IDE的Build菜单下选择Build(或直接按F7键),对工程进行编译和连接。此时会提示 “ Error L0080: The external symbol “T_SACM_A2000_SpeechTable” has not a public definition.”错误信息。 在工程中打开Resource.asm文件,在文件结尾处加入语音资源索引表。,5、创建一个语音播放程序,第 9 步:下载试听 按F7键对工程重新编译连接,途中可能会出现对话框提示Resource.asm文件被更改,选择“Yes”即可。 连接好硬件(下载线、电源、扬声器等),在IDE的工具栏中点选绿色的
17、“Use ICE”按钮。 点击红色叹号形的“Execute Program”按钮,下载并运行程序,就可以听到从SPCE061A播放出的声音了。,6、小结和注意事项,语音播放需要的支持文件: Sacmv26e.lib, Hardware.asm, Hardware.inc 将支持文件加入工程中 Hardware.asm加入到工程的Source Files Hardware.inc加入到工程的Head Files Sacmv26e.lib由Project - Setting - Link加入 语音资源加入工程中 Project - Add to Project - Resource 在Resour
18、ce.asm里添加语音资源索引表 选择Use ICE模式,将程序下载到芯片中,小结和注意事项,如果播放S480格式的语音资源,只需将上述程序中所有的“A2000”改成“S480”即可。,7、疑难解答,SACM_A2000_Initial(1);中的参数1是什么意思? 播放初始化,参数值为1代表“自动播放”模式,0代表“手动播放”模式,“手动播放”将在下一节介绍。 SACM_A2000_Play(SndIndex, DAC_Channel, 3);第三个参数3是做什么用的? 声音淡入和淡出设置。0-无淡入淡出;1-仅淡入;2-仅淡出;3-淡入淡出 如何制作自己的语音资源? 凌阳提供了语音压缩工具
19、,可以把.wav格式的声音文件压缩成A2000或S480格式。该工具的使用方法将在后面的课程中介绍。,SPCE061A 语音处理应用,三、语音播放(手动播放),三、语音播放(手动播放),什么是手动播放 手动播放流程 创建手动播放程序 其他语音播放函数 小结和注意事项 疑难解答,1、什么是手动播放,自动播放 手动播放,2、手动播放流程,3、手动播放程序示例,4、设计一个手动播放函数,5、创建手动播放程序,新建工程 把Hardware.asm、Hardware.inc和Sacmv26e.lib,以及A2000格式的语音文件复制到工程所在文件夹下,5、创建手动播放程序,把支持文件和语音资源添加到工程
20、中。 在Project菜单项,选择Add to Project - Files 找到工程所在的文件夹,选择hardware.asm、hardware.inc和hardware.h三个文件(按住Ctrl键点选),确定。 IDE的Project菜单项,Add to Project - Resource 选择两个语音文件d1.24k和ww.24k,确定。,5、创建手动播放程序,把Sacmv26e.lib语音函数库添加到工程中。 选择Project - Setting,在左半部分的目录树中点选根目录。 选择Link栏,点击Library Modules右面的文件夹按钮。 在工程所在文件夹中选择sacm
21、v26e.lib文件,确定。,5、创建手动播放程序,编写代码 手动语音播放函数 中断服务程序 主函数,5、创建手动播放程序,添加语音资源索引表 在工程中打开Resource.asm文件,在文件结尾处加入语音资源索引表。,5、创建手动播放程序,下载试听 连接好硬件(下载线、电源、扬声器等),在IDE的工具栏中点选绿色的“Use ICE”按钮。 点击红色叹号形的“Execute Program”按钮,下载并运行程序,就可以听到从SPCE061A播放出的声音了。,6、手动播放S480格式语音,S480格式语音资源的手动播放方法与A2000基本相同,只需把A2000手动播放程序中所有的 “A2000”
22、 替换成“S480” 即可。,7、其他语音播放函数,void SACM_A2000_Pause() 暂停播放语音。 void SACM_A2000_Resume() 从暂停的位置继续播放语音。 Void SACM_A2000_Volume(int Vol) 调节语音播放的音量。Vol的取值范围是015,数值越大,输出音量越大。,7、其他语音播放函数,声音渐入渐出函数,在Hardware.asm中定义,可防止播放开始和结束时产生爆音。 Void SP_RampUpDAC1() Void SP_RampUpDAC2() Void SP_RampDnDAC1() Void SP_RampDnDAC2(),8、用汇编语言编写播放程序,Sacmv26e.lib语音函数库还有供汇编语言直接调用的函数,包括自动与手动播放函数,它们与C函数一一对应(前面加上“F_”前缀): F_SACM_A2000_Initial F_SACM_A2000_Play F_SACM_A2000_Stop F_SACM_A2000_ServiceLoop F_SACM_A2000_Decoder F_SACM_A2000_FillQueue ,汇编语音播放函数使用R1、R2寄存器来传递参数。 例如,C语言的SACM_A2000_Initial(1);语句可改写为: r1 = 1 call F_SACM_A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届广东省中山市物理高一第二学期期末复习检测模拟试题含解析
- 江苏省徐州市睢宁县第一中学2025年物理高二第二学期期末学业质量监测模拟试题含解析
- 2025年福建省福州琅岐中学高一物理第二学期期末教学质量检测试题含解析
- 宠物疾病诊断与防治课件
- 山东省青州第二中学2025年物理高一第二学期期末达标测试试题含解析
- 重庆大学城第一中学校2025届高一物理第二学期期末统考模拟试题含解析
- 2025版特色咖啡馆租赁合同及特色咖啡豆采购协议
- 二零二五年度不锈钢水箱研发设计与生产合同
- 2025版VI设计合同范本-文化创意产业专用
- 2025版病人护理与营养配餐服务全面合作协议
- 《经口鼻吸痰技术》课件
- 2025四川成都环境投资集团限公司应届毕业生招聘50人管理单位笔试遴选500模拟题附带答案详解
- 《尿路感染诊治指南》课件
- 特征值优化设计-洞察分析
- 市场营销策划岗位招聘笔试题与参考答案(某大型央企)
- 2024年高考英语新课标1卷读后续写教学设计
- 市医院开展“小金库”专项治理工作方案
- PDCA提高便秘患者肠镜检查肠道准备合格率
- 淮南新东辰控股集团有限责任公司招聘笔试题库2024
- 03D201-4 10kV及以下变压器室布置及变配电所常用设备构件安装
- 人民网删除稿件(帖文)申请登记表
评论
0/150
提交评论