Compartir a través de


EventParameterType Enumeración

Definición

Enumera los tipos de punteros de datos transferidos a los eventos de la síntesis de voz.

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

Campos

Object 2

Actualmente no se admite.

Pointer 3

Actualmente no se admite.

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.

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). param1 puede tomar cualquier valor.

Undefined 0

Indica que el argumento param2 para SpeechEventInfo no está definido. Por lo general, se omiten param1 y param2. Sin embargo, si EventId es WordBoundary, se puede generar un evento de medición de progreso. 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.

Ejemplos

El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de y usa TtsEngineSsml TextFragment , , y SpeechEventInfo FragmentState TtsEventId .

La implementación de Speak

  1. Recibe una matriz de instancias y crea una nueva matriz de instancias que se pasarán al método TextFragment en un motor de TextFragment Speak síntesis subyacente.

  2. Si el TtsEngineAction valor de enumeración de encontrado en la propiedad en el devuelto por la propiedad de cada instancia Action es , la FragmentState State TextFragment Speak implementación

    • Traduce el americanismo a los britishismos en el texto que se va a hablar.

    • Si la propiedad en las interfaces proporcionadas a la implementación admite el tipo de evento , se usa una instancia de para crear un evento para impulsar un medidor de progreso EventInterest ITtsEngineSite del WordBoundary SpeechEventInfo sintetizador.

      Los parámetros de SpeechEventInfo , incluido el valor de miembro devuelto por , se usan para registrar el evento generado a EventParameterType través del método ParameterType LogSpeechEvent .

  3. A continuación, se llama a un motor de representación de voz con la matriz TextFragment modificada.

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 usa al construir un SpeechEventInfo objeto . Un miembro de enumeración pasado como argumento al constructor para especifica cómo se interpreta el argumento del EventParameterType parameterType constructor SpeechEventInfo param2 (que debe ser IntPtr ).

La elección de viene determinada por el tipo de evento que se solicita, tal y como EventParameterType especifica un miembro de System.Speech.Synthesis.TtsEngine.TtsEventId .

Para obtener información detallada sobre cómo usar EventParameterType , consulte la documentación de . EventId

Nota

Actualmente, las instancias de motores de voz sintéticos administrados escritos con los miembros del espacio de nombres System.Speech.Synthesis no pueden cambiar los recursos después de la construcción.

Se aplica a

Consulte también