Sdílet prostřednictvím


TtsEngineAction Výčet

Definice

Určuje akci jazyka SSML (Speech Synthesis Markup Language), která se má provést při vykreslování daného TextFragmentjazyka .

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

Pole

Bookmark 3

Označuje, že TextFragment se má použít jako obsah záložky. Odpovídá <značce> XML značky ve specifikaci SSML.

ParseUnknownTag 7

Označuje, že ze vstupu SSML nebyla určena žádná akce. Tento vstup, který lze interpretovat nebo ignorovat podle uvážení syntetizovaného motoru. Přidružená TextFragment je neznámá značka XML, která není součástí standardu SSML.

Pronounce 2

Požadavky, které vstupní TextFragment text interpretují jako fonely. Přesná výslovnost je určena Phoneme členem objektu FragmentState vráceného State vlastností u TextFragment instancí. Odpovídá <značce XML phoneme> ve specifikaci SSML.

Silence 1

Označuje, že neobsahuje TextFragment žádný text, který se má vykreslit jako řeč. Doba trvání ticha je určena Duration vlastností FragmentState objektu vráceného State vlastností u TextFragment instancí. <Odpovídá značce Silence> XML ve specifikaci SSML.

Speak 0

Žádosti o zpracování a mluvený mluvený s přidruženým TextFragment operátorem. Toto je výchozí hodnota pro TextFragment. Odpovídá <značce Speak> XML ve specifikaci SSML.

SpellOut 4

Označuje, že textové hodnoty poskytované TextFragment prostřednictvím jeho TextToSpeak vlastnosti mají být syntetizovány jako jednotlivé znaky. Toto vykreslování zahrnuje interpunkci, jinou než prázdné znaky, stejně jako alfanumerický text. Například přidružený fragment textu "slovo!" mělo by být syntetizováno do "w o r d vykřičník".

StartParagraph 6

Označuje stav odstavce. Odpovídá <značce p> XML ve specifikaci SSML.

StartSentence 5

Označuje začátek věty. Odpovídá <>značce XML ve specifikaci SSML.

Příklady

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

Implementace Speak

  1. Přijme pole TextFragment instancí a vytvoří novou matici TextFragment instancí, které se předají metodě Speak v podkladovém syntetizovaném modulu.

  2. Pokud je hodnota výčtu TtsEngineAction nalezena z Action vlastnosti vrácenou State FragmentState vlastností každé TextFragment instance je Přečíst, implementace

    • Překládá americanismus na britštinu v textu, který má být mluvený.

    • EventInterest Pokud vlastnost v ITtsEngineSite rozhraní poskytnuté pro implementaci podporuje TtsEventId.WordBoundary typ události, je vytvořena událost pro řízení syntetizátoru průběhu měřiče.

  3. Modul pro vykreslování řeči se pak volá 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

TtsEngineAction představuje požadavky na údržbu TextFragment. Akce odpovídají prvkům ve specifikaci SSML a jsou implementovány na text vrácený TextToSpeak vlastností na TextFragment.

Hodnota TtsEngineAction přidružená k objektu TextFragment je vrácena State vlastností.

TtsEngineAction Zpracování hodnoty vrácené State vlastností zpracovává řeč syntetizuje implementaci Speak metody na třídě odvozené z TtsEngineSsml.

Platí pro