Freigeben über


TtsEventId Enumeration

Definition

Listet Typen von Sprachesyntheseereignissen auf.

public enum class TtsEventId
public enum TtsEventId
type TtsEventId = 
Public Enum TtsEventId
Vererbung
TtsEventId

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:

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

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

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

Gilt für: