Freigeben über


EventParameterType Enumeration

Definition

Listet die Datentypen von Datenzeigern auf, die an Sprachsyntheseereignisse übergeben werden.

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

Felder

Name Wert Beschreibung
Undefined 0

Gibt an, dass das param2 Argument für das SpeechEventInfo Argument nicht definiert ist. param1 Im Allgemeinen und param2 werden dann ignoriert. Wenn EventId dies der Fall ist WordBoundary, kann jedoch ein Statusanzeigeereignis generiert werden. param1 sollte eine ganze Zahl sein, die die Länge des aktuellen Worts enthält, und param2 eine IntPtr ganze Zahl, die den Offset des aktuellen Worts enthält.

Token 1

Gibt an, dass das Argument für die param2SpeechEventInfo Erstellung mit PtrToStructure einem Windows Desktop Speech Technology-Token erstellt wirdIntPtr, bei dem es sich um ein Windows Desktop Speech Technology -Objekt handelt, das eine Ressource darstellt, z. B. eine Stimme (VoiceInfo). param1 kann jeden Wert übernehmen.

Object 2

Derzeit nicht unterstützt.

Pointer 3

Derzeit nicht unterstützt.

String 4

Gibt an, dass das Argument für das param2SpeechEventInfo Objekt erstellt System.IntPtr wird, das auf System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni ein System.String Objekt verweist; param1 kann einen beliebigen Wert übernehmen.

Beispiele

Das folgende Beispiel ist Teil einer benutzerdefinierten Sprachsyntheseimplementierung, die von TtsEngineSsml, und die Verwendung von TextFragment, , SpeechEventInfo, FragmentStateund TtsEventId.

Die Umsetzung der Speak

  1. Empfängt ein Array von Instanzen und erstellt ein neues Array von TextFragmentTextFragment Instanzen, das an die Speak Methode für ein zugrunde liegendes Synthesemodul übergeben werden soll.

  2. Wenn der TtsEngineAction Enumerationswert, der von der Action Eigenschaft für die FragmentState von der State Eigenschaft jeder TextFragment Instanz zurückgegeben wird, gefunden wird, lautet Speakdie Implementierung

    • Übersetzt den Amerikanischen Inserismus in den zu sprechenden Text.

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

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

  3. Anschließend wird ein Sprachrenderingmodul 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 Aufzählung wird beim Erstellen eines SpeechEventInfo Objekts verwendet. Ein Enumerationsmememm EventParameterType , der parameterType als Argument an den Konstruktor übergeben wird, gibt SpeechEventInfo an, wie das param2 Argument des Konstruktors (das ein IntPtr) interpretiert wird.

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

Ausführliche Informationen zur Verwendung EventParameterTypefinden Sie in der Dokumentation EventId

Hinweis

Derzeit können Instanzen von verwalteten synthetischen Sprachmodulen, die mit den Membern des System.Speech.Synthesis Namespaces geschrieben wurden, ressourcen nach der Erstellung nicht mehr ändern.

Gilt für:

Weitere Informationen