微软语音开发包的丁点使用

来源:互联网 发布:元数据系统作用 编辑:程序博客网 时间:2024/05/18 01:05

  首先说明,微软语音包(speech sdk 5.1)是很强大的,我对里面的功能就用过丁点。在最近使用的时候发现已经有5.3了,而昨晚意外的发现lingoes以及金山等词典工具都用到了它里面的TTS部分。

 

  首先是必须得安装SPEECH SDK 5.1 以及其附加的语音包的(日语和中文,英文在SDK包里有了)。安装完后最好能初始化下,设置下配置文件。就是简单的录制你的声音。

 

  然后在自己的工程里增加对库和头文件的引用。

  /** 包含语音头文件 */
#include "sapi.h"
#include "sphelper.h"
#pragma comment(lib,"sapi.lib");

 

这是我在自己工程的stdafx.h头文件里写入的引用。仅供参考。

 

然后就只要用到两个函数了。

    /**语音开发相关方法与成员*/
    void RecoEvent();
    void InitSR(HWND);

 

 

InistSR是用来初始化语音设备的。不过记得要在项目目录下有个CmdCtrl.xml文件存储命令。

具体代码如下:

 

 

然后就是RecoEvent函数了,用来监听语音消息的。里面有对应的接受到某个命令就该执行动作的地方。

我在里面放了个“前进”的命令。。。可以参考。

 

 

2个函数如果都嵌入好了,那就只剩激活语音了。激活了就OK了。

    ::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
    this->InitSR(this->m_Window.m_hWnd);

很简单的2句话,本来上面的初始化COM组件的我没写,这个地方让我捣鼓了2小时才意识到。基础功不扎实,罪过罪过。

 

另外在这里面会用到的数据成员是:

 

    CComPtr<ISpRecoContext>     m_cpRecoCtxt;
    CComPtr<ISpRecoGrammar>     m_cpDictationGrammar;
    CComPtr<ISpRecoGrammar>        m_cpCmdGrammar;
    CComPtr<ISpRecognizer>        cpRecoEngine;
    BOOL b_Cmd_Grammar;

 

宏变量是:

#define GID_DICTATION   0           // Dictation grammar has grammar ID 0
#define GID_CMD_GR      33333
#define WM_RECOEVENT    WM_USER+1

 

总共重新弄出语音来耗费了我一个周日。很笨吧我,呵呵。不过语音控制还是很好玩的。现在我的demo里有鼠标、键盘、摇杆以及语音控制了。可谓一个不错的IO交互了。呵呵~

 

希望对你有帮助。有问题欢迎探讨了。

 

 

 

原创粉丝点击