TtsEngineAction Enum

Definitie

Hiermee geeft u de SSML-actie (Speech Synthesis Markup Language) op die moet worden uitgevoerd bij het weergeven van een bepaalde TextFragment.

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

Velden

Name Waarde Description
Speak 0

Aanvragen die aan de gekoppelde TextFragment moeten worden verwerkt en gesproken. Dit is de standaardwaarde voor een TextFragment. Deze komt overeen met de <speak> XML-tag in de SSML-specificatie.

Silence 1

Geeft aan dat een TextFragment tekst geen tekst bevat die als spraak moet worden weergegeven. De duur van de stilte wordt opgegeven door de Duration eigenschap van het FragmentState object dat wordt geretourneerd door de State eigenschap op TextFragment exemplaren. Deze komt overeen met de <Silence> XML-tag in de SSML-specificatie.

Pronounce 2

Aanvragen dat invoertekst TextFragment wordt geïnterpreteerd als telefoontjes. De exacte uitspraak wordt opgegeven door het Phoneme lid van het FragmentState object dat wordt geretourneerd door de State eigenschap op TextFragment instanties. Deze komt overeen met de <Phoneme> XML-tag in de SSML-specificatie.

Bookmark 3

Geeft aan dat TextFragment moet worden gebruikt als de inhoud van een bladwijzer. Deze komt overeen met de <mark> XML-tag in de SSML-specificatie.

SpellOut 4

Hiermee wordt aangegeven dat tekstwaarden die door een via TextToSpeak de TextFragment eigenschap worden geleverd, als afzonderlijke tekens moeten worden gesyntheteerd. Deze weergave omvat interpunctie, behalve witruimte, evenals alfanumerieke tekst. Het bijbehorende tekstfragment 'word!' moet bijvoorbeeld worden gesynthetiseerd in 'w o r d uitroepteken'.

StartSentence 5

Geeft het begin van de zin aan. Deze komt overeen met de <s> XML-tag in de SSML-specificatie.

StartParagraph 6

Geeft de status van de alinea aan. Deze komt overeen met de <p> XML-tag in de SSML-specificatie.

ParseUnknownTag 7

Geeft aan dat er geen actie is bepaald op basis van SSML-invoer. Deze invoer die naar keuze van een synthese-engine kan worden geïnterpreteerd of genegeerd. De gekoppelde TextFragment XML-tag maakt geen deel uit van de SSML-standaard.

Voorbeelden

Het volgende voorbeeld maakt deel uit van een aangepaste spraaksynthese-implementatie die wordt overgenomen van TtsEngineSsml, en het gebruik van TextFragment, FragmentStateen 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 die is gevonden uit de Action eigenschap op de FragmentState geretourneerde State eigenschap van elk TextFragment exemplaar Uitspreken is, is de implementatie

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

    • Als de EventInterest eigenschap op de ITtsEngineSite interface die is opgegeven voor de implementatie het TtsEventId.WordBoundary gebeurtenistype ondersteunt, wordt er een gebeurtenis gemaakt om een synthesizervoortgangsmeter te besturen.

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

TtsEngineAction vertegenwoordigt aanvragen voor onderhoud van een TextFragment. De acties komen nauw overeen met elementen in de SSML-specificatie en worden geïmplementeerd op de tekst die wordt geretourneerd door de TextToSpeak eigenschap op een TextFragment.

De TtsEngineAction waarde die aan een TextFragment eigenschap is gekoppeld, wordt geretourneerd State .

Verwerking van de TtsEngineAction waarde die door de State eigenschap wordt geretourneerd, wordt verwerkt door een spraaksynthese van de Speak methode op een klasse die is afgeleid van TtsEngineSsml.

Van toepassing op