TextFragment.TextLength Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit la longueur du texte vocal dans le fragment.
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
Valeur de propriété
Un int
est retourné ou peut être utilisé pour définir la longueur, en caractères, de la chaîne de texte associée à ce fragment devant être prononcé.
Exemples
L’exemple ci-dessous fait partie d’une implémentation de synthèse vocale personnalisée qui hérite de TtsEngineSsmlet utilise , TextFragmentSpeechEventInfo, FragmentStateet TtsEventId.
L’implémentation de Speak
Reçoit un tableau d’instances et crée un tableau d’instances TextFragment à passer à la
Speak
méthode sur un moteur de TextFragment synthèse sous-jacent.Un soin particulier est utilisé pour respecter le TextOffset, TextLength sur l’original TextFragment lors de la création de TextToSpeak sur les nouvelles TextFragment instances.
Si la TtsEngineAction valeur d’énumération par trouvée à partir de la Action propriété sur le FragmentState retourné par la State propriété de chaque TextFragment instance est Speak, l’implémentation
Traduit l’américanisme en britishismes dans le texte à prononcer.
Si la EventInterest propriété sur les interfaces fournies à l’implémentation ITtsEngineSite prend en charge le WordBoundary type d’événement, une SpeechEventInfo instance est utilisée pour créer un événement afin de générer un compteur de progression du synthétiseur.
Un moteur de rendu vocal est ensuite appelé avec le tableau modifié 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);
}
Remarques
La valeur par défaut de cette propriété est 0.