Speech_SDK语音识别系统

上传人:飞*** 文档编号:39930577 上传时间:2018-05-21 格式:DOCX 页数:4 大小:16.89KB
返回 下载 相关 举报
Speech_SDK语音识别系统_第1页
第1页 / 共4页
Speech_SDK语音识别系统_第2页
第2页 / 共4页
Speech_SDK语音识别系统_第3页
第3页 / 共4页
Speech_SDK语音识别系统_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Speech_SDK语音识别系统》由会员分享,可在线阅读,更多相关《Speech_SDK语音识别系统(4页珍藏版)》请在金锄头文库上搜索。

1、Speech SDK 5.1 微软语音识别分两种模式:文本识别模式和命令识别模式.此两种模式的主要区别,主要在于 识别过程中使用的匹配字典不同.前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字 典由 sdk 提供.适用于没有预定目标的随机听写之类的应用.同时因为词汇量大直接导致识 别的精度降低,识别速度较慢.后者的字典需要 开发者自己编写,就是你们所说的 xml 文件. xml 文件作为一种数据存储的方式,有一定的格式,定义了 sdk 需要确定的一些标签,和用以 匹配的词汇.这种方式由开发者定义词汇的数量,大大降低匹配过程中需要检索的词汇量,提 高了识别速度.同时因为侯选项极少,所以一般

2、不会识别错误.其缺点也是明显的:词汇量小,只 有预先输入字典的词汇可以被识别出来,所以一般用来作为常用命令的识别,方便用户操作, 代替菜单命令等. 利用微软 Speech SDK 5.1 在 MFC 中进行语音识别开发时的主要步骤,以 Speech API 5.1+VC6 为例: 1、初始化 COM 端口 一般在 CWinApp 的子类中,调用 CoInitializeEx 函数进行 COM 初始化,代码如下: :CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); / 初始化 COM 注意:调用这个函数时,要在工程设置(project settings

3、)-C/C+标签,Category 中选 Preprocessor,在 Preprocessor definitions:下的文本框中加上“,_WIN32_DCOM”。否则编 译不能通过。 2、创建识别引擎 微软 Speech SDK 5.1 支持两种模式的:共享(Share)和独享(InProc) 。一般情况下可 以使用共享型,大的服务型程序使用 InProc。如下: hr = m_cpRecognizer.CoCreateInstance(CLSID_SpSharedRecognizer);/Share hr = m_cpRecognizer.CoCreateInstance(CLSID_

4、SpInprocRecognizer);/InProc 如果是 Share 型,可直接进到步骤 3;如果是 InProc 型,必须使用 ISpRecognizer:SetInput 设置语音输入。如下: CComPtr cpAudioToken; /定义一个 token hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, /建立默认 的音频输入对象 if (SUCCEEDED(hr) hr = m_cpRecognizer-SetInput(cpAudioToken, TRUE); 或者: CComPtr cpAudio; /定义一个音频对象

5、 hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, /建立默认的 音频输入对象 hr = m_cpRecoEngine-SetInput(cpAudio, TRUE);/设置识别引擎输入源 3、创建识别上下文接口 调用 ISpRecognizer:CreateRecoContext 创建识别上下文接口(ISpRecoContext) ,如 下: hr = m_cpRecoEngine-CreateRecoContext( 4、设置识别消息 调用 SetNotifyWindowMessage 告诉 Windows 哪个是我们的识别消息

6、,需要进行处理。 如下: hr = m_cpRecoCtxt-SetNotifyWindowMessage(m_hWnd, WM_RECOEVENT, 0, 0); SetNotifyWindowMessage 定义在 ISpNotifySource 中。 5、设置我们感兴趣的事件 其中最重要的事件是”SPEI_RECOGNITION“。参照 SPEVENTENUM。代码如下: const ULONGLONG ullInterest = SPFEI(SPEI_SOUND_START) | SPFEI(SPEI_SOUND_END) | SPFEI(SPEI_RECOGNITION) ; hr

7、= m_cpRecoCtxt-SetInterest(ullInterest, ullInterest); 6、创建语法规则 语法规则是识别的灵魂,必须要设置。分为两种,一种是听说式(dictation) ,一种是命令 式(command and control-C if (SUCCEEDED(hr) hr = m_cpDictationGrammar-LoadDictation(NULL, SPLO_STATIC);/加载词典 /C 然后利用 ISpRecoGrammar:LoadCmdxxx 加载语法,例如从 CmdCtrl.xml 中加载: WCHAR wszXMLFile20=L“;

8、MultiByteToWideChar(CP_ACP, 0, (LPCSTR)“CmdCtrl.xml“ , -1, wszXMLFile, 256);/ANSI 转 UNINCODE hr = m_cpCmdGrammar-LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); 注意:C/dictation hr = m_cpCmdGrammar-SetRuleState( NULL,NULL,SPRS_ACTIVE );/C CSpEvent event; switch (event.eEventId) case SPEI_RECOGNITION: /识别出了语

9、音输入 m_bGotReco = TRUE; static const WCHAR wszUnrecognized = L“; CSpDynamicString dstrText; /取得识别结果 if (FAILED(event.RecoResult()-GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE , BSTR SRout; dstrText.CopyToBSTR( CString Recstring; Recstring.Empty(); Recstring = SRout; /进一步处理 . break; 9、释放创建的引擎、识别上下文对象、语法等。调用相应的 Release 函数即可。 至此最简单的识别就完成了。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号