예제 #1
0
        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();
            });
        }
예제 #2
0
    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);
        }
    }