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; }
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(); }