public async Task RecognizeCallback(RecognizerStatus status, byte[]?bytes)
    {
        Logger.LogInformation($"RecognizerStatus: {status}");
        string data = "";

        if (status == RecognizerStatus.Finished)
        {
            // 此处同步调用卡 UI 改为异步
            await Task.Run(() =>
            {
                var result = Client.Recognize(bytes, "wav", 16000);
                var err_no = result.Value <int>("err_no");
                if (err_no == 0)
                {
                    var sb   = new StringBuilder();
                    var text = result["result"].ToArray();
                    foreach (var item in text)
                    {
                        sb.Append(item.ToString());
                    }
                    data = sb.ToString();
                    Logger.LogInformation($"recognizer: {data}");
                }
                else
                {
                    Logger.LogError($"err_no: {err_no}");
                }
            });
        }

        if (Option.Callback != null)
        {
            await Option.Callback(status, data);
        }
    }
Пример #2
0
 public async Task Callback(RecognizerStatus status, string result)
 {
     Logger.LogInformation($"RecognizerStatus: {status} Result: {result}");
     if (Option.Callback != null)
     {
         await Option.Callback(status, result);
     }
 }
Пример #3
0
 private Task Recognize(RecognizerStatus status, string?result)
 {
     if (status == RecognizerStatus.Start)
     {
         Start      = true;
         ButtonText = "结束识别";
     }
     else if (status == RecognizerStatus.Finished)
     {
         Result     = result;
         Start      = false;
         ButtonText = "开始识别";
     }
     else
     {
         Result     = "";
         Start      = false;
         ButtonText = "开始识别";
     }
     StateHasChanged();
     return(Task.CompletedTask);
 }
Пример #4
0
        void DoThread()
        {
            lock (lockThis)
            {
                try
                {
                    prevGeneratedText = string.Empty;
                    while (allowThreading)
                    {
                        string generatedText = GetGeneratedText();
                        // Return if the wasn't any text generated.
                        if (string.IsNullOrEmpty(generatedText))
                        {
                            continue;
                        }

                        // Check for any changes to the text generated.
                        if (!string.Equals(prevGeneratedText, generatedText))
                        {
                            // Update
                            prevGeneratedText = generatedText;
                            switch (generatedText)
                            {
                            case "RECOGNITION STARTED":
                            case "[Braina]RECOGNITION STARTED[HLI]":
                                status = RecognizerStatus.Started;
                                UpdateGeneratedText(string.Empty);
                                break;

                            case "RECOGNITION STOPPED":
                            case "[Braina]RECOGNITION STOPPED[HLI]":
                                status = RecognizerStatus.Stopped;
                                UpdateGeneratedText(string.Empty);
                                break;

                            default:
                                if (status == RecognizerStatus.Started || status == RecognizerStatus.Listening)
                                {
                                    string pattern = @"\[Braina\](.+)\[HLI\]";
                                    Match  match   = Regex.Match(generatedText, pattern, RegexOptions.IgnoreCase);
                                    if (match.Success)
                                    {
                                        generatedText = match.Captures[0].Value;
                                        status        = RecognizerStatus.Listening;
                                        UpdateGeneratedText(generatedText);
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
                catch (Exception)
                {
                    // Statement to handle the exception.
                }
                finally
                {
                    UpdateGeneratedText(string.Empty);
                    status = RecognizerStatus.Stopped;
                }
            }
        }