public void Connect(string address, int port) { Task.Run(async() => { await _client.ConnectAsync(new Uri($"ws://{address}:{port}/ws"), CancellationToken.None); var send = Encoding.UTF8.GetBytes("console app"); await _client.SendAsync(new ArraySegment <byte>(send), WebSocketMessageType.Text, true, CancellationToken.None); var buff = new ArraySegment <byte>(new byte[BufferSize]); while (_client.State == WebSocketState.Open) { try { var result = await _client.ReceiveAsync(buff, CancellationToken.None); var data = buff.Take(result.Count).ToArray(); var recognized = Encoding.UTF8.GetString(data); Recognize?.Invoke(this, new SpeechRecognitionEventArgs(recognized)); } catch { break; } } Disconnect(); }); }
public SpellResult GetSpell() { List <CoverageResult> coverageResults = new List <CoverageResult>(); int index = defaultUnchangedValue; float max = defaultUnchangedValue; for (int i = 0; i < recognizeablePatterns.Count; i++) { float result = recognizeablePatterns[i].Pattern.GetResult(); float minCoverage = recognizeablePatterns[i].Pattern.GetMinCoverage(); coverageResults.Add(new CoverageResult(recognizeablePatterns[i].Id, result, minCoverage)); if ((minCoverage <= result) && (result > max)) { index = recognizeablePatterns[i].Id; max = result; } } Recognize?.Invoke(coverageResults); if (index != defaultUnchangedValue) { SpellResult spellResult = new SpellResult { Index = index, Coverage = max, }; return(spellResult); } else { return(null); } }