Bagikan melalui


TtsEngineAction Enum

Definisi

Menentukan tindakan Speech Synthesis Markup Language (SSML) yang akan diambil dalam merender TextFragmenttertentu.

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

Bidang

Nama Nilai Deskripsi
Speak 0

Permintaan bahwa yang terkait harus diproses TextFragment dan diucapkan. Ini adalah nilai default untuk TextFragment. Ini sesuai dengan <speak> tag XML dalam spesifikasi SSML.

Silence 1

Menunjukkan bahwa TextFragment tidak berisi teks yang akan dirender sebagai ucapan. Durasi keheningan ditentukan oleh Duration properti objek yang FragmentState dikembalikan oleh State properti pada TextFragment instans. Ini sesuai dengan <Silence> tag XML dalam spesifikasi SSML.

Pronounce 2

Permintaan yang memasukkan TextFragment teks ditafsirkan sebagai fonem. Pengucapan yang tepat ditentukan oleh Phoneme anggota objek yang FragmentState dikembalikan oleh State properti pada TextFragment instans. Ini sesuai dengan <Phoneme> tag XML dalam spesifikasi SSML.

Bookmark 3

Menunjukkan bahwa TextFragment akan digunakan sebagai konten marka buku. Ini sesuai dengan <mark> tag XML dalam spesifikasi SSML.

SpellOut 4

Menunjukkan bahwa nilai teks yang disediakan oleh TextFragment melalui propertinya TextToSpeak akan disintesis sebagai karakter individual. Penyajian ini mencakup tanda baca, selain spasi kosong, serta teks alfanumerik. Misalnya, fragmen teks terkait "word!" harus disintesis menjadi "w o r d tanda seru".

StartSentence 5

Menunjukkan awal kalimat. Ini sesuai dengan <s> tag XML dalam spesifikasi SSML.

StartParagraph 6

Menunjukkan status paragraf. Ini sesuai dengan <p> tag XML dalam spesifikasi SSML.

ParseUnknownTag 7

Menunjukkan bahwa tidak ada tindakan yang ditentukan dari input SSML. Input ini yang dapat ditafsirkan atau diabaikan oleh atas kebijakan mesin sintesis. Yang terkait TextFragment adalah tag XML yang tidak diketahui bukan bagian dari standar SSML.

Contoh

Contoh berikut adalah bagian dari implementasi sintesis ucapan kustom yang mewarisi dari TtsEngineSsml, dan menggunakan penggunaan TextFragment, FragmentState, dan TtsEventId

Implementasi Speak

  1. Menerima array TextFragment instans dan membuat array TextFragment instans baru untuk diteruskan ke Speak metode pada mesin sintesis yang mendasar.

  2. TtsEngineAction Jika nilai enumerasi dengan ditemukan dari Action properti pada properti yang FragmentState dikembalikan oleh State properti dari setiap TextFragment instans adalah Bicara, implementasinya

    • Menerjemahkan Americanisme ke Britishism dalam teks yang akan diucapkan.

    • EventInterest Jika properti pada ITtsEngineSite antarmuka yang disediakan untuk implementasi mendukung TtsEventId.WordBoundary jenis peristiwa, peristiwa untuk mendorong pengukur kemajuan synthesizer dibuat.

  3. Mesin penyajian ucapan kemudian dipanggil dengan array yang dimodifikasi 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);

}

Keterangan

TtsEngineAction mewakili permintaan untuk melayani TextFragment. Tindakan sesuai erat dengan elemen dalam spesifikasi SSML dan diimplementasikan pada teks yang dikembalikan oleh TextToSpeak properti pada TextFragment.

Nilai TtsEngineAction yang terkait dengan dikembalikan TextFragment oleh State properti .

Pemrosesan nilai yang TtsEngineAction dikembalikan oleh State properti ditangani oleh ucapan mensintesis implementasi Speak metode pada kelas yang berasal dari TtsEngineSsml.

Berlaku untuk