public string GetScore(ref ScoreContext scContext) { string answer = null; string rawScript = scContext.taskItems.ElementAt(scContext.currentIndex).question; string script = rawScript.Replace(",", "").Replace("?", "").Replace("!", "").Replace(".", ""); string mp3Path = scContext.UserInput; string wavPath = mp3Path.Replace("mp3", "wav"); try { using (Mp3FileReader reader = new Mp3FileReader(mp3Path)) { using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(wavPath, pcmStream); } } } catch { return(null); } var result = ScoringHost.Evaluate( SupportedLanguage.English, script, File.ReadAllBytes(wavPath)); scContext.taskItems.ElementAt(scContext.currentIndex).score = result.Score; answer = string.Format("Your score: {0}\r\n", result.Score.ToString()); scContext.currentIndex++; return(answer); }
static void Main(string[] args) { if (args.Length < 4) { Console.WriteLine("exe modelFolder idWavPathScp idScriptScp outDir"); return; } string modelFolder = args[0]; string idWavPathScp = args[1]; string idScriptScp = args[2]; string outDir = args[3]; if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } Dictionary <string, string> idWavPair = readKeyValuePair(idWavPathScp); Dictionary <string, string> idScriptPair = readKeyValuePair(idScriptScp); ScoringHost.Initialize(modelFolder); foreach (var pair in idWavPair) { if (idScriptPair.Keys.Contains(pair.Key)) { string outFile = Path.Combine(outDir, pair.Key + ".log"); byte [] wavData = File.ReadAllBytes(pair.Value); try { SentenceEvaluationResult scoring = ScoringHost.Evaluate( SupportedLanguage.English, idScriptPair[pair.Key], wavData ); List <string> outLines = new List <string>(); foreach (var w in scoring.Words) { string wres = string.Format("{0} {1} {2} {3}", w.StartTime, w.EndTime, w.Word.Trim(new char[] { ' ', '\t', '\r', '\n' }), w.Score); outLines.Add(wres); } writeVecContentIntoFile(outLines, outFile); } catch (Exception e) { Console.WriteLine("Incorrect for our DLL!" + e.Message); } } else { Console.WriteLine("no script for sentence {0}", pair.Key); } } }