TtsEngineAction Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger åtgärden Speech Synthesis Markup Language (SSML) som ska vidtas för att återge en viss TextFragment.
public enum class TtsEngineAction
public enum TtsEngineAction
type TtsEngineAction =
Public Enum TtsEngineAction
- Arv
Fält
| Name | Värde | Description |
|---|---|---|
| Speak | 0 | Begäranden som associeras TextFragment ska bearbetas och talas. Det här är standardvärdet för en TextFragment. Den motsvarar XML-taggen |
| Silence | 1 | Anger att en TextFragment innehåller ingen text som ska återges som tal. Varaktigheten för tystnaden Duration anges av egenskapen för objektet som FragmentState returneras av State egenskapen på TextFragment instanser. Den motsvarar XML-taggen |
| Pronounce | 2 | Begäranden som indatatext TextFragment tolkas som fonem. Exakt uttal anges av Phoneme medlemmen FragmentState i objektet som returneras av State egenskapen på TextFragment instanser. Den motsvarar XML-taggen |
| Bookmark | 3 | Anger att TextFragment ska användas som innehållet i ett bokmärke. Den motsvarar XML-taggen |
| SpellOut | 4 | Anger att textvärden som tillhandahålls av en TextFragment via dess TextToSpeak egenskap ska syntetiseras som enskilda tecken. Den här återgivningen innehåller skiljetecken, förutom blanksteg, samt alfanumerisk text. Till exempel bör det associerade textfragmentet "word!" syntetiseras till "w o r d utropstecken". |
| StartSentence | 5 | Anger början av meningen. Den motsvarar XML-taggen |
| StartParagraph | 6 | Anger stycketillstånd. Den motsvarar XML-taggen |
| ParseUnknownTag | 7 | Anger att ingen åtgärd har fastställts från SSML-indata. Dessa indata som kan tolkas eller ignoreras av en syntesmotor. Den associerade TextFragment är en okänd XML-tagg som inte ingår i SSML-standarden. |
Exempel
Följande exempel är en del av en anpassad talsyntesimplementering som ärver från TtsEngineSsml, och använder användningen av TextFragment, FragmentStateoch TtsEventId
Genomförandet av Speak
Tar emot en matris med TextFragment instanser och skapar en ny matris med TextFragment instanser som ska skickas till
Speakmetoden på en underliggande syntesmotor.TtsEngineAction Om uppräkningsvärdet genom att hittas från Action egenskapen på den FragmentState som returneras av State egenskapen för varje TextFragment instans är Speak, implementeringen
Översätter amerikanismen till britishismer i texten som ska talas.
EventInterest Om egenskapen i gränssnittet ITtsEngineSite som tillhandahålls till implementeringen stöder TtsEventId.WordBoundary händelsetypen skapas en händelse för att köra en synthesizer-förloppsmätare.
En talrenderingsmotor anropas sedan med den ändrade TextFragment matrisen.
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);
}
Kommentarer
TtsEngineAction representerar begäranden om underhåll av en TextFragment. Åtgärderna motsvarar nära elementen i SSML-specifikationen och implementeras på texten som returneras av TextToSpeak egenskapen på en TextFragment.
Värdet TtsEngineAction som är associerat med en TextFragment returneras av State egenskapen.
Bearbetning av värdet TtsEngineAction som returneras av State egenskapen hanteras av en talsyntetiserar implementering av Speak metoden på en klass som härletts från TtsEngineSsml.