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.
 
 
 
 
 
 

418 lines
11 KiB

/*******************************************************************************
* Data.cpp *
*----------*
* Description:
* Constant data tables.
*-------------------------------------------------------------------------------
* Created By: mc Date: 03/12/99
* Copyright (C) 1999 Microsoft Corporation
* All Rights Reserved
*
*******************************************************************************/
#ifndef AlloOps_H
#include "AlloOps.h"
#endif
#ifndef __spttseng_h__
#include "spttseng.h"
#endif
#ifndef Frontend_H
#include "Frontend.h"
#endif
#pragma warning(disable : 4305)
#pragma warning(disable : 4309)
#define PUNCT_GAIN 1.67
#define PUNCT_GAIN1 1.33
#define SUB1_GAIN 1.00
#define SUB2_GAIN 1.00
// I don't understand why I had to add "extern" here.
// If YOU do, please explain here for the rest of us:
extern const float g_BoundryStretchTbl[] =
{
1.0, // NULL_BOUNDARY = 0, // no boundary
PUNCT_GAIN1, // PHRASE_BOUNDARY, // comma
PUNCT_GAIN, // EXCLAM_BOUNDARY, // exclamatory utterance terminator
PUNCT_GAIN, // YN_QUEST_BOUNDARY, // yes-no question terminator
PUNCT_GAIN, // WH_QUEST_BOUNDARY, // yes-no question terminator
PUNCT_GAIN, // DECLAR_BOUNDARY, // declarative terminator
SUB1_GAIN, // PAREN_L_BOUNDARY, // left paren
SUB1_GAIN, // PAREN_R_BOUNDARY, // right paren
SUB1_GAIN, // QUOTE_L_BOUNDARY, // left quote
SUB1_GAIN, // QUOTE_R_BOUNDARY, // right quote
SUB1_GAIN, // PHONE_BOUNDARY, // Telephone number
1.30, // TOD_BOUNDARY, // Time-of-day
SUB2_GAIN, // SUB_BOUNDARY_1, // NOTE: always put these at the end
SUB2_GAIN, // SUB_BOUNDARY_2,
SUB2_GAIN, // SUB_BOUNDARY_3,
SUB2_GAIN, // SUB_BOUNDARY_4,
SUB2_GAIN, // SUB_BOUNDARY_5,
SUB2_GAIN, // SUB_BOUNDARY_6,
SUB2_GAIN, // NUMBER_BOUNDARY,
1.0, // TAIL_BOUNDARY
};
extern const float g_BoundryDurTbl[] =
{
0.200, // NULL_BOUNDARY = 0, // no boundary
0.200, // PHRASE_BOUNDARY, // comma
0.300, // EXCLAM_BOUNDARY, // exclamatory utterance terminator
0.300, // YN_QUEST_BOUNDARY, // yes-no question terminator
0.300, // WH_QUEST_BOUNDARY, // wh question terminator
0.300, // DECLAR_BOUNDARY, // declarative terminator
0.200, // PAREN_L_BOUNDARY, // left paren
0.200, // PAREN_R_BOUNDARY, // right paren
0.200, // QUOTE_L_BOUNDARY, // left quote
0.200, // QUOTE_R_BOUNDARY, // right quote
0.100, // PHONE_BOUNDARY, // Telephone number
0.010, // TOD_BOUNDARY, // Time-of-day
0.200, // ELLIPSIS_BOUNDARY, // Ellipsis
0.001, // SUB_BOUNDARY_1, // NOTE: always put these at the end
0.001, // SUB_BOUNDARY_2,
0.001, // SUB_BOUNDARY_3,
0.001, // SUB_BOUNDARY_4,
0.001, // SUB_BOUNDARY_5,
0.001, // SUB_BOUNDARY_6,
0.001, // NUMBER_BOUNDARY,
0.001, // TAIL_BOUNDARY,
};
//-------------------------------------------
// Translate -24 <--> +24 pitch control to
// 24th root of two pitch scale
//-------------------------------------------
extern const float g_PitchScale[] =
{
1.0,
1.0293022366434920287823718007739,
1.0594630943592952645618252949463,
1.0905077326652576592070106557607,
1.1224620483093729814335330496792,
1.1553526968722730102453370986819,
1.1892071150027210667174999705605,
1.2240535433046552391321602168255,
1.2599210498948731647672106072777,
1.2968395546510096659337541177919,
1.3348398541700343648308318811839,
1.3739536474580891017766557477492,
1.4142135623730950488016887242091,
1.4556531828421873543551155614673,
1.4983070768766814987992807320292,
1.5422108254079408236122918620901,
1.5874010519681994747517056392717,
1.6339154532410998436782440504114,
1.6817928305074290860622509524658,
1.7310731220122860533901844375553,
1.7817974362806786094804524111803,
1.8340080864093424634870831895876,
1.8877486253633869932838263133343,
1.9430638823072117374865788316417,
2.0
};
//-------------------------------------------
// Translate -10 <--> +10 rate control to
// 10th root of three rate scale
//-------------------------------------------
extern const float g_RateScale[] =
{
1.0,
1.1161231740339044344426141383771,
1.2457309396155173259666803366403,
1.3903891703159093404852542946161,
1.5518455739153596742733451355167,
1.7320508075688772935274463415059,
1.9331820449317627515248789432662,
2.1576692799745930995549489159803,
2.4082246852806920462855086141912,
2.6878753795222865835819210737269,
3,
3.348369522101713303327842415131,
3.7371928188465519779000410099203,
4.1711675109477280214557628838472,
4.6555367217460790228200354065486,
5.1961524227066318805823390245155,
5.7995461347952882545746368297956,
6.4730078399237792986648467479371,
7.2246740558420761388565258425687,
};
extern const unsigned short g_Opcode_To_ASCII[] =
{
'IY', 'IH', 'EH', 'AE', 'AA', 'AH', 'AO', 'UH', 'AX', 'ER',
'EY', 'AY', 'OY', 'AW', 'OW', 'UW',
'IX', '_', 'w', 'y',
'r', 'l', 'h', 'm', 'n', 'NG', 'f', 'v', 'TH', 'DH',
's', 'z', 'SH', 'ZH', 'p', 'b', 't', 'd', 'k', 'g',
'CH', 'JH', 'DX', '1', '2', '3', '/',
0x5C, '>', '<', '=', '_', '*', '$', ',', '.', '?',
'!', '-', '#', '+', '~', '@', 0, 0, 0, 0
};
extern const unsigned long g_AlloFlags[] =
{
// IY
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KYGLIDEENDF + KFRONTF,
// IH
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
// EH
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
// AE
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
// AA
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// AH
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// AO
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// UH
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// AX
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// ER
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F,
// EY
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KYGLIDEENDF + KFRONTF + KDIPHTHONGF,
// AY
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
// OY
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
// AW
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
// OW
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
// UW
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KDIPHTHONGF,
// IX
KVOWELF + KVOICEDF + KVOWEL1F + KSONORANTF + KSONORANT1F + KFRONTF,
// SIL
KSONORANT1F,
// W
KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KLIQGLIDE2F,
// Y
KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KYGLIDESTARTF + KYGLIDEENDF,
// R
KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF + KLIQGLIDE2F,
// L
KVOICEDF + KSONORANTF + KSONORANT1F + KCONSONANTF + KLIQGLIDEF + KSONORCONSONF,
// H
KSONORANT1F + KCONSONANTF,
// M
KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KLABIALF + KHASRELEASEF,
// N
KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KALVEOLARF + KHASRELEASEF,
// NG
KVOICEDF + KSONORANTF + KSONORANT1F + KNASALF + KCONSONANTF + KSONORCONSONF + KOBSTF + KVELAR + KHASRELEASEF,
// F
KPLOSFRICF + KCONSONANTF + KLABIALF + KFRIC,
// V
KVOICEDF + KPLOSFRICF + KCONSONANTF + KLABIALF + KFRIC,
// TH
KPLOSFRICF + KCONSONANTF + KDENTALF + KFRIC,
// DH
KVOICEDF + KPLOSFRICF + KCONSONANTF + KDENTALF + KFRIC,
// S
KPLOSFRICF + KCONSONANTF + KALVEOLARF + KFRIC,
// Z
KVOICEDF + KPLOSFRICF + KCONSONANTF + KALVEOLARF + KFRIC,
// SH
KPLOSFRICF + KCONSONANTF + KPALATALF + KFRIC,
// ZH
KVOICEDF + KPLOSFRICF + KCONSONANTF + KPALATALF + KFRIC,
// P
KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KLABIALF + KHASRELEASEF,
// B
KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KLABIALF + KHASRELEASEF,
// T
KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KALVEOLARF + KHASRELEASEF,
// D
KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KALVEOLARF + KHASRELEASEF,
// K
KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KVELAR + KHASRELEASEF,
// G
KVOICEDF + KPLOSFRICF + KSTOPF + KCONSONANTF + KPLOSIVEF + KOBSTF + KVELAR + KHASRELEASEF,
// CH
KPLOSFRICF + KCONSONANTF + KPLOSIVEF + KOBSTF + KPALATALF + KAFFRICATEF,
// JH
KVOICEDF + KPLOSFRICF + KCONSONANTF + KPLOSIVEF + KOBSTF + KPALATALF + KAFFRICATEF,
// DX
KVOICEDF + KPLOSFRICF + KCONSONANTF + KOBSTF,
};
extern const short g_IPAToAllo[] =
{
28, // _IY_
27, // _IH_
21, // _EH_
11, // _AE_
10, // _AA_
12, // _AH_
13, // _AO_
43, // _UH_
15, // _AX_
22, // _ER_
23, // _EY_
16, // _AY_
36, // _OY_
14, // _AW_
35, // _OW_
44, // _UW_
NO_IPA, // _IX_
7, // _SIL_
46, // _w_
47, // _y_
38, // _r_ 0x279
31, // _l_
26, // _h_ 0x68
32, // _m_
33, // _n_
34, // _NG_
24, // _f_
45, // _v_
42, // _TH_
20, // _DH_
39, // _s_
48, // _z_
40, // _SH_
49, // _ZH_
37, // _p_
17, // _b_
41, // _t_
19, // _d_
30, // _k_
25, // _g_ 0x67
18, // _CH_
29, // _JH_ 0x2a4
NO_IPA, // _DX_ // @@@@
8, // _STRESS1_
9, // _STRESS2_
NO_IPA, // _EMPHSTRESS_
1, // _SYLLABLE_
};
extern const short g_AlloToViseme[] =
{
SP_VISEME_6, // _IY_
SP_VISEME_6, // _IH_
SP_VISEME_4, // _EH_
SP_VISEME_1, // _AE_
SP_VISEME_2, // _AA_
SP_VISEME_1, // _AH_
SP_VISEME_3, // _AO_
SP_VISEME_4, // _UH_
SP_VISEME_1, // _AX_
SP_VISEME_5, // _ER_
SP_VISEME_4, // _EY_
SP_VISEME_11, // _AY_
SP_VISEME_10, // _OY_
SP_VISEME_9, // _AW_
SP_VISEME_8, // _OW_
SP_VISEME_7, // _UW_
SP_VISEME_6, // _IX_
SP_VISEME_0, // _SIL_
SP_VISEME_7, // _w_
SP_VISEME_6, // _y_
SP_VISEME_13, // _r_
SP_VISEME_14, // _l_
SP_VISEME_12, // _h_
SP_VISEME_21, // _m_
SP_VISEME_19, // _n_
SP_VISEME_20, // _NG_
SP_VISEME_18, // _f_
SP_VISEME_18, // _v_
SP_VISEME_17, // _TH_
SP_VISEME_17, // _DH_
SP_VISEME_15, // _s_
SP_VISEME_15, // _z_
SP_VISEME_16, // _SH_
SP_VISEME_16, // _ZH_
SP_VISEME_21, // _p_
SP_VISEME_21, // _b_
SP_VISEME_19, // _t_
SP_VISEME_19, // _d_
SP_VISEME_20, // _k_
SP_VISEME_20, // _g_
SP_VISEME_16, // _CH_
SP_VISEME_16, // _JH_
SP_VISEME_13, // _DX_ // @@@@
};