TextFragment.TextToSpeak Vlastnost
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í.
Získá nebo nastaví text řeči fragmentu.
public:
property System::String ^ TextToSpeak { System::String ^ get(); void set(System::String ^ value); };
public string TextToSpeak { get; set; }
member this.TextToSpeak : string with get, set
Public Property TextToSpeak As String
Hodnota vlastnosti
Je System.String
vrácena hodnota a nebo se dá použít k nastavení textu řeči, který má modul syntézy řeči používat k vygenerování zvukového výstupu.
Příklady
Následující příklad je součástí vlastní implementace syntézy řeči zděděné z TtsEngineSsmla pomocí , TextFragmentSpeechEventInfo, FragmentStatea TtsEventId.
Provádění Speak
Přijme pole TextFragment instancí a vytvoří nové pole TextFragment instancí, které se mají předat
Speak
metodě v podkladovém syntezčním modulu.Při vytváření nových instancí se při vytváření objektu na nových TextFragment instancích dbá TextOffsetTextLength zvláštní pozornost na původní TextFragment .TextToSpeak
Pokud je TtsEngineAction hodnota výčtu Action nalezena z vlastnosti FragmentState vrácené State vlastností každé TextFragment instance Speak, implementace
V textu, který se má vyslovovat, přeloží americanismus na britštinu.
EventInterest Pokud vlastnost na ITtsEngineSite rozhraních poskytovaných implementaci podporuje WordBoundary typ události, SpeechEventInfo instance se použije k vytvoření události, která bude řídit měřič průběhu syntetizátoru.
Modul pro vykreslování řeči se pak zavolá 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
Výchozí hodnota této vlastnosti je System.String.Empty
.
Aplikace mohou zcela změnit hodnotu TextToSpeak.
Při resetování hodnoty TextToSpeak se nezmění hodnota TextOffset a TextLength.