SunplusSPCE061A微控制器语音播放(自动播放)语音播放一、单片机实现语音播放的原理二、语音播放程序示例三、创建一个语音播放程序四、小结和注意事项五、疑难解答一、单片机实现语音播放的原理语音录制存储流程语音采样在定时中断的控制下,以一定的速率(8KHz)进行AD转换压缩编码将采集到的数据以某种算法压缩编码存储将编码后的数据保存到存储介质中语音资源压缩编码存储数据队列定时中断AD采样语音语音播放流程数据提取语音数据送入解压缩队列数据解码解压缩数据并送入输出队列转换为模拟信号在定时中断的控制下进行数模转换转换为声音模拟信号经滤波、放大,通过扬声器输出解压缩队列语音资源解压缩取数据输出队列定时中断DAC输出语音用SPCE061A播放语音开始播放播放初始化语音资源播放完毕?开始解码,填入播放队列停止播放定时中断从播放队列取出数据送DAC输出返回YN播放队列设置中断播放循环中断服务自动播放与手动播放自动播放解压缩队列语音资源解压缩取数据输出队列定时中断DAC输出语音SACM_Decoder();SACM_A2000_FillQueue();SP_GetResource();手动播放二、语音播放程序示例语音播放程序示例//中断服务程序//用户接口函数在hardware.asm中定义的用户API,用户可以根据需要修改F_SP_SACM_A2000_Init_F_SP_InitQueueF_SP_ReadQueueF_SP_WriteQueueF_SP_RampUpDAC1…………语音函数库用户API语音播放程序三、创建一个语音播放程序创建一个语音播放程序第1步:新建工程创建一个语音播放程序第2步:复制语音播放需要的文件到工程所在的文件夹语音播放支持文件,在“IDE安装目录-Example-61_Exa-Record”文件夹下可以找到sacmv26e.libhardware.inchardware.asmA2000格式的语音资源,在“IDE安装目录-Example-VoiceExa-ex1_A2000-Voice”文件夹下可以找到这里选择了d1.24k和ww.24k两个文件在Project菜单项,选择AddtoProject-Files找到工程所在的文件夹,选择hardware.asm、hardware.inc两个文件(按住Ctrl键点选),确定。IDE的Project菜单项,AddtoProject-Resource选择两个语音文件d1.24k和ww.24k,确定。创建一个语音播放程序第3步:把刚刚复制的支持文件和语音资源添加到工程中。选择Project-Setting,在左半部分的目录树中点选根目录。选择Link栏,点击LibraryModules右面的文件夹按钮。在工程所在文件夹中选择sacmv26e.lib文件,确定。创建一个语音播放程序第4步:把Sacmv26e.lib语音函数库添加到工程中。在IDE的File菜单项下选择New,在弹出对话框的左半部分选择SPIDECFile。在右半部分的File文本框中输入一个文件名,这里使用main.c,然后点击OK按钮。在main.c中编写一个语音播放函数PlaySnd()创建一个语音播放程序第5步:编写语音播放函数。在工程中新建一个asm文件,可以取名为ISR.asm。在ISR.asm中编写FIQ中断服务程序。创建一个语音播放程序第6步:编写中断服务函数创建一个语音播放程序第7步:编写主函数。在IDE中打开main.c文件,编写main()函数。在IDE的Build菜单下选择Build(或直接按F7键),对工程进行编译和连接。此时会提示“ErrorL0080:Theexternalsymbol“T_SACM_A2000_SpeechTable”hasnotapublicdefinition.”错误信息。在工程中打开Resource.asm文件,在文件结尾处加入语音资源索引表。创建一个语音播放程序第8步:添加语音资源索引表按F7键对工程重新编译连接,途中可能会出现对话框提示Resource.asm文件被更改,选择“Yes”即可。连接好硬件(下载线、电源、扬声器等),在IDE的工具栏中点选绿色的“UseICE”按钮。点击红色叹号形的“ExecuteProgram”按钮,下载并运行程序,就可以听到从SPCE061A播放出的声音了。创建一个语音播放程序第9步:下载试听四、小结和注意事项语音播放需要的支持文件:Sacmv26e.lib,Hardware.asm,Hardware.inc将支持文件加入工程中Hardware.asm加入到工程的SourceFilesHardware.inc加入到工程的HeadFilesSacmv26e.lib由Project-Setting-Link加入语音资源加入工程中Project-AddtoProject-Resource在Resource.asm里添加语音资源索引表选择UseICE模式,将程序下载到芯片中小结和注意事项小结和注意事项如果播放S480格式的语音资源,只需将上述程序中所有的“A2000”改成“S480”即可。五、疑难解答疑难解答SACM_A2000_Initial(1);中的参数1是什么意思?播放初始化,参数值为1代表“自动播放”模式,0代表“手动播放”模式,“手动播放”将在下一节介绍。SACM_A2000_Play(SndIndex,DAC_Channel,3);第三个参数3是做什么用的?声音淡入和淡出设置。0-无淡入淡出;1-仅淡入;2-仅淡出;3-淡入淡出如何制作自己的语音资源?凌阳提供了语音压缩工具,可以把.wav格式的声音文件压缩成A2000或S480格式。该工具的使用方法将在后面的课程中介绍。凌阳科技教育推广中心竭诚为您服务凌阳科技大学计划网站:凌阳科技大学计划邮箱:E_mail:unsp@sunplus.com.cn凌阳科技大学计划客服中心:Tel:010-62981668-2911凌阳科技大学计划技术支持中心:Tel:010-62981668-2919