次の方法で共有


SpeechEventInfo.Param1 プロパティ

定義

SpeechEventInfo の現在のインスタンスが要求を行うために使用されるイベントを生成するために音声プラットフォームに渡される integer 値 (コンストラクター内の param1) を取得または設定します。

public:
 property int Param1 { int get(); };
public int Param1 { get; }
member this.Param1 : int
Public ReadOnly Property Param1 As Integer

プロパティ値

Int32

SpeechEventInfo の現在のインスタンスで指定されたイベントの生成時に、音声のプラットフォームに渡される integer を返します。

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

の実装 Speak

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

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

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

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

      を含むのパラメーターは、 SpeechEventInfo Param1 メソッドを使用して生成されたイベントを記録するために使用され LogSpeechEvent ます。

  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));  
         LogSpeechEvent(spEvent.EventId,   
                        spEvent.ParameterType,   
                        spEvent.Param1,  
                        spEvent.Param2);  
        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);  

}  

注釈

のプロパティの要件と意味は、の Param1 SpeechEventInfo 値によって一意に決定され、 EventId インスタンスのプロパティによって決まり ParameterType SpeechEventInfo ます。

の使用方法の詳細について Param1 は、のドキュメントを参照してください EventId

適用対象