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プロパティによって返されるオブジェクトのFragmentStateStateプロパティTextFragmentによって指定されます。 SSML 仕様の <Silence> XML タグに対応します。

Speak 0

関連付けられた TextFragment を処理し、読み上げることを要求します。 これは TextFragment の既定値です。 SSML 仕様の <speak> XML タグに対応します。

SpellOut 4

TextFragment プロパティを使用して TextToSpeak によって指定されたテキスト値を個別の文字として合成することを示します。 このレンダリングには、空白以外の句読点や英数字のテキストが含まれます。 たとえば、関連付けられているテキスト フラグメント "word!" は、 "w o r d exclamation point" (w o r d 感嘆符) に合成されます。

StartParagraph 6

段落の状態を示します。 SSML 仕様の <p> XML タグに対応します。

StartSentence 5

文の開始を示します。 SSML 仕様の <s> XML タグに対応します。

次のTtsEngineSsmlTextFragmentFragmentState例は、TtsEventId

の実装 Speak

  1. インスタンスのTextFragment配列を受け取り、基になる合成エンジンのメソッドにSpeak渡されるインスタンスのTextFragment新しい配列を作成します。

  2. 各インスタンスのTtsEngineActionプロパティによって返されるStateプロパティFragmentStateからAction見つかった列挙値が Speak の場合TextFragment、実装

    • アメリカ主義を、読み上げるテキストの英国主義に翻訳します。

    • 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返されます。

プロパティによってState返される値のTtsEngineAction処理は、派生したクラスに対するメソッドの実装をSpeak合成する音声によって処理されますTtsEngineSsml

適用対象