SpeechEventInfo.Param2 Propriété

Définition

Obtient et définit l’instance System.IntPtr (param2 dans le constructeur) référençant l’objet à passer à la plateforme Speech pour générer un événement dont l’instance SpeechEventInfo actuelle est utilisée pour demander.

public:
 property IntPtr Param2 { IntPtr get(); };
public IntPtr Param2 { get; }
member this.Param2 : nativeint
Public ReadOnly Property Param2 As IntPtr

Valeur de propriété

IntPtr

nativeint

Retourne le System.IntPtr référencement de l’objet à passer à la plateforme Speech lorsque l’événement spécifié par l’instance actuelle de celle-ci SpeechEventInfo est généré.

Exemples

L’exemple ci-dessous fait partie d’une implémentation de synthèse vocale personnalisée qui hérite et TtsEngineSsmlutilise l’utilisation de TextFragment, SpeechEventInfo, FragmentStateet TtsEventId

Implémentation de Speak

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

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

    • Traduit l’americanisme aux britishismes dans le texte à prononcer.

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

      Les paramètres sur SpeechEventInfo, y compris Param2 sont utilisés pour journaliser l’événement généré par le biais de la LogSpeechEvent méthode.

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

}

Remarques

Les exigences relatives à la System.IntPtr référence de la Param2 propriété sont SpeechEventInfo déterminées de manière unique par les valeurs de l’instance EventId et ParameterType les propriétés de l’instance SpeechEventInfo .

Pour plus d’informations sur l’utilisation Param2, consultez la documentation pour EventId.

S’applique à