다음을 통해 공유


EventParameterType 열거형

정의

음성 합성 이벤트에 전달되는 데이터 포인터 형식을 열거합니다.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
상속
EventParameterType

필드

Object 2

현재 지원되지 않습니다.

Pointer 3

현재 지원되지 않습니다.

String 4

SpeechEventInfo에 대한 param2 인수가 System.IntPtr 개체를 참조하는 System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni를 사용하여 만든 System.String임을 나타냅니다. param1는 임의의 값을 사용할 수 있습니다.

Token 1

SpeechEventInfo에 대한 param2 인수는 Windows 바탕 화면 음성 기술 토큰을 참조하는 PtrToStructure를 사용하여 만든 IntPtr입니다. 이 토큰은 음성(VoiceInfo)과 같은 리소스를 나타내는 Windows 바탕 화면 음성 기술 개체입니다. param1에는 어떤 값이든 사용할 수 있습니다.

Undefined 0

param2 인수가 SpeechEventInfo에 정의되지 않았음을 나타냅니다. 일반적으로 param1param2 은 무시 됩니다. 그러나 EventIdWordBoundary인 경우 진행률 표시 이벤트가 생성됩니다. param1은 현재 단어의 길이를 포함하는 정수여야 하며, param2IntPtr은 현재 단어의 오프셋이 들어 있는 정수를 참조합니다.

예제

다음 예제는 에서 상속하고 , , 및 을 사용하는 사용자 지정 음성 합성 TtsEngineSsml 구현의 TextFragment SpeechEventInfo FragmentState TtsEventId 일부입니다.

구현 Speak

  1. 배열을 받습니다 TextFragment 인스턴스 및 새 배열을 만듭니다 TextFragment 전달 되는 인스턴스는 Speak 기본 합성 엔진에서 메서드.

  2. 경우는 TtsEngineAction 에서 열거형 값에서 찾을 Action 속성에는 FragmentState 반환한를 State 의 각 속성 TextFragment 인스턴스가 Speak, 구현

    • 읽을 텍스트의 Americanism Britishisms 변환 합니다.

    • 경우는 EventInterest 속성에는 ITtsEngineSite 구현 지원 제공 하는 인터페이스를 WordBoundary 이벤트 유형는 SpeechEventInfo 인스턴스 이벤트 신시사이저 진행률 표시기가 만든 드라이브를 만드는 데 사용 됩니다.

      매개 변수 SpeechEventInfo를 포함 하 여는 EventParameterType 멤버 값을 반환한 ParameterType를 통해 생성 된 이벤트를 기록 하는 데 사용 되는 LogSpeechEvent 메서드.

  3. 이라고 하는 음성 렌더링 엔진이 수정 된 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 생성 후 리소스를 변경할 수 없습니다.

적용 대상

추가 정보