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

本文介绍如何使用微软语音包(speechsdk5.1)实现语音识别功能。通过详细步骤和示例代码展示了初始化语音设备、创建语法对象及监听语音消息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  首先说明,微软语音包(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交互了。呵呵~

 

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

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值