microsoft speech语音识别技术,语音朗读技术概述

    Speech SDK是以COM接口的方式提供服务的。

    Speech Recognition:

    语音识别编程涉及IsRecognizer,IsRecoContest/和IspRecoGrammar等多个语音识别引擎接口。

    类中定义3个借口指针m_cpReconEngine,m_cpRecoCtext和m_cpDictationGrammer,分别用于引用语音识别引擎的三个重要的接口IspRecognizer,IspRecoContext和IspRecoGrammar。

    初始化函数Initialize设定了语音识别的基本工作环境。包括引擎,识别上下文,语法,音频和时间等的初始化。

    释放函数Destroy被类的析构函数调用,释放了类所引用的所有接口。

    函数Start和Stop用来控制开始和停止接受及识别语音。它们通过引擎接口SetRecoState方法实现函。

    函数GetText是获取从语音中已识别出的文字的关键,应该在响应识别引擎事件/消息的响应函数中调用。

    首先声明一下,以下代码不是本人自己所写,也是好不容易搜到一些资料,给大家分享一下,帮助那些急需要这些资料的朋友们,希望那位前辈不要介意。

    在相应的头文件里加上这些数据:

#include <sphelper.h>

#define GID_DICTATION   0          

// Dictation grammar has grammar ID 0

#define GID_CMD_GR      33333

#define WM_RECOEVENT    WM_USER+1

在定义的类里添加以下方法和数据:

void RecoEvent();

void InitSR();

BOOL b_initSR;                        //Have init the SR engine?

BOOL b_Dic_Grammar;                    //is the Dic Grammar active?

BOOL b_Cmd_Grammar;                   //is the Cmd Grammar active?

BOOL m_bInSound;

BOOL m_bGotReco;

CComPtr<ISpRecoContext>     m_cpRecoCtxt;

CComPtr<ISpRecoGrammar>     m_cpDictationGrammar;

CComPtr<ISpRecoGrammar>           m_cpCmdGrammar;

CComPtr<ISpRecognizer>          cpRecoEngine;

CString   m_inputv;

//以下是响应函数:

afx_msg void OnStartText();

afx_msg void OnStartCMD();

在类的实现里要写以下数据:

m_inputv = _T("");

InitSR()

{             //SR Init

   m_bGotReco=FALSE;

   m_bInSound=FALSE;

   HRESULT hr = S_OK;   

  hr = cpRecoEngine.CoCreateInstance(CLSID_SpInprocRecognizer);

//创建识别引擎COM实例   

  if( SUCCEEDED( hr ) )

   {

       hr = cpRecoEngine->CreateRecoContext( &m_cpRecoCtxt );  

//创建识别上下文对象

    }

   else

         MessageBox("error1");

    // Set recognition notification for dictation

    if (SUCCEEDED(hr))

    {

        hr = m_cpRecoCtxt->SetNotifyWindowMessage( m_hWnd, WM_RECOEVENT, 0, 0 );//设置消息机制

    }

   else

         MessageBox("error2");

    if (SUCCEEDED(hr))

    {

        const ULONGLONG ullInterest = SPFEI(SPEI_RECOGNITION); //我们关心的事件

        hr = m_cpRecoCtxt->SetInterest(ullInterest, ullInterest);

    }

   else

         MessageBox("error3");

    // create default audio object

    CComPtr<ISpAudio> cpAudio;

    hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);//建立默认的音频输入对象

    //设置识别引擎输入源

    hr = cpRecoEngine->SetInput(cpAudio, TRUE);

   b_initSR = TRUE;

   //创建听写模式的语法对象

   hr = m_cpRecoCtxt->CreateGrammar( GID_DICTATION, &m_cpDictationGrammar );

   if  (SUCCEEDED(hr))

   {

         //加载词典

         hr = m_cpDictationGrammar->LoadDictation(NULL, SPLO_STATIC);

   }

   else

         MessageBox("error4");

   if (FAILED(hr))

   {

         m_cpDictationGrammar.Release();

         MessageBox("start SR error");

   }

   //创建命令模式的语法对象

   hr = m_cpRecoCtxt->CreateGrammar( GID_CMD_GR, &m_cpCmdGrammar);

   if( FAILED(hr) )

   {

         MessageBox("Error CreateGrammar","Error",MB_OK);       

   }   

   WCHAR wszXMLFile[20]=L"";

   //ANSI转UNINCODE

   MultiByteToWideChar(CP_ACP, 0, (LPCSTR)"CmdCtrl.xml"  , -1, wszXMLFile, 256);

   //从文件中读取语法词典

   hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);

   if (FAILED(hr))

   {

         MessageBox("Error LoadCmdFromFile","Error",MB_OK);

   }

}

   这些只是语音初始化的函数,如果需要其他的信息,可与我联系,我的邮箱是yincheng01@163.com


原文链接: http://blog.csdn.net/yincheng01/article/details/3584561

转载于:https://my.oschina.net/junwong/blog/48034

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值