TextFragment.TextLength Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает длину текста речи в фрагменте.
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
Значение свойства
Возвращается int или может использоваться для задания длины текстовой строки, связанной с этим фрагментом.
Примеры
Приведенный ниже пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, а также использования , TextFragmentSpeechEventInfoи .FragmentStateTtsEventId
Реализация Speak
Получает массив TextFragment экземпляров и создает новый массив экземпляров, передаваемый TextFragment
Speakметоду в базовом подсистеме синтеза.Особое внимание используется для уважения TextOffsetTextLength исходного TextFragment значения при создании TextToSpeak новых TextFragment экземпляров.
TtsEngineAction Если значение перечисления, найденное из Action свойстваFragmentState, возвращаемого State свойством каждого TextFragment экземпляра, является Speakреализацией.
Преобразует американизм в британизм в тексте, который следует говорить.
EventInterest Если свойство в ITtsEngineSite интерфейсах, предоставленных реализации, поддерживает WordBoundary тип события, SpeechEventInfo экземпляр используется для создания события для управления счетчиком хода выполнения синтезатора.
Затем модуль отрисовки речи вызывается с измененным 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);
}
Комментарии
Значение по умолчанию этого свойства равно 0.