TtsEventId Výčet

Definice

Vyčísluje typy událostí syntézy řeči.

public enum class TtsEventId
public enum TtsEventId
type TtsEventId = 
Public Enum TtsEventId
Dědičnost
TtsEventId

Pole

AudioLevel 9

Identifikuje události vygenerované, když modul syntetizace řeči dokončí změnu úrovně zvuku při mluvení.

Bookmark 4

Identifikuje události vygenerované, když modul syntetizace řeči při mluvení narazí na záložku.

EndInputStream 2

Identifikuje události vygenerované, když modul syntetizace řeči při mluvení narazí na konec vstupního streamu.

Phoneme 6

Identifikuje události vygenerované, když modul syntetizace řeči dokončí fonézmu při mluvení.

SentenceBoundary 7

Identifikuje události vygenerované, když modul syntetizace řeči dokončí větu při mluvení.

StartInputStream 1

Identifikuje události vygenerované, když modul syntetizace řeči začne mluvit datový proud.

Viseme 8

Identifikuje události vygenerované, když modul syntetizace řeči dokončí viseme během mluvení.

VoiceChange 3

Identifikuje události vygenerované, když modul syntetizace řeči při mluvení zaznamená změnu hlasu.

WordBoundary 5

Identifikuje události vygenerované, když syntetizovaný modul řeči dokončí slovo během mluveného slova.

Příklady

Následující příklad je součástí vlastní implementace syntézy řeči zděděné z TtsEngineSsmla pomocí TextFragmenttříd , SpeechEventInfo, FragmentStatea TtsEventId .

Implementace TtsEngineSsml.Speak zahrnuje následující kroky:

  1. Přijme pole TextFragment instancí a vytvoří nové pole TextFragment instancí, které se mají předat Speak metodě v podkladovém syntezčním modulu.

  2. Pokud je Action vlastnost každé TextFragment.State instance rovna TtsEngineAction.Speak, kód provede následující:

    • V mluveném textu přeloží americkou angličtinu na britskou angličtinu.

    • ITtsEngineSite.EventInterest Pokud vlastnost poskytnutá implementaci podporuje WordBoundary typ události, SpeechEventInfo instance se použije k vytvoření události, která bude řídit měřič průběhu syntetizátoru.

  3. Modul pro vykreslování řeči se pak zavolá s upraveným TextFragment polem.

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

}

Poznámky

Vlastní moduly syntézy řeči definují typy událostí odesílaných do infrastruktury syntetizátoru platformy Speech pomocí TtsEventIdnástroje .

Specifikace se provádí nastavením EventId vlastnosti SpeechEventInfo instancí předaných AddEvents členovi třídy implementuje ITtsEngineSite rozhraní předané metodě Speak na implementaci vlastního TtsEngineSsmlmodulu řeči .

Infrastruktura platformy Speech označuje typ událostí, které právě zpracovává prostřednictvím EventInterest vlastnosti ITtsEngineSite na předané implementaci mluveného slova.

Hodnota EventInterest je bitová maska, kde členové TtsEventId definují umístění bitu odpovídajícího typu události. Například WordBoundary má hodnotu pět (5), což znamená, že pátý bit v hodnotě vrácené uživatelem EventInterest označuje, jestli web podporuje typ události.

Platí pro