EventParameterType Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перечисляет типы указателей данных, переданных событиям синтеза речи.
public enum class EventParameterType
public enum EventParameterType
type EventParameterType =
Public Enum EventParameterType
- Наследование
Поля
Object | 2 | В настоящий момент не поддерживается. |
Pointer | 3 | В настоящий момент не поддерживается. |
String | 4 | Указывает, что аргумент |
Token | 1 | Указывает, что аргумент |
Undefined | 0 | Указывает, что аргумент |
Примеры
Следующий пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml , и использования функций TextFragment , SpeechEventInfo , FragmentState и TtsEventId .
Реализация Speak
Получает массив TextFragment экземпляров и создает новый массив TextFragment экземпляров для передачи в
Speak
метод базового механизма синтеза.Если TtsEngineAction значение перечисления, найденное в Action свойстве, FragmentState возвращаемом State свойством каждого TextFragment экземпляра Speak , равно, то реализация
Преобразует Американский регион в Бритишисмс текст.
Если EventInterest свойство в ITtsEngineSite интерфейсах, предоставленных для реализации, поддерживает WordBoundary Тип события, то SpeechEventInfo экземпляр используется для создания события для создания счетчика хода выполнения синтезатора.
Параметры в SpeechEventInfo , включая EventParameterType значение элемента, возвращаемое 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 пространства имен, не могут изменить ресурсы после создания.