中航光电的中间件仓库

jTTS_ML.h 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. #ifndef _JTTS_ML_H_
  2. #define _JTTS_ML_H_
  3. #pragma pack( push, jtts_ml_h )
  4. #pragma pack( 8 )
  5. #ifdef __cplusplus
  6. extern "C"
  7. {
  8. #endif
  9. #define TTSAPI __stdcall
  10. //ERRCODE
  11. typedef enum
  12. {
  13. ERR_NONE, // 0
  14. ERR_ALREADYINIT, // 1
  15. ERR_NOTINIT, // 2
  16. ERR_MEMORY, // 3
  17. ERR_INVALIDHWND, // 4
  18. ERR_INVALIDFUNC, // 5
  19. ERR_OPENLIB, // 6
  20. ERR_READLIB, // 7
  21. ERR_PLAYING, // 8
  22. ERR_DONOTHING, // 9
  23. ERR_INVALIDTEXT, // 10
  24. ERR_CREATEFILE, // 11
  25. ERR_WRITEFILE, // 12
  26. ERR_FORMAT, // 13
  27. ERR_INVALIDSESSION, // 14
  28. ERR_TOOMANYSESSION, // 15
  29. ERR_MORETEXT, // 16
  30. ERR_CONFIG, // 17
  31. ERR_OPENDEVICE, // 18
  32. ERR_RESETDEVICE, // 19
  33. ERR_PAUSEDEVICE, // 20
  34. ERR_RESTARTDEVICE, // 21
  35. ERR_STARTTHREAD, // 22
  36. ERR_BEGINOLE, // 23
  37. ERR_NOTSUPPORT, // 24
  38. ERR_SECURITY, // 25
  39. ERR_CONVERT, // 26
  40. ERR_PARAM, // 27
  41. ERR_INPROGRESS, // 28
  42. ERR_INITSOCK, // 29
  43. ERR_CREATESOCK, // 30
  44. ERR_CONNECTSOCK, // 31
  45. ERR_TOOMANYCON, // 32
  46. ERR_CONREFUSED, // 33
  47. ERR_SEND, // 34
  48. ERR_RECEIVE, // 35
  49. ERR_SERVERSHUTDOWN, // 36
  50. ERR_OUTOFTIME, // 37
  51. ERR_CONFIGTTS, // 38
  52. ERR_SYNTHTEXT, // 39
  53. ERR_CONFIGVERSION, // 40
  54. ERR_EXPIRED, // 41
  55. ERR_NEEDRESTART, // 42
  56. ERR_CODEPAGE, // 43
  57. ERR_ENGINE, // 44
  58. ERR_CREATEEVENT, // 45
  59. ERR_PLAYMODE, // 46
  60. ERR_OPENFILE, // 47
  61. ERR_USERABORT, // 48
  62. ERR_LICENSEFULL, // 49
  63. ERR_LICENSEFILEINVALID, // 50
  64. ERR_LICENSE, // 51
  65. ERR_LICENSEEXPIRED, // 52
  66. ERR_SSMLINVALID, // 53
  67. ERR_INVALIDPLAYHANDLE, // 54
  68. }ERRCODE;
  69. //---------------------------------------------------------------------------
  70. // 系统的设置选项
  71. //支持多语种
  72. //
  73. //这里列出的是系统内建的语言定义,需要安装相应音库才能真正支持,
  74. //但目前并非所有语言都有相应的音库
  75. //
  76. //对于这里没有列出的语言,将来也可能会发布相应的音库,同时会分配一个数值,
  77. //只要安装此音库后,就可以使用。对于没有列出的语言,如果想使用,可以直接使用数值
  78. //
  79. //可以通过Lang系列函数得到所有系统中定义的(包括将来扩展的)语言数值及其描述的信息
  80. //
  81. //对于系统中真正支持的语言,可以通过jTTS_GetVoiceCount, jTTS_GetVoiceAttribute函数
  82. //得到所有安装的音库,并从其属性中知道其语言
  83. //
  84. #define LANGUAGE_MANDARIN 0 // 汉语普通话
  85. #define LANGUAGE_CANTONESE 1 // 广东话
  86. #define LANGUAGE_CHINESE LANGUAGE_MANDARIN
  87. #define LANGUAGE_US_ENGLISH 10 // 美国英语
  88. #define LANGUAGE_BRITISH_ENGLISH 11 // 英国英语
  89. #define LANGUAGE_ENGLISH LANGUAGE_US_ENGLISH
  90. #define LANGUAGE_FRENCH 20 // 法语
  91. #define LANGUAGE_CANADIAN_FRENCH 21 // 加拿大法语
  92. #define LANGUAGE_SPANISH 30 // 西班牙语
  93. #define LANGUAGE_LATINAMERICAN_SPANISH 31 // 拉丁美洲西班牙语
  94. #define LANGUAGE_PORTUGUESE 40 // 葡萄牙语
  95. #define LANGUAGE_BRAZILIAN_PORTUGUESE 41 // 巴西葡萄牙语
  96. #define LANGUAGE_DUTCH 50 // 荷兰语
  97. #define LANGUAGE_BELGIAN_DUTCH 51 // 比利时荷兰语
  98. #define LANGUAGE_GERMAN 60 // 德语
  99. #define LANGUAGE_ITALIAN 70 // 意大利语
  100. #define LANGUAGE_SWEDISH 80 // 瑞典语
  101. #define LANGUAGE_NORWEGIAN 90 // 挪威语
  102. #define LANGUAGE_DANISH 100 // 丹麦语
  103. #define LANGUAGE_POLISH 110 // 波兰语
  104. #define LANGUAGE_GREEK 120 // 希腊语
  105. #define LANGUAGE_HUNGARIAN 130 // 匈牙利语
  106. #define LANGUAGE_CZECH 140 // 捷克语
  107. #define LANGUAGE_TURKISH 150 // 土耳其语
  108. #define LANGUAGE_RUSSIAN 500 // 俄语
  109. #define LANGUAGE_ARABIC 600 // 阿拉伯语
  110. #define LANGUAGE_JAPANESE 700 // 日语
  111. #define LANGUAGE_KOREAN 710 // 韩语
  112. #define LANGUAGE_VIETNAMESE 720 // 越南语
  113. #define LANGUAGE_MALAY 730 // 马来语
  114. #define LANGUAGE_THAI 740 // 泰语
  115. //支持多领域
  116. //
  117. //这里列出的是系统内建的领域定义,需要安装相应音库的资源包才能真正支持。
  118. //
  119. //对于这里没有列出的领域,将来也可能会发布相应的资源包,同时会分配一个数值,
  120. //只要安装此资源包后,就可以使用。对于没有列出的领域,如果想使用,可以直接使用数值
  121. //
  122. //可以通过Domain系列函数得到所有系统中定义的(包括将来扩展的)领域数值及其描述的信息
  123. //
  124. //对于系统中真正支持的领域,可以通过jTTS_GetDomainCount, jTTS_GetDomainAttribute函数
  125. //得到所有安装的领域
  126. #define DOMAIN_COMMON 0 // 通用领域,新闻
  127. #define DOMAIN_FINANCE 1 // 金融证券
  128. #define DOMAIN_WEATHER 2 // 天气预报
  129. #define DOMAIN_SPORTS 3 // 体育赛事
  130. #define DOMAIN_TRAFFIC 4 // 公交信息
  131. #define DOMAIN_TRAVEL 5 // 旅游餐饮
  132. #define DOMAIN_CARBORNE 6 //汽运
  133. #define DOMAIN_QUEUE 7 //排队
  134. #define DOMAIN_SONG 8 //点歌
  135. #define DOMAIN_INSURANCE 9 //保险
  136. #define DOMAIN_VOYAGE 10 //航空
  137. #define DOMAIN_REVENUE 11 //税务
  138. #define DOMAIN_ELECPOWER 12 //电力
  139. #define DOMAIN_MESSAGE 13 //短信
  140. #define DOMAIN_FINAINSU 14 //金融保险
  141. #define DOMAIN_TELECOM 15 //电信
  142. #define DOMAIN_CUSTOM 28 // 一般定制领域
  143. #define DOMAIN_MIN 0
  144. #define DOMAIN_MAX 31
  145. //支持的CODEPAGE
  146. #define CODEPAGE_GB 936 // 包括GB18030, GBK, GB2312
  147. #define CODEPAGE_BIG5 950
  148. #define CODEPAGE_SHIFTJIS 932
  149. #define CODEPAGE_KCS 949
  150. #define CODEPAGE_ISO8859_1 1252
  151. #define CODEPAGE_UNICODE 1200
  152. #define CODEPAGE_UNICODE_BIGE 1201 // BIG Endian
  153. #define CODEPAGE_UTF8 65001
  154. // Supported TAG
  155. #define TAG_AUTO 0x00 // Autocheck, SSML > S3ML > JTTS > NONE
  156. #define TAG_JTTS 0x01 /* 仅处理含有jTTS 3.0支持的TAG: \read=\ */
  157. #define TAG_SSML 0x02 // Treat as Speech Synthesis Markup Language
  158. #define TAG_NONE 0x03 // No TAG, Treat as plain text
  159. #define TAG_S3ML 0x04 // Treat as SinoVoice Speech Synthesis Markup Language
  160. //DigitMode
  161. #define DIGIT_AUTO_NUMBER 0
  162. #define DIGIT_TELEGRAM 1
  163. #define DIGIT_NUMBER 2
  164. #define DIGIT_AUTO_TELEGRAM 3
  165. #define DIGIT_AUTO DIGIT_AUTO_NUMBER
  166. // PuncMode
  167. #define PUNC_OFF 0 /* 不读符号,自动判断回车换行是否分隔符*/
  168. #define PUNC_ON 1 /* 读符号, 自动判断回车换行是否分隔符*/
  169. #define PUNC_OFF_RTN 2 /* 不读符号,强制将回车换行作为分隔符*/
  170. #define PUNC_ON_RTN 3 /* 读符号, 强制将回车换行作为分隔符*/
  171. // EngMode
  172. #define ENG_AUTO 0 /* 自动方式 */
  173. #define ENG_SAPI 1 /* 强制采用英文读法 */
  174. #define ENG_LETTER 2 /* 强制单字母方式 */
  175. #define ENG_LETTER_PHRASE 3 /* 强制采用字母+自录音词汇的方式 */
  176. //Gender
  177. #define GENDER_FEMALE 0
  178. #define GENDER_MALE 1
  179. #define GENDER_NEUTRAL 2
  180. //AGE
  181. #define AGE_BABY 0 //0 - 3
  182. #define AGE_CHILD 1 //3 - 12
  183. #define AGE_YOUNG 2 //12 - 18
  184. #define AGE_ADULT 3 //18 - 60
  185. #define AGE_OLD 4 //60 -
  186. //PITCH
  187. #define PITCH_MIN 0
  188. #define PITCH_MAX 9
  189. //VOLUME
  190. #define VOLUME_MIN 0
  191. #define VOLUME_MAX 9
  192. //SPEED
  193. #define SPEED_MIN 0
  194. #define SPEED_MAX 9
  195. //AUDIOVOLUME
  196. #define AUDIOVOLUME_MIN 0
  197. #define AUDIOVOLUME_MAX 100
  198. //BACKAUDIOFLAG
  199. #define BACKAUDIOFLAG_REPEAT 0x01
  200. #define BACKAUDIOFLAG_DEFAULT 0x00
  201. //BACKAUDIO
  202. #define BACKAUDIO_NONE 0 // 没有背景音乐
  203. #define BACKAUDIO_MIN 1 // 最小的背景音乐序号
  204. #define BACKAUDIO_MAX 10000 // 最大的背景音乐序号
  205. //VOICESYTLE
  206. #define VOICESTYLE_CADENCE 0 // 抑扬顿挫
  207. #define VOICESTYLE_FLAT 1 // 平稳庄重
  208. //VOICEBUFSIZE
  209. #define VOICEBUFSIZE_DEFAULT 0 // Default: 128K
  210. #define VOICEBUFSIZE_MIN 16 // 16K
  211. #define VOICEBUFSIZE_MAX 8192 // 8M
  212. //INSERTINFOSIZE
  213. #define INSERTINFOSIZE_DEFAULT 0 // Default: 100
  214. #define INSERTINFOSIZE_MIN 1
  215. #define INSERTINFOSIZE_MAX 1000
  216. //---------------------------------------------------------------------------
  217. //jTTS_Play状态
  218. #define STATUS_NOTINIT 0
  219. #define STATUS_READING 1
  220. #define STATUS_PAUSE 2
  221. #define STATUS_IDLE 3
  222. //jTTS_PlayToFile的文件格式
  223. #define FORMAT_WAV 0 // PCM Native (和音库一致,目前为16KHz, 16Bit)
  224. #define FORMAT_VOX_6K 1 // OKI ADPCM, 6KHz, 4bit (Dialogic Vox)
  225. #define FORMAT_VOX_8K 2 // OKI ADPCM, 8KHz, 4bit (Dialogic Vox)
  226. #define FORMAT_ALAW_8K 3 // A律, 8KHz, 8Bit
  227. #define FORMAT_uLAW_8K 4 // u律, 8KHz, 8Bit
  228. #define FORMAT_WAV_8K8B 5 // PCM, 8KHz, 8Bit
  229. #define FORMAT_WAV_8K16B 6 // PCM, 8KHz, 16Bit
  230. #define FORMAT_WAV_16K8B 7 // PCM, 16KHz, 8Bit
  231. #define FORMAT_WAV_16K16B 8 // PCM, 16KHz, 16Bit
  232. #define FORMAT_WAV_11K8B 9 // PCM, 11.025KHz, 8Bit
  233. #define FORMAT_WAV_11K16B 10 // PCM, 11.025KHz, 16Bit
  234. #define FORMAT_FIRST 0
  235. #define FORMAT_LAST 10
  236. // jTTS_Play / jTTS_PlayToFile / jTTS_SessionStart 函数支持的dwFlag定义
  237. // 此项仅对jTTS_PlayToFile适用
  238. #define PLAYTOFILE_DEFAULT 0x0000 //默认值,写文件时只增加FORMAT_WAV_...格式的文件头
  239. #define PLAYTOFILE_NOHEAD 0x0001 //所有的格式都不增加文件头
  240. #define PLAYTOFILE_ADDHEAD 0x0002 //增加FORMAT_WAV_...格式和FORMAT_ALAW_8K,FORMAT_uLAW_8K格式的文件头
  241. #define PLAYTOFILE_MASK 0x000F
  242. // 此项仅对jTTS_Play适用
  243. #define PLAY_RETURN 0x0000 // 如果正在播放,返回错误
  244. #define PLAY_INTERRUPT 0x0010 // 如果正在播放,打断原来的播放,立即播放新的内容
  245. #define PLAY_MASK 0x00F0
  246. // 播放的内容
  247. #define PLAYCONTENT_TEXT 0x0000 // 播放内容为文本
  248. #define PLAYCONTENT_TEXTFILE 0x0100 // 播放内容为文本文件
  249. #define PLAYCONTENT_AUTOFILE 0x0200 // 播放内容为文件,根据后缀名采用外界Filter DLL抽取
  250. // 无法判断的当作文本文件
  251. #define PLAYCONTENT_MASK 0x0F00
  252. // 播放的模式,同时用于SessionStart
  253. #define PLAYMODE_DEFAULT 0x0000 // 在jTTS_Play下缺省异步,在jTTS_PlayToFile下缺省同步
  254. // jTTS_SessionStart下为主动获取数据方式
  255. #define PLAYMODE_ASYNC 0x1000 // 异步播放,函数立即退出
  256. #define PLAYMODE_SYNC 0x2000 // 同步播放,播放完成后退出
  257. #define PLAYMODE_MASK 0xF000
  258. // jTTS_FindVoice返回的匹配级别
  259. #define MATCH_LANGUAGE 0 // 满足LANGUAGE,
  260. #define MATCH_GENDER 1 // 满足LANGUAGE, GENDER
  261. #define MATCH_AGE 2 // 满足LANGUAGE, GENDER, AGE
  262. #define MATCH_NAME 3 // 满足LANGUAGE, GENDER,AGE,NAME
  263. #define MATCH_DOMAIN 4 // 满足LANGUAGE, GENDER,AGE,NAME, DOMAIN,也即满足所有条件
  264. #define MATCH_ALL 4 // 满足所有条件
  265. // InsertInfo信息
  266. #define INFO_MARK 0
  267. #define INFO_VISEME 1
  268. //各种信息串的长度
  269. #define VOICENAME_LEN 32
  270. #define VOICEID_LEN 40
  271. #define VENDOR_LEN 32
  272. #define DLLNAME_LEN 256
  273. #define ATTRNAME_LEN 32
  274. #define XMLLANG_LEN 256
  275. //JTTS_PARAM
  276. typedef enum
  277. {
  278. PARAM_CODEPAGE, // CODEPAGE_xxx
  279. PARAM_VOICEID, // Voice ID
  280. PARAM_PITCH, // PITCH_MIN - PITCH_MAX
  281. PARAM_VOLUME, // VOLUME_MIN - VOLUME_MAX
  282. PARAM_SPEED, // SPEED_MIN - SPEED_MAX
  283. PARAM_PUNCMODE, // PUNC_xxx
  284. PARAM_DIGITMODE, // DIGIT_xxx
  285. PARAM_ENGMODE, // ENG_xxx
  286. PARAM_TAGMODE, // TAG_xxx
  287. PARAM_DOMAIN, // DOMAIN_xxx
  288. PARAM_TRYTIMES, // 0-100
  289. PARAM_IDLETIME, // 0-60 (s), default 10, 0 means 无限等待
  290. PARAM_LOADBALANCE, // TRUE, FALSE
  291. PARAM_VOICESTYLE, // VOICESTYLE_CADENCE, VOICESTYLE_FLAT
  292. PARAM_BACKAUDIO, // BACKAUDIO_NONE, BACKAUDIO_MIN - BACKAUDIO_MAX
  293. PARAM_BACKAUDIOVOLUME, // AUDIOVOLUME_MIN - AUDIOVOLUME_MAX
  294. PARAM_BACKAUDIOFLAG, // BACKAUDIOFLAG_xxx
  295. PARAM_VOICEBUFSIZE, // VOICEBUFSIZE_DEFAULT, or n (K)
  296. PARAM_INSERTINFOSIZE, // INSERTINFOSIZE_DEFAULT, or n
  297. }
  298. JTTS_PARAM;
  299. //JTTS_CONFIG
  300. #define JTTS_VERSION4 0x0004 // version 4.0
  301. typedef struct JTTS_CONFIG_T
  302. {
  303. WORD wVersion; // JTTS_VERSION4
  304. WORD nCodePage;
  305. char szVoiceID[VOICEID_LEN]; // 使用的音色
  306. short nDomain;
  307. short nPitch;
  308. short nVolume;
  309. short nSpeed;
  310. short nPuncMode;
  311. short nDigitMode;
  312. short nEngMode;
  313. short nTagMode;
  314. short nTryTimes; // 重试次数,此成员仅用于远程合成
  315. short nIdleTime; //////////////////////////////////////////
  316. BOOL bLoadBalance; // 负载平衡,此成员仅用于远程合成
  317. short nVoiceStyle; // 朗读风格
  318. short nBackAudio; // BACKAUDIO_NONE: 无背景音乐,BACKAUDIO_MIN-BACKAUDIO_MAX: 背景音乐序号,在资源管理中心"录音管理器"中定义
  319. short nBackAudioVolume; // 背景音乐的音量
  320. WORD wBackAudioFlag; // 背景音乐的属性
  321. short nVoiceBufSize; // 设置内部缓冲区的大小
  322. short nInsertInfoSize; // 缓冲区中插入信息的个数
  323. short nReserved[6]; // 保留
  324. }
  325. JTTS_CONFIG;
  326. //JTTS_VOICEATTRIBUTE
  327. typedef struct JTTS_VOICEATTRIBUTE_T
  328. {
  329. char szName[VOICENAME_LEN]; // 只能为英文名称
  330. char szVoiceID[VOICEID_LEN]; // 音色的唯一标识
  331. short nGender; // GENDER_xxx
  332. short nAge; // AGE_xx
  333. DWORD dwDomainArray; // 由低位向高位,分别表示DOMAIN_xxx
  334. DWORD nLanguage; // 支持的语言, LANGUAGE_xxx
  335. char szVendor[VENDOR_LEN]; // 提供厂商
  336. char szDLLName[DLLNAME_LEN]; // 对应的DLL
  337. DWORD dwVersionMS; // 引擎的版本号,对应"3.75.0.31"的前两节
  338. // e.g. 0x00030075 = "3.75"
  339. DWORD dwVersionLS; // e.g. 0x00000031 = "0.31"
  340. }
  341. JTTS_VOICEATTRIBUTE;
  342. // 插入信息
  343. typedef struct INSERTINFO_T
  344. {
  345. int nTag; // 有二种:INFO_MARK, INFO_VISEME
  346. DWORD dwValue; // 具体信息:
  347. // MARK时,高24位mark文本偏移,低8位文本长度
  348. // VISEME时,表示唇型
  349. DWORD dwBytes; // 在语音流的什么地方插入,必须按顺序增加
  350. }
  351. INSERTINFO;
  352. typedef struct JTTS_LANGATTRIBUTE_T
  353. {
  354. int nValue;
  355. char szName[ATTRNAME_LEN];
  356. char szEngName[ATTRNAME_LEN];
  357. char szXmlLang[XMLLANG_LEN];
  358. }
  359. JTTS_LANGATTRIBUTE;
  360. typedef struct JTTS_DOMAINATTRIBUTE_T
  361. {
  362. int nValue;
  363. char szName[ATTRNAME_LEN];
  364. char szEngName[ATTRNAME_LEN];
  365. }
  366. JTTS_DOMAINATTRIBUTE;
  367. typedef struct JTTS_COUNTERS_T
  368. {
  369. int nSession;
  370. }
  371. JTTS_COUNTERS;
  372. // 系统通知消息及回调函数部分
  373. // 系统通知消息
  374. #define WM_JTTS_NOTIFY (WM_USER + 0x4999)
  375. // 回调函数
  376. typedef BOOL (TTSAPI * JTTS_CALLBACKPROC)(WORD wParam, LONG lParam, DWORD dwUserData);
  377. typedef BOOL (TTSAPI * JTTS_DATACALLBACKPROC)(DWORD dwSessionID, WORD wParam, LONG lParam,
  378. unsigned char * pVoiceData, DWORD dwLen,
  379. INSERTINFO* pInsertInfo, int nInsertInfo,
  380. DWORD dwUserData);
  381. // WM_JTTS_NOTIFY / JTTS_CALLBACKPROC / JTTS_DATACALLBACKPROC中wParam的定义
  382. #define NOTIFY_BEGIN 0 // lParam: 没有使用
  383. #define NOTIFY_END 1 // lParam: 没有使用
  384. #define NOTIFY_SENTEND 2 // lParam: 已经读完的字节数
  385. #define NOTIFY_SENTBEGIN 3 // lParam: 将要读到的位置(以字节数计算)
  386. #define NOTIFY_MARK 4 // lParam: 标记Mark串的位置和长度, 参考宏GETMARKOFFSET和GETMARKLEN
  387. #define NOTIFY_VISEME 5 // lParam: 标记唇型信息,现版本中未使用
  388. #define NOTIFY_CHANGECONFIG 6 // 系统主动使用与传入Config不同的配置
  389. #define NOTIFY_DATA 7 // 仅用于 JTTS_DATACALLBACKPROC,传递合成数据和InsertInfo信息
  390. // lParam not use; dwLen是pVoiceData长度; pVoiceData语音数据缓冲;
  391. // nInsertInfo, pInsertInfo是插入数据的数目和内容
  392. // 为和老版本兼容而保留
  393. #define NOTIFY_PROGRESS 2
  394. #define NOTIFY_PROGRESS2 3
  395. // 通过NOTIFY_MARK的lParam得到具体的Mark String的偏移量和长度
  396. #define GETMARKOFFSET(lParam) (lParam >> 8)
  397. #define GETMARKLEN(lParam) (lParam & 0xFF)
  398. //------------------------------------------------------------------------
  399. // 系统函数
  400. ERRCODE TTSAPI jTTS_Init(const char * pcszLibPath, const char * pcszSerialNo);
  401. ERRCODE TTSAPI jTTS_End();
  402. int TTSAPI jTTS_GetLangCount();
  403. ERRCODE TTSAPI jTTS_GetLangAttribute(int nIndex, JTTS_LANGATTRIBUTE * pAttribute);
  404. ERRCODE TTSAPI jTTS_GetLangAttributeByValue(int nValue, JTTS_LANGATTRIBUTE * pAttribute);
  405. int TTSAPI jTTS_GetDomainCount();
  406. ERRCODE TTSAPI jTTS_GetDomainAttribute(int nIndex, JTTS_DOMAINATTRIBUTE * pAttribute);
  407. ERRCODE TTSAPI jTTS_GetDomainAttributeByValue(int nValue, JTTS_DOMAINATTRIBUTE * pAttribute);
  408. //-------------------------------------------------------------
  409. // 音库信息函数
  410. int TTSAPI jTTS_GetVoiceCount();
  411. ERRCODE TTSAPI jTTS_GetVoiceAttribute(int nIndex, JTTS_VOICEATTRIBUTE * pAttribute);
  412. ERRCODE TTSAPI jTTS_GetVoiceAttributeByID(const char *pszVoiceID, JTTS_VOICEATTRIBUTE * pAttribute);
  413. BOOL TTSAPI jTTS_IsVoiceSupported(const char *pszVoiceID);
  414. ERRCODE TTSAPI jTTS_FindVoice(int nLanguage, int nGender, int nAge, char * szName, int nDomain,
  415. char * pszVoiceID, WORD * pwMatchFlag);
  416. ERRCODE TTSAPI jTTS_PreLoad (const char *pszVoiceID);
  417. //------------------------------------------------------------------------
  418. // 设置函数
  419. ERRCODE TTSAPI jTTS_Set(const JTTS_CONFIG * pConfig);
  420. ERRCODE TTSAPI jTTS_Get(JTTS_CONFIG * pConfig);
  421. ERRCODE TTSAPI jTTS_SetParam(JTTS_PARAM nParam, DWORD dwValue);
  422. ERRCODE TTSAPI jTTS_GetParam(JTTS_PARAM nParam, DWORD *pdwValue);
  423. //------------------------------------------------------------------------
  424. // 播放函数
  425. ERRCODE TTSAPI jTTS_SetPlay(UINT uDeviceID, HWND hwnd, JTTS_CALLBACKPROC lpfnCallback, DWORD dwUserData);
  426. ERRCODE TTSAPI jTTS_Play(const char * pcszText, DWORD dwFlag);
  427. ERRCODE TTSAPI jTTS_Stop();
  428. ERRCODE TTSAPI jTTS_Pause();
  429. ERRCODE TTSAPI jTTS_Resume();
  430. int TTSAPI jTTS_GetStatus();
  431. //------------------------------------------------------------------------
  432. // 播放到文件函数
  433. ERRCODE TTSAPI jTTS_PlayToFile(const char *pcszText, const char * pcszFileName,
  434. UINT nFormat, const JTTS_CONFIG * pConfig,
  435. DWORD dwFlag, JTTS_CALLBACKPROC lpfnCallback,
  436. DWORD dwUserData);
  437. //-------------------------------------------------------------
  438. // 合成过程底层函数
  439. ERRCODE TTSAPI jTTS_SessionStart(const char * pcszText, DWORD * pdwSessionID,
  440. UINT nFormat, const JTTS_CONFIG *pConfig, DWORD dwFlag,
  441. int * pnBitsPerSample, int * pnSamplesPerSec);
  442. ERRCODE TTSAPI jTTS_SessionGetData(DWORD dwSessionID, int nBufIndex, unsigned char ** ppVoiceData,
  443. DWORD * pdwLen, int nReserveLen, INSERTINFO** ppInsertInfo,
  444. int* pnInsertInfo);
  445. ERRCODE TTSAPI jTTS_SessionStop(DWORD dwSessionID);
  446. ERRCODE TTSAPI jTTS_SessionGetReadBytes(DWORD dwSessionID, DWORD * pdwBytes);
  447. ERRCODE TTSAPI jTTS_SessionExec(DWORD dwSessionID, JTTS_DATACALLBACKPROC lpfnDataCallback, DWORD dwUserData);
  448. #ifdef __cplusplus
  449. }
  450. #endif
  451. #pragma pack( pop, jtts_ml_h )
  452. #endif //_JTTS_ML_H_