1
2
3
4
5
6
7
8 from ctypes import *
9 from ctypes.wintypes import *
10 from comtypes import *
11
12 S_OK=0
13
14
15
16 SVFN_LEN = 262
17 LANG_LEN = 64
18 TTSDATAFLAG_TAGGED = 1
19 TTSI_NAMELEN = SVFN_LEN
20 TTSI_STYLELEN = SVFN_LEN
21 TTSATTR_MINPITCH = 0
22 TTSATTR_MAXPITCH = 0xffff
23 TTSATTR_MINSPEED = 0
24 TTSATTR_MAXSPEED = 0xffffffff
25 TTSATTR_MINVOLUME=0
26 TTSATTR_MAXVOLUME=0xffffffff
27 TTSFEATURE_VOLUME=2
28 TTSFEATURE_SPEED=4
29 TTSFEATURE_PITCH=8
30 TTSFEATURE_FIXEDAUDIO=1024
31
32 LANGID = WORD
33 QWORD = c_ulonglong
34
39
41 _fields_ = [("dwLowDateTime", DWORD), ("dwHighDateTime", DWORD)]
42
46 LANGUAGE = LANGUAGEW
47
49 _fields_ = [("gEngine", GUID),
50 ("szMfgName", c_wchar * TTSI_NAMELEN),
51 ("szProductName", c_wchar * TTSI_NAMELEN),
52 ("gModeID", GUID),
53 ("szModeName", c_wchar * TTSI_NAMELEN),
54 ("language", LANGUAGEW),
55 ("szSpeaker", c_wchar * TTSI_NAMELEN),
56 ("szStyle", c_wchar * TTSI_STYLELEN),
57 ("wGender", WORD),
58 ("wAge", WORD),
59 ("dwFeatures", DWORD),
60 ("dwInterfaces", DWORD),
61 ("dwEngineFeatures", DWORD)]
62 TTSMODEINFO = TTSMODEINFOW
63
65 _fields_ = [("pData", c_void_p), ("dwSize", DWORD)]
66
68 _fields_ = [("bMouthHeight", BYTE), ("bMouthWidth", BYTE),
69 ("bMouthUpturn", BYTE), ("bJawOpen", BYTE),
70 ("bTeethUpperVisible", BYTE), ("bTeethLowerVisible", BYTE),
71 ("bTonguePosn", BYTE), ("bLipTension", BYTE)]
72
74 d = SDATA()
75 d.pData = cast(c_wchar_p(text), c_void_p)
76 d.dwSize = (len(text) + 1) * sizeof(c_wchar)
77 return d
78
80 _iid_ = GUID("{1287A280-4A47-101B-931A-00AA0047BA4F}")
81
82 ITTSAttributesW._methods_ = [
83 STDMETHOD(HRESULT, "PitchGet", [POINTER(WORD)]),
84 STDMETHOD(HRESULT, "PitchSet", [WORD]),
85 STDMETHOD(HRESULT, "RealTimeGet", [POINTER(DWORD)]),
86 STDMETHOD(HRESULT, "RealTimeSet", [DWORD]),
87 STDMETHOD(HRESULT, "SpeedGet", [POINTER(DWORD)]),
88 STDMETHOD(HRESULT, "SpeedSet", [DWORD]),
89 STDMETHOD(HRESULT, "VolumeGet", [POINTER(DWORD)]),
90 STDMETHOD(HRESULT, "VolumeSet", [DWORD])
91 ]
92
93 ITTSAttributes = ITTSAttributesW
94
96 _iid_ = GUID("{E4963D40-C743-11cd-80E5-00AA003E4B50}")
97
98 ITTSBufNotifySink._methods_ = [
99 STDMETHOD(HRESULT, "TextDataDone", [QWORD, DWORD]),
100 STDMETHOD(HRESULT, "TextDataStarted", [QWORD]),
101 STDMETHOD(HRESULT, "BookMark", [QWORD, DWORD]),
102 STDMETHOD(HRESULT, "WordPosition", [QWORD, DWORD])
103 ]
104
106 _iid_ = GUID("{28016060-4A47-101B-931A-00AA0047BA4F}")
107
108 ITTSCentralW._methods_ = [
109 STDMETHOD(HRESULT, "Inject", [LPCWSTR]),
110 STDMETHOD(HRESULT, "ModeGet", [POINTER(TTSMODEINFOW)]),
111 STDMETHOD(HRESULT, "Phoneme", [VOICECHARSET, DWORD, SDATA, POINTER(SDATA)]),
112 STDMETHOD(HRESULT, "PosnGet", [POINTER(QWORD)]),
113 STDMETHOD(HRESULT, "TextData", [VOICECHARSET, DWORD, SDATA, c_void_p, GUID]),
114 STDMETHOD(HRESULT, "ToFileTime", [POINTER(QWORD), POINTER(FILETIME)]),
115 STDMETHOD(HRESULT, "AudioPause"),
116 STDMETHOD(HRESULT, "AudioResume"),
117 STDMETHOD(HRESULT, "AudioReset"),
118 STDMETHOD(HRESULT, "Register", [c_void_p, GUID, POINTER(DWORD)]),
119 STDMETHOD(HRESULT, "UnRegister", [DWORD])
120 ]
121
122 ITTSCentral = ITTSCentralW
123
126
127 IAudioMultiMediaDevice._methods_ = [
128 STDMETHOD(HRESULT, "CustomMessage", [c_uint, SDATA]),
129 STDMETHOD(HRESULT, "DeviceNumGet", [POINTER(DWORD)]),
130 STDMETHOD(HRESULT, "DeviceNumSet", [DWORD])
131 ]
132
134 _iid_ = GUID("{6B837B20-4A47-101B-931A-00AA0047BA4F}")
135
136 ITTSEnumW._methods_ = [
137 STDMETHOD(HRESULT, "Next", [c_ulong, POINTER(TTSMODEINFOW),
138 POINTER(c_ulong)]),
139 STDMETHOD(HRESULT, "Skip", [c_ulong]),
140 STDMETHOD(HRESULT, "Reset"),
141 STDMETHOD(HRESULT, "Clone", [POINTER(POINTER(ITTSEnumW))]),
142 STDMETHOD(HRESULT, "Select", [GUID, POINTER(POINTER(ITTSCentralW)),
143 POINTER(IUnknown)])
144 ]
145
146 ITTSEnum = ITTSEnumW
147
149 _iid_ = GUID("{C0FA8F40-4A46-101B-931A-00AA0047BA4F}")
150
151 ITTSNotifySinkW._methods_ = [
152 STDMETHOD(HRESULT, "AttribChanged", [DWORD]),
153 STDMETHOD(HRESULT, "AudioStart", [QWORD]),
154 STDMETHOD(HRESULT, "AudioStop", [QWORD]),
155 STDMETHOD(HRESULT, "Visual", [QWORD, c_wchar, c_wchar, DWORD,
156 POINTER(TTSMOUTH)])
157 ]
158
159 ITTSNotifySink = ITTSNotifySinkW
160
161 CLSID_MMAudioDest = GUID("{CB96B400-C743-11cd-80E5-00AA003E4B50}")
162 CLSID_TTSEnumerator = GUID("{D67C0280-C743-11cd-80E5-00AA003E4B50}")
163