Partager via


SpeechEventInfo.Param2 Propriété

Définition

Obtient et définit l'instance de System.IntPtr (param2 dans le constructeur) qui référence l'objet à passer à la plateforme de reconnaissance vocale pour générer un événement demandé en utilisant l'instance actuelle de SpeechEventInfo.

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 qui référence l'objet à passer à la plateforme vocale lorsque l'événement spécifié par l'instance actuelle de 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 de TtsEngineSsml , et utilise l’utilisation de TextFragment ,, SpeechEventInfo FragmentState et TtsEventId

L’implémentation de Speak

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

  2. Si la TtsEngineAction valeur d’énumération 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’americanisme en Britishisms 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 de synthétiseur créé.

      Les paramètres sur SpeechEventInfo , y compris, Param2 sont utilisés pour enregistrer 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 TextFragment tableau modifié.

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é de SpeechEventInfo sont déterminées de manière unique par les valeurs des EventId Propriétés et de ParameterType l' SpeechEventInfo instance.

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

S’applique à