Compartir a través de


EventParameterType Enumeración

Definición

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

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

Campos

Nombre Valor Description
Undefined 0

Indica que el param2 argumento a no SpeechEventInfo está definido. Por lo general, param1 y param2 se omiten. Sin embargo, si EventId es WordBoundary, se puede generar un evento de medidor de progreso. param1 debe ser un entero que contiene la longitud de la palabra actual y param2 un IntPtr entero que hace referencia a un entero que contiene el desplazamiento de la palabra actual.

Token 1

Indica que el param2 argumento de SpeechEventInfo es un IntPtr objeto creado mediante PtrToStructure que hace referencia a un token de tecnología de voz de escritorio de Windows, que es un objeto de tecnología de voz de escritorio de Windows que representa un recurso, como una voz (VoiceInfo). param1 puede asumir cualquier valor.

Object 2

Actualmente no se admite.

Pointer 3

Actualmente no se admite.

String 4

Indica que el param2 argumento de SpeechEventInfo es un System.IntPtr objeto creado mediante System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni la referencia a un System.String objeto ; param1 puede asumir cualquier valor.

Ejemplos

El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de TtsEngineSsmly mediante el uso de TextFragment, SpeechEventInfo, FragmentStatey TtsEventId.

La implementación de Speak

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

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

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

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

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

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

}

Comentarios

La EventParameterType enumeración se usa al construir un SpeechEventInfo objeto . Un EventParameterType miembro de enumeración pasado como parameterType argumento al constructor para SpeechEventInfo especifica cómo se interpreta el param2 argumento del constructor (que debe ser un IntPtr).

La elección de EventParameterType viene determinada por el tipo de evento que se solicita, según lo especificado por 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 un motor de voz sintético administrado escrito con los miembros del espacio de nombres no pueden cambiar los recursos después de la System.Speech.Synthesis construcción.

Se aplica a

Consulte también