第八讲 语音处理应用(一)_第1页
第八讲 语音处理应用(一)_第2页
第八讲 语音处理应用(一)_第3页
第八讲 语音处理应用(一)_第4页
第八讲 语音处理应用(一)_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八讲 语音处理应用(一)音频概述语音的特点音频的采样和量化语音压缩编码语音识别语音合成SPCE061A用于语音处理音频:人耳可以感觉到的声音频率 20Hz 20000Hz语音和音乐是两类特殊的音频信号语音是语言的载体,是对声音的抽象音乐是符号化的声音语音是由人类发音器官产生的、具有一定意义且能起到社会交际作用的声音。具有抽象表意性频率通常在200Hz4000Hz之间语音处理是建立在语言学和数字信号处理基础之上的综合学科语音分析语音存储与回放语音识别语音合成 音频采样和量化将模拟的(连续的)声音波形数字化(离散化) 语音信号的时域分析直接利用语音信号的时域波形进行分析 语音信号的频域分析对语音

2、信号的频谱、功率谱等进行分析 语音信号的线性预测分析把语音信号用一个模型来表示,利用模型的参数来描述语音信号的波形和频谱特性音频采样原理采样频率采样频率是指采样设备每秒钟对声音信号的采集次数。采样频率越高,声音的还原就越真实越自然。量化位数量化位数是把模拟声音转换为数字信号的二进制位数。量化位数客观地反映了数字声音信号对输入声音信号描述的准确程度。 压缩编码的意义高效存储高速传输压缩编码分类波形编码参数编码混合编码波形编码直接将波形信号转变为数字代码,尽量真实地还原波形声音质量好压缩比低,码率通常在20Kb/s以上适用于高保真音乐及语音场合参数编码提取语音信号的特征参数进行编码,尽量保持语音信

3、号的可懂性,而还原后的波形可能与原波形差别很大。压缩比很高,码率可达2.4kb/s以下。语音质量较差,自然度低对环境噪声敏感混合编码将参数编码和波形编码技术结合起来,克服了两种编码的缺点。压缩比高,码率为416Kb/s音质介于参数编码和波形编码之间对于波形编码、参数编码和混合编码,凌阳都开发了相应的压缩算法。属于波形编码的有A2000、A1600等属于参数编码的有S240、S200等属于混合编码的有S480、S530等 语音识别基本原理预处理,语音信号数字化。特征提取,抽取反应语音本质的特征参数,形成特征矢量序列。语音模型库,从一个或多个讲话者多次重复讲话中提取的语音参数模板。模式匹配,把输入

4、语音的特征参数与语音模型库进行比较分析,得到识别结果根据对说话人的依赖程度,分为:特定人语音识别(SD)只能辨认特定使用者的语音,训练-使用非特定人语音识别(SI)可辨认任何人的语音,无须训练根据对说话方式的要求,分为:孤立词识别每次识别的单词之间要有停顿连续语音识别使用者以正常语速说话,即可识别其中的单词将以其他方式表示或存储的信息转换成语音。最常见的语音合成技术是将文本转换为语音(TTS)。SPCE061A单片机的性能适合数字语音处理10位ADC和10位DAC内置MIC放大器和自动增益功能2个16位定时/计数器CPU时钟最高达49MHz2K Word SRAM空间16位乘法器和内积运算完善

5、的语音处理函数库支持语音播放语音录制Midi播放语音识别二、函数库、凌阳音频函数库“库”的概念创建自己的函数库使用函数库修改函数库凌阳音频函数库小结和注意事项把一组或多组函数的目标代码(Object Code)集合起来,形成一个文件(Library)函数库的优点便于对函数组织管理提高内聚,降低耦合有利于软件交流和重利用保护代码第一步:组织代码第二步:编译代码分别编译每个代码文件(Ctrl+F7),会在工程的Debug文件夹下生成扩展名为“.obj”的目标文件。在弹出对话框中选“New”,新建一个库文件。IDE的Tools菜单下,选择“LibMaker”第三步:新建函数库第四步:向库中添加目标文

6、件点击Add按钮,在工程的Debug文件夹下找到要添加的目标文件(*.obj)此时,函数库已经创建完成了。点击“Exit”按钮退出LibMaker即可。新建工程选择Project菜单下的“Setting”项选择Link栏,点击Library Modules右面的文件夹按钮。 在工程所在文件夹中选择刚刚建立的MyLib.lib文件,确定。现在,函数库已经添加到工程里了。编写的程序可以使用函数库中的函数。为测试函数库的功能,在工程中新建程序文件main.c。在main.c中编写main()代码,调用库中的函数。按F7键对工程进行编译和连接,再按F8键下载程序。确认“Toggle Watch”按钮处

7、于按下状态,激活变量观察窗口。在变量观察窗口中输入要观察的变量a和b,按F10单步执行程序,可以观察a和b变量的数值变化情况是否与预想结果相符。对于已有的函数库,可以对其进行添加函数集和删除函数集的操作。打开“LibMaker”,点击“Open”按钮,选择一个函数库。注意,对函数库的修改操作是不可恢复的,在修改之前一定要对函数库进行备份。要从现有函数库中删除一个函数集,选中该函数集,点击“Remove”键即可。要在库中添加函数集,可以点击Add按钮,选择所需的目标文件(Obj)即可。Sacmv26e.lib函数库包括语音录制、播放,以及Midi播放函数集。A2000:播放A2000格式语音资源

8、S480:播放S480格式语音资源S240:播放S240格式语音资源DVR:语音录制与播放MS01:Midi播放 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语音。DVR - 语音录放采用A2000压缩算法进行语音录制,码率为16Kbit/s,最多约可录

9、制20秒语音。MS01 - Midi播放最大同时发音数为6路,其中有2路为鼓点音。函数库是由一组或多组函数集组成的文件。函数库是二进制文件,程序代码是不可见的。在使用函数库时,只有被使用的函数集才会真正与工程连接,而其他函数集不会占用硬件资源。凌阳音频函数库提供了为语音录放提供了一条便捷的途径。三、语音播放(自动播放) 语音录放流程 用SPCE061A播放语音 语音播放程序示例 用户接口函数 创建一个语音播放程序 小结和注意事项 疑难解答语音采样在定时中断的控制下,以一定的速率(8KHz)进行AD转换压缩编码将采集到的数据以某种算法压缩编码存储将编码后的数据保存到存储介质中数据提取语音数据送入

10、解压缩队列数据解码解压缩数据并送入输出队列转换为模拟信号在定时中断的控制下进行数模转换转换为声音模拟信号经滤波、放大,通过扬声器输出在hardware.asm中定义的用户API,用户可以根据需要修改F_SP_SACM_A2000_Init_F_SP_InitQueueF_SP_ReadQueueF_SP_WriteQueueF_SP_RampUpDAC1 第 1 步:新建工程第 2 步:复制语音播放需要的文件到工程所在的文件夹 语音播放支持文件 ,在“IDE安装目录 - Example - 61_Exa - Record”文件夹下可以找到 sacmv26e.lib hardware.inc h

11、ardware.asm A2000格式的语音资源,在“IDE安装目录 - Example - VoiceExa - ex1_A2000 - Voice”文件夹下可以找到 这里选择了d1.24k和ww.24k两个文件第 3 步:把刚刚复制的支持文件和语音资源添加到工程中。 在Project菜单项,选择Add to Project - Files 找到工程所在的文件夹,选择hardware.asm、hardware.inc两个文件(按住Ctrl键点选),确定。 IDE的Project菜单项,Add to Project - Resource 选择两个语音文件d1.24k和ww.24k,确定。第 4

12、 步:把Sacmv26e.lib语音函数库添加到工程中。 选择Project - Setting,在左半部分的目录树中点选根目录。 选择Link栏,点击Library Modules右面的文件夹按钮。 在工程所在文件夹中选择sacmv26e.lib文件,确定。第 5 步:编写语音播放函数。 在IDE的File菜单项下选择New,在弹出对话框的左半部分选择SP IDE C File。 在右半部分的File文本框中输入一个文件名,这里使用main.c,然后点击OK按钮。 在main.c中编写一个语音播放函数PlaySnd() 第 6 步:编写中断服务函数 在工程中新建一个asm文件,可以取名为IS

13、R.asm。 在ISR.asm中编写FIQ中断服务程序。第 7 步:编写主函数。 在IDE中打开main.c文件,编写main()函数。第 8 步:添加语音资源索引表 在IDE的Build菜单下选择Build(或直接按F7键),对工程进行编译和连接。此时会提示 “ Error L0080: The external symbol “T_SACM_A2000_SpeechTable” has not a public definition.”错误信息。 在工程中打开Resource.asm文件,在文件结尾处加入语音资源索引表。第 9 步:下载试听 按F7键对工程重新编译连接,途中可能会出现对话框

