다음을 통해 공유


SpeechEventInfo(Int16, Int16, Int32, IntPtr) 생성자

정의

적절한 SpeechEventInfo를 생성합니다.

public:
 SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
public SpeechEventInfo (short eventId, short parameterType, int param1, IntPtr param2);
new System.Speech.Synthesis.TtsEngine.SpeechEventInfo : int16 * int16 * int * nativeint -> System.Speech.Synthesis.TtsEngine.SpeechEventInfo
Public Sub New (eventId As Short, parameterType As Short, param1 As Integer, param2 As IntPtr)

매개 변수

eventId
Int16

TtsEventId 개체가 처리할 음성 플랫폼 이벤트의 종류를 나타내는 SpeechEventInfo의 인스턴스입니다.

parameterType
Int16

param2System.IntPtr 참조를 해석할 방법(암시적으로 param1 사용)을 나타내는 EventParameterType의 인스턴스입니다.

param1
Int32

생성할 SpeechEventInfo의 인스턴스에서 요청한 이벤트가 생성되는 경우 음성 플랫폼에 전달되는 정수 값입니다.

이 정수의 정확한 의미가 parameterType의 값에 따라 암시적으로 결정됩니다.

param2
IntPtr

nativeint

개체를 참조하는 System.IntPtr 인스턴스입니다. 생성할 SpeechEventInfo의 인스턴스에서 요청한 이벤트가 생성되는 경우 음성 플랫폼에 전달되는

참조해야 하는 형식이 parameterType 값으로 명시적으로 정의되어 있습니다. System.IntPtr.Zero 값입니다.

예제

아래 예제에서 상속 하는 사용자 지정 음성 합성 구현의 일부인 TtsEngineSsml, 및을 사용 하 여 TextFragment, SpeechEventInfo, FragmentState, 및 TtsEventId

구현 Speak

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

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

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

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

  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));  
        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);  

}  

설명

, 및에 사용 되는 허용 되는 값 parameterType param1 param2 은에 사용 되는의 멤버가 지정한 대로 요청 되는 이벤트의 형식에 따라 결정 됩니다 TtsEventId eventId .

, 및에 대 한 적절 한 값에 대 한 자세한 내용은 parameterType param1 설명서를 param2 참조 하십시오. EventId

음성 플랫폼 인프라에서 처리할 수 있는 이벤트의 유형은 EventInterest 의 신시사이저 엔진 사이트 구현에서 속성을 통해 가져올 수 있습니다 ITtsEngineSite .

적용 대상