Partager via


TtsEventId Énumération

Définition

Énumère les types d'événements de synthèse vocale.

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

Champs

AudioLevel 9

Identifie les événements générés lorsqu'un moteur de synthèse vocale termine une modification de niveau audio pendant l'énonciation.

Bookmark 4

Identifie les événements générés lorsqu'un moteur de synthèse vocale rencontre un signet pendant l'énonciation.

EndInputStream 2

Identifie les événements générés lorsqu'un moteur de synthèse vocale rencontre la fin de son flux d'entrée pendant l'énonciation.

Phoneme 6

Identifie les événements générés lorsqu'un moteur de synthèse vocale termine un phonème pendant l'énonciation.

SentenceBoundary 7

Identifie les événements générés lorsqu'un moteur de synthèse vocale termine une phrase pendant l'énonciation.

StartInputStream 1

Identifie les événements générés lorsqu'un moteur de synthèse vocale commence à énoncer un flux.

Viseme 8

Identifie les événements générés lorsqu'un moteur de synthèse vocale termine un visème pendant l'énonciation.

VoiceChange 3

Identifie les événements générés lorsqu'un moteur de synthèse vocale rencontre un changement de voix pendant l'énonciation.

WordBoundary 5

Identifie les événements générés lorsqu'un moteur de synthèse vocale termine un mot pendant l'énonciation.

Exemples

L’exemple suivant fait partie d’une implémentation de synthèse vocale personnalisée qui hérite de TtsEngineSsml , et utilise les TextFragment classes,, SpeechEventInfo FragmentState et TtsEventId .

L’implémentation de TtsEngineSsml.Speak comprend les étapes suivantes :

  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 Action propriété de chaque TextFragment.State instance est égale à TtsEngineAction.Speak , le code effectue les opérations suivantes :

    • Traduit l’anglais américain en anglais britannique dans le texte à prononcer.

    • Si la ITtsEngineSite.EventInterest propriété fournie à 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 conduire un compteur de progression de synthétiseur est créé.

  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));
                    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 moteurs de synthèse vocale personnalisés définissent les types d’événements soumis à l’infrastructure de synthétiseur de plateforme vocale avec TtsEventId .

La spécification est effectuée en définissant la EventId propriété des SpeechEventInfo instances passées au AddEvents membre de la classe qui implémente l' ITtsEngineSite interface passée à la Speak méthode sur l’implémentation d’un moteur de reconnaissance vocale personnalisé de TtsEngineSsml .

L’infrastructure de la plateforme de reconnaissance vocale indique le type d’événements qu’elle gère actuellement via la EventInterest propriété sur le ITtsEngineSite passé à l’implémentation Speak.

La valeur de EventInterest est un masque de bits, où les membres de TtsEventId définissent l’emplacement du bit correspondant au type d’événement. Par exemple, WordBoundary a une valeur de cinq (5), ce qui signifie que le cinquième bit de la valeur retournée par EventInterest indique si le site prend en charge le type d’événement.

S’applique à