TextFragment.TextToSpeak Eigenschap

Definitie

Hiermee haalt u de spraaktekst van het fragment op of stelt u deze in.

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

Waarde van eigenschap

Een System.String wordt geretourneerd of kan worden gebruikt om de spraaktekst in te stellen voor gebruik door een spraaksynthese-engine om audio-uitvoer te genereren.

Voorbeelden

Het onderstaande voorbeeld maakt deel uit van een aangepaste spraaksynthese-implementatie die wordt overgenomen van TtsEngineSsml, en het gebruik van TextFragment, SpeechEventInfoen FragmentState.TtsEventId

De implementatie van Speak

  1. Hiermee ontvangt u een matrix met TextFragment exemplaren en maakt u een nieuwe matrix met TextFragment exemplaren die moeten worden doorgegeven aan de Speak methode op een onderliggende synthese-engine.

    Bijzondere zorg wordt gebruikt om de TextOffset, TextLength op het origineel TextFragment te respecteren bij het maken van de TextToSpeak nieuwe TextFragment exemplaren.

  2. Als de TtsEngineAction opsommingswaarde op basis van de Action eigenschap op de FragmentState geretourneerde State eigenschap van elke TextFragment instantie is, is Speakde implementatie

    • Vertaalt Americanisme in Britishismen in de tekst die moet worden gesproken.

    • Als de EventInterest eigenschap op de ITtsEngineSite interfaces die zijn opgegeven voor de implementatie het WordBoundary gebeurtenistype ondersteunt, wordt er een SpeechEventInfo exemplaar gebruikt om een gebeurtenis te maken om een synthesizervoortgangsmeter aan te sturen.

  3. Vervolgens wordt een spraakrenderingsengine aangeroepen met de gewijzigde TextFragment matrix.

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

}

Opmerkingen

De standaardwaarde van deze eigenschap is System.String.Empty.

Toepassingen zijn gratis om de waarde van TextToSpeak.

Als u de waarde opnieuw TextToSpeak wilt instellen, wordt de waarde van TextOffset en TextLengthniet gewijzigd.

Van toepassing op