EventParameterType Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перечисляет типы указателей данных, передаваемых событиям синтеза речи.
public enum class EventParameterType
public enum EventParameterType
type EventParameterType =
Public Enum EventParameterType
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| Undefined | 0 | Указывает, что |
| Token | 1 | Указывает, что |
| Object | 2 | В настоящее время не поддерживается. |
| Pointer | 3 | В настоящее время не поддерживается. |
| String | 4 | Указывает, что |
Примеры
Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, и использования , и использования TextFragment, SpeechEventInfoFragmentStateи TtsEventId.
Реализация Speak
Получает массив TextFragment экземпляров и создает новый массив экземпляров, передаваемый TextFragment
Speakметоду в базовом подсистеме синтеза.TtsEngineAction Если значение перечисления, найденное из Action свойстваFragmentState, возвращаемого State свойством каждого TextFragment экземпляра, является Speakреализацией.
Преобразует американизм в британизм в тексте, который следует говорить.
EventInterest Если свойство в ITtsEngineSite интерфейсах, предоставленных реализации, поддерживает WordBoundary тип события, SpeechEventInfo экземпляр используется для создания события для управления счетчиком хода выполнения синтезатора.
Параметры, SpeechEventInfoEventParameterType включая возвращаемое ParameterTypeзначением члена, используются для регистрации события, созданного
LogSpeechEventс помощью метода.
Затем модуль отрисовки речи вызывается с измененным 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));
LogSpeechEvent(spEvent.EventId,
spEvent.ParameterType,
spEvent.Param1,
spEvent.Param2);
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);
}
Комментарии
Перечисление EventParameterType используется при создании SpeechEventInfo объекта. Член EventParameterType перечисления, переданный в качестве parameterType аргумента конструктору, SpeechEventInfo указывает, как param2 интерпретируется аргумент конструктора (который должен быть IntPtr) .
Выбор EventParameterType определяется типом запрашиваемого события, как указано участником System.Speech.Synthesis.TtsEngine.TtsEventId.
Подробные сведения об использовании EventParameterTypeсм. в документации по EventId
Замечание
В настоящее время экземпляры управляемых искусственных речевых подсистем, написанных с помощью элементов System.Speech.Synthesis пространства имен, не могут изменять ресурсы после построения.