Sdílet prostřednictvím


TextFragment.TextToSpeak Vlastnost

Definice

Získá nebo nastaví text řeči 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

Hodnota vlastnosti

Je System.String vrácena hodnota a nebo se dá použít k nastavení textu řeči, který má modul syntézy řeči používat k vygenerování zvukového výstupu.

Příklady

Následující příklad je součástí vlastní implementace syntézy řeči zděděné z TtsEngineSsmla pomocí , TextFragmentSpeechEventInfo, FragmentStatea TtsEventId.

Provádění Speak

  1. Přijme pole TextFragment instancí a vytvoří nové pole TextFragment instancí, které se mají předat Speak metodě v podkladovém syntezčním modulu.

    Při vytváření nových instancí se při vytváření objektu na nových TextFragment instancích dbá TextOffsetTextLength zvláštní pozornost na původní TextFragment .TextToSpeak

  2. Pokud je TtsEngineAction hodnota výčtu Action nalezena z vlastnosti FragmentState vrácené State vlastností každé TextFragment instance Speak, implementace

    • V textu, který se má vyslovovat, přeloží americanismus na britštinu.

    • EventInterest Pokud vlastnost na ITtsEngineSite rozhraních poskytovaných implementaci podporuje WordBoundary typ události, SpeechEventInfo instance se použije k vytvoření události, která bude řídit měřič průběhu syntetizátoru.

  3. Modul pro vykreslování řeči se pak zavolá s upraveným TextFragment polem.

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

}  

Poznámky

Výchozí hodnota této vlastnosti je System.String.Empty.

Aplikace mohou zcela změnit hodnotu TextToSpeak.

Při resetování hodnoty TextToSpeak se nezmění hodnota TextOffset a TextLength.

Platí pro