TextFragment.TextOffset Vlastnost
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í.
Získá nebo nastaví počáteční umístění textu ve fragmentu.
public:
property int TextOffset { int get(); void set(int value); };
public int TextOffset { get; set; }
member this.TextOffset : int with get, set
Public Property TextOffset As Integer
Hodnota vlastnosti
Vrátí se nebo se může použít k nastavení počátečního umístění (ve znaku) části textového řetězce přidruženého k tomuto fragmentu, který int
se má vyslovovat.
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči dědící z a TtsEngineSsml pomocí , , a TextFragment 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.Zvláštní pozornost se používá k dodržování , na původní při TextOffset TextLength vytváření na nové TextFragment TextToSpeak TextFragment instance.
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.
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
Výchozí hodnota této vlastnosti je 0.