/// <summary> /// 语音识别。如果是标准音频格式:pcm/16k/16位/单通道,则调用此方法。如果是其他格式的音频,请调用另一个方法并传入音频格式 WaveFormat 参数。 /// </summary> /// <param name="audioData">小于 60s 的音频数据(总长度不超过32000),音频格式要求:pcm/16k/16位/单通道 。</param> /// <param name="languageType">音频语种类型</param> /// <param name="recogResult">识别成功返回识别结果,识别失败返回错误消息</param> /// <returns>识别成功或失败,true-成功;false-失败</returns> public bool AudioRecog(byte[] audioData, LanguageType languageType, out string recogResult) { if (Utils._languageRecogList == null || Utils._languageRecogList.Count <= 0) { recogResult = "无可识别的语种,请检查配置文件 AsrLibrary.config 是否存在,或者是否正确配置。"; return(false); } Language language = Utils._languageRecogList.Find(o => o.Name == languageType.ToString()); if (language == null) { recogResult = "传入的语种未匹配上对应的能力。"; return(false); } AsrBase asr = null; switch (language.Engine.ToLower()) { case "baidu": if (_baidu == null) { _baidu = BaiduAsr.GetInstance(); } asr = _baidu; break; case "jths": if (_jths == null) { _jths = JthsAsr.GetInstance(); } asr = _jths; break; case "ifly": if (_ifly == null) { _ifly = iFlyAsr.GetInstance(); } asr = _ifly; break; default: break; } if (asr != null) { return(asr.AudioRecog(audioData, languageType, out recogResult)); } else { recogResult = "未匹配到对应的音频识别 sdk,请检查配置文件字段“engine”是否正确配置。"; return(false); } }
private void Awake() { _instance = this; }