Partager via


TextFragment.TextToSpeak Propriété

Définition

Obtient ou définit le texte vocal du fragment.

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

Valeur de propriété

Une System.String est retournée ou peut être utilisée pour définir le texte vocal qu'utilisera un moteur de synthèse vocale pour générer la sortie audio.

Exemples

L’exemple ci-dessous fait partie d’une implémentation de synthèse vocale personnalisée qui hérite de TtsEngineSsmlet utilise , TextFragmentSpeechEventInfo, FragmentStateet TtsEventId.

L’implémentation de Speak

  1. Reçoit un tableau d’instances et crée un tableau d’instances TextFragment à passer à la Speak méthode sur un moteur de TextFragment synthèse sous-jacent.

    Un soin particulier est utilisé pour respecter le TextOffset, TextLength sur l’original TextFragment lors de la création de TextToSpeak sur les nouvelles TextFragment instances.

  2. Si la TtsEngineAction valeur d’énumération par trouvée à partir de la Action propriété sur le FragmentState retourné par la State propriété de chaque TextFragment instance est Speak, l’implémentation

    • Traduit l’américanisme en britishismes dans le texte à prononcer.

    • Si la EventInterest propriété sur les interfaces fournies à l’implémentation ITtsEngineSite prend en charge le WordBoundary type d’événement, une SpeechEventInfo instance est utilisée pour créer un événement afin de générer un compteur de progression du synthétiseur.

  3. Un moteur de rendu vocal est ensuite appelé avec le tableau modifié 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);  

}  

Remarques

La valeur par défaut de cette propriété est System.String.Empty.

Les applications sont libres de modifier complètement la valeur de TextToSpeak.

La réinitialisation de TextToSpeak ne modifie pas la valeur de TextOffset et TextLength.

S’applique à