EventParameterType Enum

Definition

Räknar upp de typer av datapekare som skickas till talsynteshändelser.

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

Fält

Name Värde Description
Undefined 0

Anger att param2 argumentet till SpeechEventInfo är odefinierat. param1 I allmänhet och param2 ignoreras sedan. EventId Om är WordBoundarykan dock en händelse för förloppsmätare genereras. param1 bör vara ett heltal som innehåller längden på det aktuella ordet och param2 ett IntPtr refererande heltal som innehåller förskjutningen av det aktuella ordet.

Token 1

Anger att argumentet param2 till SpeechEventInfo är en IntPtr som skapats med hjälp av PtrToStructure som refererar till en Windows Speech Technology-token, som är ett Windows Desktop Speech Technology-objekt som representerar en resurs, till exempel en röst (VoiceInfo). param1 kan ta på sig valfritt värde.

Object 2

Stöds inte för närvarande.

Pointer 3

Stöds inte för närvarande.

String 4

Anger att param2 argumentet till SpeechEventInfo är en System.IntPtr som skapats med hjälp av System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni referens till ett System.String objekt, param1 kan ta på sig valfritt värde.

Exempel

Följande exempel är en del av en anpassad implementering av talsyntes som ärver från TtsEngineSsmloch använder användningen av TextFragment, SpeechEventInfo, FragmentStateoch TtsEventId.

Genomförandet av Speak

  1. Tar emot en matris med TextFragment instanser och skapar en ny matris med TextFragment instanser som ska skickas till Speak metoden på en underliggande syntesmotor.

  2. TtsEngineAction Om uppräkningsvärdet som hittas från Action egenskapen på den FragmentState som returneras av egenskapen för State varje TextFragment instans är , är Speakimplementeringen

    • Översätter amerikanismen till britishismer i texten som ska talas.

    • EventInterest Om egenskapen på de ITtsEngineSite gränssnitt som tillhandahålls till implementeringen stöder WordBoundary händelsetypen, används en SpeechEventInfo instans för att skapa en händelse för att köra en synthesizer-förloppsmätare skapas.

      Parametrarna för SpeechEventInfo, inklusive medlemsvärdet EventParameterType som returneras av ParameterType, används för att logga händelsen som genereras via LogSpeechEvent metoden.

  3. En talrenderingsmotor anropas sedan med den ändrade TextFragment matrisen.

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

}

Kommentarer

Uppräkningen EventParameterType används när du skapar ett SpeechEventInfo objekt. En EventParameterType uppräkningsmedlem som skickas som parameterType argument till konstruktorn för SpeechEventInfo anger hur param2 argumentet för konstruktorn (som måste vara en IntPtr) tolkas.

Valet av EventParameterType bestäms av vilken typ av händelse som begärs, enligt vad som anges av en medlem i System.Speech.Synthesis.TtsEngine.TtsEventId.

Detaljerad information om hur du använder EventParameterTypefinns i dokumentationen för EventId

Note

För närvarande kan instanser av en hanterad syntetisk talmotor som skrivits med medlemmar i System.Speech.Synthesis namnområdet inte ändra resurser efter konstruktionen.

Gäller för

Se även