TtsEngineAction Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает действие языка разметки синтеза речи (SSML), выполняемое при отрисовке данного TextFragment
.
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- Наследование
Поля
Bookmark | 3 | Указывает, что TextFragment необходимо использовать в качестве содержимого закладки. Соответствует XML-тегу |
ParseUnknownTag | 7 | Указывает, что никакие действия не определены из SSML-ввода. Эти входные данные могут интерпретироваться или игнорироваться на усмотрение механизма синтеза. Связанный TextFragment является неизвестным тегом XML, не входящим в стандарт SSML. |
Pronounce | 2 | Запрашивает, чтобы входной текст TextFragment интерпретировался как фонемы. Точное произношение задается членом Phoneme объекта FragmentState, возвращаемого свойством State для экземпляров TextFragment. Соответствует XML-тегу |
Silence | 1 | Указывает, что TextFragment не содержит текста для воспроизведения в виде речи. Длительность молчания задается свойством Duration FragmentState объекта, возвращаемого свойством State экземпляров TextFragment . Соответствует XML-тегу |
Speak | 0 | Запрашивает, чтобы связанное TextFragment должно обрабатываться и произноситься. Это значение по умолчанию для TextFragment. Соответствует XML-тегу |
SpellOut | 4 | Указывает, что текстовые значения, предоставленные TextFragment через его свойство TextToSpeak, должны синтезироваться как отдельные символы. Это включает знаки препинания, отличные от пробелов, а также алфавитно-цифровой текст. Например, связанный текстовый фрагмент "word!" должен быть синтезирован в "w o r d восклицательный знак". |
StartParagraph | 6 | Указывает состояние параграфа. Соответствует XML-тегу |
StartSentence | 5 | Обозначает начало предложения. Соответствует XML-тегу |
Примеры
Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, а также использование TextFragmentFragmentState, иTtsEventId
Реализация Speak
Получает массив TextFragment экземпляров и создает новый массив TextFragment экземпляров, передаваемый
Speak
методу в базовом модулем синтеза.TtsEngineAction Если значение перечисления, найденное из Action свойства, FragmentState возвращаемого свойством State каждого TextFragment экземпляра, имеет значение Speak, реализация
Преобразует американизм в британизм в тексте, который нужно говорить.
EventInterest Если свойство ITtsEngineSite интерфейса, предоставленное реализации, поддерживает TtsEventId.WordBoundary тип события, создается событие для управления индикатором хода выполнения синтезатора.
Затем модуль рендеринга речи вызывается с измененным 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);
}
Комментарии
TtsEngineAction
представляет запросы на обслуживание .TextFragment Действия тесно соответствуют элементам спецификации SSML и реализуются в тексте, возвращаемом свойствомTextToSpeak.TextFragment
Значение, связанное TtsEngineAction со TextFragment свойством, возвращается свойством State .
Обработка значения, TtsEngineAction возвращаемого свойством State , обрабатывается реализацией Speak метода, производного от TtsEngineSsmlкласса.