Esempio n. 1
0
        public ActionResult Index()
        {
            var selectedTestItem = SpeakTestContainer.GetNextSpeakTestItem();

            if (selectedTestItem == null)
            {
                return(RedirectToAction("TestResult", "Home"));
            }

            Session["selectedSpeakTestItem"] = selectedTestItem;
            return(View(selectedTestItem));
        }
        public async Task <ActionResult> PostFormData(HttpPostedFileBase file, string testType)
        {
            if (file.ContentLength < 1)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.UnsupportedMediaType));
            }

            TestItem      selectedTestItem      = Session["selectedTestItem"] as TestItem;
            SpeakTestItem selectedSpeakTestItem = Session["selectedSpeakTestItem"] as SpeakTestItem;

            if ((testType == "text" && selectedTestItem == null) || (testType == "speak" && selectedSpeakTestItem == null))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            string root     = Server.MapPath("~/App_Data");
            string fileName = string.Format("BodyPart_{0}", Guid.NewGuid());
            string filePath = Path.Combine(root, fileName);

            file.SaveAs(filePath);

            string resultText = await Recognition(System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/spech text-d0a18cc9ed24.json"), filePath);

            resultText = resultText.ToLower(CultureInfo.GetCultureInfo("en-US")).Trim();
            if (testType == "text")
            {
                if (selectedTestItem != null && selectedTestItem.Pronunciation == resultText.ToLower().Trim())
                {
                    TestContainer.SetTestItemStatus(selectedTestItem.Id, true);
                    return(Json(new { Status = "OK", SpeechToText = resultText }));
                }
                if (selectedTestItem != null)
                {
                    TestContainer.SetTestItemStatus(selectedTestItem.Id, false);
                }
            }
            else if (testType == "speak")
            {
                if (selectedSpeakTestItem != null)
                {
                    if (selectedSpeakTestItem.Answer.Contains("|"))
                    {
                        var possibleAnswerList = selectedSpeakTestItem.Answer.Split('|').ToList();
                        foreach (var possibleAnswer in possibleAnswerList)
                        {
                            if (resultText.StartsWith(possibleAnswer))
                            {
                                SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, true);
                                return(Json(new { Status = "OK", SpeechToText = resultText }));
                            }
                        }
                    }
                    else if (resultText.StartsWith(selectedSpeakTestItem.Answer))
                    {
                        SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, true);
                        return(Json(new { Status = "OK", SpeechToText = resultText }));
                    }
                }
                if (selectedSpeakTestItem != null)
                {
                    SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, false);
                }
            }
            return(Json(new { Status = "FAIL", SpeechToText = resultText }));
        }