TextFragment.TextLength Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece la longitud del texto de voz en el fragmento.
public:
property int TextLength { int get(); void set(int value); };
public int TextLength { get; set; }
member this.TextLength : int with get, set
Public Property TextLength As Integer
Valor de propiedad
int
se devuelve o se puede usar para establecer la longitud, en caracteres, de la cadena de texto asociada a este fragmento que se hablará.
Ejemplos
El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de TtsEngineSsmly usa TextFragment, SpeechEventInfoFragmentState, y TtsEventId.
La implementación de Speak
Recibe una matriz de TextFragment instancias y crea una nueva matriz de TextFragment instancias que se pasarán al
Speak
método en un motor de síntesis subyacente.Se usa especial atención para respetar , TextOffsetTextLength en el original TextFragment al crear en TextToSpeak las nuevas TextFragment instancias.
Si el TtsEngineAction valor de enumeración encontrado de la Action propiedad en la FragmentState propiedad devuelta por la State propiedad de cada TextFragment instancia es Speak, la implementación
Traduce el americanismo a los britishismos en el texto que se va a decir.
Si la EventInterest propiedad de las ITtsEngineSite interfaces proporcionadas a la implementación admite el WordBoundary tipo de evento, se usa una SpeechEventInfo instancia para crear un evento para controlar un medidor de progreso del sintetizador.
A continuación, se llama a un motor de representación de voz con la matriz modificada TextFragment .
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);
}
Comentarios
El valor predeterminado de esta propiedad es 0.