Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#VS 2010中用Windows7运行一个基本的语音识别程序,它可以编译,但不能运行_C#_Speech Recognition - Fatal编程技术网

在c#VS 2010中用Windows7运行一个基本的语音识别程序,它可以编译,但不能运行

在c#VS 2010中用Windows7运行一个基本的语音识别程序,它可以编译,但不能运行,c#,speech-recognition,C#,Speech Recognition,最近,我尝试在VS2010的Windows7戴尔电脑上使用C#(WinFormsApp)编写一个基本的语音识别。我能够使用微软的基本示例使其工作(http://msdn.microsoft.com/en-us/magazine/cc163663.aspx#S5)还有像这样的论坛。然而,我需要更换电脑,现在我正试图在一台规格相同的联想电脑上进行复制。它不起作用,事实上,语音识别一直干扰程序的运行,当我切换到SpeechRecognitionEngine时,它仍然不运行。 我可以编译没有错误,但我没

最近,我尝试在VS2010的Windows7戴尔电脑上使用C#(WinFormsApp)编写一个基本的语音识别。我能够使用微软的基本示例使其工作(http://msdn.microsoft.com/en-us/magazine/cc163663.aspx#S5)还有像这样的论坛。然而,我需要更换电脑,现在我正试图在一台规格相同的联想电脑上进行复制。它不起作用,事实上,语音识别一直干扰程序的运行,当我切换到
SpeechRecognitionEngine
时,它仍然不运行。 我可以编译没有错误,但我没有看到结果,即显示
e.result.Text
的消息框

我的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.Recognition;
using System.Threading;

namespace SpeechRecogTest
{
    public partial class Form1 : Form
    {
        SpeechRecognitionEngine sr = new SpeechRecognitionEngine(); 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Create grammar
            Choices words = new Choices(); 
            words.Add("Hi");
            words.Add("No");
            words.Add("Yes");

            Grammar wordsList = new Grammar(new GrammarBuilder(words));

            wordsList.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(rec_SpeechRecognized);
            sr.LoadGrammar(wordsList);

        }

        void rec_SpeechRecognized(object sender, RecognitionEventArgs e)
        {
            MessageBox.Show(e.Result.Text);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
使用系统语音识别;
使用系统线程;
名称空间SpeechRecogTest
{
公共部分类Form1:Form
{
SpeechRecognitionEngine sr=新建SpeechRecognitionEngine();
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
//创建语法
选择词=新的选择();
字。加上(“Hi”);
词语。添加(“否”);
词语。添加(“是”);
语法单词列表=新语法(新语法生成器(单词));
wordsList.SpeechRecognized+=新事件处理程序(rec_SpeechRecognized);
高级加载语法(单词列表);
}
void rec_speechrecogned(对象发送方,RecognitionEventArgs e)
{
MessageBox.Show(如Result.Text);
}
}
}

我非常感谢你的帮助。我非常确定我已经安装了所有SDK,包括SAPI 5.1、Windows SDK v7.0和v7.1,我还包括COM和NET的语音库,并且我构建了一个可以工作的合成器。

您加载了语法,但您是否调用过sr.RecognitizeAsync()

您必须调用同步识别或执行识别。你两个都没有做

假设您正在从声卡捕获音频,加载语法后,请尝试:

sr.SetInputToDefaultAudioDevice();
sr.RecognizeAsync();

从.NET演讲开始,几年前在上发表了一篇非常好的文章。这可能是迄今为止我找到的最好的介绍性文章。这有点过时,但很有用。(AppendResultKeyValue方法在测试版之后被删除。)

感谢您的回复。我只是尝试了我添加的两行,但都没有。我的电脑可以把它当作听写,并验证它是否能听到我的声音,但我的程序无法在文本框中显示这个结果。你为什么不试试我发布的小样本程序,看看它是否有效。看看是否有效。谢谢你,我会的。我认为这与我在这台新电脑上的安装和旧电脑上的安装有关,因为否则程序是逐字逐句的。您认为在x64 windows 7计算机上安装哪些组件很重要?我已经从regedit中删除了devenv.exe。识别器引擎是Windows 7的核心。System.Speech支持内置于.NET3.0及更高版本中。我真的想不出什么会是安装相关的问题。可能是设置麦克风的输入音量,还是选择正确的音频输入设备作为默认设置?我终于让它在我的机器上工作了。我不得不重新安装我的WindowsSDK v7.1,它最终还是可以工作的。我发现之前我制作的并且正在运行的旧文件运行良好,但是我尝试制作的任何新文件VS 2010都无法正常运行。在调试过程中,我意识到它在某种程度上跳过了Form1_加载,因此无法执行。我不知道为什么