14、提示Resource.asm文件被更改,选择“Yes”即可。连接好硬件(下载线、电源、扬声器等),在IDE的工具栏中点选绿色的“Use ICE”按钮。 点击红色叹号形的“Execute Program”按钮,下载并运行程序,就可以听到从SPCE061A播放出的声音了。 语音播放需要的支持文件: Sacmv26e.lib, Hardware.asm, Hardware.inc 将支持文件加入工程中Hardware.asm加入到工程的Source FilesHardware.inc加入到工程的Head FilesSacmv26e.lib由Project - Setting - Link加入 语音资

15、源加入工程中Project - Add to Project - Resource 在Resource.asm里添加语音资源索引表 选择Use ICE模式,将程序下载到芯片中如果播放S480格式的语音资源,只需将上述程序中所有的“A2000”改成“S480”即可。 SACM_A2000_Initial(1);中的参数1是什么意思? 播放初始化,参数值为1代表“自动播放”模式,0代表“手动播放”模式,“手动播放”将在下一节介绍。 SACM_A2000_Play(SndIndex, DAC_Channel, 3);第三个参数3是做什么用的? 声音淡入和淡出设置。0-无淡入淡出;1-仅淡入;2-仅淡

16、出;3-淡入淡出 如何制作自己的语音资源? 凌阳提供了语音压缩工具,可以把.wav格式的声音文件压缩成A2000或S480格式。该工具的使用方法将在后面的课程中介绍。三、语音播放(手动播放) 什么是手动播放 手动播放流程 创建手动播放程序 其他语音播放函数 小结和注意事项 疑难解答自动播放手动播放新建工程把Hardware.asm、Hardware.inc和Sacmv26e.lib,以及A2000格式的语音文件复制到工程所在文件夹下把支持文件和语音资源添加到工程中。 在Project菜单项,选择Add to Project - Files 找到工程所在的文件夹,选择hardware.asm、h

17、ardware.inc和hardware.h三个文件(按住Ctrl键点选),确定。 IDE的Project菜单项,Add to Project - Resource 选择两个语音文件d1.24k和ww.24k,确定。把Sacmv26e.lib语音函数库添加到工程中。 选择Project - Setting,在左半部分的目录树中点选根目录。 选择Link栏,点击Library Modules右面的文件夹按钮。 在工程所在文件夹中选择sacmv26e.lib文件,确定。编写代码手动语音播放函数中断服务程序主函数添加语音资源索引表 在工程中打开Resource.asm文件,在文件结尾处加入语音资源索

18、引表。下载试听连接好硬件(下载线、电源、扬声器等),在IDE的工具栏中点选绿色的“Use ICE”按钮。 点击红色叹号形的“Execute Program”按钮,下载并运行程序,就可以听到从SPCE061A播放出的声音了。S480格式语音资源的手动播放方法与A2000基本相同,只需把A2000手动播放程序中所有的 “A2000” 替换成“S480” 即可。void SACM_A2000_Pause()暂停播放语音。void SACM_A2000_Resume()从暂停的位置继续播放语音。Void SACM_A2000_Volume(int Vol)调节语音播放的音量。Vol的取值范围是015,

19、数值越大,输出音量越大。声音渐入渐出函数,在Hardware.asm中定义,可防止播放开始和结束时产生爆音。Void SP_RampUpDAC1()Void SP_RampUpDAC2()Void SP_RampDnDAC1()Void SP_RampDnDAC2() Sacmv26e.lib语音函数库还有供汇编语言直接调用的函数,包括自动与手动播放函数,它们与C函数一一对应(前面加上“F_”前缀): F_SACM_A2000_Initial F_SACM_A2000_Play F_SACM_A2000_Stop F_SACM_A2000_ServiceLoopF_SACM_A2000_DecoderF_SACM_A2000_FillQueue 汇编语音播放函数使用R1、R2寄存器来传递参数。例如,C语言的SACM_A2000_Initial(1);语句可改写为:r1 = 1call F_SACM_A2000_Initial C语言的SACM_A2000_Play(0,2,3);语句可改写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论