Mbed Clock application using an NTP connection to get internet time and a terminal interface to send commands
Dependencies: 4DGL-uLCD-SE EthernetInterface NTPClient mbed-rtos mbed SDFileSystem wavfile
Revision 6:23c3adb0470d, committed 2014-12-09
- Comitter:
- dudanian
- Date:
- Tue Dec 09 16:28:38 2014 +0000
- Parent:
- 5:ba94b62d86c9
- Commit message:
- changed server to txt file
Changed in this revision
SpeechServerSource/SpeechServer.c | Show diff for this revision Revisions of this file |
SpeechServerSource/SpeechServer.txt | Show annotated file Show diff for this revision Revisions of this file |
diff -r ba94b62d86c9 -r 23c3adb0470d SpeechServerSource/SpeechServer.c --- a/SpeechServerSource/SpeechServer.c Tue Dec 09 15:53:31 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,204 +0,0 @@ -// THIS IS ACTUALLY A .cs FILE! Mbed only supports .c and .cpp files in repositories -/* -using System; -using System.IO; -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Speech.Recognition; -using System.Speech.Recognition.SrgsGrammar; -using System.Collections.Generic; -using System.Timers; -using System.Speech.Synthesis; -using System.Speech.AudioFormat; - -namespace SpeechServer -{ - class Program - { - static Timer timeout; - static bool responseSent; - static TcpClient client; - static SpeechSynthesizer synth; - - static void Main(string[] args) - { - timeout = new Timer(2000); - timeout.AutoReset = false; - timeout.Elapsed += OnSpeechRecognitionFailed; - responseSent = false; - - Grammar g = new Grammar(new SrgsDocument("grammar.xml")); - - // Recognizing Speech - SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); - recognizer.LoadGrammarAsync(g); - recognizer.SpeechRecognized += - new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); - recognizer.SpeechRecognitionRejected += - new EventHandler<SpeechRecognitionRejectedEventArgs>(recognizer_SpeechRecognitionRejected); - // Synthesizing Speech - synth = new SpeechSynthesizer(); - synth.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(synth_SpeakCompleted); - - TcpListener server = null; - try { - Int32 port = 13000; - //Console.WriteLine("What IP Address?"); - //String ip = Console.ReadLine(); - //IPAddress hostaddr = IPAddress.Parse(ip); - IPHostEntry host = Dns.GetHostEntry("laptop-pc"); - IPAddress hostaddr = null; - foreach (IPAddress ipaddr in host.AddressList) { - if (ipaddr.AddressFamily == AddressFamily.InterNetwork) - { - hostaddr = ipaddr; - } - } - Console.WriteLine("Listening on Address: {0}", hostaddr.ToString()); - - server = new TcpListener(hostaddr, port); - server.Start(); - - Byte[] bytes = new Byte[1024]; - - while (true) - { - Console.Write("Waiting for a connection..."); - client = server.AcceptTcpClient(); - Console.WriteLine("Connected!"); - recognizer.SetInputToNull(); - - NetworkStream stream = client.GetStream(); - int i; - - using (FileStream fs = File.Open("test.wav", FileMode.Create, FileAccess.Write, FileShare.None)) - { - int sum = 0; - while (sum < 110296) - { - i = stream.Read(bytes, 0, bytes.Length); - sum += i; - fs.Write(bytes, 0, i); - } - } - - recognizer.SetInputToWaveFile("test.wav"); - recognizer.RecognizeAsync(RecognizeMode.Single); - timeout.Start(); - - while (!responseSent) - { - System.Threading.Thread.Sleep(100); - } - responseSent = false; - System.Threading.Thread.Sleep(1000); - client.Close(); - } - } - catch (SocketException e) - { - Console.WriteLine("SocketException: {0}", e); - } - finally - { - server.Stop(); - } - Console.WriteLine("\nHit enter to continue..."); - Console.Read(); - } - - static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) - { - timeout.Stop(); - String toSend = e.Result.Semantics["command"].Value.ToString(); - String minute = "0"; - String hour = "0"; - String period = "0"; - String timezone = "0"; - - // The following code illustrates some of the information available - // in the recognition result. - Console.WriteLine("Recognition result summary:"); - Console.WriteLine( - " Recognized phrase: {0}\n" + - " Confidence score {1}\n" + - " Grammar used: {2}\n", - e.Result.Text, e.Result.Confidence, e.Result.Grammar.Name); - - // Display the semantic values in the recognition result. - Console.WriteLine(" Semantic results:"); - foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics) - { - Console.WriteLine(" The {0} value is {1}", - child.Key, child.Value.Value ?? "null"); - } - if (e.Result.Semantics.ContainsKey("time")) - { - Console.WriteLine(" In Time:"); - foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics["time"]) - { - Console.WriteLine(" The {0} value is {1}", - child.Key, child.Value.Value ?? "null"); - } - hour = e.Result.Semantics["time"]["hour"].Value.ToString(); - minute = e.Result.Semantics["time"]["minute"].Value.ToString(); - period = e.Result.Semantics["time"]["period"].Value.ToString(); - } - else if (e.Result.Semantics.ContainsKey("length")) - { - Console.WriteLine(" In Length:"); - foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics["length"]) - { - Console.WriteLine(" The {0} value is {1}", - child.Key, child.Value.Value ?? "null"); - } - hour = e.Result.Semantics["length"]["hour"].Value.ToString(); - minute = e.Result.Semantics["length"]["minute"].Value.ToString(); - } - else if (e.Result.Semantics.ContainsKey("zone")) - { - timezone = e.Result.Semantics["zone"].Value.ToString(); - } - toSend += " " + hour + " " + minute + " " + period + " " + timezone; - Console.WriteLine("To Send: \"{0}\"", toSend); - Console.WriteLine(); - - byte[] msg = System.Text.Encoding.ASCII.GetBytes(toSend); - - client.GetStream().Write(msg, 0, msg.Length); - responseSent = true; - } - - static void recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) - { - Console.WriteLine("Speech input was rejected."); - foreach (RecognizedPhrase phrase in e.Result.Alternates) - { - Console.WriteLine(" Rejected phrase: " + phrase.Text); - Console.WriteLine(" Confidence score: " + phrase.Confidence); - } - } - - private static void OnSpeechRecognitionFailed(Object source, ElapsedEventArgs e) - { - Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime); - - byte[] msg = System.Text.Encoding.ASCII.GetBytes("noCommand 0 0 0 0"); - - client.GetStream().Write(msg, 0, msg.Length); - - responseSent = true; - - //synth.SetOutputToWaveFile("response.wav", new SpeechAudioFormatInfo(11025, AudioBitsPerSample.Sixteen, AudioChannel.Mono)); - //synth.SpeakAsync("testing this"); - } - - static void synth_SpeakCompleted(object sender, SpeakCompletedEventArgs e) - { - synth.SetOutputToNull(); - Console.WriteLine("Speaking Complete"); - } - } -} -*/ \ No newline at end of file
diff -r ba94b62d86c9 -r 23c3adb0470d SpeechServerSource/SpeechServer.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SpeechServerSource/SpeechServer.txt Tue Dec 09 16:28:38 2014 +0000 @@ -0,0 +1,203 @@ +// THIS IS ACTUALLY A .cs FILE! Mbed only supports .c and .cpp files in repositories + +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Speech.Recognition; +using System.Speech.Recognition.SrgsGrammar; +using System.Collections.Generic; +using System.Timers; +using System.Speech.Synthesis; +using System.Speech.AudioFormat; + +namespace SpeechServer +{ + class Program + { + static Timer timeout; + static bool responseSent; + static TcpClient client; + static SpeechSynthesizer synth; + + static void Main(string[] args) + { + timeout = new Timer(2000); + timeout.AutoReset = false; + timeout.Elapsed += OnSpeechRecognitionFailed; + responseSent = false; + + Grammar g = new Grammar(new SrgsDocument("grammar.xml")); + + // Recognizing Speech + SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); + recognizer.LoadGrammarAsync(g); + recognizer.SpeechRecognized += + new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); + recognizer.SpeechRecognitionRejected += + new EventHandler<SpeechRecognitionRejectedEventArgs>(recognizer_SpeechRecognitionRejected); + // Synthesizing Speech + synth = new SpeechSynthesizer(); + synth.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(synth_SpeakCompleted); + + TcpListener server = null; + try { + Int32 port = 13000; + //Console.WriteLine("What IP Address?"); + //String ip = Console.ReadLine(); + //IPAddress hostaddr = IPAddress.Parse(ip); + IPHostEntry host = Dns.GetHostEntry("laptop-pc"); + IPAddress hostaddr = null; + foreach (IPAddress ipaddr in host.AddressList) { + if (ipaddr.AddressFamily == AddressFamily.InterNetwork) + { + hostaddr = ipaddr; + } + } + Console.WriteLine("Listening on Address: {0}", hostaddr.ToString()); + + server = new TcpListener(hostaddr, port); + server.Start(); + + Byte[] bytes = new Byte[1024]; + + while (true) + { + Console.Write("Waiting for a connection..."); + client = server.AcceptTcpClient(); + Console.WriteLine("Connected!"); + recognizer.SetInputToNull(); + + NetworkStream stream = client.GetStream(); + int i; + + using (FileStream fs = File.Open("test.wav", FileMode.Create, FileAccess.Write, FileShare.None)) + { + int sum = 0; + while (sum < 110296) + { + i = stream.Read(bytes, 0, bytes.Length); + sum += i; + fs.Write(bytes, 0, i); + } + } + + recognizer.SetInputToWaveFile("test.wav"); + recognizer.RecognizeAsync(RecognizeMode.Single); + timeout.Start(); + + while (!responseSent) + { + System.Threading.Thread.Sleep(100); + } + responseSent = false; + System.Threading.Thread.Sleep(1000); + client.Close(); + } + } + catch (SocketException e) + { + Console.WriteLine("SocketException: {0}", e); + } + finally + { + server.Stop(); + } + Console.WriteLine("\nHit enter to continue..."); + Console.Read(); + } + + static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) + { + timeout.Stop(); + String toSend = e.Result.Semantics["command"].Value.ToString(); + String minute = "0"; + String hour = "0"; + String period = "0"; + String timezone = "0"; + + // The following code illustrates some of the information available + // in the recognition result. + Console.WriteLine("Recognition result summary:"); + Console.WriteLine( + " Recognized phrase: {0}\n" + + " Confidence score {1}\n" + + " Grammar used: {2}\n", + e.Result.Text, e.Result.Confidence, e.Result.Grammar.Name); + + // Display the semantic values in the recognition result. + Console.WriteLine(" Semantic results:"); + foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics) + { + Console.WriteLine(" The {0} value is {1}", + child.Key, child.Value.Value ?? "null"); + } + if (e.Result.Semantics.ContainsKey("time")) + { + Console.WriteLine(" In Time:"); + foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics["time"]) + { + Console.WriteLine(" The {0} value is {1}", + child.Key, child.Value.Value ?? "null"); + } + hour = e.Result.Semantics["time"]["hour"].Value.ToString(); + minute = e.Result.Semantics["time"]["minute"].Value.ToString(); + period = e.Result.Semantics["time"]["period"].Value.ToString(); + } + else if (e.Result.Semantics.ContainsKey("length")) + { + Console.WriteLine(" In Length:"); + foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics["length"]) + { + Console.WriteLine(" The {0} value is {1}", + child.Key, child.Value.Value ?? "null"); + } + hour = e.Result.Semantics["length"]["hour"].Value.ToString(); + minute = e.Result.Semantics["length"]["minute"].Value.ToString(); + } + else if (e.Result.Semantics.ContainsKey("zone")) + { + timezone = e.Result.Semantics["zone"].Value.ToString(); + } + toSend += " " + hour + " " + minute + " " + period + " " + timezone; + Console.WriteLine("To Send: \"{0}\"", toSend); + Console.WriteLine(); + + byte[] msg = System.Text.Encoding.ASCII.GetBytes(toSend); + + client.GetStream().Write(msg, 0, msg.Length); + responseSent = true; + } + + static void recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) + { + Console.WriteLine("Speech input was rejected."); + foreach (RecognizedPhrase phrase in e.Result.Alternates) + { + Console.WriteLine(" Rejected phrase: " + phrase.Text); + Console.WriteLine(" Confidence score: " + phrase.Confidence); + } + } + + private static void OnSpeechRecognitionFailed(Object source, ElapsedEventArgs e) + { + Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime); + + byte[] msg = System.Text.Encoding.ASCII.GetBytes("noCommand 0 0 0 0"); + + client.GetStream().Write(msg, 0, msg.Length); + + responseSent = true; + + //synth.SetOutputToWaveFile("response.wav", new SpeechAudioFormatInfo(11025, AudioBitsPerSample.Sixteen, AudioChannel.Mono)); + //synth.SpeakAsync("testing this"); + } + + static void synth_SpeakCompleted(object sender, SpeakCompletedEventArgs e) + { + synth.SetOutputToNull(); + Console.WriteLine("Speaking Complete"); + } + } +}