コード例 #1
0
        /// <summary>
        /// 口语题
        /// </summary>
        /// <param name="answers"></param>
        public void AutoScore()
        {
            GlobalUser.DoneScore = ScoreType.NoScore;//正在评分

            #region << Start 参数 >>

            BaseEngineStartUpParameter startParameter = null;

            startParameter = GetStartParam();

            startParameter.audioType  = "wav";//"mp3";
            startParameter.sampleRate = 16000;
            startParameter.compress   = "raw";

            #endregion

            //引擎的启动
            var rec = string.Empty;
            callback = ScoreCallBack;
            ES.Start(startParameter, ref rec, callback, IntPtr.Zero, "user");

            using (Stream str = new FileStream(ExamScore.WaveFileName, FileMode.Open, FileAccess.Read))
            {
                var headBuffer = new byte[44];

                var buffer = new byte[1024];
                //var mm = new MemoryStream();
                var len = 0;

                str.Read(headBuffer, 0, headBuffer.Length);//读取前44字节

                while ((len = str.Read(buffer, 0, buffer.Length)) > 0)
                {
                    //mm.Write(buffer, 0, len);
                    ES.Feed(buffer);
                }
            }
            ES.Stop();
        }
コード例 #2
0
        /// <summary>
        /// 口语题
        /// </summary>
        /// <param name="answers"></param>
        public void AutoScore()
        {
            if (ExamScore == null || string.IsNullOrEmpty(ExamScore.WaveFileName) || !File.Exists(ExamScore.WaveFileName))
            {
                if (GlobalUser.ErrScoreInfo == null)
                {
                    GlobalUser.ErrScoreInfo = new Dictionary <string, ExamScoreNavigateMessage>();
                }
                if (!GlobalUser.ErrScoreInfo.ContainsKey(ExamScore?.WaveFileName))
                {
                    ExamScore.SubmitNum = 999;
                    GlobalUser.ErrScoreInfo.Add(ExamScore.WaveFileName, ExamScore);
                }
                else
                {
                    GlobalUser.ErrScoreInfo[ExamScore.WaveFileName].SubmitNum = 999;
                }

                GlobalUser.DoneScore = ScoreType.ScoreFailure;
                return;
            }

            if (GlobalUser.DoneScore == ScoreType.Scoring)
            {
                if (GlobalUser.ErrScoreInfo == null)
                {
                    GlobalUser.ErrScoreInfo = new Dictionary <string, ExamScoreNavigateMessage>();
                }
                if (!GlobalUser.ErrScoreInfo.ContainsKey(ExamScore?.WaveFileName))
                {
                    ExamScore.SubmitNum = 1;
                    GlobalUser.ErrScoreInfo.Add(ExamScore.WaveFileName, ExamScore);
                }
                else
                {
                    GlobalUser.ErrScoreInfo[ExamScore.WaveFileName].SubmitNum = 999;
                }
                return;
            }


            GlobalUser.DoneScore = ScoreType.Scoring;//正在评分

            #region << Start 参数 >>

            BaseEngineStartUpParameter startParameter = null;

            startParameter = GetStartParam();

            startParameter.audioType  = "wav";//"mp3";
            startParameter.sampleRate = 16000;
            startParameter.compress   = "raw";

            #endregion

            //引擎的启动
            var rec = string.Empty;
            callback = ScoreCallBack;
            ES.Start(startParameter, ref rec, callback, IntPtr.Zero, GlobalUser.USER.Mobile ?? "YYS_PC_User");

            using (Stream str = new FileStream(ExamScore.WaveFileName, FileMode.Open, FileAccess.Read))
            {
                var headBuffer = new byte[44];

                var buffer = new byte[1024];
                //var mm = new MemoryStream();
                var len = 0;

                str.Read(headBuffer, 0, headBuffer.Length);//读取前44字节

                while ((len = str.Read(buffer, 0, buffer.Length)) > 0)
                {
                    //mm.Write(buffer, 0, len);
                    ES.Feed(buffer);
                }
            }
            ES.Stop();
        }