EventParameterType Enum

Definitie

Opsomming van de typen gegevenspointers die worden doorgegeven aan spraaksynthesegebeurtenissen.

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

Velden

Name Waarde Description
Undefined 0

Geeft aan dat het param2 argument voor de SpeechEventInfo niet-gedefinieerde waarde is. Over het algemeen param1 worden ze param2 genegeerd. Als EventId dat het geval is WordBoundary, kan er echter een voortgangsmeter gebeurtenis worden gegenereerd. param1 moet een geheel getal zijn dat de lengte van het huidige woord bevat en param2 een IntPtr geheel getal dat de verschuiving van het huidige woord bevat.

Token 1

Geeft aan dat het argument param2 aan de SpeechEventInfo een IntPtr gemaakt met behulp van PtrToStructure die verwijst naar een Windows Desktop Speech Technology-token, een Windows Desktop Speech Technology-object dat een resource vertegenwoordigt, zoals een stem (VoiceInfo). param1 kan elke waarde aannemen.

Object 2

Momenteel niet ondersteund.

Pointer 3

Momenteel niet ondersteund.

String 4

Hiermee wordt aangegeven dat het param2 argument aan de hand SpeechEventInfo van System.IntPtr een verwijzing naar een System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni object is System.String gemaakt; param1 kan elke waarde overnemen.

Voorbeelden

Het volgende voorbeeld maakt deel uit van een aangepaste spraaksynthese-implementatie die wordt overgenomen van TtsEngineSsml, en het gebruik van TextFragment, SpeechEventInfoen FragmentState.TtsEventId

De implementatie van Speak

  1. Hiermee ontvangt u een matrix met TextFragment exemplaren en maakt u een nieuwe matrix met TextFragment exemplaren die moeten worden doorgegeven aan de Speak methode op een onderliggende synthese-engine.

  2. Als de TtsEngineAction opsommingswaarde op basis van de Action eigenschap op de FragmentState geretourneerde State eigenschap van elke TextFragment instantie is, is Speakde implementatie

    • Vertaalt Americanisme in Britishismen in de tekst die moet worden gesproken.

    • Als de EventInterest eigenschap op de ITtsEngineSite interfaces die zijn opgegeven voor de implementatie het WordBoundary gebeurtenistype ondersteunt, wordt er een SpeechEventInfo exemplaar gebruikt om een gebeurtenis te maken om een synthesizervoortgangsmeter aan te sturen.

      De parameters op SpeechEventInfo, inclusief de waarde van het EventParameterType lid dat wordt geretourneerd door ParameterType, worden gebruikt om de gebeurtenis die is gegenereerd via de LogSpeechEvent methode te registreren.

  3. Vervolgens wordt een spraakrenderingsengine aangeroepen met de gewijzigde TextFragment matrix.

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

}

Opmerkingen

De EventParameterType opsomming wordt gebruikt bij het maken van een SpeechEventInfo object. Een EventParameterType opsommingslid dat als argument parameterType aan de constructor is doorgegeven, SpeechEventInfo geeft aan hoe het param2 argument van de constructor (wat een IntPtrmoet zijn) wordt geïnterpreteerd.

De keuze wordt EventParameterType bepaald door het type gebeurtenis dat wordt aangevraagd, zoals opgegeven door een lid van System.Speech.Synthesis.TtsEngine.TtsEventId.

Zie de documentatie voor meer informatie over het gebruik EventParameterTypeEventId

Note

Op dit moment kunnen exemplaren van beheerde synthetische spraakengines die zijn geschreven met behulp van de leden van de System.Speech.Synthesis naamruimte, geen resources wijzigen na de bouw.

Van toepassing op

Zie ook