SpeechEventInfo.Param1 属性   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取和设置 integer 值(构造函数中的 param1),此值需要传递至语音平台以生成 SpeechEventInfo 的当前实例用于请求的事件。
public:
 property int Param1 { int get(); };public int Param1 { get; }member this.Param1 : intPublic ReadOnly Property Param1 As Integer属性值
返回生成 SpeechEventInfo 的当前实例指定的事件时,要传递到语音平台的 integer。
示例
以下示例是自定义语音合成实现的一部分,该实现继承自 TtsEngineSsml,并使用 TextFragment、 SpeechEventInfo、 FragmentState和 TtsEventId
的实现 Speak
- 接收实例数组TextFragment,并创建要传递到 - Speak基础合成引擎上的 方法的新实例数组TextFragment。
- 如果从 Action 每个TextFragment实例Speak的 TtsEngineAction 属性返回State的 上的 FragmentState 属性中找到 的枚举值为 ,则实现 - 在要说话的文本中将美国主义翻译成英国主义。 
- EventInterest如果提供给实现的ITtsEngineSite接口上的 属性支持WordBoundary事件类型,SpeechEventInfo则使用 实例创建事件来驱动合成器进度计。 - 上的 SpeechEventInfo参数(包括 Param1 )用于记录通过 - LogSpeechEvent方法生成的事件。
 
- 然后,使用修改后的 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);
}
注解
属性SpeechEventInfo的要求和含义Param1由 实例和 ParameterType 属性SpeechEventInfo的值EventId唯一确定。
有关如何使用 Param1的详细信息,请参阅 的文档 EventId。