winform-利用微软语音识别类库System.Speech.Recognition,无法异步调用识别引擎。

问题描述

利用微软语音识别类库System.Speech.Recognition,无法异步调用识别引擎。

C# Winform项目中,利用微软语音识别类库System.Speech.Recognition,可以正常识别语音,并异步调用语音的识别引擎。
目前遇到的问题是,在项目中有一个“视频监控”栏目。在“视频监控”正常运行的情况下,如果通过语音讲话就无法正常识别语音且不执行异步调用语音的识别引擎。

请问,如何实现在“视频监控”正常运行的情况下,可以正常识别语音,并异步调用语音的识别引擎。请帮忙看看怎么修改下面的代码:

代码:

private void FrmApp_Load(object sender, EventArgs e)
{

        this.Hide();

        TheadPackage();

        Thread m_trdSpeech = new Thread(doSpeechWork);//创建"语音识别"线程
        m_trdSpeech.Start();

    }

void TheadPackage()
{
Thread t_thread = new Thread(threadPro);//创建运行"视频监控"线程

t_thread.Start();
}

void threadPro()
{
try
{
MethodInvoker MethInvo = new MethodInvoker(ShowFrom);
BeginInvoke(MethInvo);
}
catch (Exception ex)
{
LLog.Log(string.Format("threadPro:{0}terrmsg:{1}", this.ToString(), ex.Message));
}
}

void ShowFrom()
{
frmmontor = new FrmMonitor(); //启动运行"视频监控"的窗体
frmmontor.Show();
}

//语音识别
void doSpeechWork()
{
try
{
SRE.SetInputToDefaultAudioDevice();

GrammarBuilder GB = new GrammarBuilder();
GB.Append("选择");
GB.Append(new Choices(new string[] { "红色", "绿色" }));
Grammar G = new Grammar(GB);
G.SpeechRecognized += new EventHandler(G_SpeechRecognized);
SRE.LoadGrammar(G);
SRE.RecognizeAsync(RecognizeMode.Multiple); //<=======异步调用识别引擎,允许多次识别

        }
        catch (Exception ex)
        {
            LLog.Log(string.Format("threadPro:{0}terrmsg:{1}", this.ToString(), ex.Message));
        }
    }

//目前的问题是,在运行“视频监控”的情况下,无法异步调用识别引擎这个方法
void G_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
//Text = e.Result.Text;
switch (e.Result.Text)
{
case "选择红色":
BackColor = Color.Red;
break;
case "选择绿色":
BackColor = Color.Green;
break;
}
}

解决方案

通过语音打开了“视频监控“,在“视频监控“运行情况下,是不是无法异步调用识别引擎,所以导致无法识别语音。
请各位高手帮忙看看,谢谢!

时间: 2024-09-17 02:14:20

winform-利用微软语音识别类库System.Speech.Recognition,无法异步调用识别引擎。的相关文章

利用微软软件语音识别类库System.Speech.Recognition,无法识别语音

问题描述 利用微软软件语音识别类库System.Speech.Recognition,无法识别语音 利用微软的语音识别类库做语音识别,用带麦克风的耳机在讲话测试时. 讲"选择红色",窗体就变成红色,讲"选择绿色",窗体就变成绿色. 目前遇到一个问题,前段时间测试时,可以响应我的语音的选择. 但这几天测试时,不管怎么讲,这么就不响应我的语音的选择了呢? 请问微软的语音识别率怎么样?大家有没有遇到类似的问题,这么解决下,谢谢! 附代码: private SpeechRe

System.speech语音识别 识别多国语言的问题

问题描述 System.speech语音识别 识别多国语言的问题 Windows系统语言为英文,语音识别语言为中文,语音根本无法识别.有没有方法在系统语言不变的情况下,实现中文的语音识别. 解决方案 Speech.Recognition(语音识别)

winform-引用.net中的System.speech包,但是在程序运行时报错。

问题描述 引用.net中的System.speech包,但是在程序运行时报错. C# Winform项目中,利用Windows类库,引用.net中的System.speech语音控制包. 在程序运行执行到"SRE.SetInputToDefaultAudioDevice();"报错,提示"值不在预期的范围内.". 但是将工程中Program.cs文件的Main()方法上面的[STAThread] 这个关键字去掉,程序正常运行.但是将[STAThread]去掉会导致本

Asterisk speech recognition 0.4发布 语音识别的AGI脚本

Asterisk是一个语音识别的AGI脚本,使用谷歌语音识别引擎,为了渲染语音到文本并返回到dialplan作为一个asterisk 通道变量. Asterisk speech recognition 0.4该版本增加了一个用户定义超时的选项,删除返回文本字符串中的数字,并更新文档之间的空格. 软件信息:http://zaf.github.com/asterisk-speech-recog/ 下载地址:http://cloud.github.com/downloads/zaf/asterisk-

窗体-winform sunlightdface.dll 这个类库谁用过啊 求指导

问题描述 winform sunlightdface.dll 这个类库谁用过啊 求指导 使用sunlightdface.dll 开启摄像头,想关闭,可是只有一个UsbVideo_EndAll()方法,它关闭了所有窗体,我只想关闭摄像头 该如何实现呢? 解决方案 看下它的文档中是怎么说的.这个控件是第三方的

com组件-利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面。

问题描述 利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面. 利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面,需要点击用户头像才可以进入用户,如何实现直接连接而不需要进行选择. 解决方案 请参考:http://blog.csdn.net/chaozi2008/article/details/8591109

c# System.Speech.Synthesis下的,speechsynthesizer语音报错

问题描述 c# System.Speech.Synthesis下的,speechsynthesizer语音报错 我是 这么写的 SpeechSynthesizer speech = new SpeechSynthesizer(); speech.speak(大家好"); 我在我电脑上就可以实现正常的语音,可到有些电脑上就报错, 提示的错误是: 语音系统不正确或者没有安全可用的语音系统. 最为初学者,我用了最笨拙的方法去检测,我打开它电脑放音乐是可以得.我个人的判断是,可能.net 4.0的环境包

使用System.Speech.Synthesis.SpeechSynthesizer.Speak()朗读时,不能终止朗读

问题描述 当使用System.Speech.Synthesis.SpeechSynthesizer.Speak()朗读较长文本时,中途想停止其朗读,怎么办?谢谢. 解决方案 解决方案二:System.Speech.Synthesis.SpeechSynthesizer.Pause()解决方案三:http://msdn2.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.pause.aspx解决方案四:要用线

System.Speech.Synthesis.Prompt有什么作用?

问题描述 MSDN上和网上都找不到这个类的作用,请各位大神告诉我一下-- 解决方案 解决方案二:该回复于2012-05-29 20:38:31被版主删除解决方案三:Representsinformationaboutwhatcanberendered,eithertextoranaudiofile,bytheSpeechSynthesizer.http://msdn.microsoft.com/en-us/library/system.speech.synthesis.prompt%28v=vs