利用微软Speech SDK识别WAV文件的问题?

pyundeng 2007-04-24 04:12:52
大家好,我参考了《Using Wav File Input with Speech Recognition Engines》使用wav文件作为SR引擎的输入。我在程序中创建了一个按钮,并在按钮事件中载入wav文件。但是,只有第一个文件被识别到,换句话说,SR引擎只识别了一次,返回了一个SPEI_RECOGNITION或SPEI_FALSE_RECOGNITION消息,然后再点击按钮时SR引擎并不工作,如何解决这个问题?

我的代码如下:
...
CComPtr<ISpRecoGrammar> m_cpCmdGrammar;
CComPtr<ISpRecoContext> m_cpRecoCtxt;
CComPtr<ISpRecognizer> m_cpEngine;
CComPtr<ISpStream> m_cpSpStream;
...
BOOL CSRTestDlg::OnInitDialog()
{
...
InitSAPI(); //
...
}

HRESULT CSRTestDlg::InitSAPI()
{
...
hr = m_cpSpStream.CoCreateInstance(CLSID_SpStream);
//check hr
hr = m_cpEngine.CoCreateInstance(CLSID_SpInprocRecogniz er);
//check hr
hr = m_cpEngine->CreateRecoContext( &m_cpRecoCtxt );
//check hr
hr = m_cpRecoCtxt->SetNotifyWindowMessage( GetSafeHwnd(),
WM_RECOEVENT, 0, 0 );
//check hr
hr = m_cpRecoCtxt->SetInterest( SPFEI(SPEI_RECOGNITION)
| SPFEI(SPEI_FALSE_RECOGNITION),SPFEI(SPEI_RECOGNITI ON)
| SPFEI(SPEI_FALSE_RECOGNITION) );
//check hr
hr = m_cpRecoCtxt->CreateGrammar(GRAMMARID1, &m_cpCmdGrammar);
//check hr
hr = m_cpCmdGrammar->LoadCmdFromResource(...)
//check hr
hr = m_cpCmdGrammar->SetRuleState(NULL, NULL, SPRS_ACTIVE );
//check hr
...
}
...
void CSRTestDlg::OnButton1()
{
...
m_cpEngine->SetRecoState(SPRST_INACTIVE);
m_cpSpStream->BindToFile(FILENAME, SPFM_OPEN_READONLY,
NULL, NULL, NULL);
m_cpEngine->SetInput(m_cpSpStream, TRUE);
m_cpEngine->SetRecoState(SPRST_ACTIVE);
...
}
...全文
707 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyu2202863 2008-08-06
  • 打赏
  • 举报
回复
BOOL Speech::SpeakFromWave(LPCTSTR szWavePath)
{
CComPtr<ISpStream> cpWavStream;

//USES_CONVERSION;
//wcscpy( szwWavFileName, T2W( szAFileName ) );//从ANSI将WAV文件的名字转换成宽字符串

//使用sphelper.h 提供的这个函数打开 wav 文件,并得到一个 IStream 指针
HRESULT hr = SPBindToFile( szWavePath, SPFM_OPEN_READONLY, &cpWavStream );
if( SUCCEEDED( hr ) )
{
m_Speak->SpeakStream( cpWavStream, SPF_ASYNC, NULL );//播放WAV文件
}

return TRUE;
}
Amuro1987218 2008-08-06
  • 打赏
  • 举报
回复
有没有什么彻底停止当前识别的方法调用?
liuhaihui521 2008-08-06
  • 打赏
  • 举报
回复
帮顶!
ongzi 2007-04-30
  • 打赏
  • 举报
回复
帮顶
pyundeng 2007-04-25
  • 打赏
  • 举报
回复
有人会吗?帮帮忙啊~~
CathySun118 2007-04-24
  • 打赏
  • 举报
回复
不会,帮顶

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