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.
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- Dědičnost
Pole
| Name | Hodnota | Description |
|---|---|---|
| Speak | 0 | Žádosti o zpracování a mluvené spojení.TextFragment Toto je výchozí hodnota pro .TextFragment
|
| Silence | 1 | Označuje, že neobsahuje žádný text, který TextFragment se má vykreslit jako řeč. Doba trvání ticha je určena Duration vlastností FragmentState objektu vráceného State vlastností u TextFragment instancí.
|
| Pronounce | 2 | Požadavky, které zadávají TextFragment text, se interpretují jako foonely. Přesná výslovnost je určena Phoneme členem objektu FragmentState vráceného State vlastností v TextFragment instancích.
|
| Bookmark | 3 | Označuje, že TextFragment se má použít jako obsah záložky.
|
| 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, a také alfanumerický text. Například přidružený fragment textu "slovo!" by měl být syntetizován do "w o r d vykřičník". |
| StartSentence | 5 | Označuje začátek věty.
|
| StartParagraph | 6 | Označuje stav odstavce.
|
| ParseUnknownTag | 7 | Označuje, že ze vstupu SSML nebyla zjištěna žádná akce. Tento vstup, který lze interpretovat nebo ignorovat podle uvážení syntetizačního modulu. TextFragment Přidružená je neznámá značka XML, která není součástí standardu SSML. |
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči zděděné z TtsEngineSsml, a použití použití TextFragment, FragmentStatea , a TtsEventId
Provádění Speak
Přijme pole TextFragment instancí a vytvoří novou matici TextFragment instancí, která se předá
Speakmetodě v podkladovém syntetizačním modulu.Pokud je hodnota výčtu TtsEngineAction nalezena z Action vlastnosti FragmentState vrácené State vlastností každé TextFragment instance Speak, implementace
Překládá americanismus do britštiny v textu, který se má vyslovovat.
EventInterest Pokud vlastnost v ITtsEngineSite rozhraní poskytnuté pro implementaci podporuje TtsEventId.WordBoundary typ události, vytvoří se událost pro řízení syntetizátoru průběhu měřiče.
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
TtsEngineAction představuje požadavky na obsluhu TextFragmenta . Akce úzce odpovídají prvkům ve specifikaci SSML a jsou implementovány na text vrácený TextToSpeak vlastností v objektu TextFragment.
Hodnota TtsEngineAction přidružená k objektu TextFragment je vrácena State vlastností.
TtsEngineAction Zpracování hodnoty vrácené State vlastností je zpracováno řeč syntetizuje implementaci Speak metody na třídě odvozené z TtsEngineSsml.