欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    微软Speech SDK1开发语音识别系统主要步骤.docx

    • 资源ID:3514409       资源大小:38.85KB        全文页数:5页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微软Speech SDK1开发语音识别系统主要步骤.docx

    微软Speech SDK1开发语音识别系统主要步骤微软语音识别分两种模式:文本识别模式和命令识别模式.此两种模式的主要区别,主要在于识别过程中使用的匹配字典不同.前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字典由sdk提供.适用于没有预定目标的随机听写之类的应用.同时因为词汇量大直接导致识别的精度降低,识别速度较慢.后者的字典需要 开发者自己编写,就是你们所说的xml文件.xml文件作为一种数据存储的方式,有一定的格式,定义了sdk需要确定的一些标签,和用以匹配的词汇.这种方式由开发者定义词汇的数量,大大降低匹配过程中需要检索的词汇量,提高了识别速度.同时因为侯选项极少,所以一般不会识别错误.其缺点也是明显的:词汇量小,只有预先输入字典的词汇可以被识别出来,所以一般用来作为常用命令的识别,方便用户操作,代替菜单命令等. 利用微软Speech SDK 5.1在MFC中进行语音识别开发时的主要步骤,以Speech API 5.1+VC6为例: 1、初始化COM端口 一般在CWinApp的子类中,调用CoInitializeEx函数进行COM初始化,代码如下: :CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); / 初始化COM 注意:调用这个函数时,要在工程设置->C/C+标签,Category中选Preprocessor,在Preprocessor definitions:下的文本框中加上“,_WIN32_DCOM”。否则编译不能通过。 2、创建识别引擎 微软Speech SDK 5.1 支持两种模式的:共享和独享。一般情况下可以使用共享型,大的服务型程序使用InProc。如下: hr = m_cpRecognizer.CoCreateInstance(CLSID_SpSharedRecognizer);/Share hr = m_cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);/InProc 如果是Share型,可直接进到步骤3;如果是InProc型,必须使用 ISpRecognizer:SetInput 设置语音输入。如下: CComPtr<ISpObjectToken> cpAudioToken; /定义一个token hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, &cpAudioToken); /建立默认的音频输入对象 if (SUCCEEDED(hr) hr = m_cpRecognizer->SetInput(cpAudioToken, TRUE); 或者: CComPtr<ISpAudio> cpAudio; /定义一个音频对象 hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);/建立默认的音频输入对象 hr = m_cpRecoEngine->SetInput(cpAudio, TRUE);/设置识别引擎输入源 3、创建识别上下文接口 调用 ISpRecognizer:CreateRecoContext 创建识别上下文接口,如下: hr = m_cpRecoEngine->CreateRecoContext( &m_cpRecoCtxt ); 4、设置识别消息 调用 SetNotifyWindowMessage 告诉Windows哪个是我们的识别消息,需要进行处理。如下: 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 = m_cpRecoCtxt->SetInterest(ullInterest, ullInterest); 6、创建语法规则 语法规则是识别的灵魂,必须要设置。分为两种,一种是听说式,一种是命令式。首先 利用ISpRecoContext:CreateGrammar 创建语法对象,然后加载不同的语法规则,如下: /dictation hr = m_cpRecoCtxt->CreateGrammar( GIDDICTATION, &m_cpDictationGrammar ); if (SUCCEEDED(hr) hr = m_cpDictationGrammar->LoadDictation(NULL, SPLO_STATIC);/加载词典 /C&C hr = m_cpRecoCtxt->CreateGrammar( GIDCMDCTRL, &m_cpCmdGrammar); 然后利用ISpRecoGrammar:LoadCmdxxx 加载语法,例如从CmdCtrl.xml中加载: WCHAR wszXMLFile20=L"" MultiByteToWideChar(CP_ACP, 0, (LPCSTR)"CmdCtrl.xml" , -1, wszXMLFile, 256);/ANSI转UNINCODE hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); 注意:C&C时,语法文件使用xml格式,参见Speech SDK 5.1 中的 Designing Grammar Rules。简单例子: <GRAMMAR LANGID="804"> <DEFINE> <ID NAME="CMD" VAL="10"/> </DEFINE> <RULE NAME="COMMAND" ID="CMD" TOPLEVEL="ACTIVE"> <L> <p>你</P> <p>我</p> <p>他</p> </L> </RULE> </GRAMMAR> LANGI*="804"代表简体中文,在<*>.</*>中增加命令。 7、在开始识别时,激活语法进行识别 hr = m_cpDictationGrammar->SetDictationState( SPRS_ACTIVE );/dictation hr = m_cpCmdGrammar->SetRuleState( NULL,NULL,SPRS_ACTIVE );/C&C 8、获取识别消息,进行处理 截获识别消息,然后处理。识别的结果放在CSpEvent的ISpRecoResult 中。如下: USES_CONVERSION; CSpEvent event; switch (event.eEventId) case SPEI_RECOGNITION: /识别出了语音输入 m_bGotReco = TRUE; static const WCHAR wszUnrecognized = L"<Unrecognized>" CSpDynamicString dstrText; /取得识别结果 if (FAILED(event.RecoResult->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE ,&dstrText, NULL) dstrText = wszUnrecognized; BSTR SRout; dstrText.CopyToBSTR(&SRout); CString Recstring; Recstring.Empty; Recstring = SRout; /进一步处理 . break; 9、释放创建的引擎、识别上下文对象、语法等。调用相应的Release函数即可。 至此最简单的识别就完成了。

    注意事项

    本文(微软Speech SDK1开发语音识别系统主要步骤.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开