展会信息港展会大全

基于语音识别的IVR系统的设计与实现
来源:互联网   发布日期:2011-09-07 12:55:30   浏览:16764次  

导读: 4 语音识别模块的实现 语音识别系统的开发可以采用基于模板匹配的动态时间规整(DTW)、基于统计参数模型的隐马尔可夫模型(HMM),神经网络等技术,他们都是针对某些具体应用的,其模型参数的获得需要对大规模的样本进行学习,对于非特定人语音识别往往需要...

4  语音识别模块的实现
语音识别系统的开发可以采用基于模板匹配的动态时间规整(DTW)、基于统计参数模型的隐马尔可夫模型(HMM),神经网络等技术,他们都是针对某些具体应用的,其模型参数的获得需要对大规模的样本进行学习,对于非特定人语音识别往往需要采集数百人的语音样本,其工作量是相当大的。随着语音研究的不断发展,已经出现了众多的语音识别开发工具:如Microsoft Speech SDK,IBM ViaVoice等。他们都提供了语音识别和语音合成的二次开发平台,并且微软的Speech SDK是完全免费的,它具有识别率高,识别速度快,可移植性好,支持多种语言等优点。因此它被广泛应用于各个领域。

4.1  Microsoft Speech SDK 5.1简介
SAPI SDK是微软公司免费提供的语音应用开发工具包,这个SDK中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎(MCSR)以及微软的语音合成(TTS)引擎等等。目前的5.1版本一共可以支持3种语言的识别 (英语,汉语和日语)以及2种语言的合成(英语和汉语)。SAPI中还包括对于低层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及TTS管理等强大的设计接口。

语音识别的功能主要由一系列COM接口协调完成。其中主要的接口有下面这些:

IspRecognizer接口:用于创建语音识别引擎的实例,识别引擎有两种:独占引擎(InProcRecognizer)和共享引擎(SharedRecognizer)。独占的引擎对象是在本程序的进程中创建,只能由本应用程序使用,而共享的引擎是在一个单独的进程中创建,可以供多个应用程序共同使用。

IspRecoContext接口:主要用于接受和发送与语音识别消息相关的事件消息,装载和卸载识别语法资源

IspRecoGrammar接口:通过这个接口,应用程序可以载入并激活语法规则,而语法规则里定义了待识别的单词、短语和句子。通常语法规则有两种:听写语法(DictationGrammer)和命令控制语法(CommandandControlGrammer)。听写语法用于连续语音识别,可以识别出引擎词典中大量的词汇;命令控制语法用于识别用户自定义的词汇。

IspPhrase接口:通过这个接口,应用程序可以获得识别信息,如:如识别结果、识别的规则、语义标示和属性信息等。

IspAudioPlug接口:通过这个接口,应用程序可以将内存中的语音数据送到语音识别引擎,进行识别。

4.2  识别模块的具体实现
由于命令控制语法方式可以限制识别的词汇量,并且这种识别技术不需要对说话人事先进行训练,因此在实际应用中具有较高的鲁棒性和较高的识别效率。本系统的识别词汇包括:“车辆信息查询”、“驾驶证信息查询”和26个英文字母10个数字,我们首先编写了包含这些特定词汇的语法文件。

在使用接口函数前,首先调用CoInitialize(NULL)初始化COM对象,然后创建语音识别引擎、语法规则上下文和识别语法,并调用函数LoadCmdFromFile装载文法识别规则。微软识别引擎是通过SAPI由事件触发来通知上层的应用程序。可以调用SetInterest来注册自己感兴趣的事件。系统默认的事件为SPEI_RECOGNITION,该事件表明当前已有识别结果返回,这时上层应用程序可以通过调用ISpRecoResult接口的GetText方法获得识别结果。

赞助本站

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港