Browse Source

cleanup: use parameters instead of globals with SetSpeedMods

master
Juho Hiltunen 2 years ago
parent
commit
9e9fb16b56
1 changed files with 38 additions and 24 deletions
  1. 38
    24
      src/libespeak-ng/setlengths.c

+ 38
- 24
src/libespeak-ng/setlengths.c View File

#include "synthesize.h" #include "synthesize.h"
#include "translate.h" #include "translate.h"


static void SetSpeedMods(int wpm, int x);
static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x);


extern int saved_parameters[]; extern int saved_parameters[];


} }


if (control & 2) { if (control & 2) {
SetSpeedMods(wpm, x);
}
SetSpeedMods(&speed, voice->speedf1, wpm, x);
}
} }


#else #else
} }


if (control & 2) { if (control & 2) {
SetSpeedMods(wpm, x);
SetSpeedMods(&speed, voice->speedf1, wpm, x);

} }
} }


#endif #endif


static void SetSpeedMods(int wpm, int x) {
static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3) {
// set speed factors for different syllable positions within a word
// these are used in CalcLengths()
speed1 = (x * voice->speedf1)/256;
speed2 = (x * voice->speedf2)/256;
speed3 = (x * voice->speedf3)/256;

if (x <= 7) {
speed1 = x;
speed2 = speed3 = x - 1;
}
}

static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x) {
// these are used in synthesis file // these are used in synthesis file


if (wpm > 350) { if (wpm > 350) {
speed.lenmod_factor = 85 - (wpm - 350) / 3;
speed.lenmod2_factor = 60 - (wpm - 350) / 8;
speed->lenmod_factor = 85 - (wpm - 350) / 3;
speed->lenmod2_factor = 60 - (wpm - 350) / 8;
} else if (wpm > 250) { } else if (wpm > 250) {
speed.lenmod_factor = 110 - (wpm - 250)/4;
speed.lenmod2_factor = 110 - (wpm - 250)/2;
speed->lenmod_factor = 110 - (wpm - 250)/4;
speed->lenmod2_factor = 110 - (wpm - 250)/2;
} }




int s1 = (x * voice->speedf1)/256;
int s1 = (x * voiceSpeedF1)/256;


if (wpm >= 170) if (wpm >= 170)
speed.wav_factor = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds
speed->wav_factor = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds
else else
speed.wav_factor = 128 + (128*s1)/130; // = 215 at 170 wpm
speed->wav_factor = 128 + (128*s1)/130; // = 215 at 170 wpm


if (wpm >= 350) if (wpm >= 350)
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 = espeakRATE_MAXIMUM - (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);
} }


speed.pause_factor = (256 * s1)/115; // full speed adjustment, used for pause length
speed.clause_pause_factor = 0;
speed->pause_factor = (256 * s1)/115; // full speed adjustment, used for pause length
speed->clause_pause_factor = 0;


if (wpm > 430) if (wpm > 430)
speed.pause_factor = 12;
speed->pause_factor = 12;
else if (wpm > 400) else if (wpm > 400)
speed.pause_factor = 13;
speed->pause_factor = 13;
else if (wpm > 374) else if (wpm > 374)
speed.pause_factor = 14;
speed->pause_factor = 14;
else if (wpm > 350) else if (wpm > 350)
speed.pause_factor = pause_factor_350[wpm - 350];
speed->pause_factor = pause_factor_350[wpm - 350];


if (speed.clause_pause_factor == 0) {
if (speed->clause_pause_factor == 0) {
// restrict the reduction of pauses between clauses // restrict the reduction of pauses between clauses
if ((speed.clause_pause_factor = speed.pause_factor) < 16)
speed.clause_pause_factor = 16;
if ((speed->clause_pause_factor = speed->pause_factor) < 16)
speed->clause_pause_factor = 16;
} }
} }



Loading…
Cancel
Save