Compartilhar via


TtsEngineAction Enumeração

Definição

Especifica a ação SSML (Speech Synthesis Markup Language) a ser executada na renderização de um determinado TextFragment.

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

Campos

Nome Valor Description
Speak 0

Solicitações de que os associados TextFragment devem ser processados e falados. Esse é o valor padrão para um TextFragment. Corresponde à <speak> marca XML na especificação SSML.

Silence 1

Indica que um TextFragment não contém nenhum texto a ser renderizado como fala. A duração do silêncio é especificada pela Duration propriedade do FragmentState objeto retornado pela State propriedade em TextFragment instâncias. Corresponde à <Silence> marca XML na especificação SSML.

Pronounce 2

Solicita que o texto de entrada TextFragment seja interpretado como phonemes. A pronúncia exata é especificada pelo Phoneme membro do FragmentState objeto retornado pela State propriedade em TextFragment instâncias. Corresponde à <Phoneme> marca XML na especificação SSML.

Bookmark 3

Indica que TextFragment deve ser usado como o conteúdo de um indicador. Corresponde à <mark> marca XML na especificação SSML.

SpellOut 4

Indica que os valores de texto fornecidos por um TextFragment por meio de sua TextToSpeak propriedade devem ser sintetizados como caracteres individuais. Essa renderização inclui pontuação, além de espaço em branco, bem como texto alfanumérico. Por exemplo, o fragmento de texto associado "word!" deve ser sintetizado em "w o r d exclamation point".

StartSentence 5

Indica o início da frase. Corresponde à <s> marca XML na especificação SSML.

StartParagraph 6

Indica o estado do parágrafo. Corresponde à <p> marca XML na especificação SSML.

ParseUnknownTag 7

Indica que nenhuma ação foi determinada da entrada SSML. Essa entrada que pode ser interpretada ou ignorada a critério de um mecanismo de síntese. O associado TextFragment é uma marca XML desconhecida que não faz parte do padrão SSML.

Exemplos

O exemplo a seguir faz parte de uma implementação de síntese de fala personalizada herdando e TtsEngineSsmlusando o uso de TextFragment, FragmentStatee TtsEventId

A implementação de Speak

  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 o TtsEngineAction valor de enumeração encontrado da Action propriedade na FragmentState propriedade retornada pela State propriedade de cada TextFragment instância for Speak, a implementação

    • Traduz o americanismo para os britânicos no texto a ser falado.

    • Se a EventInterest propriedade na ITtsEngineSite interface fornecida à implementação der suporte ao TtsEventId.WordBoundary tipo de evento, um evento para conduzir um medidor de progresso do sintetizador será criado.

  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

TtsEngineAction representa solicitações para manutenção de um TextFragment. As ações correspondem de perto aos elementos na especificação SSML e são implementadas no texto retornado pela TextToSpeak propriedade em um TextFragment.

O TtsEngineAction valor associado a um TextFragment é retornado pela State propriedade.

O processamento do TtsEngineAction valor retornado pela State propriedade é tratado por uma fala sintetiza a implementação do Speak método em uma classe derivada de TtsEngineSsml.

Aplica-se a