I have this code referring to a modality that generates a grammar and sends message to an IM (interaction modality). But every time I run the program I have this exetion. I have already seen several solutions like the computer having wrong COM settings and I have changed and nothing has changed, it does not run.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using mmisharp;
using Microsoft.Speech.Recognition;
namespace speechModality
{
public class SpeechMod
{
private SpeechRecognitionEngine sre;
private Grammar gr;
public event EventHandler<SpeechEventArg> Recognized;
protected virtual void onRecognized(SpeechEventArg msg)
{
EventHandler<SpeechEventArg> handler = Recognized;
if (handler != null)
{
handler(this, msg);
}
}
private LifeCycleEvents lce;
private MmiCommunication mmic;
public SpeechMod()
{
//init LifeCycleEvents..
lce = new LifeCycleEvents("ASR", "FUSION","speech-1", "acoustic", "command"); // LifeCycleEvents(string source, string target, string id, string medium, string mode)
//mmic = new MmiCommunication("localhost",9876,"User1", "ASR"); //PORT TO FUSION - uncomment this line to work with fusion later
mmic = new MmiCommunication("localhost", 8000, "User1", "ASR"); // MmiCommunication(string IMhost, int portIM, string UserOD, string thisModalityName)
mmic.Send(lce.NewContextRequest());
//load pt recognizer
sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("pt-PT"));
gr = new Grammar(Environment.CurrentDirectory + "\\ptG.grxml", "rootRule");
sre.LoadGrammar(gr);
sre.SetInputToDefaultAudioDevice();
sre.RecognizeAsync(RecognizeMode.Multiple);
sre.SpeechRecognized += Sre_SpeechRecognized;
sre.SpeechHypothesized += Sre_SpeechHypothesized;
}
private void Sre_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e)
{
onRecognized(new SpeechEventArg() { Text = e.Result.Text, Confidence = e.Result.Confidence, Final = false });
}
private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
onRecognized(new SpeechEventArg(){Text = e.Result.Text, Confidence = e.Result.Confidence, Final = true});
//SEND
// IMPORTANT TO KEEP THE FORMAT {"recognized":["SHAPE","COLOR"]}
string json = "{ \"recognized\": [";
foreach (var resultSemantic in e.Result.Semantics)
{
json+= "\"" + resultSemantic.Value.Value +"\", ";
}
json = json.Substring(0, json.Length - 2);
json += "] }";
var exNot = lce.ExtensionNotification(e.Result.Audio.StartTime+"", e.Result.Audio.StartTime.Add(e.Result.Audio.Duration)+"",e.Result.Confidence, json);
mmic.Send(exNot);
}
}
}
The error:
System.Runtime.InteropServices.COMException: 'Failed to get COM's class factory from component with CLSID {49428A60-C997-4D0E-9808-9E326C178D58} due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) . '
User contributions licensed under CC BY-SA 3.0