SpeechEventInfo(Int16, Int16, Int32, IntPtr) Конструктор

Определение

Создает соответствующий объект SpeechEventInfo.

public:
 SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
public SpeechEventInfo (short eventId, short parameterType, int param1, IntPtr param2);
new System.Speech.Synthesis.TtsEngine.SpeechEventInfo : int16 * int16 * int * nativeint -> System.Speech.Synthesis.TtsEngine.SpeechEventInfo
Public Sub New (eventId As Short, parameterType As Short, param1 As Integer, param2 As IntPtr)

Параметры

eventId
Int16

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

parameterType
Int16

Экземпляр EventParameterType, показывающий, как ссылка System.IntPtr объекта param2 должна интерпретироваться и, следовательно, как необходимо использовать param1.

param1
Int32

Целое число, передаваемое в платформу речи, когда создается событие, запрашиваемое экземпляром конструируемого SpeechEventInfo.

Точный смысл этого целого числа неявно определяется значением parameterType.

param2
IntPtr

nativeint

Экземпляр System.IntPtr, ссылающийся на объект. передаваемое в платформу речи, когда создается событие, запрашиваемое экземпляром конструируемого SpeechEventInfo.

Тип, на который должна указывать ссылка, явно определяется значением parameterType. Значение System.IntPtr.Zero.

Примеры

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

Реализация Speak

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

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

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

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

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

}  

Комментарии

Допустимые значения, используемые для parameterType , и param1 param2 их значение, определяются типом запрашиваемого события, как указано членом, TtsEventId используемым для eventId .

Подробные сведения о соответствующих значениях для parameterType , и см. в param1 param2 документации по EventId

Тип событий, которые могут быть обработаны инфраструктурой платформы обработки речи, можно получить с помощью EventInterest свойства в реализации сайта системы синтезатора ITtsEngineSite .

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