1

我有一个 C# 应用程序,我使用 Kinect 传感器进行语音识别。

可以在其中设置文化吗?

我认为问题出在 GetKinectRecognizer() 方法中,因为在此方法中我设置了语音识别的属性。

现在我有这个方法

//riconoscimento vocale
    private SpeechRecognitionEngine RiconoscimentoVocale()
{
    RecognizerInfo ri = GetKinectRecognizer();

    SpeechRecognitionEngine sre;
    try
    {
        sre = new SpeechRecognitionEngine(ri.Id);
    }
    catch
    {
        this.Close();
        return null;
    }
    //vengono aggiunte la parole grammaticali da riconoscere
    var grammar = new Choices();
    grammar.Add("rosso");
    grammar.Add("aiuto");
    grammar.Add("caduto");

    //creo il vocabolario delle parole
    var vocabolario = new GrammarBuilder { Culture = ri.Culture };
    vocabolario.Append(grammar);

    // Create the actual Grammar instance, and then load it into the speech recognizer.
    var g = new Grammar(vocabolario);
    //carico la grammatica
    sre.LoadGrammar(g);
    //aggiungo l'evento per il riconoscimento delle parole
    sre.SpeechRecognized += this.RiconoscimentoParole;

    return sre;
}

private static RecognizerInfo GetKinectRecognizer()
{
    //Console.WriteLine("recognizer info ");
    Func<RecognizerInfo, bool> matchingFunc = r =>
    {

        Console.WriteLine("recognizer info " + r.Culture.Name);
        string value;
        r.AdditionalInfo.TryGetValue("Kinect", out value);
        return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "en-US".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase);
    };
    return SpeechRecognitionEngine.InstalledRecognizers().Where(matchingFunc).FirstOrDefault();
}

我们能帮帮我吗?

4

1 回答 1

1

我假设您已经安装了意大利语语言包,因为这是先决条件。然后,在您的 GetKinectRecognizer 方法中,您需要更改

return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "en-US".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase);

return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "it-IT".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase);

此外,您的函数似乎与此问题中的代码非常相似,该代码有其自身的问题,因此您可能还没有走出困境。

但是总纲是存在的——你需要返回一个意大利识别器的 ID(你必须安装它)。

于 2013-06-06T21:16:19.643 回答