Я работаю над небольшим проектом, и я застрял в нем.
Для этого я хочу, чтобы моя программа распознавала нидерландский язык, но, похоже, она не работает. Каждый раз, когда я вставляю nl-NL в механизм распознавания, он выдает следующую ошибку:
System.ArgumentException: не найден распознаватель необходимого идентификатора.
Я знаю, что эта ошибка связана с голландским вариантом распознавания речи, потому что, когда я использую английскую версию, она работает просто отлично,
Я установил SDK и необходимые библиотеки DLL, но, похоже, он не работает.
итак мой вопрос
Кто-нибудь знает, как заставить это работать, используя правильные Speech.dll и т. Д. И т. Д.
вот мой код:
пс.
Сделано в студии Visual
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;
}
}
}
}
}
Задача ещё не решена.
Других решений пока нет …