TextFragment.TextToSpeak Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia tekst mowy fragmentu.
public:
property System::String ^ TextToSpeak { System::String ^ get(); void set(System::String ^ value); };
public string TextToSpeak { get; set; }
member this.TextToSpeak : string with get, set
Public Property TextToSpeak As String
Wartość właściwości
Wartość jest zwracana lub może służyć do ustawienia tekstu mowy, który ma być używany przez aparat syntezy mowy System.String
do generowania danych wyjściowych audio.
Przykłady
Poniższy przykład jest częścią niestandardowej implementacji syntezy mowy dziedziczącej z , i TtsEngineSsml używającej TextFragment wartości , , SpeechEventInfo i FragmentState TtsEventId .
Implementacja programu Speak
Odbiera tablicę wystąpień i tworzy nową tablicę wystąpień, które mają zostać przekazane do metody w TextFragment TextFragment
Speak
bazowym a aparatze syntezy.Podczas tworzenia obiektu w nowych wystąpieniach należy szczególnie ostrożnie stosować się do obiektu w TextOffset TextLength TextFragment TextToSpeak TextFragment pierwotnej części obiektu .
Jeśli wartość TtsEngineAction wyliczenia według znalezionej we właściwości zwróconej przez właściwość każdego wystąpienia to Action FragmentState , State TextFragment Speak implementacja
Tłumaczy americanizm na britishisms w tekście, który ma być wypowiadany.
Jeśli właściwość w interfejsach dostarczonych do implementacji obsługuje typ zdarzenia, wystąpienie jest używane do utworzenia zdarzenia w celu utworzenia miernika postępu EventInterest ITtsEngineSite WordBoundary SpeechEventInfo syntezatora.
Aparat renderowania mowy jest następnie wywoływany z zmodyfikowaną TextFragment tablicą.
private const int WordBoundaryFlag = 1 << (int)TtsEventId.WordBoundary;
private readonly char[] spaces = new char[] { ' ', '\t', '\r', '\n' };
internal struct UsVsUk
{
internal string UK;
internal string US;
}
override public void Speak (TextFragment [] frags, IntPtr wfx, ITtsEngineSite site)
{
TextFragment [] newFrags=new TextFragment[frags.Length];
for (int i=0;i<frags.Length;i++){
newFrags[i].State=frags[i].State;
//truncate
newFrags[i].TextToSpeak = frags[i].TextToSpeak.Substring(frags[i].TextOffset,
frags[i].TextLength);
newFrags[i].TextLength = newFrags[i].TextToSpeak.Length;
newFrags[i].TextOffset = 0;
if (newFrags[i].State.Action == TtsEngineAction.Speak) {
//Us to UK conversion
foreach (UsVsUk term in TransList) {
newFrags[i].TextToSpeak.Replace(term.US, term.UK);
}
//Generate progress meter events if supported
if ((site.EventInterest & WordBoundaryFlag) != 0) {
string[] subs = newFrags[i].TextToSpeak.Split(spaces);
foreach (string s in subs) {
int offset = newFrags[i].TextOffset;
SpeechEventInfo spEvent = new SpeechEventInfo((Int16)TtsEventId.WordBoundary,
(Int16)EventParameterType.Undefined,
s.Length, new IntPtr(offset));
offset += s.Length;
if (s.Trim().Length > 0) {
SpeechEventInfo[] events = new SpeechEventInfo[1];
events[0] = spEvent;
site.AddEvents(events, 1);
}
}
}
}
}
_baseSynthesize.Speak(newFrags, wfx, site);
}
Uwagi
Wartość domyślna tej właściwości to System.String.Empty
.
Aplikacje mogą całkowicie zmienić wartość TextToSpeak .
Zresetowanie wartości nie TextToSpeak spowoduje zmiany wartości i TextOffset TextLength .