Condividi tramite


SpeechEventInfo.Param2 Proprietà

Definizione

Ottiene e imposta l'istanza di System.IntPtr (param2 nel costruttore) cha fa riferimento all'oggetto da passare alla piattaforma di riconoscimento vocale in modo da generare un evento richiesto dall'istanza corrente di SpeechEventInfo.

public:
 property IntPtr Param2 { IntPtr get(); };
public IntPtr Param2 { get; }
member this.Param2 : nativeint
Public ReadOnly Property Param2 As IntPtr

Valore della proprietà

IntPtr

nativeint

Restituisce l'elemento System.IntPtr che fa riferimento all'oggetto da passare alla piattaforma di riconoscimento vocale quando viene generato l'evento specificato dall'istanza corrente di SpeechEventInfo.

Esempio

L'esempio seguente fa parte di un'implementazione di sintesi vocale personalizzata che eredita da e usa TtsEngineSsml TextFragment , , SpeechEventInfo FragmentState e TtsEventId

Implementazione di Speak

  1. Riceve una matrice di istanze di e crea una nuova matrice di istanze da TextFragment passare al metodo in un motore di sintesi TextFragment Speak sottostante.

  2. Se il TtsEngineAction valore di enumerazione trovato dalla proprietà Action nell'oggetto restituito dalla proprietà di ogni istanza FragmentState è , State TextFragment Speak l'implementazione di

    • Converte l'americanismo in britishismi nel testo da pronunciare.

    • Se la proprietà sulle interfacce fornite all'implementazione supporta il tipo di evento , viene usata un'istanza di per creare un evento per la creazione di un contatore dello stato EventInterest ITtsEngineSite del WordBoundary SpeechEventInfo sintetizzatore.

      I parametri in SpeechEventInfo , inclusi , vengono usati per Param2 registrare l'evento generato tramite il LogSpeechEvent metodo .

  3. Un motore di rendering vocale viene quindi chiamato con la matrice TextFragment modificata.

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

}  

Commenti

I requisiti relativi al riferimento della proprietà di sono determinati in modo univoco dai System.IntPtr valori delle proprietà e Param2 SpeechEventInfo EventId ParameterType SpeechEventInfo dell'istanza.

Per informazioni dettagliate sull'uso di Param2 , vedere la documentazione per EventId .

Si applica a