TtsEngineSsml.Speak(TextFragment[], IntPtr, ITtsEngineSite) Yöntem
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.
Belirtilen TextFragment diziyi belirtilen çıkış biçiminde işler.
public:
abstract void Speak(cli::array <System::Speech::Synthesis::TtsEngine::TextFragment ^> ^ fragment, IntPtr waveHeader, System::Speech::Synthesis::TtsEngine::ITtsEngineSite ^ site);
public abstract void Speak (System.Speech.Synthesis.TtsEngine.TextFragment[] fragment, IntPtr waveHeader, System.Speech.Synthesis.TtsEngine.ITtsEngineSite site);
abstract member Speak : System.Speech.Synthesis.TtsEngine.TextFragment[] * nativeint * System.Speech.Synthesis.TtsEngine.ITtsEngineSite -> unit
Public MustOverride Sub Speak (fragment As TextFragment(), waveHeader As IntPtr, site As ITtsEngineSite)
Parametreler
- fragment
- TextFragment[]
Konuşmada TextFragment işlenecek metni içeren örnek dizisi.
- site
- ITtsEngineSite
Altyapı kaynaklarına erişim ITtsEngineSite izni vermek için platform altyapısı tarafından geçirilen arabirim başvurusu.
Örnekler
Aşağıdaki örnek, 'den devralınan ve , , ve kullanımını kullanan TtsEngineSsml özel konuşma sentezi TextFragment uygulamasının SpeechEventInfo bir FragmentState parçasıdır TtsEventId
uygulamasının Speak
Bir örnek dizisi alır ve temel alınan sentez altyapısında yöntemine TextFragment TextFragment geçirilen
Speak
yeni bir örnek dizisi oluşturur.her örneğinin özelliği tarafından döndürülen özelliğinden bulunan numaralama değeri TtsEngineAction Action FragmentState State TextFragment Speak ise, uygulama
Amerikanlığı, konuşulan metinde İngilizliklere çevirir.
Uygulamaya sağlanan arabirimlerde özelliği olay türünü destekliyorsa, bir sentezleyici ilerleme ölçümü oluşturmak için bir olay oluşturmak EventInterest ITtsEngineSite için bir örnek WordBoundary SpeechEventInfo kullanılır.
Daha sonra değiştirilen dizi ile bir konuşma işleme altyapısı TextFragment çağrılır.
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
olarak kullanılan ve yöntemi waveHeader
tarafından döndürülen yapı, SAPI altında kullanılabilir WAVEFORMATEX
ile uyumlu olmalıdır.
, struct
aşağıdakilere eşdeğer işlevsellik sağlay şunları sağlayalı:
internal struct WaveFormat
{
public Int16 FormatTag;
public Int16 Channels;
public int SamplesPerSec;
public int AvgBytesPerSec;
public Int16 BlockAlign;
public Int16 BitsPerSample;
public Int16 Size;
}
Uygulayanlara Notlar
Özel konuşma sentezleyici, ad alanı ve temel alınan sistem konuşma sentezi altyapılarının üyeleri aracılığıyla platform altyapısı kullanılarak oluşturulmuş olan sentezleyici uygulamaları arasında filtre veya aracı olarak kullanma TtsEngineSsml Speak(TextFragment[], IntPtr, ITtsEngineSite) ve çalışma System.Speech.Synthesis gerçekleştirmektedir.
Bir Speak(TextFragment[], IntPtr, ITtsEngineSite) uygulama:
- Gelen nesnelerin yönlerini yakalama veya TextFragment değiştirme
- Bir örneğin site başvurularını kullanarak gerekli tüm olayları ITtsEngineSite üretir
- Gerçek sentezlenmiş konuşmayı üretir.
Konuşma oluşturma işlemi genellikle işletim sistemi tarafından sağlanan
konuşma işleme altyapılarından biri üzerinde Konuşma'nın çağrılarak yapılır.
Kullanılabilir konuşma işleme altyapılarından biri kullanılmazsa, 'den devralınan bir nesnenin kendi konuşma TtsEngineSsml işleme altyapısını oluşturması gerekir.
Kayıt defteri ve yansıma
kullanılarak elde edilen üzerinde Konuşma yöntemine erişim. .
'den TtsEngineSsml devralınca, şu üyeleri geçersiz kılmalı: TtsEngineSsml(String) , , , ve AddLexicon(Uri, String, ITtsEngineSite) RemoveLexicon(Uri, ITtsEngineSite) GetOutputFormat(SpeakOutputFormat, IntPtr) Speak(TextFragment[], IntPtr, ITtsEngineSite) .