TtsEventId Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Enumera los tipos de eventos de la síntesis de voz.
public enum class TtsEventId
public enum TtsEventId
type TtsEventId =
Public Enum TtsEventId
- Herencia
Campos
AudioLevel | 9 | Identifica los eventos generados cuando un motor de síntesis de voz completa un cambio de nivel de sonido mientras habla. |
Bookmark | 4 | Identifica los eventos generados cuando un motor de síntesis de voz encuentra un marcador mientras habla. |
EndInputStream | 2 | Identifica los eventos generados cuando un motor de síntesis de voz encuentra el final de su flujo de entrada mientras habla. |
Phoneme | 6 | Identifica los eventos generados cuando un motor de síntesis de voz completa un fonema mientras habla. |
SentenceBoundary | 7 | Identifica los eventos generados cuando un motor de síntesis de voz completa una frase mientras habla. |
StartInputStream | 1 | Identifica los eventos generados cuando un motor de síntesis de voz comienza a pronunciar un flujo. |
Viseme | 8 | Identifica los eventos generados cuando un motor de síntesis de voz completa un visema mientras habla. |
VoiceChange | 3 | Identifica los eventos generados cuando un motor de síntesis de voz encuentra un cambio de voz mientras habla. |
WordBoundary | 5 | Identifica los eventos generados cuando un motor de síntesis de voz completa una palabra mientras habla. |
Ejemplos
El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de TtsEngineSsml, y mediante las TextFragmentclases , SpeechEventInfo, FragmentStatey TtsEventId .
La implementación de TtsEngineSsml.Speak incluye los pasos siguientes:
Recibe una matriz de TextFragment instancias y crea una nueva matriz de instancias que se pasarán al
Speak
método en un motor de TextFragment síntesis subyacente.Si la Action propiedad de cada TextFragment.State instancia es igual a TtsEngineAction.Speak, el código hace lo siguiente:
Traduce inglés americano a inglés británico en el texto que se va a hablar.
Si la ITtsEngineSite.EventInterest propiedad proporcionada a la implementación admite el
WordBoundary
tipo de evento, se usa una SpeechEventInfo instancia para crear un evento para controlar un medidor de progreso del sintetizador.
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
Los motores de síntesis de voz personalizados definen los tipos de eventos enviados a la infraestructura del sintetizador de la plataforma de voz con TtsEventId.
La especificación se realiza estableciendo la EventId propiedad de SpeechEventInfo las instancias pasadas al AddEvents miembro de la clase que implementa la ITtsEngineSite interfaz pasada al método en la Speak implementación de un motor de voz personalizado de TtsEngineSsml.
La infraestructura de la plataforma de voz indica el tipo de eventos que está controlando actualmente a través de la EventInterest propiedad en la ITtsEngineSite que se pasa a la implementación de habla.
El valor de es una máscara de EventInterest bits, donde los miembros de TtsEventId definen la ubicación del bit correspondiente al tipo de evento. Por ejemplo, WordBoundary tiene un valor de cinco (5), lo que significa que el quinto bit del valor devuelto por EventInterest indica si el sitio admite el tipo de evento.