EventParameterType EventParameterType EventParameterType EventParameterType Enum

Definición

Enumera los tipos de punteros de datos transferidos a los eventos de la síntesis de voz.Enumerates the types of data pointers passed to speech synthesis events.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Herencia
EventParameterTypeEventParameterTypeEventParameterTypeEventParameterType

Campos

Object Object Object Object 2

Actualmente no se admite.Currently not supported.

Pointer Pointer Pointer Pointer 3

Actualmente no se admite.Currently not supported.

String String String String 4

Indica que el argumento param2 para SpeechEventInfo es un objeto System.IntPtr creado mediante System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni que hace referencia a un objeto System.String; param1 puede tomar cualquier valor.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 Token Token Token 1

Indica que el argumento param2 de SpeechEventInfo es un IntPtr creado mediante PtrToStructure, que hace referencia a un token de Windows Desktop Speech Technology, que es un objeto de Windows Desktop Speech Technology que representa un recurso, como una voz (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 puede tomar cualquier valor.param1 may take on any value.

Undefined Undefined Undefined Undefined 0

Indica que el argumento param2 para SpeechEventInfo no está definido.Indicates that the param2 argument to the SpeechEventInfo is undefined. Por lo general, se omiten param1 y param2.Generally, param1 and param2 are then ignored. Sin embargo, si EventId es WordBoundary, se puede generar un evento de medición de progreso.However, if EventId is WordBoundary, a progress meter event can be generated. param1 debe ser un entero que contenga la longitud de la palabra actual; y param2, un IntPtr que haga referencia a un entero que contenga el desplazamiento de la palabra actual.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.

Ejemplos

El siguiente ejemplo forma parte de una implementación personalizada de la síntesis de voz TtsEngineSsmlque hereda de y usa el TextFragmentuso SpeechEventInfode FragmentState,, TtsEventIdy.The following example is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the use of TextFragment, SpeechEventInfo, FragmentState, and TtsEventId.

La implementación deSpeakThe implementation of Speak

  1. Recibe una matriz de TextFragment instancias de y crea una nueva matriz TextFragment de instancias de Speak que se van a pasar al método en un motor de síntesis subyacente.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. Si el TtsEngineAction valor de enumeración que se Action encuentra en la FragmentState propiedad en la State devuelta por TextFragment la propiedad Speakde cada instancia es, la implementaciónIf 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

    • Traduce el Americanism a Britishisms en el texto que se va a hablar.Translates Americanism to Britishisms in the text to be spoken.

    • Si la EventInterest propiedad de las ITtsEngineSite interfaces proporcionadas a la implementación admite WordBoundary el tipo de evento SpeechEventInfo , se usa una instancia de para crear un evento para impulsar la creación de un indicador de progreso de sintetizador.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.

      Los parámetros de SpeechEventInfo, incluido el EventParameterType valor de miembro devuelto por ParameterType, se usan para registrar el evento generado LogSpeechEvent a través del método.The parameters on SpeechEventInfo, including the EventParameterType member value returned by ParameterType, are used to log the event generated through the LogSpeechEvent method.

  3. A continuación, se llama a un motor de representación de TextFragment voz con la matriz modificada.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);  

}  

Comentarios

La EventParameterType enumeración se utiliza al construir un SpeechEventInfo objeto.The EventParameterType enumeration is used when constructing a SpeechEventInfo object. Un EventParameterType miembro de enumeración pasado parameterType como argumento al constructor de SpeechEventInfo especifica cómo se param2 interpreta el argumento del constructor (que debe ser IntPtrun).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.

La elección de EventParameterType está dictada por el tipo de evento que se solicita, según lo especificado por un System.Speech.Synthesis.TtsEngine.TtsEventIdmiembro de.The choice of EventParameterType is dictated by the type of event being requested, as specified by a member of System.Speech.Synthesis.TtsEngine.TtsEventId.

Para obtener información detallada sobre el EventParameterTypeuso de, consulte la documentación de.EventIdFor detailed information on how use EventParameterType, see the documentation for EventId

Nota

Actualmente, las instancias de motores de voz sintético administrados que se escriben System.Speech.Synthesis con los miembros del espacio de nombres no pueden cambiar los recursos después de la construcción.Currently, instances of a managed synthetic speech engines written using the members of the System.Speech.Synthesis namespace cannot change resources after construction.

Se aplica a

Consulte también: