TextFragment 类

定义

包含供语音合成引擎使用的文本和语音特性信息。

public ref class TextFragment
public class TextFragment
type TextFragment = class
Public Class TextFragment
继承
TextFragment

示例

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

的实现 Speak

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

    TextOffset TextLength 新的 TextFragment 实例上创建时, TextToSpeak 将使用特定的小心来应对原始 TextFragment

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

}  

注解

语音平台基础结构解压缩了 SSML 输入和构造对象的基于 XML 的结构 TextFragment

语音内容通过 TextLength 实例的、 TextOffset 和属性提供 TextToSpeak TextFragment

语音特性信息(如强调、螺距和速率)是从 FragmentState 属性返回的对象获取的 TextFragment State

构造函数

TextFragment()

构造 TextFragment 的新实例。

属性

State

获取或设置 TextFragment 的语音特性信息。

TextLength

设置或获取片段中的语音文本的长度。

TextOffset

设置或获取片段中的文本的起始位置。

TextToSpeak

获取或设置片段的语音文本。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于