Condividi tramite


SpeechEventInfo.Param2 Proprietà

Definizione

Ottiene e imposta l'istanza System.IntPtr (param2 nel costruttore) che fa riferimento all'oggetto da passare alla piattaforma Voce per generare un evento utilizzato per richiedere l'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 il System.IntPtr riferimento all'oggetto da passare alla piattaforma Voce quando viene generato l'evento specificato dall'istanza corrente di SpeechEventInfo .

Esempio

L'esempio seguente fa parte di un'implementazione personalizzata della sintesi vocale che eredita da TtsEngineSsmle usando l'uso di TextFragment, SpeechEventInfoFragmentState, eTtsEventId

Implementazione di Speak

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

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

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

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

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

  3. Viene quindi chiamato un motore di rendering vocale con la matrice modificata 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));
         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 System.IntPtr riferimento della Param2 proprietà di SpeechEventInfo sono determinati in modo univoco dai valori delle EventId proprietà e ParameterType dell'istanza SpeechEventInfo .

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

Si applica a