Condividi tramite


EventParameterType Enumerazione

Definizione

Enumera i tipi di puntatori di dati passati agli eventi di sintesi vocale.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Ereditarietà
EventParameterType

Campi

Object 2

Attualmente non supportato.

Pointer 3

Attualmente non supportato.

String 4

Indica che l'argomento param2 all'oggetto SpeechEventInfo è System.IntPtr creato utilizzando System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni che fa riferimento a un oggetto System.String; il parametro param1 può accettare qualsiasi valore.

Token 1

Indica che l'argomento param2 per SpeechEventInfo è un IntPtr creato usando PtrToStructure che fa riferimento a un token della tecnologia di riconoscimento vocale desktop di Windows, ovvero un oggetto della tecnologia di riconoscimento vocale desktop di Windows che rappresenta una risorsa, ad esempio una voce (VoiceInfo). param1 può assumere qualsiasi valore.

Undefined 0

Indica che l'argomento param2 all'oggetto SpeechEventInfo non è definito. In genere, param1 e param2 vengono poi ignorati. Tuttavia, se EventId è WordBoundary, è possibile generare un evento del misuratore di stato. param1 deve essere un intero contenente la lunghezza della parola corrente e param2 un IntPtr che fa riferimento a un intero contenente l'offset della parola corrente.

Esempio

L'esempio seguente fa parte di un'implementazione di sintesi vocale personalizzata che eredita da e usa TtsEngineSsml TextFragment , , e SpeechEventInfo FragmentState TtsEventId .

Implementazione di Speak

  1. Riceve una matrice di istanze di e crea una nuova matrice di istanze da TextFragment passare al metodo in un motore di sintesi TextFragment Speak sottostante.

  2. Se il TtsEngineAction valore di enumerazione trovato dalla proprietà Action nell'oggetto restituito dalla proprietà di ogni istanza FragmentState è , State TextFragment Speak l'implementazione di

    • Converte l'americanismo in britishismi nel testo da pronunciare.

    • Se la proprietà sulle interfacce fornite all'implementazione supporta il tipo di evento , viene usata un'istanza di per creare un evento per la creazione di un contatore dello stato EventInterest ITtsEngineSite del WordBoundary SpeechEventInfo sintetizzatore.

      I parametri in SpeechEventInfo , incluso EventParameterType il valore del membro restituito da , ParameterType vengono usati per registrare l'evento generato tramite il LogSpeechEvent metodo .

  3. Un motore di rendering vocale viene quindi chiamato con la matrice TextFragment modificata.

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);  

}  

Commenti

EventParameterTypeL'enumerazione viene utilizzata durante la costruzione di un oggetto SpeechEventInfo . Un membro di enumerazione passato come argomento al costruttore per specifica come viene interpretato l'argomento del costruttore (che deve EventParameterType parameterType essere un SpeechEventInfo param2 IntPtr ).

La scelta EventParameterType di è determinata dal tipo di evento richiesto, come specificato da un membro di System.Speech.Synthesis.TtsEngine.TtsEventId .

Per informazioni dettagliate sull'uso di EventParameterType , vedere la documentazione per EventId

Nota

Attualmente, le istanze di un motore di riconoscimento vocale sintetico gestito scritte usando i membri dello spazio dei nomi System.Speech.Synthesis non possono modificare le risorse dopo la costruzione.

Si applica a

Vedi anche