Udostępnij za pośrednictwem


TtsEngineAction Wyliczenie

Definicja

Określa akcję Języka znaczników syntezy mowy (SSML), która ma zostać podjęta w renderowaniu danego TextFragmentelementu .

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

Pola

Bookmark 3

Wskazuje, że TextFragment ma być używana jako zawartość zakładki. Odpowiada tagowi XML znacznika<> w specyfikacji SSML.

ParseUnknownTag 7

Wskazuje, że nie określono żadnej akcji z danych wejściowych SSML. Te dane wejściowe, które mogą być interpretowane lub ignorowane według uznania aparatu syntezy. Skojarzony TextFragment jest nieznany tag XML, który nie jest częścią standardu SSML.

Pronounce 2

Żądania interpretacji tekstu wejściowego TextFragment jako fonezy. Dokładna wymowa jest określana przez Phoneme element członkowski FragmentState obiektu zwróconego przez State właściwość w TextFragment wystąpieniach. Odpowiada tagowi <XML Phoneme> w specyfikacji SSML.

Silence 1

Wskazuje, że TextFragment tekst nie ma być renderowany jako mowa. Czas trwania ciszy jest określony przez Duration właściwość FragmentState obiektu zwróconego przez State właściwość w TextFragment wystąpieniach. Odpowiada tagowi <XML Silence> w specyfikacji SSML.

Speak 0

Żądania, które skojarzone z nim TextFragment powinny być przetwarzane i mówione. Jest to wartość domyślna elementu TextFragment. Odpowiada tagowi <XML mowy> w specyfikacji SSML.

SpellOut 4

Wskazuje, że wartości tekstowe dostarczane przez TextFragment właściwość TextToSpeak mają być syntetyzowane jako poszczególne znaki. Renderowanie to obejmuje znaki interpunkcyjne, inne niż białe znaki, a także tekst alfanumeryczny. Na przykład skojarzony fragment tekstu "word!" należy syntetyzować do "w o r d wykrzyknik".

StartParagraph 6

Wskazuje stan akapitu. Odpowiada tagowi <XML p> w specyfikacji SSML.

StartSentence 5

Wskazuje początek zdania. Odpowiada tagowi< XML w> specyfikacji SSML.

Przykłady

Poniższy przykład jest częścią niestandardowej implementacji syntezy mowy dziedziczonej z TtsEngineSsml, i przy użyciu funkcji TextFragment, FragmentStatei TtsEventId

Implementacja Speak

  1. Odbiera tablicę TextFragment wystąpień i tworzy nową tablicę TextFragment wystąpień, która ma zostać przekazana do metody w Speak podstawowym aucie syntezy.

  2. TtsEngineAction Jeśli wartość wyliczenia znaleziona z Action właściwości FragmentState zwróconej przez State właściwość każdego TextFragment wystąpienia to Speak, implementacja

    • Tłumaczy amerykanizm na Brytyjczyków w tekście, który ma być wypowiadany.

    • EventInterest Jeśli właściwość w interfejsie dostarczonym ITtsEngineSite do implementacji obsługuje TtsEventId.WordBoundary typ zdarzenia, zostanie utworzone zdarzenie służące do napędzania miernika postępu syntetyzatora.

  3. Aparat renderowania mowy jest następnie wywoływany TextFragment za pomocą zmodyfikowanej tablicy.

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

}

Uwagi

TtsEngineActionreprezentuje żądania obsługi .TextFragment Akcje odpowiadają ściśle elementom w specyfikacji SSML i są implementowane w tekście zwracanym przez TextToSpeak właściwość na TextFragmentobiekcie .

Wartość TtsEngineAction skojarzona z elementem TextFragment jest zwracana przez State właściwość .

TtsEngineAction Przetwarzanie wartości zwracanej przez State właściwość jest obsługiwane przez mowę syntetyzuje implementację Speak metody w klasie pochodzącej z TtsEngineSsmlklasy .

Dotyczy