다음을 통해 공유


TextFragment 클래스

정의

음성 신시사이저 엔진에서 사용할 텍스트 및 음성 특성 정보를 포함합니다.

public ref class TextFragment
public class TextFragment
type TextFragment = class
Public Class TextFragment
상속
TextFragment

예제

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

구현 Speak

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

    TextOffset TextLength TextFragment 새 인스턴스에서를 만들 때 원래에서를 적용 하는 데 특히 주의 해야 합니다 TextToSpeak TextFragment .

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

}  

설명

음성 플랫폼 인프라는 SSML 입력의 XML 기반 구조를 압축 하 고 개체를 생성 TextFragment 합니다.

TextLength인스턴스의, 및 속성을 통해 음성 콘텐츠를 사용할 수 있습니다 TextOffset TextToSpeak TextFragment .

음성 특성 정보 (예: 강조, 피치 및 요율)는 속성에서 반환 되는 FragmentState 개체에서 가져옵니다 TextFragment State .

생성자

TextFragment()

TextFragment의 새 인스턴스를 생성합니다.

속성

State

TextFragment를 위한 음성 특성 정보를 가져오거나 설정합니다.

TextLength

해당 조각의 음성 텍스트 길이를 가져오거나 설정합니다.

TextOffset

조각에서 텍스트의 시작 길이를 가져오거나 설정합니다.

TextToSpeak

해당 조각의 음성 텍스트를 가져오거나 설정합니다.

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상