语音系统前端—利用SAPI进行声音识别与发声
来源:互联网 发布:jsonarray清空数据 编辑:程序博客网 时间:2024/04/29 20:05
在前一章,自然语言问答系统的构造中将整个分为7大模块。这里讲解语音识别与发声模块。
在现有的技术中,windows平台能比较快速上手的应该就是微软的SAPI了。
SAPI中提供的两个主要接口是:
1.SR(Speech Recognition),能直接将语音信号转化成文字;
2.TTS(Text-To-Speech),能直接将文字读出来。(当然,你需要有语音包)
部分测试代码如下:
//语音识别的初始化函数//主要是创建识别器、上下文环境等HRESULT InitializeSpeech(){HRESULT hr=E_FAIL;if (SUCCEEDED(hr = ::CoInitialize(NULL))){/****///自己加一个recognizer,避免对系统自带语音的使用hr=cpReconizer.CoCreateInstance(CLSID_SpInprocRecognizer);if(FAILED(hr)){printf("Recognizer创建失败!");//return;}CComPtr<ISpObjectToken> cpAudioToken; hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, &cpAudioToken); //建立默认的音频输入对象if (SUCCEEDED(hr)){hr = cpReconizer->SetInput(cpAudioToken, TRUE);}hr=cpReconizer->CreateRecoContext(&cpRecoCtxt);/**///hr = cpRecoCtxt.CoCreateInstance(CLSID_SpSharedRecoContext);if(SUCCEEDED(hr)){hr = cpRecoCtxt->GetVoice(&cpVoice);}//设置播放音量和速度cpVoice->SetVolume(100);cpVoice->SetRate(3);return (cpRecoCtxt && cpVoice &&SUCCEEDED(hr=LoadGrammarFile())&&SUCCEEDED(hr = cpGrammar->SetRuleState(NULL, NULL, SPRS_ACTIVE)) &&SUCCEEDED(hr = cpRecoCtxt->SetInterest(SPFEI(SPEI_RECOGNITION), SPFEI(SPEI_RECOGNITION))) &&SUCCEEDED(hr = cpRecoCtxt->SetNotifyWin32Event()) &&SUCCEEDED(hr = cpRecoCtxt->SetAudioOptions(SPAO_RETAIN_AUDIO, NULL, NULL)));}return hr;}
//在离线模式下//在xml进行匹配找到相应的字符串void ProcessSpeech(){const float ConfidenceThreshold = 0.3f;SPEVENT curEvent;ULONG fetched=0;HRESULT hr=S_OK;cpRecoCtxt->GetEvents(1,&curEvent,&fetched);while(fetched>0){switch(curEvent.eEventId){case SPEI_RECOGNITION:if(SPET_LPARAM_IS_OBJECT==curEvent.elParamType){ISpRecoResult *result=reinterpret_cast <ISpRecoResult*>(curEvent.lParam);SPPHRASE* pPhrase=NULL;hr=result->GetPhrase(&pPhrase);if(SUCCEEDED(hr)){if ((pPhrase->pProperties != NULL) && (pPhrase->pProperties->pFirstChild != NULL)){const SPPHRASEPROPERTY* pSemanticTag = pPhrase->pProperties->pFirstChild;//直接将xml中tag识别的值取出来printf("读取到的信息是:.%s.",pSemanticTag->pszValue);//调用相应的反馈函数DoAction(pSemanticTag->pszValue);}::CoTaskMemFree(pPhrase);}}break;}cpRecoCtxt->GetEvents(1,&curEvent,&fetched);}return;}
0 0
- 语音系统前端—利用SAPI进行声音识别与发声
- 利用SAPI对WAV文件进行语音识别
- 利用微软的SAPI进行语音合成
- c++ 用微软SAPI进行实时语音识别
- SAPI 语音识别 Grammar的设置
- window7 语音识别开发(sapi)
- 语音识别 微软语音技术SAPI语音编程初步
- FrontEnd API 与语音识别前端处理
- SAPI 5.1 语音合成 和 语音识别 [C#][1]
- 语音识别 VC++基于微软语音引擎SAPI开发语音识别总结
- C#调用SAPI实现语音识别的两种方法
- C#调用SAPI实现语音识别的两种方法
- C#调用SAPI实现语音识别的两种方法
- 鲁棒性语音识别系统设计与实现
- 浅析如何利用JavaScript进行语音识别_javascript技巧
- 利用HTK快速建立一个语音命令识别系统
- 利用HTK快速建立一个语音命令识别系统
- # A31S android 系统修改声音播放策略,HDMI发声
- Python 多线程(threading模块)
- php如何把日期转换成秒
- 计算所汉语词性标记集
- 2014版tomcat7配置管理员帐号密码
- EL与JSTL笔记小结
- 语音系统前端—利用SAPI进行声音识别与发声
- 详解用phpnow搭建本地环境安装dedecms
- 纠正对Fragment Transaction BackStack的误解
- 如何截获所有Sql命令?
- 【Processing入门】第十章:3D
- 织梦dedecms站内搜索词语包含大写字母、tag标签包含大写字母出错的解决办法
- iOS开发:第一个iOS程序,加法计算器
- 在真实的目标机上上run一个test
- 一元二次方程求解