SpeechEventInfo.ParameterType Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает тип данных объекта, на который указывает IntPtrParam2 возвращаемый параметром текущего SpeechEventInfo объекта.
public:
property short ParameterType { short get(); };
public short ParameterType { get; }
member this.ParameterType : int16
Public ReadOnly Property ParameterType As Short
Значение свойства
short Значение, соответствующее элементу EventParameterType перечисления и указывающее тип данных объекта, на который указывает IntPtrParam2 возвращаемый параметром, и используется в качестве второго аргумента конструктора текущего SpeechEventInfo объекта.
Примеры
Приведенный ниже пример является частью пользовательской реализации синтеза речи, наследуемой от TtsEngineSsml, и использования , и использования TextFragment, SpeechEventInfoFragmentStateиTtsEventId
Реализация Speak
Получает массив TextFragment экземпляров и создает новый массив экземпляров, передаваемый TextFragment
Speakметоду в базовом подсистеме синтеза.TtsEngineAction Если значение перечисления, найденное из Action свойстваFragmentState, возвращаемого State свойством каждого TextFragment экземпляра, является Speakреализацией.
Преобразует американизм в британизм в тексте, который следует говорить.
EventInterest Если свойство в ITtsEngineSite интерфейсах, предоставленных реализации, поддерживает WordBoundary тип события, SpeechEventInfo экземпляр используется для создания события для управления счетчиком хода выполнения синтезатора.
Параметры в SpeechEventInfo, в том числе 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);
}
Комментарии
Требования к System.IntPtr ссылке Param2 свойства SpeechEventInfo однозначно определяются значениями экземпляра EventId и ParameterType свойствами SpeechEventInfo .
Подробные сведения об использовании Param2см. в документации по EventId.