TtsEngineAction Enum

Definition

Anger åtgärden Speech Synthesis Markup Language (SSML) som ska vidtas för att återge en viss TextFragment.

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

Fält

Name Värde Description
Speak 0

Begäranden som associeras TextFragment ska bearbetas och talas. Det här är standardvärdet för en TextFragment. Den motsvarar XML-taggen <speak> i SSML-specifikationen.

Silence 1

Anger att en TextFragment innehåller ingen text som ska återges som tal. Varaktigheten för tystnaden Duration anges av egenskapen för objektet som FragmentState returneras av State egenskapen på TextFragment instanser. Den motsvarar XML-taggen <Silence> i SSML-specifikationen.

Pronounce 2

Begäranden som indatatext TextFragment tolkas som fonem. Exakt uttal anges av Phoneme medlemmen FragmentState i objektet som returneras av State egenskapen på TextFragment instanser. Den motsvarar XML-taggen <Phoneme> i SSML-specifikationen.

Bookmark 3

Anger att TextFragment ska användas som innehållet i ett bokmärke. Den motsvarar XML-taggen <mark> i SSML-specifikationen.

SpellOut 4

Anger att textvärden som tillhandahålls av en TextFragment via dess TextToSpeak egenskap ska syntetiseras som enskilda tecken. Den här återgivningen innehåller skiljetecken, förutom blanksteg, samt alfanumerisk text. Till exempel bör det associerade textfragmentet "word!" syntetiseras till "w o r d utropstecken".

StartSentence 5

Anger början av meningen. Den motsvarar XML-taggen <s> i SSML-specifikationen.

StartParagraph 6

Anger stycketillstånd. Den motsvarar XML-taggen <p> i SSML-specifikationen.

ParseUnknownTag 7

Anger att ingen åtgärd har fastställts från SSML-indata. Dessa indata som kan tolkas eller ignoreras av en syntesmotor. Den associerade TextFragment är en okänd XML-tagg som inte ingår i SSML-standarden.

Exempel

Följande exempel är en del av en anpassad talsyntesimplementering som ärver från TtsEngineSsml, och använder användningen av TextFragment, 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 genom att hittas från Action egenskapen på den FragmentState som returneras av State egenskapen för varje TextFragment instans är Speak, implementeringen

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

    • EventInterest Om egenskapen i gränssnittet ITtsEngineSite som tillhandahålls till implementeringen stöder TtsEventId.WordBoundary händelsetypen skapas en händelse för att köra en synthesizer-förloppsmätare.

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

TtsEngineAction representerar begäranden om underhåll av en TextFragment. Åtgärderna motsvarar nära elementen i SSML-specifikationen och implementeras på texten som returneras av TextToSpeak egenskapen på en TextFragment.

Värdet TtsEngineAction som är associerat med en TextFragment returneras av State egenskapen.

Bearbetning av värdet TtsEngineAction som returneras av State egenskapen hanteras av en talsyntetiserar implementering av Speak metoden på en klass som härletts från TtsEngineSsml.

Gäller för