/// <summary> /// 发起语音识别请求 /// </summary> /// <returns></returns> IEnumerator _StartBaiduYuYin() { if (string.IsNullOrEmpty(accessToken)) { yield return(_GetAccessToken()); } asrResult = string.Empty; //处理当前录音数据为PCM16 float[] samples = new float[recordFrequency * trueLength * saveAudioClip.channels]; saveAudioClip.GetData(samples, 0); var samplesShort = new short[samples.Length]; for (var index = 0; index < samples.Length; index++) { samplesShort[index] = (short)(samples[index] * short.MaxValue); } byte[] datas = new byte[samplesShort.Length * 2]; Buffer.BlockCopy(samplesShort, 0, datas, 0, datas.Length); string url = string.Format("{0}?cuid={1}&token={2}", "https://vop.baidu.com/server_api", SystemInfo.deviceUniqueIdentifier, accessToken); WWWForm wwwForm = new WWWForm(); wwwForm.AddBinaryData("audio", datas); UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, wwwForm); unityWebRequest.SetRequestHeader("Content-Type", "audio/pcm;rate=" + recordFrequency); yield return(unityWebRequest.SendWebRequest()); if (string.IsNullOrEmpty(unityWebRequest.error)) { asrResult = unityWebRequest.downloadHandler.text; if (Regex.IsMatch(asrResult, @"err_msg.:.success")) { Match match = Regex.Match(asrResult, "result.:..(.*?)..]"); if (match.Success) { asrResult = match.Groups[1].ToString(); textResult.text = asrResult; if (asrResult != "") { analysisResult.text = ap.SentimentClassifyResult(asrResult); } } } else { asrResult = "识别结果为空"; textResult.text = asrResult; } } }
public void Click() { if (typing_content.text != null) { Debug.Log(typing_content.text); analysisResult.text = ap.SentimentClassifyResult(typing_content.text); } else { analysisResult.text = "无法识别"; } }