SpeechEventInfo.ParameterType 属性

定义

返回当前 Param2 对象上的 SpeechEventInfo 参数返回的 IntPtr 所指向的对象的数据类型。Returns the data type of the object pointed to by the IntPtr returned by the Param2 parameter on the current SpeechEventInfo object.

public:
 property short ParameterType { short get(); };
public short ParameterType { get; }
member this.ParameterType : int16
Public ReadOnly Property ParameterType As Short

属性值

Int16

一个 short 值,该值对应于 EventParameterType 枚举的成员并指示由 Param2 参数返回的IntPtr 所指向的对象的数据类型,并且该类型用作当前 SpeechEventInfo 对象中构造函数的第二参数。A short value corresponding to a member of the EventParameterType enumeration and indicating the data type of the object pointed to by the IntPtr returned by the Param2 parameter and used as the second argument for the constructor of the current SpeechEventInfo object.

示例

下面的示例是继承自的自定义语音合成实现的一部分 TtsEngineSsml ,并使用 TextFragmentSpeechEventInfoFragmentStateTtsEventIdThe 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. 如果在 TtsEngineAction Action FragmentState 每个实例的属性返回的的属性中找到枚举值 State ,则 TextFragment Speak 实现If 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

  3. 然后,将使用修改后的数组调用语音呈现引擎 TextFragmentA 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));  
         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);  

}  

注解

对属性的引用的要求 System.IntPtr Param2 SpeechEventInfo 是唯一由实例的和属性的值确定的 EventId ParameterType SpeechEventInfoThe requirements on the System.IntPtr reference of the Param2 property of SpeechEventInfo are uniquely determined by the values of the EventId and ParameterType properties the SpeechEventInfo instance.

有关如何使用的详细信息 Param2 ,请参阅文档 EventIdFor detailed information on how use Param2, see documentation for EventId.

适用于