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