SpeechEventInfo.EventId Свойство

Определение

Получает и задает событие платформы речи, для запроса которого используется текущий экземпляр SpeechEventInfo.

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

Значение свойства

Int16

Возвращает член TtsEventId как short, указывающий тип события, который объект SpeechEventInfo должен создать.

Примеры

Приведенный ниже пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml , и использования функций TextFragment , SpeechEventInfo , FragmentState и. TtsEventId

Реализация Speak

  1. Получает массив TextFragment экземпляров и создает новый массив TextFragment экземпляров для передачи в Speak метод базового механизма синтеза.

  2. Если TtsEngineAction значение перечисления, найденное в Action свойстве, FragmentState возвращаемом State свойством каждого TextFragment экземпляра Speak , равно, то реализация

    • Преобразует Американский регион в Бритишисмс текст.

    • Если EventInterest свойство в ITtsEngineSite интерфейсах, предоставленных для реализации, поддерживает WordBoundary Тип события, то SpeechEventInfo экземпляр используется для создания события для создания счетчика хода выполнения синтезатора.

      Параметры в SpeechEventInfo , включая, EventId используются для записи в журнал события, созданного с помощью LogSpeechEvent метода.

  3. Затем модуль рендеринга речи вызывается с измененным 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);  

}  

Применяется к