TextFragment.TextOffset Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta la posizione iniziale del testo nel frammento.
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
Valore della proprietà
Un int
viene restituito o può essere utilizzato per impostare la posizione iniziale, in caratteri, della parte della stringa di testo associata a questo frammento da risolvere.
Esempio
L'esempio seguente fa parte di un'implementazione di sintesi vocale personalizzata che eredita da e usando TtsEngineSsml TextFragment , , e SpeechEventInfo FragmentState TtsEventId .
Implementazione di Speak
Riceve una matrice di istanze e crea una nuova matrice di istanze da TextFragment passare al metodo in un motore di sintesi TextFragment
Speak
sottostante.Particolare attenzione viene usata per rispettare TextOffset , TextLength nell'originale TextFragment quando si crea nelle nuove istanze di TextToSpeak TextFragment .
Se il TtsEngineAction valore di enumerazione trovato dalla proprietà Action nell'oggetto restituito dalla proprietà di ogni istanza FragmentState è , State TextFragment Speak l'implementazione
Converte l'americanismo in inglesismi nel testo da pronunciare.
Se la proprietà sulle interfacce fornite all'implementazione supporta il tipo di evento , viene usata un'istanza di per creare un evento per guidare un contatore dello stato EventInterest ITtsEngineSite del WordBoundary SpeechEventInfo sintetizzatore.
Un motore di rendering vocale viene quindi chiamato con la matrice TextFragment modificata.
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);
}
Commenti
Il valore predefinito di questa proprietà è 0.