TtsEventId 열거형

정의

음성 합성 이벤트 유형을 열거합니다.Enumerates types of speech synthesis events.

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

필드

AudioLevel 9

음성 합성 엔진이 음성을 전달하면서 오디오 수준의 변경을 완성할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine completes an audio level change while speaking.

Bookmark 4

음성 합성 엔진이 음성을 전달하면서 책갈피를 만날 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine encounters a bookmark while speaking.

EndInputStream 2

음성 합성 엔진이 음성을 전달하면서 입력 스트림 끝을 만날 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine encounters the end of its input stream while speaking.

Phoneme 6

음성 합성 엔진이 음성을 전달하면서 음소를 완성할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine completes a phoneme while speaking.

SentenceBoundary 7

음성 합성 엔진이 음성을 전달하면서 문장을 완성할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine completes a sentence while speaking.

StartInputStream 1

음성 합성 엔진이 스트림을 전달하기 시작할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine a begins speaking a stream.

Viseme 8

음성 합성 엔진이 음성을 전달하면서 viseme를 완성할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine completes a viseme while speaking.

VoiceChange 3

음성 합성 엔진이 음성을 전달하면서 음성 변경을 만날 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine encounters a change of Voice while speaking.

WordBoundary 5

음성 합성 엔진이 음성을 전달하면서 단어를 완성할 때 생성되는 이벤트를 식별합니다.Identifies events generated when a speech synthesize engine completes a word while speaking.

예제

다음 예제는,, TtsEngineSsml 및 클래스를 사용 하 여에서 상속 하는 사용자 지정 음성 합성 구현의 일부입니다 TextFragment SpeechEventInfo FragmentState TtsEventId .The following example is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the TextFragment, SpeechEventInfo, FragmentState, and TtsEventId classes.

의 구현에는 TtsEngineSsml.Speak 다음 단계가 포함 됩니다.The implementation of TtsEngineSsml.Speak includes the following steps:

  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. ActionTextFragment.State 인스턴스의 속성이와 같으면 TtsEngineAction.Speak 코드에서 다음을 수행 합니다.If the Action property of each TextFragment.State instance is equal to TtsEngineAction.Speak, the code does the following:

    • 말한 텍스트에서 미국 영어를 영국 영어로 변환 합니다.Translates American English to British English in the text to be spoken.

    • ITtsEngineSite.EventInterest구현에 제공 된 속성이 이벤트 유형을 지 원하는 경우 WordBoundary , SpeechEventInfo 신시사이저 진행률 측정기를 구동 하는 이벤트를 만드는 데 인스턴스가 사용 됩니다.If the ITtsEngineSite.EventInterest property provided to the implementation supports 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);

}

설명

사용 하 여 음성 플랫폼 신시사이저 인프라에 전송 되는 이벤트 종류를 정의 하는 사용자 지정 음성 합성 엔진을 TtsEventId입니다.Custom speech synthesis engines define the types of events submitted to the Speech platform synthesizer infrastructure with the TtsEventId.

사양 설정 하 여 수행 됩니다는 EventId 의 속성 SpeechEventInfo 에 전달 된 인스턴스를 AddEvents 구현 하는 클래스의 멤버를 ITtsEngineSite 인터페이스에 전달를 Speak 메서드는 사용자 지정 음성 엔진 구현의 TtsEngineSsml합니다.Specification is performed by setting the EventId property of SpeechEventInfo instances passed to the AddEvents member of the class implementing the ITtsEngineSite interface passed to the Speak method on a custom speech engine's implementation of TtsEngineSsml.

음성 플랫폼 인프라를 통해 현재 처리 하는 이벤트의 유형을 나타냅니다는 EventInterest 속성에는 ITtsEngineSite 말하기 구현에 전달 합니다.The Speech platform infrastructure indicates the type of events it is currently handling through the EventInterest property on the ITtsEngineSite passed to the speak implementation.

EventInterest 는 비트 마스크 이며 여기서 멤버 TtsEventId 이벤트 형식에 해당 하는 비트의 위치를 정의 합니다.The value of EventInterest is a bitmask, where the members of TtsEventId define the location of the bit corresponding to the event type. 예를 들어 WordBoundary의 다섯 가지 (5)에서 반환한 값의 다섯 번째 비트를 의미 합니다.은 EventInterest 사이트 이벤트 형식을 지 원하는 경우를 나타냅니다.For example, WordBoundary has a value of five (5), meaning the fifth bit in the value returned by EventInterest indicates if the site supports the event type.

적용 대상