Exemple #1
0
        private void LoadDefaultSelection()
        {
            KKToolsDbContext _context = new KKToolsDbContext();

            listServiceTTS = _context.ServiceTTSs.ToList();
            for (int i = 0; i < listServiceTTS.Count; i++)
            {
                //Viết vào cbox Service
                cboxService.Items.Add(listServiceTTS[i].Name);
                //Lấy dữ liệu tập ServiceSupported cho từng ServiceTTS
                int id = listServiceTTS[i].ID;
                listServiceTTS[i].ServiceSupporteds = (IEnumerable <ServiceSupported>)_context.ServiceSupporteds.Where(x => x.ServiceTTSID == id).ToList();
            }
        }
Exemple #2
0
        Response receiveResponseFPT(HttpResponseMessage result, KKToolsDbContext _context)
        {
            //ĐỌc dữ liệu response
            var readTask = result.Content.ReadAsStringAsync();

            readTask.Wait();
            var ret = readTask.Result;
            //Chuyển dữ liệu json vào Object
            var      js          = new JavaScriptSerializer();
            Response newResponse = js.Deserialize <Response>(ret);

            //Lưu bảng Response - từ ServiceTTS response
            _context.Responses.Add(newResponse);
            _context.SaveChanges();
            var addedResponse = _context.Responses.OrderByDescending(x => x.ID).FirstOrDefault();

            return(addedResponse);
        }
Exemple #3
0
        HttpResponseMessage sendFPTRequest(HttpClient client, string input, KKToolsDbContext _context, string voiceName)
        {
            HttpResponseMessage result = new HttpResponseMessage();

            client.BaseAddress = new Uri("https://api.fpt.ai/hmi/tts/v5");
            //HTTP GET

            StringContent content = new StringContent(input);

            client.DefaultRequestHeaders.Add("api_key", "dRZ17MlcRYKI5Uz4yL1NJYzIt1k5NgGw");
            client.DefaultRequestHeaders.Add("voice", voiceName);
            //Lấy thông tin của request
            string contentRequest = "Content:" + input + ";" + client.BaseAddress.ToString() + ";" +
                                    client.DefaultRequestHeaders.ToString();

            try
            {
                var responseTask = client.PostAsync("", content);
                responseTask.Wait();
                result = responseTask.Result;
            }
            catch
            {
                result.StatusCode = HttpStatusCode.BadRequest;
            }
            //Lưu bảng Request
            var newRequest = new Request()
            {
                Content     = contentRequest,
                CreatedDate = DateTime.Now,
                Status      = result.IsSuccessStatusCode
            };

            _context.Requests.Add(newRequest);
            _context.SaveChanges();
            return(result);
        }
Exemple #4
0
        public bool requestFPTAPI(string input, string voiceName = "banmai", string speed = "normal", bool allowDownloadSound = true)
        {
            KKToolsDbContext _context = new KKToolsDbContext();
            var  serviceTTS           = _context.ServiceTTSs.FirstOrDefault(x => x.Name.ToLower() == "FPT".ToLower());
            bool isSuccess            = true;

            using (var client = new HttpClient())
            {
                var result = sendFPTRequest(client, input, _context, voiceName);
                //Kiểm tra response có dữ liêu hay không
                if (result.IsSuccessStatusCode)
                {
                    // isSuccess thì  Reponse có thể có hoặc KHÔNG có link download file sound
                    //{
                    //    "async": "https://s3-ap-southeast-1.amazonaws.com/text2speech-v4/male.0.pro.4b5b15285847e83acbb3beb945434453.mp3",
                    //    "error": 0,
                    //    "message": "The content will be returned after a few seconds under the async link.",
                    //    "request_id": "4b5b15285847e83acbb3beb945434453"
                    //}
                    //{
                    //    "error": 1,
                    //    "message": "Internal server error happened",
                    //}

                    var addedResponse = receiveResponseFPT(result, _context);

                    /* Tạo đường dẫn cho local Sound path
                     * Nếu chưa tải sẽ đánh dấu Downloaded=false và Soundpath=""
                     */
                    var    util           = new Util();
                    string pathToFPTSound = "";
                    bool   isDownloaded   = false;
                    if (allowDownloadSound == true && addedResponse.error == "0")
                    {
                        if (addedResponse.async != null || addedResponse.async != "")
                        {
                            pathToFPTSound = util.getPathToSound(serviceTTS, voiceName);
                            isDownloaded   = util.downloadSound(addedResponse.async, pathToFPTSound);
                        }
                    }
                    int requestHaveBeenAdded = _context.Requests.OrderByDescending(x => x.ID).FirstOrDefault().ID;
                    //Lưu bảng Result - Dữ liệu thống kê response
                    var newResult = new Result()
                    {
                        ResponseID   = addedResponse.ID,
                        CreatedDate  = DateTime.Now,
                        DateGetWav   = DateTime.Now,
                        RequestID    = requestHaveBeenAdded,
                        SoundUrl     = addedResponse.async,
                        SoundPath    = pathToFPTSound,
                        Text         = input,
                        Downloaded   = isDownloaded,
                        ServiceTTSID = serviceTTS.ID
                    };
                    _context.Results.Add(newResult);
                    _context.SaveChanges();
                }
                else
                {
                    MessageBox.Show("Lỗi: Gửi yêu cầu tới server không thành công! Hãy kiểm tra kết nối mạng.");
                    isSuccess = false;
                }
            }
            return(isSuccess);
        }