Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

413 lines
11 KiB

  1. /*******************************************************************************
  2. * Data.cpp *
  3. *----------*
  4. * Description:
  5. * Constant data tables.
  6. *-------------------------------------------------------------------------------
  7. * Created By: mc Date: 03/12/99
  8. * Copyright (C) 1999 Microsoft Corporation
  9. * All Rights Reserved
  10. *
  11. *******************************************************************************/
  12. #include "stdafx.h"
  13. #include "AlloOps.h"
  14. #include "ms_entropicengine.h"
  15. #include "Frontend.h"
  16. #pragma warning(disable : 4305)
  17. #pragma warning(disable : 4309)
  18. #define PUNCT_GAIN 1.67
  19. #define PUNCT_GAIN1 1.33
  20. #define SUB1_GAIN 1.00
  21. #define SUB2_GAIN 1.00
  22. // I don't understand why I had to add "extern" here.
  23. // If YOU do, please explain here for the rest of us:
  24. extern const float g_BoundryStretchTbl[] =
  25. {
  26. 1.0, // NULL_BOUNDARY = 0, // no boundary
  27. PUNCT_GAIN1, // PHRASE_BOUNDARY, // comma
  28. PUNCT_GAIN, // EXCLAM_BOUNDARY, // exclamatory utterance terminator
  29. PUNCT_GAIN, // YN_QUEST_BOUNDARY, // yes-no question terminator
  30. PUNCT_GAIN, // WH_QUEST_BOUNDARY, // yes-no question terminator
  31. PUNCT_GAIN, // DECLAR_BOUNDARY, // declarative terminator
  32. SUB1_GAIN, // PAREN_L_BOUNDARY, // left paren
  33. SUB1_GAIN, // PAREN_R_BOUNDARY, // right paren
  34. SUB1_GAIN, // QUOTE_L_BOUNDARY, // left quote
  35. SUB1_GAIN, // QUOTE_R_BOUNDARY, // right quote
  36. SUB1_GAIN, // PHONE_BOUNDARY, // Telephone number
  37. 1.30, // TOD_BOUNDARY, // Time-of-day
  38. SUB2_GAIN, // SUB_BOUNDARY_1, // NOTE: always put these at the end
  39. SUB2_GAIN, // SUB_BOUNDARY_2,
  40. SUB2_GAIN, // SUB_BOUNDARY_3,
  41. SUB2_GAIN, // SUB_BOUNDARY_4,
  42. SUB2_GAIN, // SUB_BOUNDARY_5,
  43. SUB2_GAIN, // SUB_BOUNDARY_6,
  44. SUB2_GAIN, // NUMBER_BOUNDARY,
  45. 1.0, // TAIL_BOUNDARY
  46. };
  47. extern const float g_BoundryDurTbl[] =
  48. {
  49. 0.200, // NULL_BOUNDARY = 0, // no boundary
  50. 0.200, // PHRASE_BOUNDARY, // comma
  51. 0.300, // EXCLAM_BOUNDARY, // exclamatory utterance terminator
  52. 0.300, // YN_QUEST_BOUNDARY, // yes-no question terminator
  53. 0.300, // WH_QUEST_BOUNDARY, // wh question terminator
  54. 0.300, // DECLAR_BOUNDARY, // declarative terminator
  55. 0.200, // PAREN_L_BOUNDARY, // left paren
  56. 0.200, // PAREN_R_BOUNDARY, // right paren
  57. 0.200, // QUOTE_L_BOUNDARY, // left quote
  58. 0.200, // QUOTE_R_BOUNDARY, // right quote
  59. 0.100, // PHONE_BOUNDARY, // Telephone number
  60. 0.010, // TOD_BOUNDARY, // Time-of-day
  61. 0.200, // ELLIPSIS_BOUNDARY, // Ellipsis
  62. 0.001, // SUB_BOUNDARY_1, // NOTE: always put these at the end
  63. 0.001, // SUB_BOUNDARY_2,
  64. 0.001, // SUB_BOUNDARY_3,
  65. 0.001, // SUB_BOUNDARY_4,
  66. 0.001, // SUB_BOUNDARY_5,
  67. 0.001, // SUB_BOUNDARY_6,
  68. 0.001, // NUMBER_BOUNDARY,
  69. 0.001, // TAIL_BOUNDARY,
  70. };
  71. //-------------------------------------------
  72. // Translate -24 <--> +24 pitch control to
  73. // 24th root of two pitch scale
  74. //-------------------------------------------
  75. extern const float g_PitchScale[] =
  76. {
  77. 1.0,
  78. 1.0293022366434920287823718007739,
  79. 1.0594630943592952645618252949463,
  80. 1.0905077326652576592070106557607,
  81. 1.1224620483093729814335330496792,
  82. 1.1553526968722730102453370986819,
  83. 1.1892071150027210667174999705605,
  84. 1.2240535433046552391321602168255,
  85. 1.2599210498948731647672106072777,
  86. 1.2968395546510096659337541177919,
  87. 1.3348398541700343648308318811839,
  88. 1.3739536474580891017766557477492,
  89. 1.4142135623730950488016887242091,
  90. 1.4556531828421873543551155614673,
  91. 1.4983070768766814987992807320292,
  92. 1.5422108254079408236122918620901,
  93. 1.5874010519681994747517056392717,
  94. 1.6339154532410998436782440504114,
  95. 1.6817928305074290860622509524658,
  96. 1.7310731220122860533901844375553,
  97. 1.7817974362806786094804524111803,
  98. 1.8340080864093424634870831895876,
  99. 1.8877486253633869932838263133343,
  100. 1.9430638823072117374865788316417,
  101. 2.0
  102. };
  103. //-------------------------------------------
  104. // Translate -10 <--> +10 rate control to
  105. // 10th root of three rate scale
  106. //-------------------------------------------
  107. extern const float g_RateScale[] =
  108. {
  109. 1.0,
  110. 1.1161231740339044344426141383771,
  111. 1.2457309396155173259666803366403,
  112. 1.3903891703159093404852542946161,
  113. 1.5518455739153596742733451355167,
  114. 1.7320508075688772935274463415059,
  115. 1.9331820449317627515248789432662,
  116. 2.1576692799745930995549489159803,
  117. 2.4082246852806920462855086141912,
  118. 2.6878753795222865835819210737269,
  119. 3,
  120. 3.348369522101713303327842415131,
  121. 3.7371928188465519779000410099203,
  122. 4.1711675109477280214557628838472,
  123. 4.6555367217460790228200354065486,
  124. 5.1961524227066318805823390245155,
  125. 5.7995461347952882545746368297956,
  126. 6.4730078399237792986648467479371,
  127. 7.2246740558420761388565258425687,
  128. };
  129. extern const unsigned short g_Opcode_To_ASCII[] =
  130. {
  131. 'IY', 'IH', 'EH', 'AE', 'AA', 'AH', 'AO', 'UH', 'AX', 'ER',
  132. 'EY', 'AY', 'OY', 'AW', 'OW', 'UW',
  133. 'IX', '_', 'w', 'y',
  134. 'r', 'l', 'h', 'm', 'n', 'NG', 'f', 'v', 'TH', 'DH',
  135. 's', 'z', 'SH', 'ZH', 'p', 'b', 't', 'd', 'k', 'g',
  136. 'CH', 'JH', 'DX', '1', '2', '3', '/',
  137. 0x5C, '>', '<', '=', '_', '*', '$', ',', '.', '?',
  138. '!', '-', '#', '+', '~', '@', 0, 0, 0, 0
  139. };
  140. extern const unsigned long g_AlloFlags[] =
  141. {
  142. // IY
  143. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KYGLIDEENDF + KFRONTF,
  144. // IH
  145. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
  146. // EH
  147. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
  148. // AE
  149. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
  150. // AA
  151. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  152. // AH
  153. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  154. // AO
  155. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  156. // UH
  157. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  158. // AX
  159. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  160. // ER
  161. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
  162. // EY
  163. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KYGLIDEENDF + KFRONTF + KDIPHTHONGF,
  164. // AY
  165. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
  166. // OY
  167. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
  168. // AW
  169. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
  170. // OW
  171. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
  172. // UW
  173. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
  174. // IX
  175. KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
  176. // SIL
  177. KSONORANT1F,
  178. // W
  179. KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KLIQGLIDE2F,
  180. // Y
  181. KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KYGLIDESTARTF + KYGLIDEENDF,
  182. // R
  183. KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KLIQGLIDE2F,
  184. // L
  185. KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF,
  186. // H
  187. KSONORANT1F + KCONSONANTF,
  188. // M
  189. KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KLABIALF + KHASRELEASEF,
  190. // N
  191. KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KALVEOLARF + KHASRELEASEF,
  192. // NG
  193. KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KVELAR + KHASRELEASEF,
  194. // F
  195. KPLOSFRICF + KCONSONANTF + KLABIALF + KFRIC,
  196. // V
  197. KVOICEDF + KPLOSFRICF + KCONSONANTF + KLABIALF + KFRIC,
  198. // TH
  199. KPLOSFRICF + KCONSONANTF + KDENTALF + KFRIC,
  200. // DH
  201. KVOICEDF + KPLOSFRICF + KCONSONANTF + KDENTALF + KFRIC,
  202. // S
  203. KPLOSFRICF + KCONSONANTF + KALVEOLARF + KFRIC,
  204. // Z
  205. KVOICEDF + KPLOSFRICF + KCONSONANTF + KALVEOLARF + KFRIC,
  206. // SH
  207. KPLOSFRICF + KCONSONANTF + KPALATALF + KFRIC,
  208. // ZH
  209. KVOICEDF + KPLOSFRICF + KCONSONANTF + KPALATALF + KFRIC,
  210. // P
  211. KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KLABIALF + KHASRELEASEF,
  212. // B
  213. KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KLABIALF + KHASRELEASEF,
  214. // T
  215. KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KALVEOLARF + KHASRELEASEF,
  216. // D
  217. KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KALVEOLARF + KHASRELEASEF,
  218. // K
  219. KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KVELAR + KHASRELEASEF,
  220. // G
  221. KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KVELAR + KHASRELEASEF,
  222. // CH
  223. KPLOSFRICF + KCONSONANTF + KPLOSIVEF + KOBSTF + KPALATALF + KAFFRICATEF,
  224. // JH
  225. KVOICEDF + KPLOSFRICF + KCONSONANTF + KPLOSIVEF + KOBSTF + KPALATALF + KAFFRICATEF,
  226. // DX
  227. KVOICEDF + KPLOSFRICF + KCONSONANTF + KOBSTF,
  228. };
  229. extern const short g_IPAToAllo[] =
  230. {
  231. 28, // _IY_
  232. 27, // _IH_
  233. 21, // _EH_
  234. 11, // _AE_
  235. 10, // _AA_
  236. 12, // _AH_
  237. 13, // _AO_
  238. 43, // _UH_
  239. 15, // _AX_
  240. 22, // _ER_
  241. 23, // _EY_
  242. 16, // _AY_
  243. 36, // _OY_
  244. 14, // _AW_
  245. 35, // _OW_
  246. 44, // _UW_
  247. NO_IPA, // _IX_
  248. 7, // _SIL_
  249. 46, // _w_
  250. 47, // _y_
  251. 38, // _r_ 0x279
  252. 31, // _l_
  253. 26, // _h_ 0x68
  254. 32, // _m_
  255. 33, // _n_
  256. 34, // _NG_
  257. 24, // _f_
  258. 45, // _v_
  259. 42, // _TH_
  260. 20, // _DH_
  261. 39, // _s_
  262. 48, // _z_
  263. 40, // _SH_
  264. 49, // _ZH_
  265. 37, // _p_
  266. 17, // _b_
  267. 41, // _t_
  268. 19, // _d_
  269. 30, // _k_
  270. 25, // _g_ 0x67
  271. 18, // _CH_
  272. 29, // _JH_ 0x2a4
  273. NO_IPA, // _DX_ // @@@@
  274. 8, // _STRESS1_
  275. 9, // _STRESS2_
  276. NO_IPA, // _EMPHSTRESS_
  277. 1, // _SYLLABLE_
  278. };
  279. extern const short g_AlloToViseme[] =
  280. {
  281. SP_VISEME_6, // _IY_
  282. SP_VISEME_6, // _IH_
  283. SP_VISEME_4, // _EH_
  284. SP_VISEME_1, // _AE_
  285. SP_VISEME_2, // _AA_
  286. SP_VISEME_1, // _AH_
  287. SP_VISEME_3, // _AO_
  288. SP_VISEME_4, // _UH_
  289. SP_VISEME_1, // _AX_
  290. SP_VISEME_5, // _ER_
  291. SP_VISEME_4, // _EY_
  292. SP_VISEME_11, // _AY_
  293. SP_VISEME_10, // _OY_
  294. SP_VISEME_9, // _AW_
  295. SP_VISEME_8, // _OW_
  296. SP_VISEME_7, // _UW_
  297. SP_VISEME_6, // _IX_
  298. SP_VISEME_0, // _SIL_
  299. SP_VISEME_7, // _w_
  300. SP_VISEME_6, // _y_
  301. SP_VISEME_13, // _r_
  302. SP_VISEME_14, // _l_
  303. SP_VISEME_12, // _h_
  304. SP_VISEME_21, // _m_
  305. SP_VISEME_19, // _n_
  306. SP_VISEME_20, // _NG_
  307. SP_VISEME_18, // _f_
  308. SP_VISEME_18, // _v_
  309. SP_VISEME_17, // _TH_
  310. SP_VISEME_17, // _DH_
  311. SP_VISEME_15, // _s_
  312. SP_VISEME_15, // _z_
  313. SP_VISEME_16, // _SH_
  314. SP_VISEME_16, // _ZH_
  315. SP_VISEME_21, // _p_
  316. SP_VISEME_21, // _b_
  317. SP_VISEME_19, // _t_
  318. SP_VISEME_19, // _d_
  319. SP_VISEME_20, // _k_
  320. SP_VISEME_20, // _g_
  321. SP_VISEME_16, // _CH_
  322. SP_VISEME_16, // _JH_
  323. SP_VISEME_13, // _DX_ // @@@@
  324. };