Beispiel #1
0
        public void Start()
        {
            IsReady = true;

            using (var reader = new StreamReader(@"C:\Users\karel\Downloads\sample.txt"))
            {
                string line;

                while ((line = reader.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(line))
                    {
                        TextAvailable?.Invoke(this, new TextEventArgs(line, Encoding.UTF8));
                    }
                }

                reader.Close();
            }
        }
 private void SpeechRecognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
 {
     TextAvailable?.Invoke(this, new TextEventArgs(e.Result.Text, Encoding.UTF8));
 }
Beispiel #3
0
        private void Ws_OnMessage(object sender, MessageEventArgs e)
        {
            systemLog.DebugFormat("{0} Incoming message from Watson", prefix);

            var json = e.Data;
            var obj  = JsonConvert.DeserializeObject <SpeechRecognitionEvent>(json);

            if (obj.State == "listening")
            {
                IsReady = true;
                timer   = DateTime.Now;

                systemLog.DebugFormat("{0} Watson listening", prefix);
            }

            if (!obj.Error.IsNullOrEmpty())
            {
                IsReady = false;

                systemLog.ErrorFormat("{0} {1}", prefix, obj.Error);
            }

            if (obj.Results == null)
            {
                return;
            }

            var elapsed = DateTime.Now.Subtract(timer).TotalMilliseconds;
            var final   = obj.Results.Find(t => t.Final);

            if (elapsed > respite || final != null)
            {
                foreach (var result in obj.Results)
                {
                    if (result.Alternatives.Count == 0)
                    {
                        continue;
                    }

                    var interim = result.Alternatives[0].Transcript;

                    systemLog.Debug(interim);

                    if (interim.Length <= position)
                    {
                        positions.Clear();
                        position = 0;
                        timer    = DateTime.Now;

                        continue;
                    }

                    if (final == null)
                    {
                        for (var index = position; index < interim.Length; index++)
                        {
                            if (char.IsWhiteSpace(interim[index]))
                            {
                                if (positions.Count == 4)
                                {
                                    positions.RemoveAt(0);
                                }

                                positions.Add(index + 1);
                            }
                        }

                        TextAvailable?.Invoke(this, new TextEventArgs(interim.Substring(position, positions[0] - position), Encoding.UTF8));

                        position = positions[0];
                    }
                    else
                    {
                        TextAvailable?.Invoke(this, new TextEventArgs(interim.Substring(position, interim.Length - position), Encoding.UTF8));

                        //positions.Clear();
                        //position = 0;
                        //timer    = DateTime.Now;
                    }
                }
            }
        }