views:

542

answers:

3

I'm getting the following error when I try to run the project:

A timeout occurred starting the SAPI Server.

System.InvalidOperationException was unhandled
Message="A timeout occurred starting the SAPI Server."
Source="System.Speech"
StackTrace:
at System.Speech.Internal.SapiInterop.SapiRecognizer..ctor(RecognizerType type)
at System.Speech.Recognition.SpeechRecognizer..ctor()
at testdan.Form1..ctor() in C:\Users\Dany\Documents\Visual Studio 2008\Projects\testdan\testdan\Form1.cs:line 17
at testdan.Program.Main() in C:\Users\Dany\Documents\Visual Studio 2008\Projects\testdan\testdan\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Form1 Code:

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 testdan
{
    public partial class Form1 : Form
    {
        SpeechRecognizer rec = new SpeechRecognizer();

        public Form1()
        {
            InitializeComponent();
            rec.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(rec_SpeechRecognized);
        }

        void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {

            lblLetter.Text = e.Result.Text;
            MessageBox.Show(e.Result.Text);
        }

        void Form1_Load(object sender, EventArgs e)
        {
            var c = new Choices();
            c.Add("close");
            c.Add("stop");
            c.Add("pause");
            var gb = new GrammarBuilder(c);
            var g = new Grammar(gb);
            rec.LoadGrammar(g);
            rec.Enabled = true;
        }

    }
}
A: 

Perhaps a driver that SAPI uses is missing? That might cause it to timeout during load.

scraimer
A: 

I've seen that too. If I start the desktop recogniser manually from the start menu then run the code it works fine, but it seems it isn't loading the shared recogniser automatically - i'm not sure why.

A: 

How long does it take for the WSR UI to show up? I suspect that what might be happening is that the WSR UI is taking longer than usual to show up, and the proxies are timing out.

You might try catching the exception and retrying the constructor. With luck, the WSR UI will still be up, and you will be able to complete the constructor.

Eric Brown