TextFragment.TextToSpeak Właściwość

Definicja

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

String

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

  1. 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 .

  2. 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.

  3. 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 .

Dotyczy