다음을 통해 공유


TtsEngineAction 열거형

정의

지정된 TextFragment를 렌더링하는 중에 가져올 SSML(Speech Synthesis Markup Language) 작업을 지정합니다.

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

필드

Bookmark 3

TextFragment가 책갈피 내용으로 사용됨을 나타냅니다. SSML 사양에서 <mark> XML 태그에 해당합니다.

ParseUnknownTag 7

SSML 입에서 아무것도 확인 되지 않았음을 나타냅니다. 이 입력은 합성 엔진의 판단에 의해 해석되거나 무시될 수 있습니다. 연결된 TextFragment는 SSML 표준에 속하지 않는 알 수 없는 XML 태그입니다.

Pronounce 2

입력 TextFragment 텍스트를 음소로 해석하도록 요청합니다. 정확한 발음은 TextFragment 인스턴스의 State 속성에 의해 반환되는 FragmentState 개체의 Phoneme 멤버에 의해 지정됩니다. SSML 사양에서 <Phoneme> XML 태그에 해당합니다.

Silence 1

TextFragment은 음성으로 렌더링 될 수 없는 텍스트를 포함함을 나타냅니다. 무음 기간은 인스턴스의 Duration 속성에서 반환된 개체의 FragmentState 속성에 TextFragment 의해 State 지정됩니다. SSML 사양에서 <Silence> XML 태그에 해당합니다.

Speak 0

관련된 TextFragment가 처리되고 발음될 것을 요청합니다. TextFragment의 기본값입니다. SSML 사양에서 <speak> XML 태그에 해당합니다.

SpellOut 4

TextFragment 속성을 통해 TextToSpeak에서 제공한 텍스트 값을 개별 문자로 합성할지를 나타냅니다. 이 렌더링에는 공백 외의 문장 부호와 영숫자 텍스트가 포함됩니다. 예를 들어 관련된 텍스트 조각 “word!”는 “w o r d exclamation point”로 합성되어야 합니다.

StartParagraph 6

단락의 상태를 나타냅니다. SSML 사양에서 <p> XML 태그에 해당합니다.

StartSentence 5

문장의 시작을 나타냅니다. SSML 사양에서 <s> XML 태그에 해당합니다.

예제

다음 예제는 상속되는 TtsEngineSsml사용자 지정 음성 합성 구현의 일부이며 , 및 사용을 사용합니다TextFragmentFragmentState.TtsEventId

구현 Speak

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

  2. 각 인스턴스의 TtsEngineAction 속성에서 반환된 속성 FragmentState 에서 Action 찾은 열거형 값이 State Speak이면 구현 TextFragment 됩니다.

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

    • EventInterest 구현에 제공된 인터페이스의 ITtsEngineSite 속성이 이벤트 유형을 지원하는 TtsEventId.WordBoundary 경우 신디사이저 진행률 측정기를 구동하는 이벤트가 생성됩니다.

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

}

설명

TtsEngineAction 는 서비스를 위한 TextFragment요청을 나타냅니다. 작업은 SSML 사양의 요소와 밀접하게 일치하며 속성에서 반환 TextToSpeak 된 텍스트에 TextFragment구현됩니다.

TtsEngineAction a와 TextFragment 연결된 값은 속성에서 반환됩니다State.

속성에서 반환된 TtsEngineAction 값의 처리는 파생된 클래스에서 메서드의 Speak 구현을 합성하는 음성에 의해 처리됩니다TtsEngineSsml.State

적용 대상