SpeechEventInfo 结构

定义

用于指定事件的类型及其将生成的参数(如果有的话)作为文本呈现到语音一部分由自定义复合语音引擎。

public value class SpeechEventInfo : IEquatable<System::Speech::Synthesis::TtsEngine::SpeechEventInfo>
public struct SpeechEventInfo : IEquatable<System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
type SpeechEventInfo = struct
Public Structure SpeechEventInfo
Implements IEquatable(Of SpeechEventInfo)
继承
SpeechEventInfo
实现

示例

以下示例是继承自 的自定义语音合成实现(使用 TtsEngineSsml TextFragment 、、 和 )的 SpeechEventInfo FragmentState 一部分 TtsEventId

的实现 Speak

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

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

  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));  
        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 AddEvents ITtsEngineSite Speak AddLexicon 事件 RemoveLexicon

构造函数

SpeechEventInfo(Int16, Int16, Int32, IntPtr)

构造相应的 SpeechEventInfo

属性

EventId

获取和设置 SpeechEventInfo 实例用于请求的语音平台事件。

Param1

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

Param2

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

ParameterType

返回当前 Param2 对象上的 SpeechEventInfo 参数返回的 IntPtr 所指向的对象的数据类型。

方法

Equals(Object)

确定指定的对象是否为 SpeechEventInfo 的实例,并与当前 SpeechEventInfo 实例是否相等。

Equals(SpeechEventInfo)

确定指定的 SpeechEventInfo 对象与 SpeechEventInfo 的当前实例是否相等。

GetHashCode()

提供 SpeechEventInfo 对象的哈希代码。

运算符

Equality(SpeechEventInfo, SpeechEventInfo)

确定两个 SpeechEventInfo 实例是否相等。

Inequality(SpeechEventInfo, SpeechEventInfo)

确定两个 SpeechEventInfo 实例是否不相等。

适用于