Compartilhar via


TtsEventId Enumeração

Definição

Enumera tipos de eventos de síntese de fala.

public enum class TtsEventId
public enum TtsEventId
type TtsEventId = 
Public Enum TtsEventId
Herança
TtsEventId

Campos

Nome Valor Description
StartInputStream 1

Identifica os eventos gerados quando um mecanismo de sintetização de fala começa a falar um fluxo.

EndInputStream 2

Identifica os eventos gerados quando um mecanismo de sintetização de fala encontra o final de seu fluxo de entrada enquanto fala.

VoiceChange 3

Identifica os eventos gerados quando um mecanismo de sintetização de fala encontra uma alteração de Voz ao falar.

Bookmark 4

Identifica os eventos gerados quando um mecanismo de sintetização de fala encontra um indicador durante a fala.

WordBoundary 5

Identifica os eventos gerados quando um mecanismo de sintetização de fala conclui uma palavra durante a fala.

Phoneme 6

Identifica os eventos gerados quando um mecanismo de sintetização de fala conclui um phoneme enquanto fala.

SentenceBoundary 7

Identifica os eventos gerados quando um mecanismo de sintetização de fala conclui uma frase enquanto fala.

Viseme 8

Identifica os eventos gerados quando um mecanismo de sintetização de fala conclui um viseme durante a fala.

AudioLevel 9

Identifica os eventos gerados quando um mecanismo de sintetização de fala conclui uma alteração no nível de áudio ao falar.

Exemplos

O exemplo a seguir faz parte de uma implementação de síntese de fala personalizada herdando de TtsEngineSsml, e usando as TextFragmentclasses, SpeechEventInfoFragmentStatee TtsEventId as classes.

A implementação inclui TtsEngineSsml.Speak as seguintes etapas:

  1. Recebe uma matriz de TextFragment instâncias e cria uma nova matriz de TextFragment instâncias a serem passadas para o Speak método em um mecanismo de síntese subjacente.

  2. Se a Action propriedade de cada TextFragment.State instância for igual a TtsEngineAction.Speak, o código fará o seguinte:

    • Traduz o inglês americano para inglês britânico no texto a ser falado.

    • Se a ITtsEngineSite.EventInterest propriedade fornecida à implementação der suporte ao WordBoundary tipo de evento, uma SpeechEventInfo instância será usada para criar um evento para gerar um medidor de progresso do sintetizador.

  3. Um mecanismo de renderização de fala é chamado com a 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);

}

Comentários

Os mecanismos de síntese de fala personalizados definem os tipos de eventos enviados à infraestrutura do sintetizador da plataforma de Fala com o TtsEventId.

A especificação é executada definindo a EventId propriedade de SpeechEventInfo instâncias passadas para o AddEvents membro da classe implementando a ITtsEngineSite interface passada para o Speak método na implementação de um mecanismo de fala personalizado.TtsEngineSsml

A infraestrutura da plataforma de Fala indica o tipo de eventos que está tratando atualmente por meio da EventInterest propriedade passada ITtsEngineSite para a implementação de fala.

O valor é EventInterest uma máscara de bits, em que os membros de TtsEventId definem o local do bit correspondente ao tipo de evento. Por exemplo, WordBoundary tem um valor de cinco (5), o que significa que o quinto bit no valor retornado EventInterest indica se o site dá suporte ao tipo de evento.

Aplica-se a