|
|
|
|
|
|
|
|
extern int saved_parameters[]; |
|
|
extern int saved_parameters[]; |
|
|
|
|
|
|
|
|
// convert from words-per-minute to internal speed factor |
|
|
// convert from words-per-minute to internal speed factor |
|
|
// Use this to calibrate speed for wpm 80-350 |
|
|
|
|
|
|
|
|
// Use this to calibrate speed for wpm 80-450 (espeakRATE_MINIMUM - espeakRATE_MAXIMUM) |
|
|
static unsigned char speed_lookup[] = { |
|
|
static unsigned char speed_lookup[] = { |
|
|
255, 255, 255, 255, 255, // 80 |
|
|
255, 255, 255, 255, 255, // 80 |
|
|
253, 249, 245, 242, 238, // 85 |
|
|
253, 249, 245, 242, 238, // 85 |
|
|
|
|
|
|
|
|
double sonic; |
|
|
double sonic; |
|
|
|
|
|
|
|
|
speed.loud_consonants = 0; |
|
|
speed.loud_consonants = 0; |
|
|
speed.min_sample_len = 450; |
|
|
|
|
|
|
|
|
speed.min_sample_len = espeakRATE_MAXIMUM; |
|
|
speed.lenmod_factor = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change |
|
|
speed.lenmod_factor = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change |
|
|
speed.lenmod2_factor = 100; |
|
|
speed.lenmod2_factor = 100; |
|
|
speed.min_pause = 5; |
|
|
speed.min_pause = 5; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (control & 2) |
|
|
if (control & 2) |
|
|
DoSonicSpeed(1 * 1024); |
|
|
DoSonicSpeed(1 * 1024); |
|
|
if ((wpm_value >= 450) || ((wpm_value > speed.fast_settings[0]) && (wpm > 350))) { |
|
|
|
|
|
|
|
|
if ((wpm_value >= espeakRATE_MAXIMUM) || ((wpm_value > speed.fast_settings[0]) && (wpm > 350))) { |
|
|
wpm2 = wpm; |
|
|
wpm2 = wpm; |
|
|
wpm = 175; |
|
|
|
|
|
|
|
|
wpm = espeakRATE_NORMAL; |
|
|
|
|
|
|
|
|
// set special eSpeak speed parameters for Sonic use |
|
|
// set special eSpeak speed parameters for Sonic use |
|
|
// The eSpeak output will be speeded up by at least x2 |
|
|
// The eSpeak output will be speeded up by at least x2 |
|
|
|
|
|
|
|
|
sonic = ((double)wpm2)/wpm; |
|
|
sonic = ((double)wpm2)/wpm; |
|
|
DoSonicSpeed((int)(sonic * 1024)); |
|
|
DoSonicSpeed((int)(sonic * 1024)); |
|
|
speed.pause_factor = 85; |
|
|
speed.pause_factor = 85; |
|
|
speed.clause_pause_factor = 80; |
|
|
|
|
|
|
|
|
speed.clause_pause_factor = espeakRATE_MINIMUM; |
|
|
speed.min_pause = 22; |
|
|
speed.min_pause = 22; |
|
|
speed.min_sample_len = 450*2; |
|
|
|
|
|
|
|
|
speed.min_sample_len = espeakRATE_MAXIMUM*2; |
|
|
speed.wav_factor = 211; |
|
|
speed.wav_factor = 211; |
|
|
speed.lenmod_factor = 210; |
|
|
speed.lenmod_factor = 210; |
|
|
speed.lenmod2_factor = 170; |
|
|
speed.lenmod2_factor = 170; |
|
|
|
|
|
|
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (wpm > 450) |
|
|
|
|
|
wpm = 450; |
|
|
|
|
|
|
|
|
if (wpm > espeakRATE_MAXIMUM) |
|
|
|
|
|
wpm = espeakRATE_MAXIMUM; |
|
|
|
|
|
|
|
|
if (wpm > 360) |
|
|
if (wpm > 360) |
|
|
speed.loud_consonants = (wpm - 360) / 8; |
|
|
speed.loud_consonants = (wpm - 360) / 8; |
|
|
|
|
|
|
|
|
wpm2 = wpm; |
|
|
wpm2 = wpm; |
|
|
if (wpm > 359) wpm2 = 359; |
|
|
if (wpm > 359) wpm2 = 359; |
|
|
if (wpm < 80) wpm2 = 80; |
|
|
|
|
|
x = speed_lookup[wpm2-80]; |
|
|
|
|
|
|
|
|
if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM; |
|
|
|
|
|
x = speed_lookup[wpm2-espeakRATE_MINIMUM]; |
|
|
|
|
|
|
|
|
if (wpm >= 380) |
|
|
if (wpm >= 380) |
|
|
x = 7; |
|
|
x = 7; |
|
|
|
|
|
|
|
|
speed.wav_factor = wav_factor_350[wpm-350]; |
|
|
speed.wav_factor = wav_factor_350[wpm-350]; |
|
|
|
|
|
|
|
|
if (wpm >= 390) { |
|
|
if (wpm >= 390) { |
|
|
speed.min_sample_len = 450 - (wpm - 400)/2; |
|
|
|
|
|
|
|
|
speed.min_sample_len = espeakRATE_MAXIMUM - (wpm - 400)/2; |
|
|
if (wpm > 440) |
|
|
if (wpm > 440) |
|
|
speed.min_sample_len = 420 - (wpm - 440); |
|
|
speed.min_sample_len = 420 - (wpm - 440); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int wpm2; |
|
|
int wpm2; |
|
|
|
|
|
|
|
|
speed.loud_consonants = 0; |
|
|
speed.loud_consonants = 0; |
|
|
speed.min_sample_len = 450; |
|
|
|
|
|
|
|
|
speed.min_sample_len = espeakRATE_MAXIMUM; |
|
|
speed.lenmod_factor = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change |
|
|
speed.lenmod_factor = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change |
|
|
speed.lenmod2_factor = 100; |
|
|
speed.lenmod2_factor = 100; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (voice->speed_percent > 0) |
|
|
if (voice->speed_percent > 0) |
|
|
wpm = (wpm * voice->speed_percent)/100; |
|
|
wpm = (wpm * voice->speed_percent)/100; |
|
|
if (wpm > 450) |
|
|
|
|
|
wpm = 450; |
|
|
|
|
|
|
|
|
if (wpm > espeakRATE_MAXIMUM) |
|
|
|
|
|
wpm = espeakRATE_MAXIMUM; |
|
|
|
|
|
|
|
|
if (wpm > 360) |
|
|
if (wpm > 360) |
|
|
speed.loud_consonants = (wpm - 360) / 8; |
|
|
speed.loud_consonants = (wpm - 360) / 8; |
|
|
|
|
|
|
|
|
wpm2 = wpm; |
|
|
wpm2 = wpm; |
|
|
if (wpm > 359) wpm2 = 359; |
|
|
if (wpm > 359) wpm2 = 359; |
|
|
if (wpm < 80) wpm2 = 80; |
|
|
|
|
|
x = speed_lookup[wpm2-80]; |
|
|
|
|
|
|
|
|
if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM; |
|
|
|
|
|
x = speed_lookup[wpm2-espeakRATE_MINIMUM]; |
|
|
|
|
|
|
|
|
if (wpm >= 380) |
|
|
if (wpm >= 380) |
|
|
x = 7; |
|
|
x = 7; |
|
|
|
|
|
|
|
|
speed.wav_factor = wav_factor_350[wpm-350]; |
|
|
speed.wav_factor = wav_factor_350[wpm-350]; |
|
|
|
|
|
|
|
|
if (wpm >= 390) { |
|
|
if (wpm >= 390) { |
|
|
speed.min_sample_len = 450 - (wpm - 400)/2; |
|
|
|
|
|
|
|
|
speed.min_sample_len = espeakRATE_MAXIMUM - (wpm - 400)/2; |
|
|
if (wpm > 440) |
|
|
if (wpm > 440) |
|
|
speed.min_sample_len = 420 - (wpm - 440); |
|
|
speed.min_sample_len = 420 - (wpm - 440); |
|
|
} |
|
|
} |