SpeechEventInfo.Param1 属性

定义

获取和设置 integer 值(构造函数中的 param1),此值需要传递至语音平台以生成 SpeechEventInfo 的当前实例用于请求的事件。

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

属性值

返回生成 SpeechEventInfo 的当前实例指定的事件时,要传递到语音平台的 integer

示例

以下示例是自定义语音合成实现的一部分,该实现继承自 TtsEngineSsml,并使用 TextFragmentSpeechEventInfoFragmentStateTtsEventId

的实现 Speak

  1. 接收实例数组TextFragment,并创建要传递到Speak基础合成引擎上的 方法的新实例数组TextFragment

  2. 如果从 Action 每个TextFragment实例SpeakTtsEngineAction 属性返回State的 上的 FragmentState 属性中找到 的枚举值为 ,则实现

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

}  

注解

属性SpeechEventInfo的要求和含义Param1由 实例和 ParameterType 属性SpeechEventInfo的值EventId唯一确定。

有关如何使用 Param1的详细信息,请参阅 的文档 EventId

适用于