TtsEngineAction Enumerazione

Definizione

Specifica l'azione del linguaggio di markup sintesi della voce (SSML) da intraprendere durante il rendering di un dato oggetto TextFragment.

public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction = 
Public Enum TtsEngineAction
Ereditarietà
TtsEngineAction

Campi

Bookmark 3

Indica che l'oggetto TextFragment deve essere utilizzato come contenuto di un segnalibro. Corrisponde al tag XML <mark> nella specifica SSML.

ParseUnknownTag 7

Indica che non è stata determinata alcuna azione dall'input di SSML. Questo input può essere interpretato o ignorato a discrezione di un motore di sintesi. L'oggetto TextFragment associato è un tag XML sconosciuto che non fa parte dello standard SSML.

Pronounce 2

Richiede che il testo TextFragment di input venga interpretato come fonemi. La pronuncia esatta è specificata dal membro Phoneme dell'oggetto FragmentState restituito dalla proprietà State nelle istanze di TextFragment. Corrisponde al tag XML <Phoneme> nella specifica SSML.

Silence 1

Indica che un oggetto TextFragment non contiene alcun testo di cui eseguire il rendering come input vocale. La durata del silenzio viene specificata dalla Duration proprietà dell'oggetto FragmentState restituito dalla State proprietà nelle TextFragment istanze di . Corrisponde al tag XML <Silence> nella specifica SSML.

Speak 0

Richiede che l'oggetto TextFragment associato venga elaborato e pronunciato. Questo è il valore predefinito per un TextFragment. Corrisponde al tag XML <speak> nella specifica SSML.

SpellOut 4

Indica che i valori di testo forniti da un oggetto TextFragment tramite la relativa proprietà TextToSpeak devono essere sintetizzati come singoli caratteri. Il rendering include segni di punteggiatura, diversi dallo spazio vuoto, nonché testo alfanumerico. Ad esempio, il frammento di testo associato "parola!" deve essere sintetizzato in "p a r o l a punto esclamativo".

StartParagraph 6

Indica lo stato del paragrafo. Corrisponde al tag XML <p> nella specifica SSML.

StartSentence 5

Indica l'inizio della frase. Corrisponde al tag XML <s> nella specifica SSML.

Esempio

L'esempio seguente fa parte di un'implementazione personalizzata della sintesi vocale che eredita da TtsEngineSsmle usando l'uso di TextFragment, FragmentStatee TtsEventId

Implementazione di Speak

  1. Riceve una matrice di TextFragment istanze e crea una nuova matrice di istanze da passare al Speak metodo su un motore di TextFragment sintesi sottostante.

  2. Se il TtsEngineAction valore di enumerazione trovato dalla Action proprietà nell'oggetto FragmentState restituito dalla State proprietà di ogni TextFragment istanza è Speak, l'implementazione

    • Traduce l'americanismo in britishismi nel testo da pronunciare.

    • Se la EventInterest proprietà nell'interfaccia fornita all'implementazione ITtsEngineSite supporta il TtsEventId.WordBoundary tipo di evento, viene creato un evento per guidare un contatore dello stato di avanzamento del sintetizzatore.

  3. Viene quindi chiamato un motore di rendering vocale con la matrice modificata TextFragment .

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

}

Commenti

TtsEngineAction rappresenta le richieste per la manutenzione di un oggetto TextFragment. Le azioni corrispondono strettamente agli elementi nella specifica SSML e vengono implementate nel testo restituito dalla TextToSpeak proprietà in un oggetto TextFragment.

Il TtsEngineAction valore associato a viene TextFragment restituito dalla State proprietà .

L'elaborazione del TtsEngineAction valore restituito dalla State proprietà viene gestita da un riconoscimento vocale sintetizza l'implementazione del Speak metodo in una classe derivata da TtsEngineSsml.

Si applica a