Condividi tramite


EventParameterType Enumerazione

Definizione

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

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

Campi

Nome Valore Descrizione
Undefined 0

Indica che l'argomento param2 di SpeechEventInfo è indefinito. In genere, param1 e param2 vengono quindi ignorati. Tuttavia, se EventId è WordBoundary, è possibile generare un evento indicatore di stato. param1 deve essere un numero intero contenente la lunghezza della parola corrente e param2 un IntPtr intero che fa riferimento a un intero contenente l'offset della parola corrente.

Token 1

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

Object 2

Attualmente non è supportato.

Pointer 3

Attualmente non è supportato.

String 4

Indica che l'argomento param2 di è un System.IntPtr oggetto creato usando System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni il riferimento a SpeechEventInfo un System.String oggetto. param1 Può assumere qualsiasi valore.

Esempio

L'esempio seguente fa parte di un'implementazione personalizzata della sintesi vocale che eredita da TtsEngineSsmle usando l'uso di TextFragment, SpeechEventInfoFragmentState, e TtsEventId.

Implementazione di Speak

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

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

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

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

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

  3. Viene quindi chiamato un motore di rendering vocale con la matrice modificata 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);

}

Commenti

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

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

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

Annotazioni

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

Si applica a

Vedi anche