SpeechEventInfo 구조체

정의

사용자 지정 합성 음성 엔진에 의해 음성 텍스트 렌더링의 일부로 생성될 이벤트 및 해당 인수(있을 경우)의 형식을 지정하는 데 사용됩니다.Used to specify the type of event, and its arguments (if any) to be generated as part of the rendering of text to speech by a custom synthetic speech engine.

public value class SpeechEventInfo : IEquatable<System::Speech::Synthesis::TtsEngine::SpeechEventInfo>
public struct SpeechEventInfo : IEquatable<System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
type SpeechEventInfo = struct
Public Structure SpeechEventInfo
Implements IEquatable(Of SpeechEventInfo)
상속
SpeechEventInfo
구현

예제

아래 예제에서 상속 하는 사용자 지정 음성 합성 구현의 일부인 TtsEngineSsml, 및을 사용 하 여 TextFragment, SpeechEventInfo, FragmentState, 및 TtsEventIdThe example below is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the use of TextFragment, SpeechEventInfo, FragmentState, and TtsEventId

구현 SpeakThe implementation of Speak

  1. 배열을 받습니다 TextFragment 인스턴스 및 새 배열을 만듭니다 TextFragment 전달 되는 인스턴스는 Speak 기본 합성 엔진에서 메서드.Receives an array of TextFragment instances and creates a new array of TextFragment instances to be passed to the Speak method on an underlying synthesis engine.

  2. 경우는 TtsEngineAction 에서 열거형 값에서 찾을 Action 속성에는 FragmentState 반환한를 State 의 각 속성 TextFragment 인스턴스가 Speak, 구현If the TtsEngineAction enumeration value by found from the Action property on the FragmentState returned by the State property of each TextFragment instance is Speak, the implementation

    • 읽을 텍스트의 Americanism Britishisms 변환 합니다.Translates Americanism to Britishisms in the text to be spoken.

    • 경우는 EventInterest 속성에는 ITtsEngineSite 구현 지원 제공 하는 인터페이스를 WordBoundary 이벤트 유형는 SpeechEventInfo 인스턴스 이벤트 신시사이저 진행률 표시기가 만든 드라이브를 만드는 데 사용 됩니다.If the EventInterest property on the ITtsEngineSite interfaces provided to the implementation support the WordBoundary event type, a SpeechEventInfo instance is used to create an event to drive a synthesizer progress meter is created.

  3. 이라고 하는 음성 렌더링 엔진이 수정 된 TextFragment 배열입니다.A speech rendering engine is then called with the modified TextFragment array.

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

설명

사용자 지정 음성 합성 엔진은 적절 한 SpeechEventInfo 인스턴스를 제공 하 여 Speak, AddLexicon, RemoveLexicon의 구현에 전달 된 ITtsEngineSite 엔진 사이트 개체의 AddEvents 멤버를 제공 하 여 음성 플랫폼에서 이벤트 생성을 요청 합니다.A custom speech synthesis engine requests the generation of events under the Speech Platform by providing an appropriate SpeechEventInfo instance to AddEvents member of the ITtsEngineSite engine site object passed to implementations of Speak, AddLexicon, and RemoveLexicon.

생성자

SpeechEventInfo(Int16, Int16, Int32, IntPtr)

적절한 SpeechEventInfo를 생성합니다.Constructs an appropriate SpeechEventInfo.

속성

EventId

요청하기 위해 SpeechEventInfo의 인스턴스를 사용하는 음성 플랫폼 이벤트를 가져와 설정합니다.Gets and set the Speech platform event which an instance of SpeechEventInfo is used to request.

Param1

integer의 현재 인스턴스를 사용하여 요청할 이벤트를 생성하기 위해 음성 플랫폼으로 전달할 param1 값(생성자의 SpeechEventInfo)을 가져오거나 설정합니다.Gets and set the integer value (param1 in the constructor) to be passed to the Speech platform to generate an event the current instance of SpeechEventInfo is used to request.

Param2

System.IntPtr의 현재 인스턴스를 사용하여 요청할 이벤트를 생성하기 위해 음성 플랫폼으로 전달할 개체를 참조하는 param2 인스턴스(생성자의 SpeechEventInfo)를 가져오거나 설정합니다.Gets and set the System.IntPtr instance (param2 in the constructor) referencing the object to be passed to the Speech platform to generate an event the current instance of SpeechEventInfo is used to request.

ParameterType

현재 IntPtr 개체의 Param2 매개 변수에서 반환하는 SpeechEventInfo로 가리키는 개체의 데이터 형식을 반환합니다.Returns the data type of the object pointed to by the IntPtr returned by the Param2 parameter on the current SpeechEventInfo object.

메서드

Equals(Object)

지정된 개체가 SpeechEventInfo의 인스턴스이고 SpeechEventInfo의 현재 인스턴스와 같은지 확인합니다.Determines whether a specified object is an instance of SpeechEventInfo and equal to the current instance of SpeechEventInfo.

Equals(SpeechEventInfo)

지정된 SpeechEventInfo 개체가 SpeechEventInfo의 현재 인스턴스와 같은지 확인합니다.Determines whether a specified SpeechEventInfo object is equal to the current instance of SpeechEventInfo.

GetHashCode()

SpeechEventInfo 개체에 대해 해시 코드를 제공합니다.Provides a hash code for a SpeechEventInfo object.

연산자

Equality(SpeechEventInfo, SpeechEventInfo)

SpeechEventInfo의 두 인스턴스가 같은지 여부를 확인합니다.Determines whether two instances of SpeechEventInfo are equal.

Inequality(SpeechEventInfo, SpeechEventInfo)

SpeechEventInfo의 두 인스턴스가 서로 다른지 여부를 확인합니다.Determines whether two instances of SpeechEventInfo are not equal.

적용 대상