Condividi tramite


TtsEventId Enumerazione

Definizione

Enumera i tipi di eventi di sintesi vocale.

public enum class TtsEventId
public enum TtsEventId
type TtsEventId = 
Public Enum TtsEventId
Ereditarietà
TtsEventId

Campi

AudioLevel 9

Identifica gli eventi generati quando un motore di sintesi vocale completa una modifica del livello dell'audio durante la pronuncia.

Bookmark 4

Identifica gli eventi generati quando un motore di sintesi vocale rileva un segnalibro durante la pronuncia.

EndInputStream 2

Identifica gli eventi generati quando un motore di sintesi vocale rileva la fine del relativo flusso di input durante la pronuncia.

Phoneme 6

Identifica gli eventi generati quando un motore di sintesi vocale completa un fonema durante la pronuncia.

SentenceBoundary 7

Identifica gli eventi generati quando un motore di sintesi vocale completa una frase durante la pronuncia.

StartInputStream 1

Identifica gli eventi generati quando un motore di sintesi vocale inizia a pronunciare un flusso.

Viseme 8

Identifica gli eventi generati quando un motore di sintesi vocale completa un viseme durante la pronuncia.

VoiceChange 3

Identifica gli eventi generati quando un motore di sintesi vocale rileva una modifica della voce durante la pronuncia.

WordBoundary 5

Identifica gli eventi generati quando un motore di sintesi vocale completa una parola durante la pronuncia.

Esempio

L'esempio seguente fa parte di un'implementazione di sintesi vocale personalizzata che eredita da TtsEngineSsmle usando le TextFragmentclassi , SpeechEventInfoFragmentState, e TtsEventId .

L'implementazione di TtsEngineSsml.Speak include i passaggi seguenti:

  1. Riceve una matrice di istanze e crea una nuova matrice di TextFragmentTextFragment istanze da passare al Speak metodo in un motore di sintesi sottostante.

  2. Se la Action proprietà di ogni TextFragment.State istanza è uguale a TtsEngineAction.Speak, il codice esegue le operazioni seguenti:

    • Traduce l'inglese americano in inglese britannico nel testo da parlare.

    • Se la ITtsEngineSite.EventInterest proprietà fornita all'implementazione supporta il WordBoundary tipo di evento, SpeechEventInfo viene usata un'istanza per creare un evento per guidare un misuratore di stato del sintetizzatore.

  3. Viene quindi chiamato un motore di rendering vocale con la matrice modificata 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);

}

Commenti

I motori di sintesi vocale personalizzati definiscono i tipi di eventi inviati all'infrastruttura di sintetizzatore della piattaforma Speech con .TtsEventId

La specifica viene eseguita impostando la proprietà delle SpeechEventInfo istanze passate al AddEvents membro della classe che implementa l'interfaccia ITtsEngineSite passata al Speak metodo sull'implementazione di un motore vocale personalizzato di TtsEngineSsml.EventId

L'infrastruttura della piattaforma Speech indica il tipo di eventi attualmente gestito tramite la EventInterest proprietà ITtsEngineSite passata all'implementazione parla.

Il valore di è una maschera di bit, in cui i membri di TtsEventId definiscono la posizione del bit corrispondente al tipo di EventInterest evento. Ad esempio, WordBoundary ha un valore di cinque (5), ovvero il quinto bit nel valore restituito da EventInterest indica se il sito supporta il tipo di evento.

Si applica a