TextFragment.TextToSpeak Özellik

Tanım

Parçanın konuşma metnini alır veya ayarlar.

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

Özellik Değeri

döndürülür System.String veya ses çıkışı oluşturmak üzere konuşma sentezi altyapısı tarafından kullanılacak konuşma metnini ayarlamak için kullanılabilir.

Örnekler

Aşağıdaki örnek, uygulamasından TtsEngineSsmldevralınan ve , SpeechEventInfo, FragmentStateve TtsEventIdkullanımını kullanan özel konuşma sentezi uygulamasının TextFragmentbir parçasıdır.

Uygulamasının Speak

  1. Bir TextFragment dizi örneği alır ve temel alınan sentez altyapısında yöntemine Speak geçirilecek yeni bir örnek dizisi TextFragment oluşturur.

    Yeni TextFragment örneklerde oluştururken TextToSpeak özgün TextFragment üzerindeki öğesine TextLength saygı TextOffsetduymak için özel bakım kullanılır.

  2. TtsEngineAction Her TextFragment örneğin özelliği tarafından State döndürülen özelliğinden FragmentStateAction bulunan numaralandırma değeri iseSpeak, uygulama

    • Konuşulacak metinde Amerikancılığı İngilizlere çevirir.

    • EventInterest Uygulamaya sağlanan arabirimlerdeki özelliği ITtsEngineSite olay türünü destekliyorsaWordBoundary, bir SpeechEventInfo synthesizer ilerleme ölçümünü yönlendirmek için olay oluşturmak için bir örnek kullanılır.

  3. Ardından değiştirilen diziyle bir konuşma işleme altyapısı çağrılır TextFragment .

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

}  

Açıklamalar

Bu özelliğin varsayılan değeri şeklindedir System.String.Empty.

Uygulamalar değerini TextToSpeaktamamen değiştirebilir.

değerinin TextToSpeak sıfırlanması ve TextLengthdeğerini TextOffset değiştirmez.

Şunlara uygulanır