TtsEngineAction 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.
Bezeichnet den Vorgang der Speech Synthesis Markup Language (SSML), der erfolgen muss, um eine angegebene TextFragment
zu rendern.
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- Vererbung
Felder
Bookmark | 3 | Gibt an, dass TextFragment als Inhalt eines Lesezeichens verwendet werden soll. Es entspricht dem XML-Tag |
ParseUnknownTag | 7 | Gibt an, dass keine Aktion von der SSML-Eingabe bestimmt wurde. Diese Eingabe kann nach Ermessen einer Synthese-Engine interpretiert oder ignoriert werden. Das zugeordnete TextFragment ist ein unbekanntes XML-Tag, das nicht Bestandteil des SSML-Standards ist. |
Pronounce | 2 | Fordert an, dass eingegebener TextFragment-Text als Phoneme interpretiert wird. Die genaue Aussprache wird vom Element Phoneme des FragmentState-Objekts angegeben, das in der State-Eigenschaft von TextFragment-Instanzen zurückgegeben wird. Es entspricht dem XML-Tag |
Silence | 1 | Gibt an, dass ein TextFragment keinen Text enthält, der als Sprache gerendert werden soll. Die Dauer der Stille wird durch die Duration Eigenschaft des Objekts angegeben, das von der State FragmentState Eigenschaft auf TextFragment Instanzen zurückgegeben wird. Es entspricht dem XML-Tag |
Speak | 0 | Fordert an, dass zugeordnete TextFragment verarbeitet und gesprochen werden sollen. Dies ist der Standardwert für ein TextFragment. Es entspricht dem XML-Tag |
SpellOut | 4 | Gibt an, dass die Textwerte, die von TextFragment durch seine Eigenschaft TextToSpeak bereitgestellt werden, als einzelne Zeichen synthetisiert werden sollen. Dieses Rendering umfasst auch Zeichensetzung mit Ausnahme von Leerzeichen, sowie alphanumerischen Text. Beispielsweise sollte das zugeordnete Textfragment „Wort!“ als „W o r t Ausrufezeichen“ synthetisiert werden. |
StartParagraph | 6 | Gibt den Zustand eines Absatzes an. Es entspricht dem XML-Tag |
StartSentence | 5 | Gibt den Anfang des Satzes an. Es entspricht dem XML-Tag |
Beispiele
Das folgende Beispiel ist Teil einer benutzerdefinierten Sprachsyntheseimplementierung, die von TtsEngineSsml, und mithilfe der Verwendung von TextFragment, FragmentStateund TtsEventId
Die Implementierung von Speak
Empfängt ein Array von Instanzen und erstellt ein neues Array von TextFragment TextFragment Instanzen, die an die
Speak
Methode auf einem zugrunde liegenden Synthesemodul übergeben werden sollen.Wenn der TtsEngineAction Aufzählungswert, der von der Eigenschaft gefunden wurde, die von der Action State Eigenschaft FragmentState jeder TextFragment Instanz zurückgegeben wird, ist Speak, die Implementierung
Übersetzt amerikanisch in Den Text, der gesprochen werden soll.
Wenn die EventInterest Eigenschaft auf der für die ITtsEngineSite Implementierung bereitgestellten Schnittstelle den TtsEventId.WordBoundary Ereignistyp unterstützt, wird ein Ereignis zum Steuern eines Synthesizer-Statusmessers erstellt.
Ein Sprachrenderingmodul wird dann 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));
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
TtsEngineAction
stellt Anforderungen für die Wartung eines TextFragment. Die Aktionen entsprechen den Elementen in der SSML-Spezifikation und werden auf dem von der TextToSpeak Eigenschaft auf einer TextFragmentEigenschaft zurückgegebenen Text implementiert.
Der TtsEngineAction mit einer TextFragment Eigenschaft verknüpfte Wert wird von der State Eigenschaft zurückgegeben.
Die Verarbeitung des TtsEngineAction von der State Eigenschaft zurückgegebenen Werts wird von einer Sprachsyntheseimplementierung der Speak Methode auf einer von einer Klasse abgeleiteten TtsEngineSsmlKlasse behandelt.