示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <summary>
        /// 释放资源
        /// </summary>
        public void Dispose()
        {
            if (_jths != null)
            {
                _jths.Dispose();
                _jths = null;
            }

            if (_ifly != null)
            {
                _ifly.Dispose();
                _ifly = null;
            }

            DisposeAudioConvert();
        }