Freigeben über


EventParameterType Enumeration

Definition

Listet die Typen von Datenzeigern auf, die an Sprachesyntheseereignisse übergeben werden.

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

Felder

Object 2

Wird derzeit nicht unterstützt.

Pointer 3

Wird derzeit nicht unterstützt.

String 4

Gibt an, dass das param2-Argument zu SpeechEventInfo ein System.IntPtr ist, das mit System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni erstellt wird, das ein System.String-Objekt referenziert; param1 akzeptiert möglicherweise einen beliebigen Wert.

Token 1

Zeigt an, dass das param2-Argument für SpeechEventInfo ein IntPtr ist, das PtrToStructure verwendet und auf ein Windows Desktop Speech Technology-Token verweist, bei dem es sich um ein Windows Desktop Speech Technology-Objekt handelt, das eine Ressource darstellt, z.B. eine Stimme (VoiceInfo). param1 kann beliebige Werte annehmen.

Undefined 0

Gibt an, dass das param2-Argument zu SpeechEventInfo nicht definiert ist. Im Allgemeinen werden param1 und param2 dann ignoriert. Wenn EventId jedoch ist WordBoundary, kann ein Ereignis der Fortschrittsanzeige generiert werden. param1 sollte eine ganze Zahl sein, die die Länge des aktuellen Worts enthält, und param2 ein IntPtr, das auf eine ganze Zahl verweist, die den Offset des aktuellen Worts enthält.

Beispiele

Das folgende Beispiel ist Teil einer benutzerdefinierten Implementierung der Sprachsynthese, die von erbt TtsEngineSsml und die Verwendung von , , und TextFragment SpeechEventInfo FragmentState TtsEventId verwendet.

Die Implementierung von Speak

  1. Empfängt ein Array von TextFragment -Instanzen und erstellt ein neues Array von TextFragment -Instanzen, das an die Speak -Methode einer zugrunde liegenden Synthese-Engine übergeben werden soll.

  2. Wenn der TtsEngineAction Enumerationswert von aus der -Eigenschaft für den gefunden Action FragmentState wird, der von der State -Eigenschaft der einzelnen -Instanzen zurückgegeben TextFragment wird, ist Speak die Implementierung

    • Übersetzt den Amerikanischen in Britischismen im zu sprechenden Text.

    • Wenn die EventInterest -Eigenschaft für die ITtsEngineSite Schnittstellen, die für die Implementierung bereitgestellt werden, den WordBoundary Ereignistyp unterstützt, wird eine SpeechEventInfo -Instanz verwendet, um ein Ereignis zu erstellen, um eine Synthesizer-Statusanzeige zu steuern.

      Die Parameter für SpeechEventInfo , einschließlich des von EventParameterType zurückgegebenen Memberwerts, ParameterType werden verwendet, um das über die -Methode generierte Ereignis zu LogSpeechEvent protokollieren.

  3. Eine Sprachrendering-Engine wird dann mit dem geänderten TextFragment Array aufgerufen.

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

}  

Hinweise

Die EventParameterType -Enumeration wird beim Erstellen eines SpeechEventInfo -Objekts verwendet. Ein EventParameterType Enumerationsmember, der als parameterType Argument an den Konstruktor für übergeben SpeechEventInfo wird, gibt an, wie das param2 Argument des Konstruktors (das ein sein IntPtr muss) interpretiert wird.

Die Auswahl von EventParameterType wird durch den Typ des angeforderten Ereignisses bestimmt, wie von einem Member von System.Speech.Synthesis.TtsEngine.TtsEventId angegeben.

Ausführliche Informationen zur Verwendung von EventParameterType finden Sie in der Dokumentation für . EventId

Hinweis

Derzeit können Instanzen einer verwalteten synthetischen Sprach-Engines, die mit den Membern des Namespace geschrieben wurden, ressourcen nach der System.Speech.Synthesis Erstellung nicht ändern.

Gilt für

Siehe auch