TtsEventId Enum

Definition

Räknar upp typer av talsynteshändelser.

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

Fält

Name Värde Description
StartInputStream 1

Identifierar händelser som genereras när en talsyntetisera motor en börjar tala en ström.

EndInputStream 2

Identifierar händelser som genereras när en talsyntetiseringsmotor påträffar slutet av indataströmmen när den talar.

VoiceChange 3

Identifierar händelser som genereras när en talsyntetiserande motor stöter på en ändring av Röst när den talar.

Bookmark 4

Identifierar händelser som genereras när en talsyntetisera motor stöter på ett bokmärke när den talar.

WordBoundary 5

Identifierar händelser som genereras när en talsyntetisera motor slutför ett ord när den talar.

Phoneme 6

Identifierar händelser som genereras när en talsyntetisera motor slutför en fonetik när den talar.

SentenceBoundary 7

Identifierar händelser som genereras när en talsyntetiserande motor slutför en mening när den talar.

Viseme 8

Identifierar händelser som genereras när en talsyntetisera motor slutför en viseme när den talar.

AudioLevel 9

Identifierar händelser som genereras när en talsyntetiseringsmotor slutför en ändring på ljudnivå när den talar.

Exempel

Följande exempel är en del av en anpassad talsyntesimplementering som ärver från TtsEngineSsml, och använder klasserna TextFragment, SpeechEventInfo, FragmentStateoch TtsEventId .

Implementeringen av TtsEngineSsml.Speak omfattar följande steg:

  1. Tar emot en matris med TextFragment instanser och skapar en ny matris med TextFragment instanser som ska skickas till Speak metoden på en underliggande syntesmotor.

  2. Om egenskapen för Action varje TextFragment.State instans är lika med TtsEngineAction.Speakgör koden följande:

    • Översätter amerikansk engelska till brittisk engelska i texten som ska talas.

    • Om egenskapen ITtsEngineSite.EventInterest som tillhandahålls för implementeringen stöder WordBoundary händelsetypen används en SpeechEventInfo instans för att skapa en händelse för att köra en synthesizer-förloppsmätare.

  3. En talrenderingsmotor anropas sedan med den ändrade TextFragment matrisen.

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);

}

Kommentarer

Anpassade talsyntesmotorer definierar de typer av händelser som skickas till talplattformens synthesizerinfrastruktur med TtsEventId.

Specifikationen utförs genom att ange EventId egenskapen SpeechEventInfo för instanser som skickas till AddEvents medlemmen i klassen som implementerar ITtsEngineSite gränssnittet som skickas till Speak metoden i en anpassad talmotors implementering av TtsEngineSsml.

Infrastrukturen för Speech-plattformen anger vilken typ av händelser som den för närvarande hanterar via EventInterest egenskapen för den ITtsEngineSite som skickas till talimplementeringen.

Värdet EventInterest för är en bitmask, där medlemmarna TtsEventId i definierar platsen för biten som motsvarar händelsetypen. WordBoundary har till exempel värdet fem (5), vilket innebär att den femte biten i värdet som returneras av EventInterest anger om platsen stöder händelsetypen.

Gäller för