Compartir a través de


TtsEngineAction Enumeración

Definición

Especifica la acción de lenguaje de marcado de síntesis de voz (SSML) que se va a tomar para presentar un TextFragment dado.

public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction = 
Public Enum TtsEngineAction
Herencia
TtsEngineAction

Campos

Bookmark 3

Indica que TextFragment se va a utilizar como contenido de un marcador. Corresponde a la etiqueta XML <mark> en la especificación de SSML.

ParseUnknownTag 7

Indica que no se ha determinado ninguna acción de entrada de SSML. Esta entrada puede ser interpretada u omitida a criterio de un motor de síntesis. El asociado TextFragment es una etiqueta XML desconocida que no forma parte del estándar SSML.

Pronounce 2

Solicita que el texto TextFragment de entrada se interprete como fonemas. La pronunciación exacta se especifica mediante el miembro Phoneme del objeto FragmentState devuelto por la propiedad State en las instancias de TextFragment. Corresponde a la etiqueta XML <Phoneme> en la especificación de SSML.

Silence 1

Indica que un TextFragment no contiene texto para presentarse como voz. La duración del silencio se especifica mediante la Duration propiedad del FragmentState objeto devuelto por la State propiedad en TextFragment instancias de . Corresponde a la etiqueta XML <Silence> en la especificación de SSML.

Speak 0

Solicita que el objeto TextFragment asociado se procese y se hable. Este es el valor predeterminado de TextFragment. Corresponde a la etiqueta XML <speak> en la especificación de SSML.

SpellOut 4

Indica que los valores de texto proporcionados por TextFragment a través de su propiedad TextToSpeak se van a sintetizar como caracteres individuales. Esta representación incluye signos de puntuación, distintos de espacios en blanco, así como texto alfanumérico. Por ejemplo, el fragmento de texto asociado "¡palabra!" debe sintetizarse en "signo de exclamación de apertura p a l a b r a signo de exclamación de cierre".

StartParagraph 6

Indica el estado del párrafo. Corresponde a la etiqueta XML <p> en la especificación de SSML.

StartSentence 5

Indica el inicio de la frase. Corresponde a la etiqueta XML <s> en la especificación de SSML.

Ejemplos

El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de TtsEngineSsml, y mediante el uso de TextFragment, FragmentStatey TtsEventId

La implementación de Speak

  1. Recibe una matriz de TextFragment instancias y crea una nueva matriz de TextFragment instancias que se pasarán al Speak método en un motor de síntesis subyacente.

  2. Si el TtsEngineAction valor de enumeración encontrado de la Action propiedad en el FragmentState devuelto por la State propiedad de cada TextFragment instancia es Speak, la implementación

    • Traduce el americanismo a los britishismos en el texto que se va a decir.

    • Si la EventInterest propiedad de la ITtsEngineSite interfaz proporcionada a la implementación admite el TtsEventId.WordBoundary tipo de evento, se crea un evento para controlar un medidor de progreso del sintetizador.

  3. A continuación, se llama a un motor de representación de voz con la matriz modificada 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);

}

Comentarios

TtsEngineActionrepresenta las solicitudes de mantenimiento de .TextFragment Las acciones corresponden estrechamente a los elementos de la especificación SSML y se implementan en el texto devuelto por la TextToSpeak propiedad en un TextFragment.

La TtsEngineAction propiedad devuelve el State valor asociado a .TextFragment

El procesamiento del TtsEngineAction valor devuelto por la State propiedad se controla mediante una implementación de síntesis de voz del Speak método en una clase derivada de TtsEngineSsml.

Se aplica a