TtsEventId Enumeration
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.
Listet Typen von Sprachesyntheseereignissen auf.
public enum class TtsEventId
public enum TtsEventId
type TtsEventId =
Public Enum TtsEventId
- Vererbung
Felder
AudioLevel | 9 | Identifiziert die Ereignisse, die generiert werden, wenn eine Sprachsynthetisier-Engine eine Audioebenenänderung beendet. |
Bookmark | 4 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens auf ein Lesezeichen trifft. |
EndInputStream | 2 | Identifiziert die Ereignisse, die generiert werden, wenn eine Sprachsynthetisier-Engine während des Sprechens auf das Ende seines Eingabestreams trifft. |
Phoneme | 6 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens ein Phonem beendet. |
SentenceBoundary | 7 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens einen Satz beendet. |
StartInputStream | 1 | Identifiziert die Ereignisse, die generiert werden, wenn eine Sprachsynthetisier-Engine einen Stream zu sprechen beginnt. |
Viseme | 8 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens ein Mundbild beendet. |
VoiceChange | 3 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens auf ein Stimmänderung trifft. |
WordBoundary | 5 | Identifiziert Ereignisse, die generierten werden, wenn eine Sprachsynthetisier-Engine während des Sprechens ein Wort beendet. |
Beispiele
Das folgende Beispiel ist Teil einer benutzerdefinierten Sprachsyntheseimplementierung, die von TtsEngineSsmlund mit den TextFragmentKlassen , SpeechEventInfo, FragmentStateund TtsEventId erbt.
Die Implementierung von TtsEngineSsml.Speak umfasst die folgenden Schritte:
Empfängt ein Array von TextFragment Instanzen und erstellt ein neues Array von TextFragment Instanzen, die an die
Speak
-Methode in einer zugrunde liegenden Synthese-Engine übergeben werden sollen.Wenn die Action -Eigenschaft jeder TextFragment.State Instanz gleich TtsEngineAction.Speakist, führt der Code Folgendes aus:
Übersetzt amerikanisches Englisch in den zu sprechenden Text ins britische Englisch.
Wenn die für die ITtsEngineSite.EventInterest Implementierung bereitgestellte Eigenschaft den
WordBoundary
Ereignistyp unterstützt, wird eine SpeechEventInfo -Instanz verwendet, um ein Ereignis zu erstellen, um eine Synthesizer-Fortschrittsanzeige zu steuern.
Anschließend wird mit dem geänderten TextFragment Array eine Sprachrendering-Engine 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
Benutzerdefinierte Sprachsynthese-Engines definieren die Typen von Ereignissen, die mit an die Synthesizerinfrastruktur der TtsEventIdSpeech-Plattform übermittelt werden.
Die Spezifikation erfolgt durch Festlegen der EventId Eigenschaft von SpeechEventInfo Instanzen, die an den AddEvents Member der -Klasse übergeben werden, um die ITtsEngineSite an die -Methode übergebene Schnittstelle für die Speak Implementierung von TtsEngineSsmleiner benutzerdefinierten Sprach-Engine zu implementieren.
Die Infrastruktur der Speech-Plattform gibt den Typ der Ereignisse an, die derzeit über die EventInterest -Eigenschaft ITtsEngineSite der an die Speak-Implementierung übergeben werden.
Der Wert von EventInterest ist eine Bitmaske, wobei die Member von TtsEventId die Position des Bits definieren, das dem Ereignistyp entspricht. WordBoundary hat beispielsweise den Wert fünf (5), d. h. das fünfte Bit im von zurückgegebenen EventInterest Wert gibt an, ob die Website den Ereignistyp unterstützt.