摘要:语音识别技术的发展和广泛应用,使用户与计算机的对话方式不再仅仅局限在使用键盘或鼠标发送指令的方式。本文在visual basic 编程环境下使用Microsoft Speech SDK中的语音接口实现对计算机的语音控制。

关键字:Microsoft Speech SDK;语音识别;VB6.0

1  引言

随着计算机技术的飞速发展,用户与计算机对话的方式由机器语言指令,到图形用户界面,现发展到自然和谐的对话方式。其中语音交互则是其中的一个重要内容。

语音识别技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。根据识别的对象不同,语音识别任务大体可分为3类,即孤立词识别(isolated word recognition),关键词识别(或称关键词检出,keyword spotting)和连续语音识别。语音识别语法规则分为两种:听说式(Dictation)和命令式(Command And Control C&C)。本文介绍应用程序使用的是命令式。

2 语音识别程序开发方法

2.1开发工具

下载speech SDK 安装包:微软公司为语音识别提供了开发包(Microsoft speech SDK),此开发包包含了语音识别和语音合成引擎两部分,应用程序通过SAPI来进行语音识别和文本——语音转换。

执行安装:将下载下的文件解压并执行安装。

环境配置:创建VB工程,并引用Microsoft Speech Object Library类库。引用步骤为:在VB开发环境中,选择"工程"/"引用"命令,在"引用"对话框中选中Microsoft Speech Object Library复选框,如图2.1所示,单击"确定"按钮添加。

2.2语法规则的编写

语法规则是一个符号xml规则的文本文件,将计算机需要识别的命令列在该文件中,这个文件可以预先定义,也可以用代码动态生成,在这个程序中该文件是预先定义的。该语法规则如下:

<GRAMMAR LANGID="804">
<RULE TOPLEVEL="ACTIVE" Name="number" ID="1">
<L PROPNAME="number">
<P VAL="1">命令提示符</P>
<P VAL="2">记事本</P>
<P VAL="3">录音机</P>
<P VAL="5">音量</P>
<P VAL="6">开始</P>
<P VAL="7">你好</P>
</L></RULE> </GRAMMAR>

此语法可用记事本编写。为更快速,准确写好语法规则,可选用适当的编写工具,比如Hbuilder。语句<GRAMMAR LANGID="804">中的编号804为中文识别引擎使用编号。若要使用英文识别,则应使用编号809.在<p></p>之间为本程序中计算机识别的词汇。输入完毕保存为.xml文件即可。

2.3 程序实现

程序运行效果图如图2.2。

对着麦克风说“开始”,语音识别程序即做出响应,弹出对话框“执行开始程序”,并显示“开始”程序。对麦克风说“音量”,语音识别程序即做出响应,调出操作系统自带的“音量”程序……。通过语音控制调用“音量”程序的运行结果如图2.3所示。

在工程中的默认窗体Form1上添加一个TextBox控件,命名为Txt_Show,其MultiLine属性为TRUE。

制作语音识别程序首先需要创建语音识别的语法环境,然后再该环境中创建用于语音识别的语法对象并加载该语法对象所需的语音识别规则,最后激活语音识别对象。

激活语音识别对象后,语音识别对象的识别事件可以对计算机用户发出的声音做出响应,判断用户发出的命令并执行相应的操作。

(1)创建语音识别的语法环境。

使用Set语句创建SpSharedRecoContext类型对象,SpSharedRecoContext类型在SpeechLib命名空间内。创建代码如下:

Set RecoContext = New SpSharedRecoContext

(2)创建语音识别的语法对象。

创建语音识别语法对象通过使用SpSharedRecoContext类型对象的CreateGrammar()方法实现,代码如下:

Set Grammar = RecoContext.CreateGrammar(0)

说明:上面代码中的参数1用于指定语法ID。语法ID可以识别每个语法对象。尽管每个语法对象只能有一个标识符,但语法ID设置值仍然可以是不唯一的,其默认值是0。CreateGrammar()方法返回的类型为ISpeechRecoGrammar。

(3)加载语音识别规则。

进行语音识别需要加载语音识别规则,本程序使用预定义的语法规则。

Grammar.CmdLoadFormFile “G:\project\VB\sol.xml”,SLODynamic

(4)激活语音识别对象

激活语音识别对象通过使用ISpeechRecoGrammar类型对象的CmdSetRuleIDState()方法将语音规则状态设置为SGDSActive实现。代码如下:

Grammar. CmdSetRuleIDState 0,SGDSActive

(5)通过语音识别控制计算机。通过对语音指令的判断,执行相应的操作,代码如下:

Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, _
ByVal StreamPosition As Variant, _
ByVal RecognitionType As SpeechAudioFormatType, _
ByVal Result As ISpeechRecoResult _)
Dim strText As String
strText = Result.PhraseInfo.GetText(0, -1, True)
Text1.Text = strTextIf strText = "命令提示符" ThenShell "cmd", vbNormalFocusElseIf strText = "记事本" ThenShell "notepad.exe", vbNormalFocusElseIf strText = "录音机" ThenShell "sndrec32.exe", vbNormalFocusElseIf strText = "音量" ThenShell "SndVol.exe", vbNormalFocusElseIf strText = "开始" ThenMsgBox "执行开始程序"ElseIf strText = "你好" ThenMsgBox "你好,很高兴见到你"End If
End Sub

(5)调试和运行应用程序

通过调试运行该应用程序,对着麦克风说出命令xml文档中预定义的命令时程序正确识别后会调出相应的计算机程序。

3 结束语

以上代码在win10+VB6.0环境下调试通过。其他同学使用时也非常容易上手,操作简单,非常有意思。但仍存在如下问题:

  1. 只能对部分简单的命令做出响应:不能满足个性化需求。
  2. 语音信息量大:随意说话和认真说话时识别的时间和效率不同。
  3. 对发出命令者的普通话有要求:普通话说的好的用户,程序响应和识别速度快,普通话不太标准的用户识别效率非常低。
  4. 环境噪声和干扰对语音识别有严重影响。环境嘈杂时,若不佩戴耳麦,识别效率也是特别低。

4 参考文献

[1]王军,童强.VB6.0环境下的语音识别程序开发方法

[J].河北软件职业技术学院学报,2010(6):35-38.

基于VB环境下的语音识别程序开发方法相关推荐

  1. linux使用gcc实现扫雷,基于linux环境下扫雷应用程序

    基于linux环境下扫雷应用程序 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <网络操作系统>报告(应用程序开发) ...

  2. Linux上运行扫雷,基于linux环境下扫雷应用程序.docx

    总俶斜技誓魄 <网络操作糸统>掖告 (应用程序开发丿 题 目: 基于I inux平台GCC环境下扫雷应用程 序开发 姓 名: 李磊 学 院: 理学院 专 业: 网络工程 班 级: 092 ...

  3. Keils uVision5环境下STM32汇编语言程序开发

    目录 一.如何在MDK5中建立工程 1建立工程 1.1创建工程 1.2选择芯片STM32F103RC ​ 1.3运行环境选择,在CMSIS下选择CORE:Device下选择Startup 2.添加文件 ...

  4. 基于SDN环境下的DDoS异常攻击的检测与缓解--实验

    基于SDN环境下的DDoS异常攻击的检测与缓解--实验 基于SDN环境下的DDoS异常攻击的检测与缓解--实验 1.安装floodlight 2.安装sFlow-RT流量监控设备 3.命令行安装cur ...

  5. 基于Linux环境中C语言程序----Hello World

    文章目录 基于Linux环境中C语言程序----Hello World 前言 C语言的特点 在Linux环境中打印Hello World 基于Linux环境中C语言程序----Hello World ...

  6. 五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天

    音视频播放功能 <智能家居系列> 一.音频播放 1.Linux下的音频播放实现 2.实现步骤 二.语音播报信息 三.视频播放 1.素材准备 2.实现步骤 四.项目框架搭建 <智能家居 ...

  7. 基于keil环境下mm32f327单片机rtthread的移植

    基于keil环境下mm32f327单片机rtthread的移植 文章目录 基于keil环境下mm32f327单片机rtthread的移植 前言 一.所需资源 二.创建工程目录 三.复制所需文件到相应文 ...

  8. 五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第五天

    视频监控和家电控制 <智能家居系列> 一.视频监控基础 1.摄像头 2.v4l2 3.Linux下的摄像头使用流程 4.烧写程序到开发板 5.运行程序 (先插上摄像头) 二.视频监控功能 ...

  9. 基于Golang的CLI 命令行程序开发

    基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...

最新文章

  1. P1468 派对灯 Party Lamps(BIG 模拟)
  2. linux算法设计,嵌入式Linux平台下随机序列算法设计.doc
  3. 这篇被引用近4k次的论文教你如何正确的理解和使用相关系数!
  4. 用 Visual Studio 自动生成C/C++注释(Doxygen、XML)
  5. tidyr | 变量取值组合、缺失值处理、变量分列与合并
  6. java 中的wait notify
  7. python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
  8. 如何在Windows XP下安装Windows2000
  9. MPQ Storm库 源码分析 一
  10. HTML代码实现简易购物车-web前端教程
  11. 基于vivoY97的Adb驱动程序的安装
  12. 免费搭建私人云盘+内网渗透+不限速无限存储
  13. 谈谈PRNU 光响应非均匀性
  14. 手机网速正常电脑很慢_路由器WiFi速度正常,但电脑和手机上网速度慢怎么办?...
  15. 无所不能的NumPy:我用它弹奏出了CD音质的吉他名曲“爱的罗曼史”
  16. 王者战力接口(免费),附接口文档+小程序源码
  17. 桌面快捷方式小箭头隐藏与还原(亲测有效)
  18. ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明
  19. MyBatis中的resultMap两个association
  20. linux无法保存文件,Linux系统创建文件后无法保存

热门文章

  1. STM32F1与STM32CubeIDE编程实例-振动传感器驱动
  2. python获取当前设备所在地点位置
  3. dubbo消费端如何找到服务端对象,进行方法调用的
  4. 火鸟Firebird数据库的中文参考资料
  5. 浅谈Prim,Kruskal最小生成树算法
  6. (附源码)计算机毕业设计SSM智慧校园防疫管理平台
  7. 李白打酒 话说大诗人李白,一生好饮。幸好他从不开车。
  8. MySQL详解----------海量数据分页查询优化
  9. vuejs2.0 高级实战 全网稀缺 音乐WebAPP
  10. 对弧长和坐标的曲线积分