SpeechEventInfo.EventId Propriedade
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.
Obtém e define o evento da plataforma de fala que uma instância de SpeechEventInfo é usada para solicitar.
public:
property short EventId { short get(); };
public short EventId { get; }
member this.EventId : int16
Public ReadOnly Property EventId As Short
Valor da propriedade
Retorna um membro de TtsEventId como short
um , indicando o tipo de evento que SpeechEventInfo o objeto deve gerar.
Exemplos
O exemplo a seguir faz parte de uma implementação de síntese de fala personalizada herdando de e usando o uso TtsEngineSsml TextFragment de , , SpeechEventInfo FragmentState e TtsEventId
A implementação de Speak
Recebe uma matriz de instâncias e cria uma nova matriz de instâncias a serem passadas para o método em TextFragment um mecanismo de síntese TextFragment
Speak
subjacente.Se o valor de enumeração por encontrado na TtsEngineAction propriedade no retornado pela propriedade de cada instância for , a Action FragmentState State TextFragment Speak implementação
Converte o americanismo em britishisms no texto a ser falado.
Se a propriedade nas interfaces fornecidas para a implementação dar suporte ao tipo de evento, uma instância será usada para criar um evento para conduzir um medidor de progresso EventInterest ITtsEngineSite do WordBoundary SpeechEventInfo sintetizador.
Os parâmetros em SpeechEventInfo , incluindo são usados para registrar o evento gerado por meio do método EventId
LogSpeechEvent
.
Um mecanismo de renderização de fala é chamado com a matriz TextFragment modificada.
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));
LogSpeechEvent(spEvent.EventId,
spEvent.ParameterType,
spEvent.Param1,
spEvent.Param2);
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);
}