Partager via


TtsEngineAction Énumération

Définition

Spécifie l'action SSML (Speech Synthesis Markup Language) à effectuer pour le rendu d'un TextFragment spécifié.

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

Champs

Bookmark 3

Indique qu'un TextFragment doit être utilisé en tant que contenu d'un signet. Il correspond à la balise XML <mark> dans la spécification SSML.

ParseUnknownTag 7

Indique qu'aucune action n'a été déterminée à partir de l'entrée SSML. Cette entrée peut être interprétée ou ignorée à la discrétion d’un moteur de synthèse. Le TextFragment associé est une balise XML inconnue qui ne fait pas partie du standard SSML.

Pronounce 2

Demande que le texte TextFragment d'entrée soit interprété sous forme de phonèmes. La prononciation exacte est spécifiée par le membre Phoneme de l’objet FragmentState retourné par la propriété State sur les instances TextFragment. Il correspond à la balise XML <Phoneme> dans la spécification SSML.

Silence 1

Indique qu'un TextFragment ne contient aucun texte à restituer sous forme de discours. La durée du silence est spécifiée par la Duration propriété de l’objet FragmentState retourné par la State propriété sur TextFragment les instances. Il correspond à la balise XML <Silence> dans la spécification SSML.

Speak 0

Demande que le TextFragment associé doit être traité et parlé. Il s’agit de la valeur par défaut pour un TextFragment. Il correspond à la balise XML <speak> dans la spécification SSML.

SpellOut 4

Indique que les valeurs de texte fournies par le TextFragment via sa propriété TextToSpeak doivent être synthétisées sous la forme de différents caractères. Ce rendu comprend les signes de ponctuation, hormis les espaces blancs, ainsi que du texte alphanumérique. Par exemple, le fragment de texte associé "word!" doit être synthétisé en "w o r d point d’exclamation".

StartParagraph 6

Indique l'état du paragraphe. Il correspond à la balise XML <p> dans la spécification SSML.

StartSentence 5

Indique le début de la phrase. Il correspond à la balise XML <s> dans la spécification SSML.

Exemples

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

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.

  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 l’interface ITtsEngineSite fournie à l’implémentation prend en charge le TtsEventId.WordBoundary type d’événement, un événement pour piloter un compteur de progression de synthétiseur est créé.

  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

TtsEngineAction représente les demandes de maintenance d’un TextFragment. Les actions correspondent étroitement aux éléments de la spécification SSML et sont implémentées sur le texte retourné par la TextToSpeak propriété sur un TextFragment.

La TtsEngineAction valeur associée à un TextFragment est retournée par la State propriété.

Le traitement de la TtsEngineAction valeur retournée par la State propriété est géré par une implémentation de synthèse vocale de la Speak méthode sur une classe dérivée de TtsEngineSsml.

S’applique à