Sdílet prostřednictvím


EventParameterType Výčet

Definice

Vytvoří výčet typů datových ukazatelů předávaných událostem syntézy řeči.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Dědičnost
EventParameterType

Pole

Name Hodnota Description
Undefined 0

Označuje, že param2 argument není SpeechEventInfo definován. Obecně platí, param1 že param2 jsou ignorovány. Pokud EventId je WordBoundaryto však událost měřiče průběhu, lze vygenerovat. param1 by mělo být celé číslo obsahující délku aktuálního slova a param2IntPtr odkazující celé číslo obsahující posun aktuálního slova.

Token 1

Označuje, že param2 argument objektu SpeechEventInfo je vytvořený IntPtr pomocí PtrToStructure odkazu na token technologie Windows Desktop Speech Technology, což je objekt technologie Windows Desktop Speech Technology představující prostředek, například hlas (VoiceInfo). param1 může převzít jakoukoli hodnotu.

Object 2

Aktuálně se nepodporuje.

Pointer 3

Aktuálně se nepodporuje.

String 4

Označuje, že param2 argument na objekt SpeechEventInfo je vytvořen System.IntPtr pomocí System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni odkazování na System.String objekt; param1 může převzít libovolnou hodnotu.

Příklady

Následující příklad je součástí vlastní implementace syntézy řeči dědění z TtsEngineSsml, a použití použití TextFragment, SpeechEventInfo, FragmentStatea TtsEventId.

Provádění Speak

  1. Přijme pole TextFragment instancí a vytvoří novou matici TextFragment instancí, která se předá Speak metodě v podkladovém syntetizačním modulu.

  2. Pokud je hodnota výčtu TtsEngineAction nalezena z Action vlastnosti FragmentState vrácené State vlastností každé TextFragment instance je Speakimplementace

    • Překládá americanismus do britštiny v textu, který se má vyslovovat.

    • EventInterest Pokud vlastnost v ITtsEngineSite rozhraní poskytovaných pro implementaci podporuje WordBoundary typ události, SpeechEventInfo instance se použije k vytvoření události pro řízení syntetizátoru průběhu měřiče.

      Parametry pro SpeechEventInfo, včetně EventParameterType členské hodnoty vrácené ParameterType, se používají k protokolování události vygenerované prostřednictvím LogSpeechEvent metody.

  3. Potom se zavolá modul pro vykreslování řeči s upravený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));
         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);

}

Poznámky

Výčet EventParameterType se používá při vytváření objektu SpeechEventInfo . Člen EventParameterType výčtu parameterType předaný jako argument konstruktoru určuje SpeechEventInfo , jak param2 je interpretován argument konstruktoru (který musí být IntPtr) interpretován.

EventParameterType Volba je diktována typem požadované události, jak je určeno členem System.Speech.Synthesis.TtsEngine.TtsEventId.

Podrobné informace o tom, jak používat EventParameterType, najdete v dokumentaci EventId

Poznámka:

V současné době instance spravovaných syntetických řečových modulů napsaných pomocí členů System.Speech.Synthesis oboru názvů nemohou po konstrukci měnit prostředky.

Platí pro

Viz také