控制台语音识别在启动后立即退出

时间:2017-01-21 14:33:38

标签: c# mono .net-core voice-recognition

我尝试按照this教程构建语音识别C#app,唯一的区别是我想要一个Console应用,而不是Win Form应用,所以我写了这段代码:< / p>

using System;
using System.Speech.Recognition;
//using System.Speech.Synthesis;

namespace Voice_Recognation
{
    class Program
    {
        static void Main(string[] args)
        {
            SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
            recEngine.SetInputToDefaultAudioDevice();  

            Choices commands = new Choices();
            commands.Add(new string[] { "say Hi", "say Hello"});
            GrammarBuilder gb = new GrammarBuilder();
            gb.Append(commands);
            Grammar g = new Grammar(gb);

            recEngine.LoadGrammarAsync(g);
            recEngine.RecognizeAsync(RecognizeMode.Multiple);

            recEngine.SpeechRecognized += recEngine_SpeechRecognized;

        }

                // Create a simple handler for the SpeechRecognized event
        static void recEngine_SpeechRecognized (object sender, SpeechRecognizedEventArgs e)
        {
            Console.WriteLine("Speech recognized: {0}", e.Result.Text);
            switch(e.Result.Text){
                case "Red":
                    Console.WriteLine("you said hi"); 
                break;
                default:
                break;
            }
        }

    }
}

使用单项目编译它,如下所示:

c:\mcs /reference:System.Speech.dll Program.cs

System.Speech.dll添加到文件夹项目后,生成了Program.exe文件。

一旦我在终端上运行program,它就会直接结束,而没有给我任何说话的机会!!

我有两个问题:

我在这里缺少什么,我做错了什么?

如何以更好的方式添加'.dll'文件,我尝试将其添加到Project.json文件中,如下所示,但是没有用,但我在运行时没有收到任何错误dotnet restore

  "frameworks": {
    "netcoreapp1.0": {
                  "bin": {
            "assembly": "D:/2016/Speech/CORE/System.Speech.dll"
        },
     }
   }

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过添加df3 = result[result['Value'] > 10] 解决了第一部分,因此它为线程提供了足够的时间来继续监听,另一个选择是使用Thread.Sleep

进行无限循环

我仍然无法解决第二部分,即如何使VS代码识别现有的汇编文件。

新的完整代码(如果有兴趣的话)如下所示,可以找到更全面的代码here

while(true);