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); } }
public async Task Callback(RecognizerStatus status, string result) { Logger.LogInformation($"RecognizerStatus: {status} Result: {result}"); if (Option.Callback != null) { await Option.Callback(status, result); } }
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); }
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; } } }