Teilen über


TextFragment.TextLength Eigenschaft

Definition

Ruft die Länge des Sprachtexts im Fragment ab oder legt diese fest.

public:
 property int TextLength { int get(); void set(int value); };
public int TextLength { get; set; }
member this.TextLength : int with get, set
Public Property TextLength As Integer

Eigenschaftswert

Ein int wird zurückgegeben oder kann verwendet werden, um die Länge der Textzeichenfolge, in Zeichen, festzulegen, die diesem zu sprechenden Fragment zugeordnet ist.

Beispiele

Das folgende Beispiel ist Teil einer benutzerdefinierten Sprachsyntheseimplementierung, die von TtsEngineSsmlerbt und die Verwendung von TextFragment, SpeechEventInfo, FragmentStateund TtsEventIdverwendet.

Die Implementierung von Speak

  1. Empfängt ein Array von TextFragment Instanzen und erstellt ein neues Array von TextFragment Instanzen, die an die Speak -Methode in einer zugrunde liegenden Synthese-Engine übergeben werden sollen.

    Bei der Erstellung von für die TextOffsetTextLength neuen TextFragment Instanzen wird besondere Sorgfalt verwendet, um auf TextToSpeak dem Original TextFragment zu achten.

  2. Wenn der TtsEngineAction Enumerationswert von, der von der Action -Eigenschaft gefunden wird, für die FragmentState von der State -Eigenschaft der einzelnen TextFragment Instanzen zurückgegeben wird, lautet Speakdie -Implementierung.

    • Übersetzt Amerikanismus in den zu sprechenden Text in britishisms.

    • Wenn die EventInterest -Eigenschaft auf den Schnittstellen, die ITtsEngineSite für die Implementierung bereitgestellt werden, den WordBoundary Ereignistyp unterstützt, wird eine SpeechEventInfo -Instanz verwendet, um ein Ereignis zu erstellen, um eine Synthesizer-Fortschrittsanzeige zu steuern.

  3. Anschließend wird mit dem geänderten TextFragment Array eine Sprachrendering-Engine aufgerufen.

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);  

}  

Hinweise

Der Standardwert dieser Eigenschaft ist 0.

Gilt für: