TextFragment.TextToSpeak 屬性

定義

取得或設定片段的語音文字。

public:
 property System::String ^ TextToSpeak { System::String ^ get(); void set(System::String ^ value); };
public string TextToSpeak { get; set; }
member this.TextToSpeak : string with get, set
Public Property TextToSpeak As String

屬性值

System.String會傳回,或者可以用來設定語音合成引擎所要使用的語音文字以產生音訊輸出。

範例

下列範例是繼承自 TtsEngineSsml 的自訂語音合成實作的一部分,以及使用 TextFragmentSpeechEventInfoFragmentStateTtsEventId

的實作 Speak

  1. 接收實例的 TextFragment 陣列,並建立新的實例陣列 TextFragment ,以傳遞至 Speak 基礎合成引擎上的 方法。

    在新的 TextFragment 實例上建立 TextToSpeak 時,會特別小心地遵守 TextOffsetTextLength 原始 TextFragment 的 。

  2. TtsEngineAction如果從 Action 每個 TextFragment 實例的 屬性所傳回 State 之 屬性 FragmentState 找到的列舉值為 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);  

}  

備註

此屬性的預設值為 System.String.Empty

應用程式可以完全變更 的值 TextToSpeak

重設 的值 TextToSpeak 不會變更 和 TextLength 的值 TextOffset

適用於