コード例 #1
0
        public void DoWork()
        {
            myServer = new SynchronousSocketListener();

            this.Invoke((MethodInvoker)delegate {
                chatBox.AppendText("Waiting for client to connect...");
            });

            myServer.StartListening();
            //myServer.SendDataToClient("Connected");

            this.Invoke((MethodInvoker)delegate
            {
                chatBox.AppendText("\nConnected!");
            });
            this._shouldStop = false;
            //Console.WriteLine("Connected.");
            while (!this._shouldStop)
            {
                string query = myServer.ReceieveDataFromClient();
                query = query.Replace("<EOF>", "");
                if (query == "QUIT")
                {
                    this.Invoke((MethodInvoker)delegate
                    {
                        chatBox.AppendText("Client: " + query + "\r\n");
                    });
                    break;
                }
                if (query == "Start Recording")
                {
                    this.Invoke((MethodInvoker)delegate
                    {
                        StartRecording();
                    });
                    //myServer.SendDataToClient("success");
                    continue;
                }
                if (query.Contains("Stop Recording:"))
                {
                    // parse the string, last substring as the language, assume that the input string is correct
                    string language = query.Split(':')[1];
                    this.Invoke((MethodInvoker)delegate
                    {
                        StopRecording();
                    });

                    string translated_query = null;
                    this.Invoke((MethodInvoker)delegate
                    {
                        translated_query = XunfeiFunction.IatModeTranslate("audio/temp.wav", language);
                    });
                    //MessageBox.Show(translated_query);

                    if (language != "english")
                    {
                        this.Invoke((MethodInvoker)delegate
                        {
                            translated_query += run_translator(translated_query);
                            Console.WriteLine(translated_query);
                        });
                    }

                    if (translated_query != null)
                    {
                        myServer.SendDataToClient(translated_query);
                    }
                    else
                    {
                        myServer.SendDataToClient("Recording stopped: No speech detected.");
                    }
                    continue;
                }
                /*
                // testing Xunfei TTS
                if (query.Contains("TTS#"))
                {
                    string language = query.Split('#')[1];
                    string preferred_sex = query.Split('#')[2];
                    query = query.Split('#')[3];
                    this.Invoke((MethodInvoker)delegate
                    {
                        XunfeiFunction.ProcessVoice(query, "audio/out.wav", language, preferred_sex);
                    });
                    this.Invoke((MethodInvoker)delegate
                    {
                        Play_TTS_file("audio/out.wav");
                    });
                    myServer.SendDataToClient("TTS completed.");
                    continue;
                }
                */
                if (myHandler == null)
                    myHandler = new QueryHandler(featGraph, temporalConstraintList);
                Console.WriteLine("Query: " + query);

                this.Invoke((MethodInvoker)delegate
                {
                    chatBox.AppendText("Client: " + query + "\r\n");
                });

                string answer = myHandler.ParseInput(query, true);
                Console.WriteLine("Answer: " + answer);
                this.Invoke((MethodInvoker)delegate
                {
                    chatBox.AppendText("System:" + answer + "\r\n");
                });

                if (answer.Contains("##"))
                {
                    string tts = answer.Split(new string[] { "##" }, StringSplitOptions.None)[1];
                    answer = answer.Split(new string[] { "##" }, StringSplitOptions.None)[0];

                    Console.WriteLine("Answer contains ##. Send: " + answer);
                    myServer.SendDataToClient(answer);
                    /*
                    try
                    {
                        File.Delete("audio/out.wav");
                        Console.WriteLine("Deleted audio file");
                    }
                    catch(DirectoryNotFoundException dirnotfound)
                    {
                        Console.WriteLine(dirnotfound.Message);
                    }
                    */
                    Console.WriteLine("tts text: " + tts);

                    this.Invoke((MethodInvoker)delegate
                    {
                        Console.WriteLine("Xunfei begins writing");
                        XunfeiFunction.ProcessVoice(tts, "audio/out.wav", myHandler.language_mode_tts);
                        Console.WriteLine("written new audio file");
                    });

                    Play_TTS_file("audio/out.wav");

                }
                else
                {
                    Console.WriteLine("Send: " + answer);
                    myServer.SendDataToClient(answer);
                }
                Console.WriteLine("The returned answer is " + answer);
            }
            myServer.CloseServer();
            myServer = null;
        }
コード例 #2
0
        private void query_Click(object sender, EventArgs e)
        {
            string query = inputBox.Text;
            if (myHandler == null)
                myHandler = new QueryHandler(featGraph, temporalConstraintList);

            if (EnglishRadioButton.Checked)
            {
                myHandler.language_mode_display = Constant.EnglishMode;
                if (checkBox1.Checked) { myHandler.language_mode_tts = Constant.EnglishMode; }
                else { myHandler.language_mode_tts = Constant.ChineseMode; }
            }
            else
            {
                myHandler.language_mode_display = Constant.ChineseMode;
                if(checkBox1.Checked) { myHandler.language_mode_tts = Constant.ChineseMode; }
                else { myHandler.language_mode_tts = Constant.EnglishMode; }
            }

            chatBox.AppendText("User: "******"\r\n");
            string answer = myHandler.ParseInput(query,false);
            string display = myHandler.ParseOutput(answer, myHandler.language_mode_display);

            chatBox.AppendText("System:" + display + "\r\n");

            if (checkBox2.Checked)
            {
                string text;
                if (checkBox1.Checked) { text = display; }
                else { text = myHandler.ParseOutput(answer, myHandler.language_mode_tts); }
                //MessageBox.Show(text);
                XunfeiFunction.ProcessVoice(text, "audio/out.wav", myHandler.language_mode_tts);
                //MessageBox.Show("success");
                Play_TTS_file("audio/out.wav");
            }

            inputBox.Clear();
        }