TextFragment.TextOffset Propriedade
Definição
Obtém ou define o local inicial do texto no fragmento.Gets or sets the starting location of the text in the fragment.
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
Valor da propriedade
Um int é retornado ou pode ser usado para definir o local inicial, em caractere, da parte da cadeia de texto associada a esse fragmento para ser falado.An int is returned or can be used to set the start location, in character, of the part of text string associated with this fragment to be spoken.
Exemplos
O exemplo a seguir faz parte de uma implementação de síntese de fala personalizada que herda de TtsEngineSsml e usando o uso de TextFragment , SpeechEventInfo , FragmentState e TtsEventId .The example below is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the use of TextFragment, SpeechEventInfo, FragmentState, and TtsEventId.
A implementação de SpeakThe implementation of Speak
Recebe uma matriz de TextFragment instâncias e cria uma nova matriz de TextFragment instâncias a ser passada para o
Speakmétodo em um mecanismo de síntese subjacente.Receives an array of TextFragment instances and creates a new array of TextFragment instances to be passed to theSpeakmethod on an underlying synthesis engine.O cuidado específico é usado para respeitar o TextOffset , TextLength no original, TextFragment ao criar o TextToSpeak nas novas TextFragment instâncias.Particular care is used to respect the TextOffset, TextLength on the original TextFragment when creating the TextToSpeak on the new TextFragment instances.
Se o TtsEngineAction valor de enumeração encontrado na Action propriedade no FragmentState retornado pela State propriedade de cada TextFragment instância for Speak , a implementaçãoIf the TtsEngineAction enumeration value by found from the Action property on the FragmentState returned by the State property of each TextFragment instance is Speak, the implementation
Traduz o American Britishisms no texto a ser falado.Translates Americanism to Britishisms in the text to be spoken.
Se a EventInterest Propriedade nas ITtsEngineSite interfaces fornecidas para a implementação oferecer suporte ao WordBoundary tipo de evento, uma SpeechEventInfo instância será usada para criar um evento para gerar um medidor de progresso do sintetizador criado.If the EventInterest property on the ITtsEngineSite interfaces provided to the implementation support the WordBoundary event type, a SpeechEventInfo instance is used to create an event to drive a synthesizer progress meter is created.
Um mecanismo de renderização de fala é chamado com a TextFragment matriz modificada.A speech rendering engine is then called with the modified TextFragment array.
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);
}
Comentários
O valor padrão dessa propriedade é 0.The default value of this property is 0.