次の方法で共有


SpeechEventInfo(Int16, Int16, Int32, IntPtr) コンストラクター

定義

適切な SpeechEventInfo を構築します。

public:
 SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
public SpeechEventInfo (short eventId, short parameterType, int param1, IntPtr param2);
new System.Speech.Synthesis.TtsEngine.SpeechEventInfo : int16 * int16 * int * nativeint -> System.Speech.Synthesis.TtsEngine.SpeechEventInfo
Public Sub New (eventId As Short, parameterType As Short, param1 As Integer, param2 As IntPtr)

パラメーター

eventId
Int16

TtsEventId オブジェクトが処理する音声プラットフォームのイベントの種類を示す SpeechEventInfo のインスタンス。

parameterType
Int16

param2System.IntPtr の参照がどのように解釈されるかを示す EventParameterType のインスタンスと、暗黙の param1 の使用。

param1
Int32

構築する SpeechEventInfo のインスタンスで要求されたイベントの生成時に、音声のプラットフォームに渡される整数値。

この整数の厳密な意味は parameterType の値によって暗黙的に決定されます。

param2
IntPtr

nativeint

オブジェクトを参照する System.IntPtr インスタンスです。 これは、構築する SpeechEventInfo のインスタンスで要求されたイベントの生成時に、音声のプラットフォームに渡されます。

参照する必要がある型は値 parameterTypeによって明示的に定義されます。 値 System.IntPtr.Zero

次の例は、を継承し、、、、 TtsEngineSsml TextFragment SpeechEventInfo FragmentState およびの使用を使用しているカスタム音声合成実装の一部です。 TtsEventId

の実装 Speak

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

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

    • 読み上げられるテキストの Americanism を Britishisms に変換します。

    • 実装に提供されるインターフェイスのプロパティがイベントの種類をサポートしている場合は、のインスタンスを使用して、 EventInterest ITtsEngineSite WordBoundary SpeechEventInfo シンセサイザーの進行状況メーターを作成するためのイベントを作成します。

  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);  

}  

注釈

、、およびに使用される許容値 parameterType param1 は、に使用される param2 のメンバーによって指定されるように、要求されるイベントの種類によって決まり TtsEventId eventId ます。

、、およびの適切な値の詳細については parameterType param1 param2 、のドキュメントを参照してください。 EventId

Speech プラットフォームインフラストラクチャで処理できるイベントの種類は、 EventInterest のシンセサイザーエンジンサイト実装のプロパティを使用して取得でき ITtsEngineSite ます。

適用対象