我正在开展一个小项目,而且我已经完全陷入困境。
为此,我希望我的程序识别荷兰语,但它似乎确实有效。每次我在识别引擎中插入nl-NL时,都会出现以下错误:
System.ArgumentException:找不到所需ID的识别器。
我知道这个错误与语音识别的荷兰语变体有关,因为当我使用英语版时,它工作得很好,
我已经安装了SDK和dll,但是,它似乎无法正常工作。
所以我的问题: 有没有人知道如何使用正确的Speech.dll等来完成这项工作。
继承我的代码: PS。 它在Visual Studio中制作
using System;
using System.Windows.Forms;
using System.Speech.Recognition;
namespace Voice_Recognition
{
public partial class Form1 : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("nl-NL"));
Int16 HelpCount;
DateTime LastCallForHelp;
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
btnDisable.Enabled = true;
}
private void btnDisable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
btnDisable.Enabled = false;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
Choices commands = new Choices();
commands.Add(new string[] { "say hello", "print my name", "help", "ow" });
GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Culture = new System.Globalization.CultureInfo("nl-NL");
gBuilder.Append(commands);
Grammar mygrammar = new Grammar(gBuilder);
mygrammar.Name = "victors grammar";
//recEngine = new SpeechRecognitionEngine();
recEngine.LoadGrammar(mygrammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recEngine_SpeechRecognition);
}
public void recEngine_SpeechRecognition(object sender, SpeechRecognizedEventArgs e)
{
//Form1.ControlCollection("label1").text = e.Result.Confidence;
lblConfidence.Text = "" + e.Result.Confidence;
if (e.Result.Confidence >= 0.65)
{
switch (e.Result.Text)
{
case "say hello":
lblAktie.Text = "Hello!";
break;
case "print my name":
lblAktie.Text = "Your name is Victor";
break;
case "help":
if (LastCallForHelp.Subtract(DateTime.Now).TotalSeconds < 5)
{ HelpCount += 1; }
else
{ HelpCount = 1; };
if (HelpCount > 3)
{ lblAktie.Text = "Hulp wordt ingeschakeld"; }
else
{ lblAktie.Text = "Roep nog eens een keer!" ; };
LastCallForHelp = DateTime.Now;
break;
case "ow":
lblAktie.Text = "Waar doet het pijn?";
break;
}
}
}
}
}