您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制凌阳单片机——语音识别声控智能家电系统 正文
凌阳单片机——语音识别声控智能家电系统

凌阳单片机——语音识别声控智能家电系统

点击数:7831 次   录入时间:03-04 11:37:43   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  人类科技的发展总是离不开以人为本这一永恒的主题,家庭日用品更是被人们设计的越来越人性化,越来越便于使用。

  例如电视机由最初的转动旋钮来选择频道、调节声音,发展到现在的只用一个无线红外遥控器就可以完成所有的操作功能。

  但所有的家电产品无论是否具有“遥控”功能,还都需要人手动控制。那么能不能做到“君子动口不动手”呢?本文介绍用凌阳单片机61A板设计并制作的一套基于语音识别技术的声控智能家居系统。该系统无需对现有电器进行大规模的改动,即可与之连接,实现语音控制。

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

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

  //工程名称: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即可满足要求。

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

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

56

  现在要驱动的不是发光二极管,而是诸如控制各种家电的继电器驱动电路。继电器驱动电路的设计如下图所示。由于单片机I/O口提供的电流太小,不能直接驱动继电器。在这里采用三极管8050来提供一个开关电路,实现I/O口对继电器的驱动,用二极管1N4007去除继电器释放时线圈中产生的反向电流,以保护三极管8050。

56

  当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;

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

56

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




本文关键字:单片机  智能  语音识别  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制