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プロパティによって返されるオブジェクトのFragmentStateStateプロパティTextFragmentによって指定されます。 SSML 仕様の |
Speak | 0 | 関連付けられた TextFragment を処理し、読み上げることを要求します。 これは TextFragment の既定値です。 SSML 仕様の |
SpellOut | 4 | TextFragment プロパティを使用して TextToSpeak によって指定されたテキスト値を個別の文字として合成することを示します。 このレンダリングには、空白以外の句読点や英数字のテキストが含まれます。 たとえば、関連付けられているテキスト フラグメント "word!" は、 "w o r d exclamation point" (w o r d 感嘆符) に合成されます。 |
StartParagraph | 6 | 段落の状態を示します。 SSML 仕様の |
StartSentence | 5 | 文の開始を示します。 SSML 仕様の |
例
次のTtsEngineSsmlTextFragmentFragmentState例は、TtsEventId
の実装 Speak
インスタンスのTextFragment配列を受け取り、基になる合成エンジンのメソッドに
Speak
渡されるインスタンスのTextFragment新しい配列を作成します。各インスタンスのTtsEngineActionプロパティによって返されるStateプロパティFragmentStateからAction見つかった列挙値が Speak の場合TextFragment、実装
アメリカ主義を、読み上げるテキストの英国主義に翻訳します。
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返されます。
プロパティによってState返される値のTtsEngineAction処理は、派生したクラスに対するメソッドの実装をSpeak合成する音声によって処理されますTtsEngineSsml。