Package synthDrivers :: Module _sapi4
[hide private]
[frames] | no frames]

Source Code for Module synthDrivers._sapi4

  1  #_sapi4.py 
  2  # Contributed by Serotek Corporation under the GPL 
  3  #A part of NonVisual Desktop Access (NVDA) 
  4  #Copyright (C) 2006-2008 NVDA Contributors <http://www.nvda-project.org/> 
  5  #This file is covered by the GNU General Public License. 
  6  #See the file COPYING for more details. 
  7   
  8  from ctypes import * 
  9  from ctypes.wintypes import * 
 10  from comtypes import * 
 11   
 12  S_OK=0 
 13   
 14  ###comtypes class definitions 
 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   
35 -class VOICECHARSET(c_int):
36 CHARSET_TEXT = 0 37 CHARSET_IPAPHONETIC = 1 38 CHARSET_ENGINEPHONETIC = 2
39
40 -class FILETIME(Structure):
41 _fields_ = [("dwLowDateTime", DWORD), ("dwHighDateTime", DWORD)]
42
43 -class LANGUAGEW(Structure):
44 _fields_ = [("LanguageID", LANGID), 45 ("szDialect", c_wchar * LANG_LEN)]
46 LANGUAGE = LANGUAGEW 47
48 -class TTSMODEINFOW(Structure):
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
64 -class SDATA(Structure):
65 _fields_ = [("pData", c_void_p), ("dwSize", DWORD)]
66
67 -class TTSMOUTH(Structure):
68 _fields_ = [("bMouthHeight", BYTE), ("bMouthWidth", BYTE), 69 ("bMouthUpturn", BYTE), ("bJawOpen", BYTE), 70 ("bTeethUpperVisible", BYTE), ("bTeethLowerVisible", BYTE), 71 ("bTonguePosn", BYTE), ("bLipTension", BYTE)]
72
73 -def TextSDATA(text):
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
79 -class ITTSAttributesW(IUnknown):
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
95 -class ITTSBufNotifySink(IUnknown):
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
105 -class ITTSCentralW(IUnknown):
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
124 -class IAudioMultiMediaDevice(IUnknown):
125 _iid_ = GUID("{B68AD320-C743-11cd-80E5-00AA003E4B50}")
126 127 IAudioMultiMediaDevice._methods_ = [ 128 STDMETHOD(HRESULT, "CustomMessage", [c_uint, SDATA]), 129 STDMETHOD(HRESULT, "DeviceNumGet", [POINTER(DWORD)]), 130 STDMETHOD(HRESULT, "DeviceNumSet", [DWORD]) 131 ] 132
133 -class ITTSEnumW(IUnknown):
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
148 -class ITTSNotifySinkW(IUnknown):
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