TtsEngineAction Sabit listesi

Tanım

Belirli bir TextFragmentişlenirken gerçekleştirilecek Konuşma Sentezi Biçimlendirme Dili (SSML) eylemini belirtir.

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

Alanlar

Name Değer Description
Speak 0

İlişkilinin TextFragment işlenmesi ve konuşulması isteği. Bu, bir TextFragmentiçin varsayılan değerdir. SSML belirtimindeki <speak> XML etiketine karşılık gelir.

Silence 1

bir TextFragment öğesinin konuşma olarak işlenecek metin içermediğini gösterir. Sessizliğin süresi, örneklerde özelliği tarafından döndürülen nesnenin DurationFragmentState özelliği State tarafından TextFragment belirtilir. SSML belirtimindeki <Silence> XML etiketine karşılık gelir.

Pronounce 2

Metin girişlerinin TextFragment fone olarak yorumlanması isteğinde bulunur. Tam söyleniş, örneklerde Phoneme özelliği tarafından döndürülen nesnenin FragmentStateState üyesi tarafından TextFragment belirtilir. SSML belirtimindeki <Phoneme> XML etiketine karşılık gelir.

Bookmark 3

TextFragment Bunun yer işaretinin içeriği olarak kullanılacağını gösterir. SSML belirtimindeki <mark> XML etiketine karşılık gelir.

SpellOut 4

özelliği aracılığıyla TextFragment tarafından TextToSpeak sağlanan metin değerlerinin tek tek karakterler olarak sentezlenmesini belirtir. Bu işleme boşluk dışında noktalama işaretlerini ve alfasayısal metinleri içerir. Örneğin, ilişkili metin parçası "word!" "w o r d ünlem işareti" olarak sentezlenmelidir.

StartSentence 5

Tümcenin başlangıcını gösterir. SSML belirtimindeki <s> XML etiketine karşılık gelir.

StartParagraph 6

Paragrafın durumunu gösterir. SSML belirtimindeki <p> XML etiketine karşılık gelir.

ParseUnknownTag 7

SSML girişinden hiçbir eylemin belirlendiğini gösterir. Bir sentez altyapısının takdirine bağlı olarak tarafından yorumlanabilir veya yoksayılabilir bu giriş. İlişkili TextFragment , SSML standardının parçası olmayan bilinmeyen bir XML etiketidir.

Örnekler

Aşağıdaki örnek, öğesinden TtsEngineSsmldevralınan ve , TextFragmentve kullanımını kullanan özel konuşma sentezi uygulamasının FragmentStatebir parçasıdır.TtsEventId

Uygulamasının Speak

  1. Bir örnek dizisi TextFragment alır ve temel alınan sentez altyapısında TextFragment yöntemine geçirilecek yeni bir örnek dizisi Speak oluşturur.

  2. TtsEngineAction Her Action örneğin özelliği tarafından FragmentState döndürülen özelliğinden StateTextFragment bulunan numaralandırma değeri Speak ise, uygulama

    • Konuşulacak metinde Amerikancılığı İngilizliklere çevirir.

    • EventInterest Uygulamaya sağlanan arabirimdeki ITtsEngineSite özelliği olay türünü destekliyorsaTtsEventId.WordBoundary, bir sentezleyici ilerleme ölçümünü yönlendirmek için bir olay oluşturulur.

  3. Daha sonra değiştirilen dizi ile bir konuşma işleme altyapısı çağrılır 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);

}

Açıklamalar

TtsEngineAction , hizmet TextFragmentverme isteklerini temsil eder. Eylemler SSML belirtimindeki öğelere yakından karşılık gelir ve özelliği tarafından döndürülen metne TextToSpeak uygulanır TextFragment.

TtsEngineAction ile TextFragment ilişkili değer özelliği tarafından State döndürülür.

özelliği tarafından döndürülen değerin TtsEngineActionState işlenmesi, öğesinden Speaktüretilen bir sınıfta yönteminin TtsEngineSsml bir konuşma sentezi uygulaması tarafından işlenir.

Şunlara uygulanır