Aracılığıyla paylaş


SpeechEventInfo.EventId Özellik

Tanım

Bir örneğinin SpeechEventInfo talep etmek için kullanıldığı konuşma platformu olayını alır ve ayarlar.

public:
 property short EventId { short get(); };
public short EventId { get; }
member this.EventId : int16
Public ReadOnly Property EventId As Short

Özellik Değeri

Int16

TtsEventIdBir üyesini short , nesnenin oluşturulacağı olay türünü belirten, olarak döndürür SpeechEventInfo .

Örnekler

Aşağıdaki örnek, ' den devralan özel bir konuşma sen, uygulamasının bir parçasıdır TtsEngineSsml ve,, TextFragment SpeechEventInfo FragmentState ve kullanımını kullanarak TtsEventId

Uygulamasının Speak

  1. Örnek dizisini alır TextFragment ve TextFragment Speak temel alınan bir sensıs altyapısında yönteme geçirilecek yeni bir örnek dizisi oluşturur.

  2. TtsEngineAction Action FragmentState Her örneğin özelliği tarafından döndürülen özellikten bulunan bir numaralandırma değeri, State TextFragment Speak uygulama

    • Americanism, konuşulan metinde Britishisms 'e çevirir.

    • EventInterest ITtsEngineSite Uygulamaya sunulan arayüzlerde bulunan özellik WordBoundary olay türünü destekliyorsa, SpeechEventInfo bir Birleştiricisi oluşturmak için bir olay oluşturmak için bir örnek kullanılır.

      Dahil parametreler, SpeechEventInfo EventId yöntemi aracılığıyla oluşturulan olayı günlüğe kaydetmek için kullanılır LogSpeechEvent .

  3. Daha sonra, değiştirilen dizi ile 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));  
         LogSpeechEvent(spEvent.EventId,   
                        spEvent.ParameterType,   
                        spEvent.Param1,  
                        spEvent.Param2);  
        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);  

}  

Şunlara uygulanır