Freigeben über


SpeechEventInfo(Int16, Int16, Int32, IntPtr) Konstruktor

Definition

Erstellt eine entsprechende SpeechEventInfo.

public:
 SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
public SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
new System.Speech.Synthesis.TtsEngine.SpeechEventInfo : int16 * int16 * int * nativeint -> System.Speech.Synthesis.TtsEngine.SpeechEventInfo
Public Sub New (eventId As Short, parameterType As Short, param1 As Integer, param2 As IntPtr)

Parameter

eventId
Int16

Eine Instanz, die TtsEventId angibt, welche Art von Speech Platform-Ereignis das SpeechEventInfo Objekt verarbeiten soll.

parameterType
Int16

Eine Instanz, die EventParameterType angibt, wie der System.IntPtr Verweis param2 interpretiert werden soll, und die Verwendung von param1.

param1
Int32

Ein ganzzahliger Wert, der an die Speech-Plattform übergeben werden soll, wenn das von der zu erstellenden Instanz SpeechEventInfo angeforderte Ereignis generiert wird.

Die genaue Bedeutung dieser ganzen Zahl wird implizit durch den Wert von parameterTypebestimmt.

param2
IntPtr

nativeint

Eine System.IntPtr Instanz, die auf ein Objekt verweist. wird an die Speech-Plattform übergeben, wenn das von der zu erstellenden Instanz SpeechEventInfo angeforderte Ereignis generiert wird.

Der Typ, auf den verwiesen werden muss, wird explizit durch den Wert parameterTypedefiniert. Der Wert System.IntPtr.Zero.

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.

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

Zulässige Werte, die für parameterType, param1und param2 deren Bedeutung verwendet werden, wird durch den Typ des angeforderten Ereignisses bestimmt, wie vom Element der TtsEventId verwendeten .eventId

Ausführliche Informationen zu geeigneten Werten für parameterType, param1und param2, siehe Dokumentation für EventId

Der Typ der Ereignisse, die von der Sprachplattforminfrastruktur behandelt werden können, kann über die Eigenschaft auf der EventInterest Implementierung des Synthesizermoduls abgerufen ITtsEngineSitewerden.

Gilt für: