TtsEngineAction Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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 à |
| 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 à |
| 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 à |
| Bookmark | 3 | Indica que TextFragment deve ser usado como o conteúdo de um indicador. Corresponde à |
| 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 à |
| StartParagraph | 6 | Indica o estado do parágrafo. Corresponde à |
| 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
Recebe uma matriz de TextFragment instâncias e cria uma nova matriz de TextFragment instâncias a serem passadas para o
Speakmétodo em um mecanismo de síntese subjacente.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.
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.