/// <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(); }
/// <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(); }
internal static extern int skegn_start(IntPtr engine, string param, byte[] id, [MarshalAs(UnmanagedType.FunctionPtr)] EngineDelegete.EngineCallback callback, IntPtr userdata);
public virtual int Start(BaseEngineStartUpParameter parameter, ref string recId, EngineDelegete.EngineCallback callback, IntPtr userdata, string userID = null) { var engineParameter = WrapParameter(parameter, userID); var param = JsonConvert.SerializeObject(engineParameter, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); var id = new byte[64]; var result = skegn_start(EngineInstance, param, id, callback, userdata); recId = Encoding.ASCII.GetString(id).Replace("\0", string.Empty); //Log4NetHelper.Info($"ID:{recId},param:{param}"); recId = $"ID:{recId},param:{param}"; return(result); }