| File: Synthesis\TTSEngine\SAPIEngineTypes.cs | Web Access |
| Project: src\runtime\src\libraries\System.Speech\src\System.Speech.csproj (System.Speech) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.InteropServices; namespace System.Speech.Synthesis.TtsEngine { #region Public Enums [ComImport, Guid("A74D7C8E-4CC5-4F2F-A6EB-804DEE18500E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface ITtsEngine { [PreserveSig] void Speak(SPEAKFLAGS dwSpeakFlags, ref Guid rguidFormatId, IntPtr pWaveFormatEx, IntPtr pTextFragList, IntPtr pOutputSite); [PreserveSig] void GetOutputFormat(ref Guid pTargetFmtId, IntPtr pTargetWaveFormatEx, out Guid pOutputFormatId, out IntPtr ppCoMemOutputWaveFormatEx); } [StructLayout(LayoutKind.Sequential)] internal class SPVTEXTFRAG { public IntPtr pNext; public SPVSTATE State; public IntPtr pTextStart; public int ulTextLen; public int ulTextSrcOffset; // must be the last element, it is passed to the TTS engine that // does not see these fields public GCHandle gcText; public GCHandle gcNext; public GCHandle gcPhoneme; public GCHandle gcSayAsCategory; } [ComConversionLossAttribute] [TypeLibTypeAttribute(16)] internal struct SPVSTATE { //--- Action public SPVACTIONS eAction; //--- Running state values public short LangID; public short wReserved; public int EmphAdj; public int RateAdj; public int Volume; public SPVPITCH PitchAdj; public int SilenceMSecs; public IntPtr pPhoneIds; public SPPARTOFSPEECH ePartOfSpeech; public SPVCONTEXT Context; } [System.Runtime.InteropServices.TypeLibTypeAttribute(16)] internal struct SPVCONTEXT { public IntPtr pCategory; public IntPtr pBefore; public IntPtr pAfter; } [System.Runtime.InteropServices.TypeLibTypeAttribute(16)] internal struct SPVPITCH { public int MiddleAdj; public int RangeAdj; } internal static class SAPIGuids { internal static readonly Guid SPDFID_WaveFormatEx = new("C31ADBAE-527F-4ff5-A230-F62BB61FF70C"); } [Flags] internal enum SPEAKFLAGS : int { SPF_DEFAULT = 0x0000, // Synchronous, no purge, xml auto detect SPF_ASYNC = 0x0001, // Asynchronous call SPF_PURGEBEFORESPEAK = 0x0002, // Purge current data prior to speaking this SPF_IS_FILENAME = 0x0004, // The string passed to Speak() is a file name SPF_IS_XML = 0x0008, // The input text will be parsed for XML markup SPF_IS_NOT_XML = 0x0010, // The input text will not be parsed for XML markup SPF_PERSIST_XML = 0x0020, // Persists XML global state changes SPF_NLP_SPEAK_PUNC = 0x0040, // The normalization processor should speak the punctuation SPF_PARSE_SAPI = 0x0080, // Force XML parsing as MS SAPI SPF_PARSE_SSML = 0x0100 // Force XML parsing as W3C SSML } [Flags] internal enum SPVESACTIONS { SPVES_CONTINUE = 0, SPVES_ABORT = 1, SPVES_SKIP = 2, SPVES_RATE = 4, SPVES_VOLUME = 8 } [System.Runtime.InteropServices.TypeLibTypeAttribute(16)] internal enum SPVACTIONS { SPVA_Speak = 0, SPVA_Silence = 1, SPVA_Pronounce = 2, SPVA_Bookmark = 3, SPVA_SpellOut = 4, SPVA_Section = 5, SPVA_ParseUnknownTag = 6, } [System.Runtime.InteropServices.TypeLibTypeAttribute(16)] internal enum SPPARTOFSPEECH { //--- SAPI5 public POS category values (bits 28-31) SPPS_NotOverridden = -1, SPPS_Unknown = 0, SPPS_Noun = 0x1000, SPPS_Verb = 0x2000, SPPS_Modifier = 0x3000, SPPS_Function = 0x4000, SPPS_Interjection = 0x5000, SPPS_SuppressWord = 0xF000, // Special flag to indicate this word should not be recognized } #endregion }