Freigeben über


SpeechEventInfo.Param2 Eigenschaft

Definition

Ermittelt und bestimmt die System.IntPtr-Instanz (param2 im Konstruktor), die auf das an die Sprachplattform zu übergebende Objekt verweist, um ein Ereignis zu generieren, das die aktuelle Instanz von SpeechEventInfo normalerweise anfordert.

public:
 property IntPtr Param2 { IntPtr get(); };
public IntPtr Param2 { get; }
member this.Param2 : nativeint
Public ReadOnly Property Param2 As IntPtr

Eigenschaftswert

IntPtr

nativeint

Gibt System.IntPtr zurück, das auf das Objekt verweist, das an die Sprachplattform übergeben werden soll, wenn das Ereignis, das von der aktuellen Instanz von SpeechEventInfo angegeben wird, generiert wird.

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.

      Die Parameter auf SpeechEventInfo , einschließlich , werden Param2 verwendet, um das über die -Methode generierte Ereignis zu LogSpeechEvent protokollieren.

  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));  
         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 Anforderungen für den Verweis auf die -Eigenschaft von werden eindeutig durch die Werte der -Eigenschaft und der System.IntPtr Param2 SpeechEventInfo EventId ParameterType -Eigenschaft der -Instanz SpeechEventInfo bestimmt.

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

Gilt für