Windows编程-语音识别技术实现程序语音控制
#程序员干货站#语音识别技术是当前程序开发的基本技术之一,普遍应用于各类程序开发中,尤其在移动端程序开发方面应用则更为广泛。广义的语音识别技术包括文字转声音及声音转文字。本文主要针对之前开发的win form的桌面计时器进一步添加语音控制功能需求为背景,对语音识别相关技术进行说明。
需求描述
在上一篇文章中,主要介绍了基于windows的桌面应用小程序倒计时器的开发,程序在运行过程中出现了一些新的需求,需要在程序启动时接收用户语音命令自动启动倒计时功能,基于以上需求,设计采用微软语音识别技术实现语音控制功能。倒计时程序界面如下:
如上图所示,在原先版本基础上增加了语音控制选项,待程序启动后可接收语音开始指令,执行计时操作。计时主页面如下:
语音识别相关技术
本例设计采用微软提供的语音识别API进行功能设计与实现,目前微软Speech SDK已经随操作系统发布。如微软office等均可使用SAPI进行语音交互操作,这一特点也是我们选择使用微软语音识别技术的主要原因之一。
微软语音技术使用描述如上图,主要技术包括语音识别、文字转语音、语音合成等相关技术及业务模型,本例主要使用语音识别与文字转语音两项服务。相关技术介绍如下:
1、语音识别Recognition
语音识别主要是通过用户音频输入设备获取声音,调用对应API接口方法实现语音的识别,并输出识别之后的文字信息。主要借助SAPI提供的SpeechRecognitionEngine接口类进行语音识别相关操作。该接口类说明如上所示,其使用主要方法步骤描述如下:
2、文字转语音TTS
文字转语音功能主要用于实现文字的自动语音播放功能,文字转语音主要借助TTS引擎实现。通过使用微软提供的SpeechSynthesizer接口类,实现语音的自动播放功能。文字转语音实现主要步骤描述如下:
3、多线程技术Thread
由于在执行语音命令获取之后需要对识别的语音内容进行实时判断,并根据内容指令的不同编写业务逻辑实现程序的操作。因此需要通过恒为真的循环语句判断判断内容。为保证程序的性能需要单独开一个新的线程处理该循环问题,因为是死循环,如果放到主线程会影响到程序的性能。开启一个新线程主要包括两步:
编码及测试Demo
在明确所需技术之后为优化所编写的倒计时器,实现语音识别与语音播放的支持,首先编写了测试用Demo对两个功能进行了编程实现与测试,测试Demo如下:
该测试Demo主要包括两个按钮,其中左侧测试语音播放,右侧测试语音指令功能,部分实现代码如下:
执行以上操作会自动播放给出的文字提示音,语音识别使用代码如下:
在完成语音识别实例化及相关属性设置后,可进一步定义处理方法,如下:
该函数中将获取的Text赋值给全局变量mm,下一步需要在线程中处理获取的值,线程部分需要创建线程并编写处理方法。代码如下:
本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。本例题完整代码素材可提供,如需求请关注、私信索取。期待大家关注!其他相关文章链接如下: