TextFragment.TextLength Egenskap

Definition

Hämtar eller anger längden på taltexten i fragmentet.

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

Egenskapsvärde

En int returneras eller kan användas för att ange längden, i tecken, på den textsträng som är associerad med det här fragmentet som ska talas.

Exempel

Exemplet nedan är en del av en anpassad implementering av talsyntes som ärver från TtsEngineSsmloch använder användningen av TextFragment, SpeechEventInfo, FragmentStateoch TtsEventId.

Genomförandet av Speak

  1. Tar emot en matris med TextFragment instanser och skapar en ny matris med TextFragment instanser som ska skickas till Speak metoden på en underliggande syntesmotor.

    Särskild försiktighet används för att respektera TextOffset, TextLength på originalet TextFragment när du skapar TextToSpeak på de nya TextFragment instanserna.

  2. TtsEngineAction Om uppräkningsvärdet som hittas från Action egenskapen på den FragmentState som returneras av egenskapen för State varje TextFragment instans är , är Speakimplementeringen

    • Översätter amerikanismen till britishismer i texten som ska talas.

    • EventInterest Om egenskapen på de ITtsEngineSite gränssnitt som tillhandahålls till implementeringen stöder WordBoundary händelsetypen, används en SpeechEventInfo instans för att skapa en händelse för att köra en synthesizer-förloppsmätare skapas.

  3. En talrenderingsmotor anropas sedan med den ändrade TextFragment matrisen.

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

}

Kommentarer

Standardvärdet för den här egenskapen är 0.

Gäller för