System.Speech是否支持Dutch

时间:2016-04-02 09:59:50

标签: c++ visual-studio speech-recognition voice-recognition

我正在开展一个小项目,而且我已经完全陷入困境。

为此,我希望我的程序识别荷兰语,但它似乎确实有效。每次我在识别引擎中插入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;
            }

        }
    }
}
}

0 个答案:

没有答案