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ácích událostem syntézy řeči.
public enum class EventParameterType
public enum EventParameterType
type EventParameterType =
Public Enum EventParameterType
- Dědičnost
Pole
Object | 2 | V současné době se nepodporuje. |
Pointer | 3 | V současné době se nepodporuje. |
String | 4 | Označuje, |
Token | 1 | Označuje, že argument na je vytvořený pomocí , který odkazuje na token technologie Windows Desktop Speech, což je objekt technologie Windows Desktop Speech, který představuje prostředek, například |
Undefined | 0 | Označuje, |
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči dědící z a pomocí TtsEngineSsml TextFragment , , a SpeechEventInfo FragmentState TtsEventId .
Implementace Speak
Přijme pole instancí a vytvoří nové pole instancí, které se předá metodě v základním modulu TextFragment TextFragment
Speak
syntézy.Pokud je TtsEngineAction hodnota výčtu nalezena z vlastnosti vrácené Action FragmentState State vlastností každé instance , TextFragment Speak implementace
Překládá americkost na britismus v textu, který se má vyslovit.
Pokud vlastnost v rozhraních poskytovaných k implementaci podporuje typ události, instance se používá k vytvoření události pro řízení měřiče průběhu EventInterest ITtsEngineSite WordBoundary SpeechEventInfo syntezátoru.
Parametry pro SpeechEventInfo , včetně hodnoty členu vráceného parametrem , se používají k EventParameterType protokolování události ParameterType vygenerované prostřednictvím metody
LogSpeechEvent
.
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));
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í SpeechEventInfo objektu. Člen výčtu předaný jako argument konstruktoru pro určuje, jak EventParameterType
parameterType
je SpeechEventInfo param2
interpretován argument konstruktoru (který musí IntPtr být ) .
Volba je EventParameterType
určená typem požadované události, jak určuje člen System.Speech.Synthesis.TtsEngine.TtsEventId .
Podrobné informace o používání najdete EventParameterType
v dokumentaci k nástroji . EventId
Poznámka
Instance spravovaných syntetických hlasových modulů napsaných pomocí členů oboru názvů v současné době nemohou po konstrukci System.Speech.Synthesis měnit prostředky.