Microsoft Speech Platform演讲文本

时间:2014-12-16 22:17:26

标签: c# microsoft-speech-platform

我想写一个用户对文字说的话。我可以使用Microsoft语音平台吗?也许我只是误解了它应该如何工作以及它的预期用例是什么。

我现在有了这个控制台应用程序:

static void Main(string[] args)
        {
            Choices words = new Choices();
            words.Add(new string[] { "test", "hello" ,"blah"});
            GrammarBuilder gb = new GrammarBuilder();
            gb.Append(words);
            Grammar g = new Grammar(gb);

            SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
            sre.LoadGrammar(g);
            sre.SetInputToDefaultAudioDevice();

            //add listeners

            sre.Recognize();
            Console.ReadLine();
        }

它似乎只输出我在Choices中指定的单词。

如果我想匹配(大多数)用户会说的话,我是否需要添加完整的单词词典?

此外,它在匹配单个单词后立即停止。如果我想要捕获整个句子怎么办?

我正在寻找A的解决方案:捕获大量的单词,以及B)一次捕获多个单词。

编辑:

我发现了这个:http://www.codeproject.com/Articles/483347/Speech-recognition-speech-to-text-text-to-speech-a#torecognizeallspeech

1 个答案:

答案 0 :(得分:0)

this page所示,DictationGrammar类有一个基本的常用词库。

我一次捕获多个单词

 sre.RecognizeAsync(RecognizeMode.Multiple);

所以我的代码就是这样:

    public static SpeechRecognitionEngine sre;
    static void Main(string[] args)
    {
        sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
        sre.LoadGrammar(new Grammar(new GrammarBuilder("exit")));
        sre.LoadGrammar(new DictationGrammar());
        sre.SetInputToDefaultAudioDevice();

        sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);

        Console.ReadLine();
    }


    private static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        if (e.Result.Text == "exit")
        {
            sre.RecognizeAsyncStop();
        }
        Console.WriteLine("You said: " + e.Result.Text);
    }