SpeechEventInfo.Param2 Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die System.IntPtr Instanz (param2 im Konstruktor) ab und legt sie fest, die auf das Objekt verweist, das an die Speech-Plattform übergeben werden soll, um ein Ereignis zu generieren, das die aktuelle Instanz für SpeechEventInfo die Anforderung verwendet wird.
public:
property IntPtr Param2 { IntPtr get(); };
public IntPtr Param2 { get; }
member this.Param2 : nativeint
Public ReadOnly Property Param2 As IntPtr
Eigenschaftswert
nativeint
Gibt den System.IntPtr Verweis auf das Objekt zurück, das an die Speech-Plattform übergeben werden soll, wenn das von der aktuellen Instanz angegebene SpeechEventInfo Ereignis generiert 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
Empfängt ein Array von Instanzen und erstellt ein neues Array von TextFragmentTextFragment Instanzen, das an die
SpeakMethode für ein zugrunde liegendes Synthesemodul übergeben werden soll.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 Param2 , werden verwendet, um das durch die
LogSpeechEventMethode generierte Ereignis zu protokollieren.
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.