中间件底层,websocket

JTTS.H 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. #ifndef _JTTS_H_
  2. #define _JTTS_H_
  3. #pragma pack( push, jtts_h )
  4. #pragma pack( 8 )
  5. #ifdef __cplusplus
  6. extern "C"
  7. {
  8. #endif
  9. #define TTSAPI __stdcall
  10. /*
  11. 函数一览:
  12. jTTSPreInit 初始化之前设置系统将读取的音库
  13. jTTSInit 初始化jTTS核心,读取音库
  14. jTTSEnd 释放jTTS核心占用内存
  15. jTTSSetLogFile 设置系统的记录日志文件
  16. jTTSSetPlay 确定放音设备和放音过程中的回调机制
  17. jTTSPlay 利用放音设备阅读指定的文本
  18. jTTSStop 中止当前的阅读
  19. jTTSPause 暂停当前的阅读
  20. jTTSResume 恢复当前的阅读
  21. jTTSSetParam 设置参数
  22. jTTSGetParam 得到参数
  23. jTTSSetRemoteParam 设置远程合成参数
  24. jTTSGetRemoteParam 得到远程合成参数
  25. jTTSSet2 通过结构的方式一次性设置语音合成的所有参数
  26. jTTSGet2 通过结构的方式一次性获得语音合成的所有参数
  27. jTTSSetRemote 通过结构的方式一次性设置远程语音合成的所有参数
  28. jTTSGetRemote 通过结构的方式一次性获得远程语音合成的所有参数
  29. jTTSPlayToFileEx 对文本进行语音合成,将结果写入语音文件,并且使用传入的合成参数,
  30. 使用新的回调函数,可以回传用户指定的数据
  31. jTTSSessionStartEx 开始直接得到语音流的语音合成过程
  32. jTTSSessionGetDataEx 进行语音合成,直接得到语音流,使用内部缓冲区
  33. jTTSSessionRemoteConfig 设置远程调用时的参数
  34. jTTSSessionStop 中止直接得到语音流的语音合成过程
  35. jTTSSessionGetReadBytes 获得已合成完毕的字节数
  36. jTTSSessionStart 开始直接得到语音流的语音合成过程
  37. jTTSSessionConfig2 设置语音合成过程的参数,使用新的结构
  38. */
  39. //ERRCODE
  40. typedef enum
  41. {
  42. ERR_NONE, // 0
  43. ERR_ALREADYINIT, // 1
  44. ERR_NOTINIT, // 2
  45. ERR_MEMORY, // 3
  46. ERR_INVALIDHWND, // 4
  47. ERR_INVALIDFUNC, // 5
  48. ERR_OPENLIB, // 6
  49. ERR_READLIB, // 7
  50. ERR_PLAYING, // 8
  51. ERR_DONOTHING, // 9
  52. ERR_INVALIDTEXT, // 10
  53. ERR_CREATEFILE, // 11
  54. ERR_WRITEFILE, // 12
  55. ERR_FORMAT, // 13
  56. ERR_INVALIDSESSION, // 14
  57. ERR_TOOMANYSESSION, // 15
  58. ERR_MORETEXT, // 16
  59. ERR_CONFIG, // 17
  60. ERR_OPENDEVICE, // 18
  61. ERR_RESETDEVICE, // 19
  62. ERR_PAUSEDEVICE, // 20
  63. ERR_RESTARTDEVICE, // 21
  64. ERR_STARTTHREAD, // 22
  65. ERR_BEGINOLE, // 23
  66. ERR_NOTSUPPORT, // 24
  67. ERR_SECURITY, // 25
  68. ERR_CONVERT, // 26
  69. ERR_PARAM, // 27
  70. ERR_INPROGRESS, // 28
  71. ERR_INITSOCK, // 29
  72. ERR_CREATESOCK, // 30
  73. ERR_CONNECTSOCK, // 31
  74. ERR_TOOMANYCON, // 32
  75. ERR_CONREFUSED, // 33
  76. ERR_SEND, // 34
  77. ERR_RECEIVE, // 35
  78. ERR_SERVERSHUTDOWN, // 36
  79. ERR_OUTOFTIME, // 37
  80. ERR_CONFIGTTS, // 38
  81. ERR_SYNTHTEXT, // 39
  82. ERR_CONFIGVERSION, // 40
  83. ERR_EXPIRED, // 41
  84. ERR_NEEDRESTART, // 42
  85. ERR_CODEPAGE, // 43
  86. ERR_ENGINE, // 44
  87. ERR_CREATEEVENT, // 45
  88. ERR_PLAYMODE, // 46
  89. ERR_OPENFILE, // 47
  90. ERR_USERABORT, // 48
  91. ERR_LICENSEFULL, // 49
  92. ERR_LICENSEFILEINVALID, // 50
  93. ERR_LICENSE, // 51
  94. ERR_LICENSEEXPIRED, // 52
  95. }ERRCODE;
  96. // Log File Flag
  97. #define LOG_TEXT 0x01 // 是否在日志文件中记录合成的文本
  98. #define LOG_SESSION 0x02 // 是否记录每个Session过程的详细调用情况
  99. #define WM_JTTS_NOTIFY (WM_USER + 0x4999)
  100. // wParam of WM_JTTS_NOTIFY or JTTSCALLBACKPROC
  101. #define NOTIFY_BEGIN 0 // lParam: not use
  102. #define NOTIFY_END 1 // lParam: not use
  103. #define NOTIFY_PROGRESS 2 // lParam: bytes of content have been read
  104. #define NOTIFY_PROGRESS2 3 // lParam: end postion of content will be read in next session
  105. #define NOTIFY_MARK 4 // lParam: 标记Mark串的位置和长度, 参考宏GETMARKOFFSET和GETMARKLEN
  106. #define NOTIFY_VISEME 5 // lParam: 标记唇型信息,现版本中未使用
  107. #define STATUS_NOTINIT 0
  108. #define STATUS_READING 1
  109. #define STATUS_PAUSE 2
  110. #define STATUS_IDLE 3
  111. #define VID_MALE1 0
  112. #define VID_FEMALE1 1
  113. //BACKAUDIO
  114. #define BACKAUDIO_NONE 0 // 没有背景音乐
  115. #define BACKAUDIO_MIN 1 // 最小的背景音乐序号
  116. #define BACKAUDIO_MAX 10000 // 最大的背景音乐序号
  117. //VOICESYTLE
  118. #define VOICESTYLE_CADENCE 0 // 抑扬顿挫 jTTS 3.0风格的。
  119. #define VOICESTYLE_FLAT 1 // 平稳庄重
  120. //VOICEBUFSIZE
  121. #define VOICEBUFSIZE_DEFAULT 0 // Default: 128K
  122. #define VOICEBUFSIZE_MIN 16 // 16K
  123. #define VOICEBUFSIZE_MAX 8192 // 8M
  124. //INSERTINFOSIZE
  125. #define INSERTINFOSIZE_DEFAULT 0 // Default: 100
  126. #define INSERTINFOSIZE_MIN 1
  127. #define INSERTINFOSIZE_MAX 1000
  128. // BackAudio Flag
  129. #define BACKAUDIOFLAG_REPEAT 0x01
  130. // BackAudio Volume
  131. #define AUDIOVOLUME_MIN 0
  132. #define AUDIOVOLUME_MAX 100
  133. // Volume, Speed, Pitch
  134. #define VOLUME_MIN 0
  135. #define VOLUME_MAX 9
  136. #define SPEED_MIN 0
  137. #define SPEED_MAX 9
  138. #define PITCH_MIN 0
  139. #define PITCH_MAX 9
  140. // PuncMode
  141. #define PUNC_OFF 0 /* 不读符号,自动判断回车换行是否分隔符*/
  142. #define PUNC_ON 1 /* 读符号, 自动判断回车换行是否分隔符*/
  143. #define PUNC_OFF_RTN 2 /* 不读符号,强制将回车换行作为分隔符*/
  144. #define PUNC_ON_RTN 3 /* 读符号, 强制将回车换行作为分隔符*/
  145. // DigitMode,在此版本中,增加了DIGIT_AUTO_TELEGRAM,无法自动判断的数字串将用数字来读
  146. #define DIGIT_AUTO_NUMBER 0
  147. #define DIGIT_TELEGRAM 1
  148. #define DIGIT_NUMBER 2
  149. #define DIGIT_AUTO_TELEGRAM 3
  150. #define DIGIT_AUTO DIGIT_AUTO_NUMBER
  151. // EngMode
  152. #define ENG_AUTO 0 /* 自动方式 */
  153. #define ENG_ENGENGINE 1 /* 强制使用英文引擎 */
  154. #define ENG_LETTER 2 /* 强制单字母方式 */
  155. #define ENG_LETTER_PHRASE 3 /* 单字母+自录音词方式 */
  156. #define ENG_SAPI 1 /* 强制SAPI 与jTTS3.0兼容*/
  157. //支持TAG
  158. #define TAG_AUTO 0x00 // 自动判断
  159. #define TAG_JTTS 0x01 // 仅处理含有jTTS 3.0支持的TAG: \read=\
  160. #define TAG_SSML 0x02 // 仅处理含有SSML 的TAG: <voice gender="female" />
  161. #define TAG_NONE 0x03 // 没有TAG
  162. // Domain
  163. //在jTTS 4.0专业版中支持多领域
  164. //
  165. //这里列出的是系统内建的领域定义,需要安装相应音库的资源包才能真正支持。
  166. //
  167. //对于这里没有列出的领域,将来也可能会发布相应的资源包,同时会分配一个数值,
  168. //只要安装此资源包后,就可以使用。对于没有列出的领域,如果想使用,可以直接使用数值
  169. //
  170. //可以通过Domain系列函数得到所有系统中定义的(包括将来扩展的)领域数值及其描述的信息
  171. //为了支持Domain,需要使用JTTSCONFIG4。
  172. #define DOMAIN_COMMON 0 // 通用领域,新闻
  173. #define DOMAIN_FINANCE 1 // 金融证券
  174. #define DOMAIN_WEATHER 2 // 天气预报
  175. #define DOMAIN_SPORTS 3 // 体育赛事
  176. #define DOMAIN_TRAFFIC 4 // 公交信息
  177. #define DOMAIN_TRAVEL 5 // 旅游餐饮
  178. #define DOMAIN_CARBORNE 6 //汽运
  179. #define DOMAIN_QUEUE 7 //排队
  180. #define DOMAIN_SONG 8 //点歌
  181. #define DOMAIN_INSURANCE 9 //保险
  182. #define DOMAIN_VOYAGE 10 //航空
  183. #define DOMAIN_REVENUE 11 //税务
  184. #define DOMAIN_ELECPOWER 12 //电力
  185. #define DOMAIN_MESSAGE 13 //短信
  186. #define DOMAIN_CUSTOM 30 // 一般定制领域
  187. #define DOMAIN_MIN 0
  188. #define DOMAIN_MAX 31
  189. // CodePage,在此版本中,CP_GB2312和CP_GBK等效
  190. // CP_xxx 只用于兼容3.0,新的程序应该使用CODEPAGE_xxx等值
  191. #define CP_GB2312 0
  192. #define CP_GBK 1
  193. #define CP_BIG5 2
  194. #define CP_UNICODE 3
  195. //支持的CODEPAGE 4.0 的新的标准
  196. #define CODEPAGE_GB 936 // 包括GB18030, GBK, GB2312
  197. #define CODEPAGE_BIG5 950
  198. #define CODEPAGE_SHIFTJIS 932
  199. #define CODEPAGE_KCS 949
  200. #define CODEPAGE_ISO8859_1 1252
  201. #define CODEPAGE_UNICODE 1200
  202. #define CODEPAGE_UNICODE_BIGE 1201 // BIG Endian
  203. #define CODEPAGE_UTF8 65001
  204. typedef enum
  205. {
  206. PARAM_CODEPAGE, // CP_xxx
  207. PARAM_VOICEID, // VID_xxx
  208. PARAM_PITCH, // PITCH_MIN - PITCH_MAX
  209. PARAM_VOLUME, // VOLUME_MIN - VOLUME_MAX
  210. PARAM_SPEED, // SPEED_MIN - SPEED_MAX
  211. PARAM_PUNCMODE, // PUNCMODE_xxx
  212. PARAM_DIGITMODE, // DIGITMODE_xxx
  213. PARAM_ENGMODE, // ENGMODE_xxx
  214. PARAM_TAGMODE, // TAG_xxx
  215. PARAM_DOMAIN, // DOMAIN_xxx
  216. PARAM_VOICESTYLE, // VOICESTYLE_xxx
  217. PARAM_BACKAUDIO, // 0: no backaudio, from 1: backaudio order
  218. PARAM_BACKAUDIOVOLUME, // BACKAUDIOVOLUME_MIN - BACKAUDIOVOLUME_MAX
  219. PARAM_BACKAUDIOFLAG, // BACKAUDIOFLAG_xxx
  220. PARAM_VOICEBUFSIZE, // VOICEBUFSIZE_DEFAULT, or n (K)
  221. PARAM_INSERTINFOSIZE, // INSERTINFOSIZE_DEFAULT, or n
  222. }JTTSPARAM;
  223. typedef enum
  224. {
  225. PARAM_REMOTE_TRYTIMES, // 合法值:1 - 100, 缺省值:10
  226. PARAM_REMOTE_LOADBALANCE, // 合法值:TRUE, FALSE, 缺省值:FALSE
  227. }JTTSREMOTEPARAM;
  228. #define FORMAT_WAV 0 // PCM Native (目前为16KHz, 16Bit)
  229. #define FORMAT_VOX_6K 1 // OKI ADPCM, 6KHz, 4bit (Dialogic Vox)
  230. #define FORMAT_VOX_8K 2 // OKI ADPCM, 8KHz, 4bit (Dialogic Vox)
  231. #define FORMAT_ALAW_8K 3 // A律, 8KHz, 8Bit
  232. #define FORMAT_uLAW_8K 4 // u律, 8KHz, 8Bit
  233. #define FORMAT_WAV_8K8B 5 // PCM, 8KHz, 8Bit
  234. #define FORMAT_WAV_8K16B 6 // PCM, 8KHz, 16Bit
  235. #define FORMAT_WAV_16K8B 7 // PCM, 16KHz, 8Bit
  236. #define FORMAT_WAV_16K16B 8 // PCM, 16KHz, 16Bit
  237. #define FORMAT_WAV_11K8B 9 // PCM, 11.025KHz, 8Bit
  238. #define FORMAT_WAV_11K16B 10 // PCM, 11.025KHz, 16Bit
  239. #define FORMAT_MP3 11 // PCM, 40KBit/s
  240. #define FORMAT_FIRST 0
  241. #define FORMAT_LAST 11
  242. //jTTSPlayToFileEx函数中参数dwFlag设置值定义
  243. #define PLAYTOFILE_DEFAULT 0 //默认值,写文件时只增加FORMAT_WAV_...格式的文件头
  244. #define PLAYTOFILE_NOHEAD 1 //所有的格式都不增加文件头
  245. #define PLAYTOFILE_ADDHEAD 2 //增加FORMAT_WAV_...格式和FORMAT_ALAW_8K,FORMAT_uLAW_8K格式的文件头
  246. //JTTSCONFIG2 主要用于与jTTS3.0兼容,但不支持jTTS4.0的新功能,
  247. //如果需要jTTS4.0的新功能,请使用JTTSCONFIG4结构。
  248. #define JTTS_VERSION 0x0002 // version 2.0
  249. typedef struct
  250. {
  251. WORD wVersion;
  252. UINT nCodePage;
  253. UINT nVoiceID;
  254. int nPitch;
  255. int nVolume;
  256. int nSpeed;
  257. int nPuncMode;
  258. int nDigitMode;
  259. int nEngMode;
  260. }JTTSCONFIG2;
  261. //新的JTTSCONFIG4结构用于jTTS 4.0专业版,
  262. //所有需要传入JTTSCONFIG2指针的情况,都可以使用JTTSCONFIG4指针代替。
  263. #define JTTS_VERSION4 0x0004 //用于jTTS 4.0专业版
  264. typedef struct JTTSCONFIG_4
  265. {
  266. WORD wVersion; // JTTS_VERSION4
  267. UINT nCodePage;
  268. UINT nVoiceID;
  269. short nDomain;
  270. short nPitch;
  271. short nVolume;
  272. short nSpeed;
  273. short nPuncMode;
  274. short nDigitMode;
  275. short nEngMode;
  276. short nTagMode;
  277. short nVoiceStyle;
  278. short nBackAudio;
  279. short nBackAudioVolume;
  280. WORD wBackAudioFlag;
  281. short nVoiceBufSize; // 设置内部缓冲区的大小
  282. short nInsertInfoSize; // 缓冲区中插入信息的个数
  283. short nReserved[6]; // 保留
  284. }
  285. JTTSCONFIG4;
  286. typedef struct
  287. {
  288. WORD wVersion; // 应该使用JTTS_VERSION
  289. int nTryTimes;
  290. BOOL bLoadBalance;
  291. }JTTSREMOTECONFIG;
  292. typedef BOOL (* JTTSCALLBACKPROC)(WORD wParam, LONG lParam);
  293. typedef BOOL (* JTTSCALLBACKPROCEX)(WORD wParam, LONG lParam, DWORD dwUserData);
  294. //------------------------------------------------------------------------
  295. // 系统函数
  296. ERRCODE TTSAPI jTTSSetSerialNo(const char * pszSerialNo);
  297. ERRCODE TTSAPI jTTSPreInit(int * arrayVoiceID, int nCount);
  298. ERRCODE TTSAPI jTTSInit(const char * pcszLibPath);
  299. ERRCODE TTSAPI jTTSEnd();
  300. void TTSAPI jTTSSetLogFile(const char* pcszLogFile, DWORD dwLogFlag);
  301. //------------------------------------------------------------------------
  302. // 播放函数
  303. // 标准版本中仅支持uDeviceID == WAVE_MAPPER(-1), 即缺省放音音设备
  304. ERRCODE TTSAPI jTTSSetPlay(UINT uDeviceID, HWND hwnd, JTTSCALLBACKPROC lpfnCallback);
  305. ERRCODE TTSAPI jTTSPlay(const char * pcszText);
  306. ERRCODE TTSAPI jTTSStop();
  307. ERRCODE TTSAPI jTTSPause();
  308. ERRCODE TTSAPI jTTSResume();
  309. int TTSAPI jTTSGetStatus();
  310. //------------------------------------------------------------------------
  311. // 播放到文件函数
  312. // 标准版本中仅支持nFormat = FORMAT_WAV, 即写成WAV文件格式
  313. // pConfig == NULL时,使用系统的Config
  314. // dwFlag, 为 PLAYTOFILE_xxxx,现主要用于标识是否写文件头
  315. ERRCODE TTSAPI jTTSPlayToFileEx(const char *pcszText, const char * pcszFileName, UINT nFormat, const JTTSCONFIG2 * pConfig,
  316. DWORD dwFlag, JTTSCALLBACKPROCEX lpfnCallbackEx, DWORD dwUserData);
  317. //------------------------------------------------------------------------
  318. // 设置函数
  319. ERRCODE TTSAPI jTTSSet2(const JTTSCONFIG2 * pConfig);
  320. ERRCODE TTSAPI jTTSGet2(JTTSCONFIG2 * pConfig);
  321. ERRCODE TTSAPI jTTSSetParam(JTTSPARAM nParam, DWORD dwValue);
  322. ERRCODE TTSAPI jTTSGetParam(JTTSPARAM nParam, DWORD *pdwValue);
  323. //-------------------------------------------------------------
  324. // 远程合成参数设置
  325. ERRCODE TTSAPI jTTSSetRemote(const JTTSREMOTECONFIG * pConfig);
  326. ERRCODE TTSAPI jTTSGetRemote(JTTSREMOTECONFIG * pConfig);
  327. ERRCODE TTSAPI jTTSSetRemoteParam(JTTSREMOTEPARAM nParam, DWORD dwValue);
  328. ERRCODE TTSAPI jTTSGetRemoteParam(JTTSREMOTEPARAM nParam, DWORD* pdwValue);
  329. //------------------------------------------------------------------------
  330. // 合成过程底层函数
  331. ERRCODE TTSAPI jTTSSessionStartEx(const char * pcszText, DWORD * pdwSessionID, UINT nFormat, const JTTSCONFIG2 *pConfig,
  332. int * pnBitsPerSample, int * pnSamplesPerSec);
  333. ERRCODE TTSAPI jTTSSessionRemoteConfig(DWORD dwSessionID, const JTTSREMOTECONFIG *pConfig);
  334. ERRCODE TTSAPI jTTSSessionGetDataEx(DWORD dwSessionID, int nIndex, unsigned char ** ppVoiceData, DWORD * pdwLen, int nReserveLen);
  335. ERRCODE TTSAPI jTTSSessionStop(DWORD dwSessionID);
  336. ERRCODE TTSAPI jTTSSessionGetReadBytes(DWORD dwSessionID, DWORD * pdwBytes);
  337. //负载均衡加密验证用
  338. ERRCODE TTSAPI jTTSLoadBalanceInit(char* pszIPnPort, BOOL bMainServer);
  339. ERRCODE TTSAPI jTTSLoadBalanceEnd();
  340. ERRCODE TTSAPI jTTSSessionStart(const char * pcszText, DWORD * pdwSessionID);
  341. ERRCODE TTSAPI jTTSSessionConfig2(DWORD dwSessionID, const JTTSCONFIG2 *pConfig, int nFormat, int * pnBitsPerSample, int * pnSamplesPerSec);
  342. #ifdef __cplusplus
  343. }
  344. #endif
  345. #pragma pack( pop, jtts_h )
  346. #endif // _JTTS_H_