打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
微软语音包的安装及使用 Microsoft Speech SDK
userphoto

2023.08.12 湖北

关注

    需要简单的语音识别功能,大部分语音平台都是收费的,并且依赖网络,简单的识别有语音识别芯片LD3320,测试了一下效果不是很好,测试一下微软自带的SDK。

    先下载了5.1版本,用QT,修改了好多,编译过了,链接失败。5.1版本只有32位的,没有64位的。直接放弃。更换11。跟换11的X64版本后,11版本的库对QT友好多了,可以直接编译过,链接成功。

    找到网上的例子,在QT里面修改一下,CoCreateInstance执行失败,搞了好久才明白还要装一个SpeechPlatformRuntime.msi。装上runtime后,CoCreateInstance执行好了。但是还不能发声,pSpVoice->Speak返回错误,网上查了一堆都是没用的。后来想到在5.1上下了语音包但是不知道怎么用,11上会不会也有类似的语音包。官网还真有。下载安装。终于可以发声了。环境应该配置好了。后面可以搞识别了。

安装步骤:

1 安装speech sdk https://www.microsoft.com/en-us/download/details.aspx?id=27226

2 安装runtime 在speech sdk安装目录下面Microsoft SDKs\Speech\v11.0\Redist\SpeechPlatformRuntime.msi

3 安装语音包 https://download.microsoft.com/download/4/0/D/40D6347A-AFA5-417D-A9BB-173D937BEED4/MSSpeech_TTS_zh-CN_HuiHui.msi

代码:

头文件定义两个变量(由于speech sdk和opencv有的宏冲突,头文件类型用void替换原类型)

    void * pSpVoice;
    void *pSpToken;

初始化:

::CoInitialize(NULL);//初始化语音环境
    if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice)))
 
    {
        qDebug() << "Failed to create instance of ISpVoice!";
        qDebug() << GetLastError();
        return;
    }
    LPWSTR   ppszCoMemTokenId;
 
    IEnumSpObjectTokens *pSpEnumTokens = NULL;
   if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens)))
   {
       // 依次获取每个token并朗读字符串
       while (SUCCEEDED(pSpEnumTokens->Next(1, (ISpObjectToken**)&pSpToken, NULL)) && ((ISpObjectToken*)pSpToken) != NULL)
       {
           HRESULT ret = 0;
           ret = ((ISpObjectToken*)pSpToken)->GetId(&ppszCoMemTokenId);
           if(ret != S_OK)
           {
               qDebug() << "GetId" << ret;
           }
           ((ISpVoice*)pSpVoice)->SetVoice((ISpObjectToken*)pSpToken);
           break;
       }
   }

析构函数

    ((ISpVoice*)pSpVoice)->Release(); //释放语音变量
    ((ISpObjectToken*)pSpToken)->Release();   // 释放token

发声

 ret = ((ISpVoice*)pSpVoice)->SetVolume(100);
    ret = ((ISpVoice*)pSpVoice)->Speak(L"hello,今天的天气真好", SPF_ASYNC, NULL);//执行语音变量的Speek函数,这个函数用来读文字。

注意设置语音时,如果设置了英文就不能读汉子了。尽量只装中文的。如果装了的话可以在注册表里删掉或时判断一下你想用的。

另外包含头文件时需要加


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微软TTS语音引擎编程入门
Hello World by Microsoft Speech SDK 5.1 - Vis...
微软TTS语音引擎实现文本朗读
VC-SAPI-TTS
【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
C++语音识别接口快速入门(Microsoft Speech SDK)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服