다음을 통해 공유


TtsEventId 열거형

정의

음성 합성 이벤트 유형을 열거합니다.

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

필드

AudioLevel 9

음성 합성 엔진이 음성을 전달하면서 오디오 수준의 변경을 완성할 때 생성되는 이벤트를 식별합니다.

Bookmark 4

음성 합성 엔진이 음성을 전달하면서 책갈피를 만날 때 생성되는 이벤트를 식별합니다.

EndInputStream 2

음성 합성 엔진이 음성을 전달하면서 입력 스트림 끝을 만날 때 생성되는 이벤트를 식별합니다.

Phoneme 6

음성 합성 엔진이 음성을 전달하면서 음소를 완성할 때 생성되는 이벤트를 식별합니다.

SentenceBoundary 7

음성 합성 엔진이 음성을 전달하면서 문장을 완성할 때 생성되는 이벤트를 식별합니다.

StartInputStream 1

음성 합성 엔진이 스트림을 전달하기 시작할 때 생성되는 이벤트를 식별합니다.

Viseme 8

음성 합성 엔진이 음성을 전달하면서 viseme를 완성할 때 생성되는 이벤트를 식별합니다.

VoiceChange 3

음성 합성 엔진이 음성을 전달하면서 음성 변경을 만날 때 생성되는 이벤트를 식별합니다.

WordBoundary 5

음성 합성 엔진이 음성을 전달하면서 단어를 완성할 때 생성되는 이벤트를 식별합니다.

예제

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

의 구현에는 TtsEngineSsml.Speak 다음 단계가 포함 됩니다.

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

  2. ActionTextFragment.State 인스턴스의 속성이와 같으면 TtsEngineAction.Speak 코드에서 다음을 수행 합니다.

    • 말한 텍스트에서 미국 영어를 영국 영어로 변환 합니다.

    • ITtsEngineSite.EventInterest구현에 제공 된 속성이 이벤트 유형을 지 원하는 경우 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);

}

설명

사용 하 여 음성 플랫폼 신시사이저 인프라에 전송 되는 이벤트 종류를 정의 하는 사용자 지정 음성 합성 엔진을 TtsEventId입니다.

사양 설정 하 여 수행 됩니다는 EventId 의 속성 SpeechEventInfo 에 전달 된 인스턴스를 AddEvents 구현 하는 클래스의 멤버를 ITtsEngineSite 인터페이스에 전달를 Speak 메서드는 사용자 지정 음성 엔진 구현의 TtsEngineSsml합니다.

음성 플랫폼 인프라를 통해 현재 처리 하는 이벤트의 유형을 나타냅니다는 EventInterest 속성에는 ITtsEngineSite 말하기 구현에 전달 합니다.

EventInterest 는 비트 마스크 이며 여기서 멤버 TtsEventId 이벤트 형식에 해당 하는 비트의 위치를 정의 합니다. 예를 들어 WordBoundary의 다섯 가지 (5)에서 반환한 값의 다섯 번째 비트를 의미 합니다.은 EventInterest 사이트 이벤트 형식을 지 원하는 경우를 나타냅니다.

적용 대상