论文部分内容阅读
【摘要】本文采用VC++ 6.0作为开发工具,SQL Server为后台数据库,设计和实现了一个基于智能机器人的计算机教学系统。
【关键词】教学系统 智能机器人 语音识别
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2008)09(b)-0153-02
Implementation of A Tutoring system Based on An Intelligent Robot
WANG Bing XIAO Nan-Feng
School of Computer Science and Engineering, South China University of Technology, GuangZhou 510641
Abstract:Design and construct a computer tutoring system based on an intelligent robot by using VC++ 6.0 as developing tool and SQL Server as a database.
Key words: computer tutoring system; robot; speech recognition
1 引言
随着现代科技的飞速发展,计算机教学系统得到了广泛的应用,并对教育和教学过程产生了深刻的影响。计算机教学系统可以提供理想的教学环境,显著地提高了教学效果。然而,计算机辅助教学系统也依然存在一些问题:例如缺乏人机交互的能力,不能实现和教学系统互动。因此近些年来将先进的智能机器人引入教学系统已经成为了一个研究的热点。本文就是将计算机教学系统和智能机器人结合在一起,由智能机器人充当载体完成教学系统和学生的交流,提高教学系统的交互性。同时在教学系统的设计中添加了老师的分析评议,可以针对学生的学习情况提出有效的建议,更加保障了学生的学习。
2 系统设计
2.1 系统设计目标
以数据结构课程为例,构建一个基于智能机器人的数据结构教学系统。该教学系统具有以下的特征:①基于智能机器人。智能机器人充当学生和教学系统的交互载体,和学生进行简单的自然语言交流。②以学生为中心,学生主动成为对外界提供的信息进行加工的行为主体。③合理的学习建议。根据学生的练习结果,向学生提出学习的建议,促进自学效果。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/gxjy/gxjy200812/gxjy200812114-1-l.jpg)
2.2 系统硬件设计
教学系统由智能机器人和PC机组成(如图1所示)。智能机器人由直流伺服电机、两个摄像头(智能机器人的眼睛)、音响(智能机器人的嘴巴)、麦(智能机器人的耳朵)等构成,组装简单造价经济,可以直接放置于桌面上,完成和学生的互动沟通。
2.3 系统软件设计
教学系统软件主要由三个模块构成。数据库部分:存放大量课程学习的各种资料,保证资料能够被快速定位和取出,方便往数据库中增加和删除资料。界面部分:为学习者提供方便的操作环境,建立学生输入信息的方式,接受学生输入的信息。展示了系统的教学内容。语音部分:运用文字和语音识别及自然语言理解等技术,使智能机器人老师开口说话,完成和学生的自然语言交流。
3 各个功能模块的设计
3.1 登陆界面设计与实现
登陆界面是一个对话框。该对话框设计添加了课程标题和图片,也添加了学生信息表中学号和密码等两个字段的信息。学生只要输入学号和密码就可以将对应的信息存放入数据库中的学生信息表中。在对话框初始化中添加语音系统初始化,使语音软件处于就绪状态,智能机器人老师说出设定好的文字语句“同学你好,欢迎你来学习数据结构课程的学习”。
3.2 选择界面设计与实现
在以学生为主体的学习系统中,学生为了课程学习需要查阅课程资料,进行练习和测验,并期望在过程中得到老师的指导和建议。基于此设计了以课件浏览、教案查询、配套练习、课程测试为主要内容的学习内容功能选择。对课件和教案的查询,主要采用将存放在数据库中的课件和教案直接为学生打开的方法,打开课件或者教案时是以章节为单位进行。
考虑到练习模块的重要性,因此单独为配套练习设计了一个界面。在该界面中设计有按照题目难度分为的基础题、应用题和综合题三个选择,设计有章节选择,设计有显示出相应的习题、答案、讲解分析的部分。
3.3 数据库设计与实现
采用Microsoft SQL Serve 2000作为数据库管理系统。数据库建立的原则是合理存放课程相应的资料,同时有利于系统随时读取资料。智能教学系统的数据库需要存放的资料有课程课件、课程教案、习题、考试卷及答案。
课件表与教案表设计。如果将包含大量图片和文字的课件和教案分门别类地存入数据库,数据库的设计就会比较复杂,按章节的浏览方式允许将每一章的内容同时存入数据库。据此设计出了课件表和教案表,各字段(表1)。ID号是数据项在数据表中的唯一标识,名称是各章的名称。试卷表的设计也仿照如此。
習题表设计。习题表设计采用的策略是首先将所有的习题按照题目的难度和对学生的能力要求分为了三类:基础习题、应用习题、综合习题。相应地建立三种类型的数据表:基础习题表、应用习题表和综合习题表。
为了保证查找的速度和效率,又将习题表进一步细化,将不同类型的习题分到具体的某一章。这样保证了每一个表中存储的题目数量不会很多,提高查询的速度和效率。
在单个数据表的设计中,设计有ID、题目、对应答案、题目分析四个字段。存储了习题和它相应的答案,也存储了针对于此题目求解需注意的地方和老师的分析建议(表2),在不同习题类型的数据表中,数据长度的设定有着不同。
数据库中资料查找。需要查看章节的课件和教案时,将学生想要查看的具体的章节名,按照顺序查找方式和课件表或者教案表的名称字段中的字符依次比较做,不相同则继续查找,直到找到字符相同的字段为止。习题表中内容的查找:定义一个变量sta,用以记录选择的章节名;再定义一个变量status,用以记录选择的题目类型:
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/gxjy/gxjy200812/gxjy200812114-2-l.jpg)
If status
If (sta) sql.Format ("select * from对应的数据表"),连接数据库找到对应的数据表;
While (数据表中的项不是最后一项)
{ 取出项中相应字段和学生选择的内容对比
相同,则停止搜索,取出需要字段,执行对应操作
Else 查看下一条记录
}
3.4 数据库程序编写
使用ADO的连接对象和记录集对象完成了数据库程序的编写。
连接数据库。使用连接对象。声明Connection指针_ConnectionPtr m_pConnection;
创建Connection对象m_pConnection.CreateInstance("ADODB.Connection");
设置连接字符串,指定和数据库连接的信息:_bstr_t strConnect="Provider= SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学系统;Data Source=PC-200808021334";
使用m_pConnection的Open方法实现数据库的连接m_pConnection->Open(strConnect,"","",adModeUnknown);
连接结束后,调用m_pConnection的Close方法关闭连接
m_pConnection->Close();
从数据库中取出需要字段。使用记录集对象。声明RecordSet指针_RecordsetPtr m_pRecordset;
创建RecordSet对象m_pRecordset.CreateInstance(__uuidof(Recordset));
使用m_pRecordset的Open方法打开习题表中的记录集
CString sql.Format(“select * from数据表”);
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
访问记录集的每一项,找到相应字段
_variant_tvID= m_pRecordset->GetCollect("字段1");
从记录集中取出字段1并将它保存
Ctring subject = (TCHAR*)(_bstr_t)vID;
最后关闭记录集 m_pRecordset ->Close( );
3.5 语音模块设计
语法规则创建:使用微软SDK 5.1识别软件完成教学系统的语音识别。语音识别分为文本识别模式和命令识别两种模式。区别在于识别的过程中使用的匹配字典不同。前者使用通用字典,适用于没有预定目标的随机听写。但识别精度低,识别速度较慢。后者需要开发者自己编写字典,就是xml文件。xml文件有一定的格式,定义了SDK需要确定的一些标签和用以匹配的词汇。这种方式由开发者定义词汇的数量。识别精度较高,识别速度也快。但缺点就是只有预先输入词典中定义的词汇才可以被识别出来,词汇量小。
在教学系统中的语音识别,是以课程的学习展开的一系列的活动,那么智能机器人和学生的交流也似围绕这一活动,语言相对集中。考虑到这些,我们选择了自定义识别字典的方式。具体的语法规则在xml文件中如下定义:
<DEFINE>
<RULE ID="VID_Action">
<ID NAME="VID_View" VAL="506008"/>
<L PROPID="VID_Action">
</DEFINE>
<P VAL="VID_View">浏览</P></L>
文本语音转换和语音识别:SDK提供的接口是用com方式封装的,不管是进行语音转换还是语音识别都要进行COM初始化。进行文本语音转换时,需要创建识别引擎,获取IspVoice接口,系统进行声音的初始化后,然后使用该接口的Speak函数将文本输出为语音。初始化过程为:int r = ::init(this->m_hWnd);if (! r) { AfxMessageBox ("Init fail");exit(1);}
调用Speak函数将预定的文本转为语音
CString m_strSpeak = "同学你好,欢迎你进入数据结构课程的学习";
::speak(m_strSpeak);
进行语音识别时,语音包是基于消息事件驱动的。开始语音识别以后,识别引擎一直在工作,侦听mic。在這一过程中,识别引擎调用CreateRecoContext( )函数获取上下文接口指针,此接口调用CreateGrammar()方法得到一个指向了自定义字典的接口指针,继而激活语法规则进行识别。一旦识别出语音,就通过发一个事先注册的事件来通知系统处理。在消息处理函数中添加需要的操作。
switch (sp_param->action)
{ case 506008:{执行浏览课件的操作};}
由于使用命令识别模式要识别的词语不多,识别引擎在一个非常小的范围内搜索,速度比较快,而且精确度也比较高,基本上能达到90%的正确率。
4 总结
基于智能机器人的教学系统的建立是一项复杂而又艰巨的工作,目前只是在实验范围内建立了基本框架,依然有很多的工作要完成。教学系统需要进一步的完善,教学系统的智能化还有待提高,但是可以看出,在当下教育改革的大环境下,将人工智能引入教学系统的理念将显示出越来越大的优势,给教育工作带来巨大的影响,因此非常值得我们进一步的研究和设计。
参考文献
[1] 金聪,刘金安.人工智能技术在计算机辅助教学中的应用与实现.计算机与信息技术.
[2] 夏邦贵,刘繁馨等.Visual C++ 数据库开发经典实例精解.北京:机械工业出版社.2006.5.
[3] 宋坤,刘锐宁,李伟明等.Visual C++ 开发技术大全.北京:人民邮电出版社.
[4] 王建华等.计算机辅助教学实用教程.北京:高等教育出版社.2003.
[5] 尤新华,李跃新.智能化教学系统中教学模块的设计与应用.湖北大学学报.2007(7)第29卷第三期.
【关键词】教学系统 智能机器人 语音识别
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2008)09(b)-0153-02
Implementation of A Tutoring system Based on An Intelligent Robot
WANG Bing XIAO Nan-Feng
School of Computer Science and Engineering, South China University of Technology, GuangZhou 510641
Abstract:Design and construct a computer tutoring system based on an intelligent robot by using VC++ 6.0 as developing tool and SQL Server as a database.
Key words: computer tutoring system; robot; speech recognition
1 引言
随着现代科技的飞速发展,计算机教学系统得到了广泛的应用,并对教育和教学过程产生了深刻的影响。计算机教学系统可以提供理想的教学环境,显著地提高了教学效果。然而,计算机辅助教学系统也依然存在一些问题:例如缺乏人机交互的能力,不能实现和教学系统互动。因此近些年来将先进的智能机器人引入教学系统已经成为了一个研究的热点。本文就是将计算机教学系统和智能机器人结合在一起,由智能机器人充当载体完成教学系统和学生的交流,提高教学系统的交互性。同时在教学系统的设计中添加了老师的分析评议,可以针对学生的学习情况提出有效的建议,更加保障了学生的学习。
2 系统设计
2.1 系统设计目标
以数据结构课程为例,构建一个基于智能机器人的数据结构教学系统。该教学系统具有以下的特征:①基于智能机器人。智能机器人充当学生和教学系统的交互载体,和学生进行简单的自然语言交流。②以学生为中心,学生主动成为对外界提供的信息进行加工的行为主体。③合理的学习建议。根据学生的练习结果,向学生提出学习的建议,促进自学效果。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/gxjy/gxjy200812/gxjy200812114-1-l.jpg)
2.2 系统硬件设计
教学系统由智能机器人和PC机组成(如图1所示)。智能机器人由直流伺服电机、两个摄像头(智能机器人的眼睛)、音响(智能机器人的嘴巴)、麦(智能机器人的耳朵)等构成,组装简单造价经济,可以直接放置于桌面上,完成和学生的互动沟通。
2.3 系统软件设计
教学系统软件主要由三个模块构成。数据库部分:存放大量课程学习的各种资料,保证资料能够被快速定位和取出,方便往数据库中增加和删除资料。界面部分:为学习者提供方便的操作环境,建立学生输入信息的方式,接受学生输入的信息。展示了系统的教学内容。语音部分:运用文字和语音识别及自然语言理解等技术,使智能机器人老师开口说话,完成和学生的自然语言交流。
3 各个功能模块的设计
3.1 登陆界面设计与实现
登陆界面是一个对话框。该对话框设计添加了课程标题和图片,也添加了学生信息表中学号和密码等两个字段的信息。学生只要输入学号和密码就可以将对应的信息存放入数据库中的学生信息表中。在对话框初始化中添加语音系统初始化,使语音软件处于就绪状态,智能机器人老师说出设定好的文字语句“同学你好,欢迎你来学习数据结构课程的学习”。
3.2 选择界面设计与实现
在以学生为主体的学习系统中,学生为了课程学习需要查阅课程资料,进行练习和测验,并期望在过程中得到老师的指导和建议。基于此设计了以课件浏览、教案查询、配套练习、课程测试为主要内容的学习内容功能选择。对课件和教案的查询,主要采用将存放在数据库中的课件和教案直接为学生打开的方法,打开课件或者教案时是以章节为单位进行。
考虑到练习模块的重要性,因此单独为配套练习设计了一个界面。在该界面中设计有按照题目难度分为的基础题、应用题和综合题三个选择,设计有章节选择,设计有显示出相应的习题、答案、讲解分析的部分。
3.3 数据库设计与实现
采用Microsoft SQL Serve 2000作为数据库管理系统。数据库建立的原则是合理存放课程相应的资料,同时有利于系统随时读取资料。智能教学系统的数据库需要存放的资料有课程课件、课程教案、习题、考试卷及答案。
课件表与教案表设计。如果将包含大量图片和文字的课件和教案分门别类地存入数据库,数据库的设计就会比较复杂,按章节的浏览方式允许将每一章的内容同时存入数据库。据此设计出了课件表和教案表,各字段(表1)。ID号是数据项在数据表中的唯一标识,名称是各章的名称。试卷表的设计也仿照如此。
習题表设计。习题表设计采用的策略是首先将所有的习题按照题目的难度和对学生的能力要求分为了三类:基础习题、应用习题、综合习题。相应地建立三种类型的数据表:基础习题表、应用习题表和综合习题表。
为了保证查找的速度和效率,又将习题表进一步细化,将不同类型的习题分到具体的某一章。这样保证了每一个表中存储的题目数量不会很多,提高查询的速度和效率。
在单个数据表的设计中,设计有ID、题目、对应答案、题目分析四个字段。存储了习题和它相应的答案,也存储了针对于此题目求解需注意的地方和老师的分析建议(表2),在不同习题类型的数据表中,数据长度的设定有着不同。
数据库中资料查找。需要查看章节的课件和教案时,将学生想要查看的具体的章节名,按照顺序查找方式和课件表或者教案表的名称字段中的字符依次比较做,不相同则继续查找,直到找到字符相同的字段为止。习题表中内容的查找:定义一个变量sta,用以记录选择的章节名;再定义一个变量status,用以记录选择的题目类型:
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/gxjy/gxjy200812/gxjy200812114-2-l.jpg)
If status
If (sta) sql.Format ("select * from对应的数据表"),连接数据库找到对应的数据表;
While (数据表中的项不是最后一项)
{ 取出项中相应字段和学生选择的内容对比
相同,则停止搜索,取出需要字段,执行对应操作
Else 查看下一条记录
}
3.4 数据库程序编写
使用ADO的连接对象和记录集对象完成了数据库程序的编写。
连接数据库。使用连接对象。声明Connection指针_ConnectionPtr m_pConnection;
创建Connection对象m_pConnection.CreateInstance("ADODB.Connection");
设置连接字符串,指定和数据库连接的信息:_bstr_t strConnect="Provider= SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学系统;Data Source=PC-200808021334";
使用m_pConnection的Open方法实现数据库的连接m_pConnection->Open(strConnect,"","",adModeUnknown);
连接结束后,调用m_pConnection的Close方法关闭连接
m_pConnection->Close();
从数据库中取出需要字段。使用记录集对象。声明RecordSet指针_RecordsetPtr m_pRecordset;
创建RecordSet对象m_pRecordset.CreateInstance(__uuidof(Recordset));
使用m_pRecordset的Open方法打开习题表中的记录集
CString sql.Format(“select * from数据表”);
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
访问记录集的每一项,找到相应字段
_variant_tvID= m_pRecordset->GetCollect("字段1");
从记录集中取出字段1并将它保存
Ctring subject = (TCHAR*)(_bstr_t)vID;
最后关闭记录集 m_pRecordset ->Close( );
3.5 语音模块设计
语法规则创建:使用微软SDK 5.1识别软件完成教学系统的语音识别。语音识别分为文本识别模式和命令识别两种模式。区别在于识别的过程中使用的匹配字典不同。前者使用通用字典,适用于没有预定目标的随机听写。但识别精度低,识别速度较慢。后者需要开发者自己编写字典,就是xml文件。xml文件有一定的格式,定义了SDK需要确定的一些标签和用以匹配的词汇。这种方式由开发者定义词汇的数量。识别精度较高,识别速度也快。但缺点就是只有预先输入词典中定义的词汇才可以被识别出来,词汇量小。
在教学系统中的语音识别,是以课程的学习展开的一系列的活动,那么智能机器人和学生的交流也似围绕这一活动,语言相对集中。考虑到这些,我们选择了自定义识别字典的方式。具体的语法规则在xml文件中如下定义:
<DEFINE>
<RULE ID="VID_Action">
<ID NAME="VID_View" VAL="506008"/>
<L PROPID="VID_Action">
</DEFINE>
<P VAL="VID_View">浏览</P></L>
文本语音转换和语音识别:SDK提供的接口是用com方式封装的,不管是进行语音转换还是语音识别都要进行COM初始化。进行文本语音转换时,需要创建识别引擎,获取IspVoice接口,系统进行声音的初始化后,然后使用该接口的Speak函数将文本输出为语音。初始化过程为:int r = ::init(this->m_hWnd);if (! r) { AfxMessageBox ("Init fail");exit(1);}
调用Speak函数将预定的文本转为语音
CString m_strSpeak = "同学你好,欢迎你进入数据结构课程的学习";
::speak(m_strSpeak);
进行语音识别时,语音包是基于消息事件驱动的。开始语音识别以后,识别引擎一直在工作,侦听mic。在這一过程中,识别引擎调用CreateRecoContext( )函数获取上下文接口指针,此接口调用CreateGrammar()方法得到一个指向了自定义字典的接口指针,继而激活语法规则进行识别。一旦识别出语音,就通过发一个事先注册的事件来通知系统处理。在消息处理函数中添加需要的操作。
switch (sp_param->action)
{ case 506008:{执行浏览课件的操作};}
由于使用命令识别模式要识别的词语不多,识别引擎在一个非常小的范围内搜索,速度比较快,而且精确度也比较高,基本上能达到90%的正确率。
4 总结
基于智能机器人的教学系统的建立是一项复杂而又艰巨的工作,目前只是在实验范围内建立了基本框架,依然有很多的工作要完成。教学系统需要进一步的完善,教学系统的智能化还有待提高,但是可以看出,在当下教育改革的大环境下,将人工智能引入教学系统的理念将显示出越来越大的优势,给教育工作带来巨大的影响,因此非常值得我们进一步的研究和设计。
参考文献
[1] 金聪,刘金安.人工智能技术在计算机辅助教学中的应用与实现.计算机与信息技术.
[2] 夏邦贵,刘繁馨等.Visual C++ 数据库开发经典实例精解.北京:机械工业出版社.2006.5.
[3] 宋坤,刘锐宁,李伟明等.Visual C++ 开发技术大全.北京:人民邮电出版社.
[4] 王建华等.计算机辅助教学实用教程.北京:高等教育出版社.2003.
[5] 尤新华,李跃新.智能化教学系统中教学模块的设计与应用.湖北大学学报.2007(7)第29卷第三期.