TtsEventId Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перечисляет типы событий синтеза речи.
public enum class TtsEventId
public enum TtsEventId
type TtsEventId =
Public Enum TtsEventId
- Наследование
Поля
AudioLevel | 9 | Идентифицирует события, создаваемые, когда механизм синтезирования речи завершает изменение уровня звука в процессе говорения. |
Bookmark | 4 | Идентифицирует события, создаваемые, когда механизм синтезирования речи сталкивается с закладкой в процессе говорения. |
EndInputStream | 2 | Идентифицирует события, создаваемые, когда механизм синтезирования речи сталкивается с завершением потока ввода в процессе говорения. |
Phoneme | 6 | Идентифицирует события, создаваемые, когда механизм синтезирования речи завершает фонему в процессе говорения. |
SentenceBoundary | 7 | Идентифицирует события, создаваемые, когда механизм синтезирования речи завершает предложение в процессе говорения. |
StartInputStream | 1 | Идентифицирует события, создаваемые, когда механизм синтезирования речи начинает поток речи. |
Viseme | 8 | Идентифицирует события, создаваемые, когда механизм синтезирования речи завершает визему в процессе говорения. |
VoiceChange | 3 | Идентифицирует события, создаваемые, когда механизм синтезирования речи сталкивается с изменением голоса в процессе говорения. |
WordBoundary | 5 | Идентифицирует события, создаваемые, когда механизм синтезирования речи завершает слово в процессе говорения. |
Примеры
Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsmlи использующими TextFragmentклассы , SpeechEventInfo, FragmentStateи TtsEventId .
Реализация TtsEngineSsml.Speak включает в себя следующие шаги.
Получает массив экземпляров TextFragment и создает новый массив экземпляров, передаваемых TextFragment
Speak
в метод в базовом механизме синтеза.Action Если свойство каждого TextFragment.State экземпляра равно TtsEngineAction.Speak, код выполняет следующее:
Перевод американского английского языка на британский английский в тексте, который требуется произносить.
ITtsEngineSite.EventInterest Если свойство, предоставленное для реализации, поддерживает
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);
}
Комментарии
Пользовательские подсистемы синтеза речи определяют типы событий, отправляемых в инфраструктуру синтезатора платформы "Речь" с помощью TtsEventId.
Спецификация выполняется путем задания EventId свойства SpeechEventInfo экземпляров, передаваемых члену AddEvents класса , реализующего ITtsEngineSite интерфейс, переданный Speak методу в реализации пользовательского TtsEngineSsmlобработчика речи .
Инфраструктура платформы "Речь" указывает тип событий, которые в настоящее время обрабатываются с помощью EventInterest свойства объекта , переданного ITtsEngineSite в реализацию speak.
Значением EventInterest является битовая маска, где члены TtsEventId определяют расположение бита, соответствующего типу события. Например, WordBoundary имеет значение пять (5), то есть пятый бит в значении, возвращаемом методом EventInterest , указывает, поддерживает ли сайт тип события.