1、,Sunplus SPCE061A 微控制器,语音识别,语音识别,一、语音识别概述二、特定人语音识别程序示例三、其他特定人识别函数四、小结和注意事项五、疑难解答,一、语音识别概述,语音识别概述,根据对说话人的依赖程度,分为:特定人语音识别(SD)只能辨认特定使用者的语音,训练-使用非特定人语音识别(SI)可辨认任何人的语音,无须训练根据对说话方式的要求,分为:孤立词识别每次只能识别单个词汇连续语音识别用者以正常语速说话,即可识别其中的语句,语音识别原理,SPCE061A实现语音识别,硬件条件专用MIC接口,用于实现语音录制16位定时器/计数器用于控制采样频率最高49MHz时钟频率,内置硬件乘法
2、器和内积运算,保证识别算法的运行软件条件提供语音识别函数库,只需几条语句即可实现语音识别功能,特定人语音识别函数库,SPCE061A的语音识别函数库特定人连续语音识别包含特定人语音训练、识别,语音特征模型的导入、导出函数等。可支持每组7条语音命令的识别在IDE安装目录的Example - IntExa- ex9_Recognise文件夹下可以找到函数库bsrv222SDL.lib。,二、特定人语音识别程序示例,特定人语音识别程序流程,特定人语音识别程序示例,特定人语音识别程序示例,新建工程复制语音识别、语音播放需要的支持文件到工程所在文件夹。语音识别函数库bsrv222SDL.lib语音识别头
3、文件bsrSD.inc,bsrSD.h语音播放支持文件Sacmv26e.lib,Hardware.asm,Hardware.inc,特定人语音识别程序示例,用PC录制下列提示语音(也可自定义提示语音),注意保存文件名不要包含中文。“请输入第一条命令”“请输入第二条命令”“请再说一遍”“没有听到任何声音”“两次输入不相同”“环境噪声太大”“训练成功,开始识别”“识别成功,第一条命令”“识别成功,第二条命令”,特定人语音识别程序示例,利用凌阳语音压缩工具“Compress Tool”将录好的语音压缩成S480格式。把压缩后的语音资源文件复制到工程所在文件夹下。,特定人语音识别程序示例,将上述文件添
4、加到工程中 Project - Add to Project - FilesbsrSD.inc,bsrSD.h,Hardware.asm,Hardware.inc Project - Add to Project - Resource9个S480格式语音资源文件 Project - Setting - Link bsrv222SDL.lib Sacmv26e.lib,特定人语音识别程序示例,在工程中新建C程序文件,编写语音播放函数PlaySnd()。,特定人语音识别程序示例,编写“训练”函数TrainWord()。,特定人语音识别程序示例,编写主函数main(),特定人语音识别程序示例,编写中
5、断服务程序,特定人语音识别程序示例,添加语音资源索引表在Resource.asm的结尾添加T_SACM_S480_SpeechTable,特定人语音识别程序示例,编译连接,下载运行按F7键或“Build”按钮,编译连接。确认选择了“USE ICE”。按F5键或“Execute Program”按钮,下载并运行。,特定人语音识别程序示例,程序测试听到提示“请输入第一条命令”后,说出一句语音命令。如果输入成功,会提示“请再说一遍”,重复刚才的语音命令。如果由于某种原因导致输入失败,会提示“没有听到任何声音”、“环境噪声太大”,如果两次训练的语音差别过大,会提示“两次输入不相同”。第一条命令训练成功
6、后,用同样的办法训练第二条语音命令。,特定人语音识别程序示例,程序测试两条命令都训练完成后,就可以开始识别了如果识别出第一条语音命令,则提示“识别成功,第一条命令”如果识别出第一条语音命令,则提示“识别成功,第二条命令”,三、其它特定人识别函数,其他特定人识别函数,除了前面示例中的基本应用外,函数库还提供了很多函数用来对识别过程进行灵活的控制。下面介绍几个比较常用的函数:BSR_PauseRecognizer()暂停识别,但不释放中断等资源BSR_ResumeRecognizer()恢复被暂停的识别BSR_GetRecognizerScore()获得识别结果的可信度,返回值从-4096到409
7、6,数值越大表示输入语音与特征模型的匹配度越高。,其他特定人识别函数,其他特定人识别函数BSR_EnableCPUIndicator()开启CPU状态监测功能。开启该功能后,IOA0和IOA1将发出每16ms电平变化一次的方波。BSR_DisableCPUIndicator()关闭CPU状态监测功能。BSR_ExportSDWord(int CommandID)使用函数库时,会自动创建一个100 Word的数组BSR_SDModel100,可以把某条训练命令的特征模型数据导出到这个数组中。BSR_ImportSDWord(int CommandID)可以把BSR_SDModel数组中的数据导入
8、为某条语音命的特征模型。,四、小结和注意事项,小结和注意事项,特定人语音识别由“训练”和“识别”两个步骤组成。训练过程中,每条语音命令的长度不要超过1.3秒。训练后得到的语音特征模型是保存在RAM中的,每条命令占用96 Word,由于RAM空间的限制,同时可识别的语音命令数量最大为7条。如果需要识别更多语音命令,可以采用命令分组的方法。语音特征模型数据可以通过下面两个函数导入和导出:BSR_ImportSDWord(),BSR_ExportSDWord(),五、疑难解答,疑难解答,BSR_DeleteSDGroup(0),从函数名看来,好像是删除一个组的意思。它是怎么完成初始化RAM的?语音命
9、令的特征模型是通过BSR_Train函数保存在RAM空间中的。如果所需的RAM空间已被旧的特征模型数据占满,则新特征模型无法保存到RAM中。利用BSR_DeleteSDGroup函数可以把RAM空间中所有的特征模型删除,释放出所需空间。我有很多条语音命令要识别,可SPCE061A只能同时识别5条,该怎么办?可以采取分组识别的方法,即“触发命令”与“控制命令”组合。,凌阳科技教育推广中心竭诚为您服务,凌阳科技大学计划网站:http:/凌阳科技大学计划邮箱:E_mail: 凌阳科技大学计划客服中心:Tel: 010-62981668-2911凌阳科技大学计划技术支持中心:Tel: 010-62981668-2919,