コード例 #1
0
        /// <summary>
        /// 语音识别。如果是标准音频格式:pcm/16k/16位/单通道,则调用此方法。如果是其他格式的音频,请调用另一个方法并传入音频格式 WaveFormat 参数。
        /// </summary>
        /// <param name="audioData">小于 60s 的音频数据(总长度不超过1920k),音频格式要求: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 = "无可识别的语种,请检查配置文件 Asr.Core.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>
        /// <returns>返回 JthsAsr 对象</returns>
        public static JthsAsr GetInstance()
        {
            if (_instance == null)
            {
                lock (_lockObj)
                {
                    _instance = new JthsAsr();
                }
            }

            return(_instance);
        }
コード例 #3
0
        /// <summary>
        /// 释放资源
        /// </summary>
        public void Dispose()
        {
            if (_jths != null)
            {
                _jths.Dispose();
                _jths = null;
            }

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

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

            DisposeAudioConvert();
        }