private void spv_SpeakProgress(object sender, System.Speech.Synthesis.SpeakProgressEventArgs e) { TimeSpan df = e.AudioPosition; //double cPT = double.Parse(Math.Round(df.TotalSeconds).ToString() + "." + Math.Round(df.TotalMilliseconds).ToString()); double cPT = df.TotalSeconds; double xPT = (cPT * 30) / 100; xPT = xPT - (xPT * 13 / 136); cPT = (cPT - xPT); //string aTime = df.Seconds.ToString() + "." + df.Milliseconds.ToString() + "s"; //string caTime = df.Seconds.ToString() + "." + (df.Milliseconds - 2).ToString() + "s"; string aTime = String.Format("{0:0.########}", cPT) + "s"; string caTime = String.Format("{0:0.########}", cPT) + "s"; double lTime = cPT + xPT; last_time = String.Format("{0:0.########}", lTime) + "s"; string spTxt = ""; #region pro text int sPoint = e.CharacterPosition; if (curFullTxt.IndexOf(" ", sPoint) != -1) { int ePoint = curFullTxt.IndexOf(" ", sPoint); try { if (curFullTxt.Substring(sPoint - 1, 1) == "\"") { sPoint = sPoint - 1; } } catch { } spTxt = curFullTxt.Substring(sPoint, ePoint - sPoint); } else { spTxt = e.Text; } #endregion spTxt = spTxt.Replace("<", "<"); spTxt = spTxt.Replace(">", ">"); spTxt = spTxt.Replace("&", "&"); Regex wFnx = new Regex("\\s*(.+?)\\s", RegexOptions.IgnoreCase); string mtchTxt = ""; MatchCollection mtchPoint = null; int mInt = 0; if (wFnx.Match(htLineTxt, spanPoint).Success) { mtchPoint = wFnx.Matches(htLineTxt, spanPoint); try { if (mtchPoint[0].Groups[1].Value == spTxt) { mtchTxt = mtchPoint[0].Groups[1].Value; mInt = 0; } else if (mtchPoint[1].Groups[1].Value == spTxt) { mtchTxt = mtchPoint[1].Groups[1].Value; mInt = 1; } else if (mtchPoint[2].Groups[1].Value == spTxt) { mtchTxt = mtchPoint[2].Groups[1].Value; mInt = 2; } else if (mtchPoint[3].Groups[1].Value == spTxt) { mtchTxt = mtchPoint[3].Groups[1].Value; mInt = 3; } else if (mtchPoint[4].Groups[1].Value == spTxt) { mtchTxt = mtchPoint[4].Groups[1].Value; mInt = 4; } } catch { } } if (spTxt == mtchTxt) { int stPoint = mtchPoint[mInt].Groups[1].Index; int etPoint = stPoint + spTxt.Length; htLineTxt = htLineTxt.Insert(etPoint, "</span>"); string spanidTxt = "<span id=\"w" + spanID.ToString() + "\">"; htLineTxt = htLineTxt.Insert(stPoint, spanidTxt); spanPoint = etPoint + 7 + spanidTxt.Length; } smilTxt = smilTxt.Replace("[etime/]", caTime); string pTxt = "<par id=\"par" + spanID.ToString() + "\">\n"; pTxt += "<text src=\"" + curPageHtml + "#w" + spanID.ToString() + "\" />\n"; pTxt += "<audio src=\"../audio/" + curaudioFile + "\" clipBegin=\"" + aTime + "\" clipEnd=\"[etime/]\"/>\n"; pTxt += "</par>\n"; smilTxt += pTxt; spanID++; //probar update try { probar.Value += 1; } catch { } }
private void Api_SpeakProgress(object sender, System.Speech.Synthesis.SpeakProgressEventArgs e) { speechViewControl.UpdateSelection(e.CharacterPosition, e.CharacterCount); }
//Post update of progress for System Speech Synthesizer static void SynthProgressUpdate(object sender, System.Speech.Synthesis.SpeakProgressEventArgs e) { int percent = (int)(100.0f * (float)e.CharacterPosition / (float)textLength); Console.Write("\r " + fileName + " Progress: {0}% ", percent); }