TtsEventId TtsEventId TtsEventId TtsEventId Enum

定義

音声合成イベントの型を列挙します。Enumerates types of speech synthesis events.

public enum class TtsEventId
public enum TtsEventId
type TtsEventId = 
Public Enum TtsEventId
継承

フィールド

AudioLevel AudioLevel AudioLevel AudioLevel 9

音声合成エンジンが読み上げ時にオーディオ レベル変更を完了するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine completes an audio level change while speaking.

Bookmark Bookmark Bookmark Bookmark 4

音声合成エンジンが読み上げ時にブックマークを検出するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine encounters a bookmark while speaking.

EndInputStream EndInputStream EndInputStream EndInputStream 2

音声合成エンジンが読み上げ時に入力ストリームの最後を検出するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine encounters the end of its input stream while speaking.

Phoneme Phoneme Phoneme Phoneme 6

音声合成エンジンが読み上げ時に音素を完了するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine completes a phoneme while speaking.

SentenceBoundary SentenceBoundary SentenceBoundary SentenceBoundary 7

音声合成エンジンが読み上げ時に文章を完了するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine completes a sentence while speaking.

StartInputStream StartInputStream StartInputStream StartInputStream 1

音声合成エンジンが読み上げストリームを開始するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine a begins speaking a stream.

Viseme Viseme Viseme Viseme 8

音声合成エンジンが読み上げ時に viseme を完了するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine completes a viseme while speaking.

VoiceChange VoiceChange VoiceChange VoiceChange 3

音声合成エンジンが読み上げ時に音声の変更を検出するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine encounters a change of Voice while speaking.

WordBoundary WordBoundary WordBoundary WordBoundary 5

音声合成エンジンが読み上げ時に単語を完了するときに生成されるイベントを識別します。Identifies events generated when a speech synthesize engine completes a word while speaking.

次の例は、をTtsEngineSsml継承し、、、 FragmentState、およびTtsEventIdの各クラスTextFragmentを使用SpeechEventInfoしているカスタム音声合成実装の一部です。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配列を受け取り、基になる合成エンジンTextFragmentSpeakメソッドに渡されるインスタンスの新しい配列を作成します。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. TtsEngineAction.SpeakAction インスタンスTextFragment.Stateのプロパティがに等しい場合、コードは次のように実行します。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.

    • 実装に対して提供されるWordBoundary SpeechEventInfoプロパティがイベントの種類をサポートしている場合は、のインスタンスを使用して、シンセサイザーの進行状況メーターを作成するためのイベントを作成します。 ITtsEngineSite.EventInterestIf 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を使用して speech プラットフォームのシンセサイザーインフラストラクチャに送信されるイベントの種類を定義します。Custom speech synthesis engines define the types of events submitted to the Speech platform synthesizer infrastructure with the TtsEventId.

EventIdクラスのSpeak SpeechEventInfo ITtsEngineSiteメンバーに渡されたインスタンスのプロパティを設定することによって、カスタム音声エンジンでメソッドに渡されるインターフェイスを実装します。 AddEventsTtsEngineSsml実装。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.

Speech プラットフォームインフラストラクチャは、読み上げ実装に渡されたの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 (5) です。つまり、によって返される値の 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.

適用対象