Exemple #1
0
        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);
        }
Exemple #2
0
        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);
                }
            }
        }