TtsEngineAction Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
Bidang
| Nama | Nilai | Deskripsi |
|---|---|---|
| Speak | 0 | Permintaan bahwa yang terkait harus diproses TextFragment dan diucapkan. Ini adalah nilai default untuk TextFragment. Ini sesuai dengan |
| 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 |
| 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 |
| Bookmark | 3 | Menunjukkan bahwa TextFragment akan digunakan sebagai konten marka buku. Ini sesuai dengan |
| 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 |
| StartParagraph | 6 | Menunjukkan status paragraf. Ini sesuai dengan |
| 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
Menerima array TextFragment instans dan membuat array TextFragment instans baru untuk diteruskan ke
Speakmetode pada mesin sintesis yang mendasar.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.
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.