Esempio n. 1
0
 private void Awake()
 {
     _rigidbody    = GetComponent <Rigidbody>();
     _stateMachine = new StateMachine();
     _controller   = new PIDController(_rigidbody);
     dock.position = transform.position;
     dock.rotation = transform.rotation;
     _rlModule     = GetComponent <RLModule>();
     _meshModel    = GetComponentInChildren <MeshRenderer>().transform.parent;
 }
Esempio n. 2
0
        static void Main(string[] args)
        {
            using (var recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")))
            {
                var synthesizer = new SpeechSynthesizer();
                var recognizers = new RLModuleCollection();

                if (!Directory.Exists(ModulesDir))
                {
                    Directory.CreateDirectory(ModulesDir);
                }
                string[] modules = Directory.GetDirectories(ModulesDir);

                // Add all modules
                foreach (var moddir in modules)
                {
                    string jsonfile = $"{ moddir }/module.json";
                    if (!File.Exists(jsonfile))
                    {
                        Console.WriteLine($"Unable to locate 'module.json' file for '{ moddir }' module");
                        continue;
                    }

                    var path = Path.GetFullPath(moddir);
                    var mod  = RLModule.FromFile(jsonfile, path);

                    var asmpath  = Path.Combine(path, mod.AssemblyFile);
                    var rulepath = Path.Combine(path, mod.RuleFile);

                    if (!File.Exists(asmpath))
                    {
                        Console.WriteLine($"Unable to locate '{ mod.AssemblyFile }' assembly for '{ mod.Name }'");
                        continue;
                    }

                    if (!File.Exists(rulepath))
                    {
                        Console.WriteLine($"Unable to locate '{ mod.RuleFile }' rules file for '{ mod.Name }'");
                        continue;
                    }

                    mod.AssemblyFile = asmpath;
                    mod.RuleFile     = rulepath;

                    if (!mod.LoadAssembly(synthesizer))
                    {
                        Console.WriteLine($"Unable to load assembly details for '{ mod.Name }', check '{ mod.AssemblyFile }' file");
                        continue;
                    }

                    mod.LoadGrammar();

                    recognizers.Add(mod);
                    Console.WriteLine($"[MOD] Loaded { mod.Name } ({ mod.Assembly.FullName })");
                }

                /* Compile & Load */
                var tmp = Environment.CurrentDirectory;
                foreach (var g in recognizers.Collection)
                {
                    Environment.CurrentDirectory = g.ModuleDirectory;
                    recognizer.LoadGrammar(g.Grammar);
                }
                Environment.CurrentDirectory = tmp;

                recognizer.SpeechRecognized += (s, e) =>
                {
                    var mod = recognizers.Find(e.Result.Grammar);
                    if (mod == null)
                    {
                        Console.WriteLine($"Something is wrong, no module found for grammar '{ e.Result.Grammar.Name }'");
                        return;
                    }

                    mod.RecognizerMethod.Invoke(mod.Instance, new object[] { s, e });
                };

                if (recognizers.Collection.Count == 0)
                {
                    Console.WriteLine("Aborting application, no grammar loaded.");
                    return;
                }

                synthesizer.SetOutputToDefaultAudioDevice();
                recognizer.SetInputToDefaultAudioDevice();

                recognizer.RecognizeAsync(RecognizeMode.Multiple);

                Console.WriteLine("Started");
                while (true)
                {
                    Console.ReadKey(true);
                }
            }
        }