Freigeben über


SpeechEventInfo.ParameterType Eigenschaft

Definition

Gibt den Datentyp des Objekts zurück, auf das durch den IntPtrParam2 Parameter für das aktuelle SpeechEventInfo Objekt verwiesen wird.

public:
 property short ParameterType { short get(); };
public short ParameterType { get; }
member this.ParameterType : int16
Public ReadOnly Property ParameterType As Short

Eigenschaftswert

Ein short Wert, der einem Element der EventParameterType Aufzählung entspricht und den Datentyp des Objekts angibt, auf das durch den IntPtrParam2 Parameter verwiesen wird und als zweites Argument für den Konstruktor des aktuellen SpeechEventInfo Objekts verwendet wird.

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

Ausführliche Informationen zur Verwendung Param2finden Sie in der Dokumentation zu EventId.

Gilt für: