SpeechEventInfo Struktura
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í.
Slouží k určení typu události a jejích argumentů (pokud existují), které se mají generovat jako součást vykreslování textu na řeč vlastním syntetickým modulem řeči.
public value class SpeechEventInfo : IEquatable<System::Speech::Synthesis::TtsEngine::SpeechEventInfo>
public struct SpeechEventInfo : IEquatable<System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
type SpeechEventInfo = struct
Public Structure SpeechEventInfo
Implements IEquatable(Of SpeechEventInfo)
- Dědičnost
- Implementuje
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči zděděné z TtsEngineSsmla pomocí , TextFragmentSpeechEventInfo, FragmentStateaTtsEventId
Provádění Speak
Přijme pole TextFragment instancí a vytvoří nové pole TextFragment instancí, které se mají předat
Speak
metodě v podkladovém syntezčním modulu.Pokud je TtsEngineAction hodnota výčtu Action nalezena z vlastnosti FragmentState vrácené State vlastností každé TextFragment instance Speak, implementace
V textu, který se má vyslovovat, přeloží americanismus na britštinu.
EventInterest Pokud vlastnost na ITtsEngineSite rozhraních poskytovaných implementaci podporuje WordBoundary typ události, SpeechEventInfo instance se použije k vytvoření události, která bude řídit měřič průběhu syntetizátoru.
Modul pro vykreslování řeči se pak zavolá 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
Vlastní modul syntézy řeči požaduje generování událostí v rámci platformy Speech tím, že poskytuje odpovídající SpeechEventInfo instanci členu AddEvents objektu ITtsEngineSite webu modulu předaného implementacím Speak, AddLexicona RemoveLexicon.
Konstruktory
SpeechEventInfo(Int16, Int16, Int32, IntPtr) |
Vytvoří odpovídající SpeechEventInfoobjekt . |
Vlastnosti
EventId |
Získá a nastaví událost platformy Speech, kterou instance SpeechEventInfo používá k vyžádání. |
Param1 |
Získá a nastaví |
Param2 |
Získá a nastavte |
ParameterType |
Vrátí datový typ objektu, na který IntPtr odkazuje parametr vrácený Param2 parametrem aktuálního SpeechEventInfo objektu. |
Metody
Equals(Object) |
Určuje, zda je zadaný objekt instancí |
Equals(SpeechEventInfo) |
Určuje, zda je zadaný |
GetHashCode() |
Poskytuje kód hash pro |
Operátory
Equality(SpeechEventInfo, SpeechEventInfo) |
Určuje, zda jsou dvě instance rovny |
Inequality(SpeechEventInfo, SpeechEventInfo) |
Určuje, zda jsou si dvě instance rovny |