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

Определение

Перечисляет типы указателей данных, переданных событиям синтеза речи.Enumerates the types of data pointers passed to speech synthesis events.

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

Поля

Object 2

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

Pointer 3

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

String 4

Указывает, что аргумент param2 к SpeechEventInfo является объектом System.IntPtr, созданным с использованием универсального кода ресурса System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni, который ссылается на объект System.String; param1 может принимать любое значение.Indicates that the param2 argument to the SpeechEventInfo is a System.IntPtr created using System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni referencing a System.String object; param1 may take on any value.

Token 1

Указывает, что аргумент param2 в SpeechEventInfo — это IntPtr, созданный с помощью PtrToStructure, который ссылается на токен речевой технологии Windows для настольных систем — объект речевой технологии Windows для настольных систем, представляющий ресурс, например голос (VoiceInfo).Indicates that the param2 argument to the SpeechEventInfo is an IntPtr created using PtrToStructure that references a Windows Desktop Speech Technology token, which is a Windows Desktop Speech Technology object representing a resource, such as a voice (VoiceInfo). param1 может принимать любое значение.param1 may take on any value.

Undefined 0

Указывает, что аргумент param2 к SpeechEventInfo не определен.Indicates that the param2 argument to the SpeechEventInfo is undefined. Как правило, param1 и param2 пропускаются.Generally, param1 and param2 are then ignored. Однако если EventId имеет значение WordBoundary, можно создать событие индикатора выполнения.However, if EventId is WordBoundary, a progress meter event can be generated. param1 должен быть целым числом, содержащим длину текущего слова, а param2 — IntPtr ссылающимся на целое число, содержащее смещение текущего слова.param1 should be an integer containing the length of the current word, and param2 an IntPtr referencing an integer containing the offset of the current word.

Примеры

Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml , и использования функций TextFragment , SpeechEventInfo , FragmentState и TtsEventId .The following example is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the use of TextFragment, SpeechEventInfo, FragmentState, and TtsEventId.

РеализацияSpeakThe implementation of Speak

  1. Получает массив TextFragment экземпляров и создает новый массив TextFragment экземпляров для передачи в Speak метод базового механизма синтеза.Receives an array of TextFragment instances and creates a new array of TextFragment instances to be passed to the Speak method on an underlying synthesis engine.

  2. Если TtsEngineAction значение перечисления, найденное в Action свойстве, FragmentState возвращаемом State свойством каждого TextFragment экземпляра Speak , равно, то реализацияIf the TtsEngineAction enumeration value by found from the Action property on the FragmentState returned by the State property of each TextFragment instance is Speak, the implementation

    • Преобразует Американский регион в Бритишисмс текст.Translates Americanism to Britishisms in the text to be spoken.

    • Если EventInterest свойство в ITtsEngineSite интерфейсах, предоставленных для реализации, поддерживает WordBoundary Тип события, то SpeechEventInfo экземпляр используется для создания события для создания счетчика хода выполнения синтезатора.If the EventInterest property on the ITtsEngineSite interfaces provided to the implementation support the WordBoundary event type, a SpeechEventInfo instance is used to create an event to drive a synthesizer progress meter is created.

      Параметры в SpeechEventInfo , включая EventParameterType значение элемента, возвращаемое ParameterType , используются для записи в журнал события, созданного с помощью LogSpeechEvent метода.The parameters on SpeechEventInfo, including the EventParameterType member value returned by ParameterType, are used to log the event generated through the LogSpeechEvent method.

  3. Затем модуль рендеринга речи вызывается с измененным TextFragment массивом.A speech rendering engine is then called with the modified TextFragment array.

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 объекта.The EventParameterType enumeration is used when constructing a SpeechEventInfo object. EventParameterTypeЧлен перечисления, переданный в качестве parameterType аргумента в конструктор, SpeechEventInfo указывает, как param2 интерпретируется аргумент конструктора (который должен быть IntPtr ).An EventParameterType enumeration member passed as the parameterType argument to the constructor for SpeechEventInfo specifies how the param2 argument of the constructor (which must be an IntPtr) is interpreted.

Выбранный EventParameterType тип зависит от типа запрашиваемого события, как указано членом System.Speech.Synthesis.TtsEngine.TtsEventId .The choice of EventParameterType is dictated by the type of event being requested, as specified by a member of System.Speech.Synthesis.TtsEngine.TtsEventId.

Подробные сведения об использовании см. EventParameterType в документации поEventIdFor detailed information on how use EventParameterType, see the documentation for EventId

Примечание

Сейчас экземпляры управляемых синтетических обработчиков речи, написанных с помощью членов System.Speech.Synthesis пространства имен, не могут изменить ресурсы после создания.Currently, instances of a managed synthetic speech engines written using the members of the System.Speech.Synthesis namespace cannot change resources after construction.

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

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