Sdílet prostřednictvím


SpeechEventInfo(Int16, Int16, Int32, IntPtr) Konstruktor

Definice

Sestaví vhodné SpeechEventInfo .

public:
 SpeechEventInfo(short eventId, short parameterType, int param1, IntPtr param2);
public SpeechEventInfo (short eventId, short parameterType, int param1, IntPtr param2);
new System.Speech.Synthesis.TtsEngine.SpeechEventInfo : int16 * int16 * int * nativeint -> System.Speech.Synthesis.TtsEngine.SpeechEventInfo
Public Sub New (eventId As Short, parameterType As Short, param1 As Integer, param2 As IntPtr)

Parametry

eventId
Int16

Instance TtsEventId indikující řazení události hlasové platformy, kterou SpeechEventInfo objekt zpracovává.

parameterType
Int16

Instance, EventParameterType která označuje, jakým způsobem má System.IntPtr param2 být interpretována reference, a v důsledku toho použití param1 .

param1
Int32

Celočíselná hodnota, která má být předána platformě řeči, pokud SpeechEventInfo je vygenerována událost vyžádaná instancí, která má být vytvořena.

Přesný význam tohoto celého čísla je implicitně určen hodnotou parameterType .

param2
IntPtr

nativeint

System.IntPtrInstance odkazující na objekt. má být předána platformě pro rozpoznávání řeči, pokud je vygenerována událost, kterou požaduje instance, SpeechEventInfo aby byla vytvořena.

Typ, který musí být odkazován, je explicitně definován hodnotou parameterType . Hodnota System.IntPtr.Zero .

Příklady

Níže uvedený příklad je součástí vlastní implementace rozpoznávání řeči, která dědí z TtsEngineSsml a používá použití TextFragment , SpeechEventInfo , FragmentState a. TtsEventId

Implementace Speak

  1. Přijme pole TextFragment instancí a vytvoří nové pole TextFragment instancí, které se má předat Speak metodě na podkladovém stroji syntézy.

  2. Pokud TtsEngineAction je hodnota výčtu, kterou najde Action , z vlastnosti FragmentState vrácené State vlastností každé TextFragment instance Speak , implementace

    • Překládá se na Britishisms v textu, který se má vyhlasovat.

    • Pokud EventInterest vlastnost na ITtsEngineSite rozhraních poskytovaných implementací podporuje WordBoundary Typ události, vytvoří se SpeechEventInfo instance pro vytvoření události, která bude řídit měření průběhu syntetizátoru.

  3. Modul pro vykreslování řeči se pak zavolá se změněným TextFragment polem.

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

}  

Poznámky

Povolené hodnoty používané pro parameterType , a param1 param2 a jejich význam jsou vydávány typem požadované události, jak je určeno členem TtsEventId použitým pro eventId .

Podrobné informace o vhodných hodnotách pro parameterType , a najdete param1 param2 v dokumentaci pro EventId

Typ událostí, které mohou být obsluhovány infrastrukturou platformy pro rozpoznávání řeči, lze získat prostřednictvím EventInterest vlastnosti v implementaci lokality modulu syntetizátoru ITtsEngineSite .

Platí pro