Browse Source

code cleanup: setlength: reduce statics count

master
Yury Popov 2 years ago
parent
commit
1fd604a942
1 changed files with 18 additions and 20 deletions
  1. 18
    20
      src/libespeak-ng/setlengths.c

+ 18
- 20
src/libespeak-ng/setlengths.c View File

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


static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3);
static void SetSpeedFactors(voice_t *voice, int x, int speeds[3]);
static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x); static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x);
static void SetSpeedMultiplier(int *x, int *wpm); static void SetSpeedMultiplier(int *x, int *wpm);


45 // 450 45 // 450
}; };


static int speed1 = 130;
static int speed2 = 121;
static int speed3 = 118;
static int len_speeds[3] = { 130, 121, 118 };


void SetSpeed(int control) void SetSpeed(int control)
{ {
// The eSpeak output will be speeded up by at least x2 // The eSpeak output will be speeded up by at least x2
x = 73; x = 73;
if (control & 1) { if (control & 1) {
speed1 = (x * voice->speedf1)/256;
speed2 = (x * voice->speedf2)/256;
speed3 = (x * voice->speedf3)/256;
len_speeds[0] = (x * voice->speedf1)/256;
len_speeds[1] = (x * voice->speedf2)/256;
len_speeds[2] = (x * voice->speedf3)/256;
} }
if (control & 2) { if (control & 2) {
double sonic; double sonic;
SetSpeedMultiplier(&x, &wpm); SetSpeedMultiplier(&x, &wpm);


if (control & 1) { if (control & 1) {
SetSpeedFactors(voice, x, &speed1, &speed2, &speed3);
SetSpeedFactors(voice, x, len_speeds);
} }


if (control & 2) { if (control & 2) {
*x = 6; *x = 6;
} }


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


if (x <= 7) { if (x <= 7) {
*speed1 = x;
*speed2 = *speed3 = x - 1;
speeds[0] = x;
speeds[1] = speeds[2] = x - 1;
} }
} }


p->length = prev->length; p->length = prev->length;


if (p->type == phLIQUID) if (p->type == phLIQUID)
p->length = speed1;
p->length = len_speeds[0];


if (next->type == phVSTOP) if (next->type == phVSTOP)
p->length = (p->length * 160)/100; p->length = (p->length * 160)/100;
} }


if (more_syllables == 0) if (more_syllables == 0)
length_mod *= speed1;
length_mod *= len_speeds[0];
else if (more_syllables == 1) else if (more_syllables == 1)
length_mod *= speed2;
length_mod *= len_speeds[1];
else else
length_mod *= speed3;
length_mod *= len_speeds[2];


length_mod = length_mod / 128; length_mod = length_mod / 128;


length_mod = length_mod * (256 + (280 - len)/3)/256; length_mod = length_mod * (256 + (280 - len)/3)/256;
} }


if (length_mod > tr->langopts.max_lengthmod*speed1) {
if (length_mod > tr->langopts.max_lengthmod*len_speeds[0]) {
// limit the vowel length adjustment for some languages // limit the vowel length adjustment for some languages
length_mod = (tr->langopts.max_lengthmod*speed1);
length_mod = (tr->langopts.max_lengthmod*len_speeds[0]);
} }


length_mod = length_mod / 128; length_mod = length_mod / 128;

Loading…
Cancel
Save