@@ -496,10 +496,10 @@ void MakePhonemeList(Translator *tr, int post_pause, bool start_sentence, int *n | |||
if (plist3->sourceix != 0) { | |||
phlist[ix].sourceix = plist3->sourceix; | |||
phlist[ix].newword = 1; // this phoneme is the start of a word | |||
phlist[ix].newword = PHLIST_START_OF_WORD; | |||
if (start_sentence) { | |||
phlist[ix].newword = 5; // start of sentence + start of word | |||
phlist[ix].newword |= PHLIST_START_OF_SENTENCE; | |||
start_sentence = false; | |||
} | |||
} else | |||
@@ -523,7 +523,7 @@ void MakePhonemeList(Translator *tr, int post_pause, bool start_sentence, int *n | |||
ix++; | |||
} | |||
} | |||
phlist[ix].newword = 2; // end of clause | |||
phlist[ix].newword = PHLIST_END_OF_CLAUSE; | |||
phlist[ix].phcode = phonPAUSE; | |||
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes |
@@ -658,7 +658,7 @@ void CalcLengths(Translator *tr) | |||
if (p2->ph->code == phonPAUSE_CLAUSE) | |||
end_of_clause = 2; | |||
if ((p2->newword & 2) && (more_syllables == 0)) | |||
if ((p2->newword & PHLIST_END_OF_CLAUSE) && (more_syllables == 0)) | |||
end_of_clause = 2; | |||
// calc length modifier |
@@ -361,9 +361,9 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, bool resume, FILE *f_mb | |||
if (p->synthflags & SFLAG_EMBEDDED) | |||
DoEmbedded(&embedded_ix, p->sourceix); | |||
if (p->newword & 4) | |||
if (p->newword & PHLIST_START_OF_SENTENCE) | |||
DoMarker(espeakEVENT_SENTENCE, (p->sourceix & 0x7ff) + clause_start_char, 0, count_sentences); | |||
if (p->newword & 1) | |||
if (p->newword & PHLIST_START_OF_SENTENCE) | |||
DoMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | |||
name = GetMbrName(p, ph, ph_prev, ph_next, &name2, &len_percent, &control); |
@@ -1213,10 +1213,10 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, bool resume) | |||
sourceix = (p->sourceix & 0x7ff) + clause_start_char; | |||
if (p->newword & 4) | |||
if (p->newword & PHLIST_START_OF_SENTENCE) | |||
DoMarker(espeakEVENT_SENTENCE, sourceix, 0, count_sentences); // start of sentence | |||
if (p->newword & 1) | |||
if (p->newword & PHLIST_START_OF_WORD) | |||
DoMarker(espeakEVENT_WORD, sourceix, p->sourceix >> 11, clause_start_word + word_count++); // NOTE, this count doesn't include multiple-word pronunciations in *_list. eg (of a) | |||
} | |||
@@ -187,6 +187,10 @@ typedef struct { | |||
unsigned char tone_ph; // tone phoneme to use with this vowel | |||
} PHONEME_LIST2; | |||
#define PHLIST_START_OF_WORD 1 | |||
#define PHLIST_END_OF_CLAUSE 2 | |||
#define PHLIST_START_OF_SENTENCE 4 | |||
typedef struct { | |||
// The first section is a copy of PHONEME_LIST2 | |||
unsigned short synthflags; | |||
@@ -203,7 +207,7 @@ typedef struct { | |||
unsigned char prepause; | |||
unsigned char postpause; | |||
unsigned char amp; | |||
unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence | |||
unsigned char newword; // bit flags, see PHLIST_(START|END)_OF_* | |||
unsigned char pitch1; | |||
unsigned char pitch2; | |||
unsigned char std_length; |