Freigeben über


TtsEngineAction Enumeration

Definition

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
TtsEngineAction

Felder

Bookmark 3

Gibt an, dass TextFragment als Inhalt eines Lesezeichens verwendet werden soll. Es entspricht dem XML-Tag <mark> in der SSML-Spezifikation.

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 <phoneme> in der SSML-Spezifikation.

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 <Silence> in der SSML-Spezifikation.

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 <speak> in der SSML-Spezifikation.

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 <p> in der SSML-Spezifikation.

StartSentence 5

Gibt den Anfang des Satzes an. Es entspricht dem XML-Tag <s> in der SSML-Spezifikation.

Beispiele

Das folgende Beispiel ist Teil einer benutzerdefinierten Sprachsyntheseimplementierung, die von TtsEngineSsml, und mithilfe der Verwendung von TextFragment, FragmentStateund TtsEventId

Die Implementierung von Speak

  1. 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.

  2. 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.

  3. 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.

Gilt für