TtsEventId Výčet

Definice

Vytvoří výčet typů událostí syntézy řeči.

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

Pole

Name Hodnota Description
StartInputStream 1

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

EndInputStream 2

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

VoiceChange 3

Identifikuje události vygenerované, když syntetizační modul řeči při mluvení narazí na změnu hlasu.

Bookmark 4

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

WordBoundary 5

Identifikuje události vygenerované, když syntetizační modul řeči dokončí slovo při mluvení.

Phoneme 6

Identifikuje události vygenerované, když syntetizovaný modul řeči dokončí foonemu při mluvení.

SentenceBoundary 7

Identifikuje události vygenerované, když syntetizační modul řeči dokončí větu během mluvení.

Viseme 8

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

AudioLevel 9

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

Příklady

Následující příklad je součástí vlastní implementace syntézy řeči dědění z TtsEngineSsml, a použití TextFragment, SpeechEventInfo, FragmentStatea TtsEventId třídy.

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

  1. Přijme pole TextFragment instancí a vytvoří novou matici TextFragment instancí, která se předá Speak metodě v podkladovém syntetizačním modulu.

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

    • Překládá americkou angličtinu do britské angličtiny v textu, který se má vyslovovat.

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

  3. Potom se zavolá modul pro vykreslování řeči 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í odeslaných do syntetizátoru platformy Speech pomocí TtsEventId.

Specifikace se provádí nastavením EventId vlastnosti SpeechEventInfo instancí předávaných AddEvents členu třídy implementuje ITtsEngineSite rozhraní předané Speak metodě při implementaci vlastního TtsEngineSsmlřečového stroje .

Infrastruktura platformy Speech označuje typ událostí, které aktuálně zpracovává prostřednictvím EventInterest vlastnosti ITtsEngineSite předané do implementace speak.

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

Platí pro