EventParameterType 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í.
Vytvoří výčet typů datových ukazatelů předávaných událostem syntézy řeči.
public enum class EventParameterType
public enum EventParameterType
type EventParameterType =
Public Enum EventParameterType
- Dědičnost
Pole
| Name | Hodnota | Description |
|---|---|---|
| Undefined | 0 | Označuje, že |
| Token | 1 | Označuje, že |
| Object | 2 | Aktuálně se nepodporuje. |
| Pointer | 3 | Aktuálně se nepodporuje. |
| String | 4 | Označuje, že |
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, SpeechEventInfo, FragmentStatea 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 je Speakimplementace
Překládá americanismus do britštiny v textu, který se má vyslovovat.
EventInterest Pokud vlastnost v ITtsEngineSite rozhraní poskytovaných pro 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.
Parametry pro SpeechEventInfo, včetně EventParameterType členské hodnoty vrácené ParameterType, se používají k protokolování události vygenerované prostřednictvím
LogSpeechEventmetody.
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));
LogSpeechEvent(spEvent.EventId,
spEvent.ParameterType,
spEvent.Param1,
spEvent.Param2);
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
Výčet EventParameterType se používá při vytváření objektu SpeechEventInfo . Člen EventParameterType výčtu parameterType předaný jako argument konstruktoru určuje SpeechEventInfo , jak param2 je interpretován argument konstruktoru (který musí být IntPtr) interpretován.
EventParameterType Volba je diktována typem požadované události, jak je určeno členem System.Speech.Synthesis.TtsEngine.TtsEventId.
Podrobné informace o tom, jak používat EventParameterType, najdete v dokumentaci EventId
Poznámka:
V současné době instance spravovaných syntetických řečových modulů napsaných pomocí členů System.Speech.Synthesis oboru názvů nemohou po konstrukci měnit prostředky.