Freigeben über


SpeechEventInfo(Int16, Int16, Int32, IntPtr) Konstruktor

Definition

Konstruiert ein entsprechendes SpeechEventInfo-Element.

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 von TtsEventId die die Sorte des Spracheplattformereignisses angibt, das das SpeechEventInfo Objekt behandeln kann.

parameterType
Int16

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

param1
Int32

Ein ganzzahliger Wert, der zur Spracheplattform übergebenden wird, wenn das Ereignis generiert wird, das von der Instanz der SpeechEventInfo aufgefordert wird, konstruiert zu werden.

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

param2
IntPtr

nativeint

Eine System.IntPtr-Instanz, die ein Objekt verweist. der zur Spracheplattform übergebenden wird, wenn das Ereignis generiert wird, das von der Instanz der SpeechEventInfo aufgefordert wird, konstruiert zu werden.

Der Typ, der referenziert werden muss, wird explizit durch den Wert parameterType definiert. Der Wert System.IntPtr.Zero.

Beispiele

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

Die Implementierung von Speak

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

  2. Wenn der Enumerationswert von aus der -Eigenschaft auf dem gefunden wurde, der von der -Eigenschaft jeder Instanz TtsEngineAction Action zurückgegeben FragmentState State TextFragment Speak wird, ist die -Implementierung.

    • Übersetzt Denamenismus in Britishisms im zu sprechenden Text.

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

  3. Eine Sprachrendering-Engine wird dann mit dem geänderten Array TextFragment 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 , und verwendet werden, und ihre Bedeutung wird durch den Typ des angeforderten Ereignisses bestimmt, wie vom Member von angegeben, der parameterType param1 für verwendet param2 TtsEventId eventId wird.

Ausführliche Informationen zu den entsprechenden Werten für parameterType , und finden Sie in der Dokumentation für param1 param2 . EventId

Der Typ der Ereignisse, die von der Speech-Plattforminfrastruktur behandelt werden können, kann über die -Eigenschaft auf der Websiteimplementierung der EventInterest Synthesizer-Engine von ermittelt ITtsEngineSite werden.

Gilt für