SpeechEventInfo(Int16, Int16, Int32, IntPtr) SpeechEventInfo(Int16, Int16, Int32, IntPtr) SpeechEventInfo(Int16, Int16, Int32, IntPtr) SpeechEventInfo(Int16, Int16, Int32, IntPtr) Constructor

定義

適切な SpeechEventInfo を構築します。Constructs an appropriate 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 Int16 Int16 Int16

TtsEventId オブジェクトが処理する音声プラットフォームのイベントの種類を示す SpeechEventInfo のインスタンス。An instance of TtsEventId indicating the sort of Speech platform event the SpeechEventInfo object is to handle.

parameterType
Int16 Int16 Int16 Int16

param2System.IntPtr の参照がどのように解釈されるかを示す EventParameterType のインスタンスと、暗黙の param1 の使用。An instance of EventParameterType indicating how the System.IntPtr reference of param2 is to be interpreted, and, by implication, the use of param1.

param1
Int32 Int32 Int32 Int32

構築する SpeechEventInfo のインスタンスで要求されたイベントの生成時に、音声のプラットフォームに渡される整数値。An integer value to be passed to the Speech platform when the event requested by the instance of SpeechEventInfo to be constructed is generated.

この整数の厳密な意味は parameterType の値によって暗黙的に決定されます。The exact meaning of this integer is implicitly determined by the value of parameterType.

param2
IntPtr IntPtr IntPtr IntPtr

オブジェクトを参照する System.IntPtr インスタンスです。A System.IntPtr instance referencing an object. これは、構築する SpeechEventInfo のインスタンスで要求されたイベントの生成時に、音声のプラットフォームに渡されます。to be passed to the Speech platform when the event requested by the instance of SpeechEventInfo to be constructed is generated.

参照する必要がある型は値 parameterTypeによって明示的に定義されます。The type which must be referenced is explicitly defined by the value parameterType. System.IntPtr.ZeroThe value System.IntPtr.Zero.

次の例TtsEngineSsmlは、を継承し、、 TextFragment SpeechEventInfo FragmentState、、およびの使用を使用しているカスタム音声合成実装の一部です。TtsEventIdThe example below is part of a custom speech synthesis implementation inheriting from TtsEngineSsml, and using the use of TextFragment, SpeechEventInfo, FragmentState, and TtsEventId

の実装SpeakThe implementation of Speak

  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. Action State FragmentState Speak TtsEngineAction各インスタンスのプロパティによって返されるのプロパティによって検出された列挙値がの場合、実装TextFragmentIf the TtsEngineAction enumeration value by found from the Action property on the FragmentState returned by the State property of each TextFragment instance is Speak, the implementation

    • 読み上げられるテキストの Americanism を Britishisms に変換します。Translates Americanism to Britishisms in the text to be spoken.

    • 実装EventInterest ITtsEngineSite に提供SpeechEventInfoされるインターフェイスのプロパティがイベントの種類をサポートしている場合は、のインスタンスを使用して、シンセサイザーの進行状況メーターを作成するためのイベントを作成します。WordBoundaryIf the EventInterest property on the ITtsEngineSite interfaces provided to the implementation support 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);  

}  

注釈

parameterType、、およびTtsEventId param1 eventIdに使用される許容値は、に使用されるのメンバーによって指定されるように、要求されるイベントの種類によって決まります。 param2Permitted values used for parameterType, param1, and param2 and their meaning is dictated by the type of event being requested, as specified by the member of TtsEventId used for eventId.

parameterTypeparam1およびの適切な値の詳細については、のドキュメントを参照param2してください。EventIdFor detailed information on appropriate values for parameterType, param1, and param2, see documentation for EventId

Speech プラットフォームインフラストラクチャで処理できるイベントの種類は、のEventInterest ITtsEngineSiteシンセサイザーエンジンサイト実装のプロパティを使用して取得できます。The type of the events which can be handled by the Speech platform infrastructure can be obtained through the EventInterest property on the synthesizer engine site implementation of ITtsEngineSite.

適用対象