TextFragment.TextLength Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Parçadaki konuşma metninin uzunluğunu alır veya ayarlar.
public:
property int TextLength { int get(); void set(int value); };
public int TextLength { get; set; }
member this.TextLength : int with get, set
Public Property TextLength As Integer
Özellik Değeri
döndürülür int
veya bu parçayla ilişkili metin dizesinin uzunluğunun karakter olarak konuşulacak şekilde ayarlanması için kullanılabilir.
Örnekler
Aşağıdaki örnek, 'den TtsEngineSsmldevralan ve , , SpeechEventInfoFragmentStateve TtsEventIdkullanımını kullanan özel konuşma sentezi uygulamasının TextFragmentbir parçasıdır.
Uygulamasının Speak
Bir örnek dizisi TextFragment alır ve temel alınan sentez altyapısında yöntemine
Speak
geçirilecek yeni bir örnek dizisi TextFragment oluşturur.Yeni TextFragment örneklerde oluşturulurken TextToSpeak özgün TextFragment üzerindeki öğesine saygı TextOffsetTextLength için özel bakım kullanılır.
TtsEngineAction Her TextFragment örneğin özelliği tarafından State döndürülen özelliğinden FragmentStateAction bulunan numaralandırma değeri iseSpeak, uygulama
Konuşulacak metinde Amerikancılığı İngilizlere çevirir.
EventInterest Uygulamaya sağlanan arabirimlerdeki özelliği ITtsEngineSite olay türünü destekliyorsaWordBoundary, bir SpeechEventInfo sentezleyici ilerleme ölçümünü yönlendirmek için bir olay oluşturmak için bir örnek kullanılır.
Daha sonra değiştirilen diziyle 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
Bu özelliğin varsayılan değeri 0'dır.