Partilhar via


SpeechEventInfo.Param1 Propriedade

Definição

Obtém e define o valor de integer (param1 no construtor) a ser passado para a plataforma de fala para gerar um evento que a instância de SpeechEventInfo atual é usada para solicitar.

public:
 property int Param1 { int get(); };
public int Param1 { get; }
member this.Param1 : int
Public ReadOnly Property Param1 As Integer

Valor da propriedade

Int32

Retorna o a ser passado para a plataforma integer de Fala quando o evento especificado pela instância atual do é SpeechEventInfo gerado.

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

  1. 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.

  2. 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 Param1 LogSpeechEvent .

  3. 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);  

}  

Comentários

Os requisitos e o significado da propriedade de são determinados exclusivamente Param1 pelos valores das propriedades e da SpeechEventInfo EventId ParameterType SpeechEventInfo instância.

Para obter informações detalhadas sobre como usar Param1 o , consulte a documentação do EventId .

Aplica-se a