TextFragment Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Obsahuje informace o atributu textu a řeči, které může použít modul syntezátoru řeči.
public ref class TextFragment
public class TextFragment
type TextFragment = class
Public Class TextFragment
- Dědičnost
-
TextFragment
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči dědící z a TtsEngineSsml pomocí , , a TextFragment SpeechEventInfo FragmentState TtsEventId .
Implementace Speak
Přijme pole instancí a vytvoří nové pole instancí, které se předá metodě v základním modulu TextFragment TextFragment
Speak
syntézy.Zvláštní pozornost se používá k dodržování , na původní při TextOffset TextLength vytváření na nové TextFragment TextToSpeak TextFragment instance.
Pokud je TtsEngineAction hodnota výčtu nalezena z vlastnosti vrácené Action FragmentState State vlastností každé instance , TextFragment Speak implementace
Překládá americkost na britismus v textu, který se má vyslovit.
Pokud vlastnost v rozhraních poskytovaných k implementaci podporuje typ události, instance se používá k vytvoření události pro řízení měřiče průběhu EventInterest ITtsEngineSite WordBoundary SpeechEventInfo syntezátoru.
Modul pro vykreslování řeči se pak volá s upraveným TextFragment polem.
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);
}
Poznámky
Infrastruktura platformy Speech rozbalí strukturu vstupu SSML založenou na XML a vytvoří TextFragment objekty.
Obsah řeči je k dispozici prostřednictvím TextLength TextOffset vlastností , TextToSpeak a TextFragment instance.
Informace o atributu řeči, jako je zvýraznění, sklon a rychlost, se získávají z objektu FragmentState vráceného TextFragment State vlastností .
Konstruktory
TextFragment() |
Vytvoří novou instanci |
Vlastnosti
State |
Získá nebo nastaví informace o atributu řeči pro |
TextLength |
Získá nebo nastaví délku textu řeči ve fragmentu. |
TextOffset |
Získá nebo nastaví počáteční umístění textu ve fragmentu. |
TextToSpeak |
Získá nebo nastaví řečový text fragmentu. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |