Partager via


EventParameterType Énumération

Définition

Énumère les types de pointeurs de données passés aux événements de synthèse vocale.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Héritage
EventParameterType

Champs

Object 2

Non pris en charge actuellement.

Pointer 3

Non pris en charge actuellement.

String 4

Indique que l'argument param2 des SpeechEventInfo est System.IntPtr créé à l'aide de System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni qui référence un objet System.String ; le param1 peut prendre n'importe quelle valeur.

Token 1

Indique que l’argument param2 des SpeechEventInfo est un IntPtr créé avec PtrToStructure qui référence un jeton Windows Desktop Speech Technology, lequel est un objet Windows Desktop Speech Technology représentant une ressource comme une voix (VoiceInfo). param1 peut prendre n’importe quelle valeur.

Undefined 0

Indique que l'argument param2 des SpeechEventInfo est indéfini. En général, param1 et param2 sont alors ignorés. Toutefois, si EventId est WordBoundary, un événement de mesure de progression peut être généré. param1 doit être un entier contenant la longueur du mot actuel, et param2 un IntPtr qui référence un entier contenant le décalage du mot actuel.

Exemples

L’exemple suivant 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 la EventParameterType valeur de membre retournée par ParameterType , 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

L' EventParameterType énumération est utilisée lors de la construction d’un SpeechEventInfo objet. Un EventParameterType membre d’énumération passé comme parameterType argument au constructeur pour SpeechEventInfo spécifie comment l' param2 argument du constructeur (qui doit être un IntPtr ) est interprété.

Le choix de EventParameterType est dicté par le type d’événement demandé, comme spécifié par un membre de System.Speech.Synthesis.TtsEngine.TtsEventId .

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

Notes

Actuellement, les instances d’un moteur de reconnaissance vocale synthétique écrit à l’aide des membres de l' System.Speech.Synthesis espace de noms ne peuvent pas modifier les ressources après la construction.

S’applique à

Voir aussi