public void AddEvents([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] SpeechEventInfo[] events, int ulCount) { try { for (int i = 0; i < events.Length; i++) { SpeechEventInfo sapiEvent = events[i]; int num = 1 << (int)sapiEvent.EventId; if (sapiEvent.EventId == 2 && _eventMapper != null) { _eventMapper.FlushEvent(); } if ((num & _eventInterest) != 0) { TTSEvent evt = CreateTtsEvent(sapiEvent); if (_eventMapper == null) { AddEvent(evt); } else { _eventMapper.AddEvent(evt); } } } } catch (Exception exception) { Exception ex = _exception = exception; _actions |= SPVESACTIONS.SPVES_ABORT; } }
private TTSEvent CreateTtsEvent(SpeechEventInfo sapiEvent) { TTSEvent ttsEvent; switch ((TtsEventId)sapiEvent.EventId) { case TtsEventId.Phoneme: ttsEvent = TTSEvent.CreatePhonemeEvent("" + (char)((uint)sapiEvent.Param2 & 0xFFFF), // current phoneme "" + (char)(sapiEvent.Param1 & 0xFFFF), // next phoneme TimeSpan.FromMilliseconds(sapiEvent.Param1 >> 16), (SynthesizerEmphasis)((uint)sapiEvent.Param2 >> 16), _prompt, _audio.Duration); break; case TtsEventId.Bookmark: // BookmarkDetected string bookmark = Marshal.PtrToStringUni(sapiEvent.Param2); ttsEvent = new TTSEvent((TtsEventId)sapiEvent.EventId, _prompt, null, null, _audio.Duration, _audio.Position, bookmark, (uint)sapiEvent.Param1, sapiEvent.Param2); break; default: ttsEvent = new TTSEvent((TtsEventId)sapiEvent.EventId, _prompt, null, null, _audio.Duration, _audio.Position, null, (uint)sapiEvent.Param1, sapiEvent.Param2); break; } return(ttsEvent); }
void ISpEngineSite.AddEvents([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] SpeechEventSapi[] eventsSapi, int ulCount) { SpeechEventInfo[] array = new SpeechEventInfo[eventsSapi.Length]; for (int i = 0; i < eventsSapi.Length; i++) { SpeechEventSapi speechEventSapi = eventsSapi[i]; array[i].EventId = speechEventSapi.EventId; array[i].ParameterType = speechEventSapi.ParameterType; array[i].Param1 = (int)speechEventSapi.Param1; array[i].Param2 = speechEventSapi.Param2; } _site.AddEvents(array, ulCount); }
private TTSEvent CreateTtsEvent(SpeechEventInfo sapiEvent) { switch (sapiEvent.EventId) { case 6: return(TTSEvent.CreatePhonemeEvent(((char)((int)sapiEvent.Param2 & 0xFFFF)).ToString() ?? "", ((char)(sapiEvent.Param1 & 0xFFFF)).ToString() ?? "", TimeSpan.FromMilliseconds(sapiEvent.Param1 >> 16), (SynthesizerEmphasis)((uint)(int)sapiEvent.Param2 >> 16), _prompt, _audio.Duration)); case 4: { string bookmark = Marshal.PtrToStringUni(sapiEvent.Param2); return(new TTSEvent((TtsEventId)sapiEvent.EventId, _prompt, null, null, _audio.Duration, _audio.Position, bookmark, (uint)sapiEvent.Param1, sapiEvent.Param2)); } default: return(new TTSEvent((TtsEventId)sapiEvent.EventId, _prompt, null, null, _audio.Duration, _audio.Position, null, (uint)sapiEvent.Param1, sapiEvent.Param2)); } }