TtsEngineAction 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 TextFragment
를 렌더링하는 중에 가져올 SSML(Speech Synthesis Markup Language) 작업을 지정합니다.
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- 상속
필드
Bookmark | 3 | TextFragment가 책갈피 내용으로 사용됨을 나타냅니다. SSML 사양에서 |
ParseUnknownTag | 7 | SSML 입에서 아무것도 확인 되지 않았음을 나타냅니다. 이 입력은 합성 엔진의 판단에 의해 해석되거나 무시될 수 있습니다. 연결된 TextFragment는 SSML 표준에 속하지 않는 알 수 없는 XML 태그입니다. |
Pronounce | 2 | 입력 TextFragment 텍스트를 음소로 해석하도록 요청합니다. 정확한 발음은 TextFragment 인스턴스의 State 속성에 의해 반환되는 FragmentState 개체의 Phoneme 멤버에 의해 지정됩니다. SSML 사양에서 |
Silence | 1 | TextFragment은 음성으로 렌더링 될 수 없는 텍스트를 포함함을 나타냅니다. 무음 기간은 인스턴스의 Duration 속성에서 반환된 개체의 FragmentState 속성에 TextFragment 의해 State 지정됩니다. SSML 사양에서 |
Speak | 0 | 관련된 TextFragment가 처리되고 발음될 것을 요청합니다. TextFragment의 기본값입니다. SSML 사양에서 |
SpellOut | 4 | TextFragment 속성을 통해 TextToSpeak에서 제공한 텍스트 값을 개별 문자로 합성할지를 나타냅니다. 이 렌더링에는 공백 외의 문장 부호와 영숫자 텍스트가 포함됩니다. 예를 들어 관련된 텍스트 조각 “word!”는 “w o r d exclamation point”로 합성되어야 합니다. |
StartParagraph | 6 | 단락의 상태를 나타냅니다. SSML 사양에서 |
StartSentence | 5 | 문장의 시작을 나타냅니다. SSML 사양에서 |
예제
다음 예제는 상속되는 TtsEngineSsml사용자 지정 음성 합성 구현의 일부이며 , 및 사용을 사용합니다TextFragmentFragmentState.TtsEventId
구현 Speak
배열을 받습니다 TextFragment 인스턴스 및 새 배열을 만듭니다 TextFragment 전달 되는 인스턴스는
Speak
기본 합성 엔진에서 메서드.각 인스턴스의 TtsEngineAction 속성에서 반환된 속성 FragmentState 에서 Action 찾은 열거형 값이 State Speak이면 구현 TextFragment 됩니다.
읽을 텍스트의 Americanism Britishisms 변환 합니다.
EventInterest 구현에 제공된 인터페이스의 ITtsEngineSite 속성이 이벤트 유형을 지원하는 TtsEventId.WordBoundary 경우 신디사이저 진행률 측정기를 구동하는 이벤트가 생성됩니다.
이라고 하는 음성 렌더링 엔진이 수정 된 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