首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
用凌阳单片机61A板设计并制作基于语音识别技术的声控智能家居系统
来源:本站整理  作者:佚名  2010-03-28 09:14:44



  该系统无需对现有电器进行大规模的改动,即可与之连接,实现语音控制。

  本系统实现的功能包括三个部分,第一部分是用语音控制开关控制房间里的照明灯;第二部分是用语音控制开关控制电风扇;第三部分是用语音控制电调调频收音机的选台。

  为了顺利地实现这三个功能,我们先来学习一下已有范例,大家可以从常用应用程序表中方便地查找到“特定人辨识的一个范例”,为了说明方便,我们拷贝了主程序中的注释,请大家仔细阅读一下:

  //工程名称:Guard_sD.spj//功能描述:该程序是:

  //在程序中我们通过三条语句的训练演示特定人连续音识别,其中第一条语句为,/触发命令。在程序一开始为训练名称,即触发命令,然后提示训练两条命令,/训练完毕开始辨识。当识别出触发名称后,发布命令则会听到应答,具体命令//如下:

  \\ *********训练*******************//提示音    输入语音\\……一……一一……一一∥“请输入触发名称”    “警卫”

  //“请输入第一条命令”    “开枪”

  \\“请输入第二条命令”    “你在干什么?”

  //“请再说一遍”(以上提示音每说完一遍出现此命令)//“没有听到任何声音”(当没有检测到声音时出现此命令)//“两次输入名称不相同”(当两次输入的名称不同时出现此命令)//“两次输入命令不相同”(当两次输入的命令有差异时出现此命令)。  \\“准备就绪,请开始辨识”(以上三条语句全部训练成功时,进入识别)\\********识别***************//发布命令    应答\\……一……一……一一//“警卫”    “在”/“长官”

  ∥“开枪”    “枪声”

  \\“你在于什么?”    “我在巡逻”/“我在休息”/“我在等人”

  //注意:在每次提示音结束后2—3秒再输人命令或当上次应答结束2~3秒后再发布命令。

  大家可能已经注意到,训练中的提示音内容和识别中的应答内容,应是事先录入并压缩好的语音资源文件。输入语音的内容是从61A板上麦克风录入的。我们可以运行一下这个程序,感觉一下它的执行效果,体会一下语音识别的魅力。

  在我们将要实现的这个系统中,需要从单片机I/O口输出开关量和脉冲量,关于单片机I/O口的使用,我们可以查看教科书有关SPCE061A硬件系统中的I/O端口控制器设置部分。为了更有利于系统功能的实现,我们选用了配套光盘中的另一个工程项目,这个工程项目使用的是特定语者辨识sD(SpeakerDependent),SD即语音样板由单个人训练,识别训练某人的语音命令,而他人的命令识别率较低的一种语音识别模式。并且该项目中使用了lOB口作为输出端口,有着便利的使用价值,我们同样拷贝了主程序中注释说明部分,为我们要完成的工程项目做借鉴。

  \\***********训练***********************\ \提示音    输入语音//……一……一…//“请输入触发名称”    “警卫”

  //“请输入第一条命令”    “红灯亮”

  //“请输入第二条命令”    “红灯灭”

  //“请输入第三条命令”    “绿灯亮”

  \\“请输入第四条命令”    “绿灯灭”

  ∥“请再说一遍”(以上提示音每说完一遍出现此命令)//“没有听到任何声音”(当没有检测到声音时出现此命令)//“两次输入名称不相同”(当两次输入的名称不同时出现此命令)//“两次输入命令不相同”(当两次输入的命令有差异时出现此命令)//“准备就绪,请开始辨识”(以上五条语句全部训练成功时,进入识别)\\*********识别*************\\发布命令   应答//一一一…一……一一∥“警卫”    “在”

  \\“红灯亮”    IOBO口灯被点亮//“红灯灭”    IOBO口灯被熄灭//“绿灯亮”    IOBl口灯被点亮//“绿灯灭”    IOBl口灯被熄灭∥注意:在每次提示音结束后2~3秒再输入命令或当上次应答结束2~3秒后再发布命令。


  将其中的部分语音资源文件按我们的系统需求做一些代换,然后进行同样方式的训练。本系统共包括十多个语音资源,整个语音信号经SACM_S480压缩算法压缩只占有13.2K存储空间,SPCE061A单片机具有32K闪存,使用内部flash即可满足要求。

  语音资源文件的制作与替换我们不再重复叙述,大家可以参考前几篇《初学凌阳单片机》文章,具体实施功能描述如下:

  首先进行触发命令训练。当听到“请输入声控家电名称”提示音时,对此系统进行触发命令训练。当听到“请输入第一个命令”时,训练开灯功能。当听到“请输入第二个命令”时,训练开电扇功能。当听到“请输入第三个命令”时,训练电调调频收音机调台功能。当听到“请输入第四个命令”时,训练关闭功能。完成训练后,首先下达触发命令,系统如果成功识别出指令,会发出提示音“主人,我在”,然后再下达相应的其它命令。原有控制驱动电路原理图如图1所示。

  现在要驱动的不是发光二极管,而是诸如控制各种家电的继电器驱动电路。继电器驱动电路的设计如图2所示。由于单片机I/O口提供的电流太小,不能直接驱动继电器。

  在这里采用三极管8050来提供一个开关电路,实现I/O口对继电器的驱动,用二极管1N4007去除继电器释放时线圈中产生的反向电流,以保护三极管8050。

  当IOB口输出高电平并保持时,三极管8050导通,继电器吸合,被控家用电器220V交流电源被接通,家用电器开始工作。

  当IOB口输出低电平并保持时,三极管8050截止,继电器释放,被控家用电器220V交流电源被断开,家用电器停止工作。当IOB口输出高电平,保持很短时间,然后将IOB口置为低电平并保持,在IOB口就形成了一个高电平窄脉冲,它控制三极管8050导通后又截止,继电器吸合后又释放,这样继电器的输出端接在电调收音机搜索(SCAN)按键的两端,就替代了手动按键选台的作用。可具体将各IOB口分别定义为:IOB0口控制照明灯;IOBl口控制电风扇;IOB2口控制电调收音机搜索(SCAN)按键。

  在配套光盘中我们把“电子竞赛\基础篇\语音功能\语音辨识\guardSD”目录下的代码略做修改即可完成我们所需要的功能。打开guardSD.spj文件,在“source files”中找到“。lnitlO.

  asm”文件,把B口设置为同向输出低电平。在定义的LED_RED_0N()函数中,把r1=0xfffe改为rl=0x0001;在定义的LED_RED_0FF()中把rl=0xffff改为rl=0x0002;在定义的LED_GRE_ON()中,把r1=0xfffd改为r1=0xx0004;在定义的LED_GRE_OFF()中,把r1=0xffff改为r1=Ox0008。

  在“sourcefiles'‘中找到”main.c'’文件,在“LED_GRE_oN()”

  后面增加如下代码,用于产生脉冲。

  for(k=0;k<50000;k++){ClearWatchDogO;}

  LED GRE oFF;程序流程图见图3。为了更好地实现语音辨识,具有语音辨识的系统要求使用环境不能过于嘈杂。

  本系统的应用领域极其广泛。系统虽然只具有三项控制功能,但只要按相同的方法稍加改动,就可以实现其它多种电器设备的控制,如电视机的开关、电视机的选台、音量调节等其它全部操作。也就是说,只要被控电器设备及其部件,是受开关量控制或者是受脉冲量控制的,我们都可以采用同样的方法,大家在各类电子竞赛中,只需动脑筋想出奇妙的被控对象来,就可以灵活应用这一程序,取得好成绩。文章结束时我们再给大家一点小小的启示:现在许多学校都有电化教学教室,老师们事先用PowerPoint做好了教学幻灯片,在上课时使用电脑和投影仪播放幻灯片,每播放下一张幻灯片时,都需要去点击一下鼠标左键,你能否使用上述控制方法,应用语音辨识技术,实现这一控制功能?

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:101,523.40000 毫秒