Udostępnij za pośrednictwem


EventParameterType Wyliczenie

Definicja

Wylicza typy wskaźników danych przekazywane do zdarzeń syntezy mowy.

public enum class EventParameterType
public enum EventParameterType
type EventParameterType = 
Public Enum EventParameterType
Dziedziczenie
EventParameterType

Pola

Object 2

Obecnie nieobsługiwane.

Pointer 3

Obecnie nieobsługiwane.

String 4

Wskazuje, że param2 argument do obiektu jest System.IntPtr tworzony przy użyciu System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni odwoływania się do SpeechEventInfo obiektu; param1 może przyjmować dowolną System.String wartość.

Token 1

Wskazuje, że argument do param2SpeechEventInfo elementu jest IntPtr tworzony przy użyciu tego tokenu PtrToStructure technologii rozpoznawania mowy pulpitu z systemem Windows, który jest obiektem Technologii rozpoznawania mowy pulpitu systemu Windows reprezentującym zasób, taki jak głos (VoiceInfo). param1 może przyjmować dowolną wartość.

Undefined 0

Wskazuje, że argument argumentu param2SpeechEventInfo jest niezdefiniowany. Ogólnie rzecz biorąc, param1 a param2 następnie są ignorowane. Jeśli EventId jednak jest to WordBoundary, można wygenerować zdarzenie miernika postępu. param1 powinna być liczbą całkowitą zawierającą długość bieżącego wyrazu i param2IntPtr odwołującą się do liczby całkowitej zawierającej przesunięcie bieżącego wyrazu.

Przykłady

Poniższy przykład jest częścią niestandardowej implementacji syntezy mowy dziedziczonej z TtsEngineSsml, i przy użyciu funkcji TextFragment, SpeechEventInfo, FragmentStatei TtsEventId.

Implementacja Speak

  1. Odbiera tablicę TextFragment wystąpień i tworzy nową tablicę TextFragment wystąpień, która ma zostać przekazana do metody w Speak podstawowym aucie syntezy.

  2. TtsEngineAction Jeśli wartość wyliczenia znaleziona z Action właściwości FragmentState zwróconej przez State właściwość każdego TextFragment wystąpienia to Speak, implementacja

    • Tłumaczy amerykanizm na Brytyjczyków w tekście, który ma być wypowiadany.

    • EventInterest Jeśli właściwość w ITtsEngineSite interfejsach dostarczonych do implementacji obsługuje WordBoundary typ zdarzenia, SpeechEventInfo wystąpienie jest używane do utworzenia zdarzenia w celu napędzania syntetyzatora miernika postępu jest tworzony.

      Parametry w parametrach SpeechEventInfo, w tym wartość składowa EventParameterType zwrócona przez ParameterTypeusługę , są używane do rejestrowania zdarzenia wygenerowanego LogSpeechEvent za pomocą metody .

  3. Aparat renderowania mowy jest następnie wywoływany TextFragment za pomocą zmodyfikowanej tablicy.

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

}  

Uwagi

Wyliczenie EventParameterType jest używane podczas konstruowania SpeechEventInfo obiektu. Element EventParameterType członkowski wyliczenia przekazany jako parameterType argument SpeechEventInfo konstruktora dla określa, w jaki sposób param2 argument konstruktora (który musi być elementem IntPtr) jest interpretowany.

Wybór EventParameterType jest określany przez żądany typ zdarzenia określony przez element członkowski .System.Speech.Synthesis.TtsEngine.TtsEventId

Aby uzyskać szczegółowe informacje na temat sposobu korzystania z EventParameterTypeusługi , zobacz dokumentację EventId

Uwaga

Obecnie wystąpienia zarządzanych syntetycznych aparatów mowy napisanych przy użyciu elementów członkowskich System.Speech.Synthesis przestrzeni nazw nie mogą zmieniać zasobów po budowie.

Dotyczy

Zobacz też