TtsEngineAction Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje akci jazyka SSML (Speech Synthesis Markup Language), která se má provést při vykreslování daného TextFragment
jazyka .
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- Dědičnost
Pole
Bookmark | 3 | Označuje, že TextFragment se má použít jako obsah záložky. Odpovídá |
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á |
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í. |
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á |
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á |
StartSentence | 5 | Označuje začátek věty. Odpovídá |
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
Přijme pole TextFragment instancí a vytvoří novou matici TextFragment instancí, které se předají metodě
Speak
v podkladovém syntetizovaném modulu.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.
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.