Бөлісу құралы:


EventParameterType Перечисление

Определение

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

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Наследование
EventParameterType

Поля

Имя Значение Описание
Undefined 0

Указывает, что param2 аргумент для аргумента SpeechEventInfo не определен. Как правило, param1 и param2 затем игнорируются. Однако если EventId это WordBoundaryтак, можно создать событие измерения хода выполнения. param1 должно быть целым числом, содержащим длину текущего слова, и param2IntPtr ссылкой на целое число, содержащее смещение текущего слова.

Token 1

Указывает, что param2 аргумент SpeechEventInfo для создания является IntPtr созданным с помощью PtrToStructure маркера технологии "Речь рабочего стола Windows", который представляет ресурс, например голос (VoiceInfo). param1 может принимать любое значение.

Object 2

В настоящее время не поддерживается.

Pointer 3

В настоящее время не поддерживается.

String 4

Указывает, что param2 аргумент SpeechEventInfo для создания с System.IntPtr помощью System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni ссылки System.String на объект; param1 может принимать любое значение.

Примеры

Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, и использования , и использования TextFragment, SpeechEventInfoFragmentStateи TtsEventId.

Реализация Speak

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

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

    • Преобразует американизм в британизм в тексте, который следует говорить.

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

      Параметры, SpeechEventInfoEventParameterType включая возвращаемое ParameterTypeзначением члена, используются для регистрации события, созданного 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);

}

Комментарии

Перечисление EventParameterType используется при создании SpeechEventInfo объекта. Член EventParameterType перечисления, переданный в качестве parameterType аргумента конструктору, SpeechEventInfo указывает, как param2 интерпретируется аргумент конструктора (который должен быть IntPtr) .

Выбор EventParameterType определяется типом запрашиваемого события, как указано участником System.Speech.Synthesis.TtsEngine.TtsEventId.

Подробные сведения об использовании EventParameterTypeсм. в документации по EventId

Замечание

В настоящее время экземпляры управляемых искусственных речевых подсистем, написанных с помощью элементов System.Speech.Synthesis пространства имен, не могут изменять ресурсы после построения.

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

См. также раздел