mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-09 07:52:27 +00:00
Use enumeration constants for the voice gender field values.
This commit is contained in:
@@ -67,6 +67,13 @@ typedef enum {
|
||||
ENOUTPUT_MODE_SPEAK_AUDIO = 0x0002,
|
||||
} espeak_ng_OUTPUT_MODE;
|
||||
|
||||
typedef enum {
|
||||
ENGENDER_UNKNOWN = 0,
|
||||
ENGENDER_MALE = 1,
|
||||
ENGENDER_FEMALE = 2,
|
||||
ENGENDER_NEUTRAL = 3,
|
||||
} espeak_ng_VOICE_GENDER;
|
||||
|
||||
/* eSpeak NG 1.49.0 */
|
||||
|
||||
typedef struct espeak_ng_ERROR_CONTEXT_ *espeak_ng_ERROR_CONTEXT;
|
||||
|
||||
@@ -1116,7 +1116,7 @@ static const char *VoiceFromStack()
|
||||
voice_name_specified = 1;
|
||||
strcpy(voice_name, sp->voice_name);
|
||||
language[0] = 0;
|
||||
voice_select.gender = 0;
|
||||
voice_select.gender = ENGENDER_UNKNOWN;
|
||||
voice_select.age = 0;
|
||||
voice_select.variant = 0;
|
||||
}
|
||||
@@ -1137,7 +1137,7 @@ static const char *VoiceFromStack()
|
||||
if (voice_name_specified == 0)
|
||||
voice_name[0] = 0; // forget a previous voice name if a language is specified
|
||||
}
|
||||
if (sp->voice_gender != 0)
|
||||
if (sp->voice_gender != ENGENDER_UNKNOWN)
|
||||
voice_select.gender = sp->voice_gender;
|
||||
|
||||
if (sp->voice_age != 0)
|
||||
@@ -1152,7 +1152,7 @@ static const char *VoiceFromStack()
|
||||
if (v_id == NULL)
|
||||
return "default";
|
||||
|
||||
if ((strchr(v_id, '+') == NULL) && ((voice_select.gender == 0) || (voice_select.gender == base_voice.gender)) && (base_voice_variant_name[0] != 0)) {
|
||||
if ((strchr(v_id, '+') == NULL) && ((voice_select.gender == ENGENDER_UNKNOWN) || (voice_select.gender == base_voice.gender)) && (base_voice_variant_name[0] != 0)) {
|
||||
// a voice variant has not been selected, use the original voice variant
|
||||
sprintf(buf, "%s+%s", v_id, base_voice_variant_name);
|
||||
strncpy0(voice_name, buf, sizeof(voice_name));
|
||||
@@ -1454,10 +1454,10 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type)
|
||||
SSML_STACK *ssml_sp;
|
||||
|
||||
static const MNEM_TAB mnem_gender[] = {
|
||||
{ "male", 1 },
|
||||
{ "female", 2 },
|
||||
{ "neutral", 3 },
|
||||
{ NULL, 0 }
|
||||
{ "male", ENGENDER_MALE },
|
||||
{ "female", ENGENDER_FEMALE },
|
||||
{ "neutral", ENGENDER_NEUTRAL },
|
||||
{ NULL, ENGENDER_UNKNOWN }
|
||||
};
|
||||
|
||||
if (tag_type & SSML_CLOSE) {
|
||||
|
||||
+12
-12
@@ -44,9 +44,9 @@
|
||||
#include "translate.h"
|
||||
|
||||
MNEM_TAB genders[] = {
|
||||
{ "male", 1 },
|
||||
{ "female", 2 },
|
||||
{ NULL, 0 }
|
||||
{ "male", ENGENDER_MALE },
|
||||
{ "female", ENGENDER_FEMALE },
|
||||
{ NULL, ENGENDER_UNKNOWN }
|
||||
};
|
||||
|
||||
int tone_points[12] = { 600, 170, 1200, 135, 2000, 110, 3000, 110, -1, 0 };
|
||||
@@ -1098,15 +1098,15 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
|
||||
score += 400;
|
||||
}
|
||||
|
||||
if (((voice_spec->gender == 1) || (voice_spec->gender == 2)) &&
|
||||
((voice->gender == 1) || (voice->gender == 2))) {
|
||||
if (((voice_spec->gender == ENGENDER_MALE) || (voice_spec->gender == ENGENDER_FEMALE)) &&
|
||||
((voice->gender == ENGENDER_MALE) || (voice->gender == ENGENDER_FEMALE))) {
|
||||
if (voice_spec->gender == voice->gender)
|
||||
score += 50;
|
||||
else
|
||||
score -= 50;
|
||||
}
|
||||
|
||||
if ((voice_spec->age <= 12) && (voice->gender == 2) && (voice->age > 12))
|
||||
if ((voice_spec->age <= 12) && (voice->gender == ENGENDER_FEMALE) && (voice->age > 12))
|
||||
score += 5; // give some preference for non-child female voice if a child is requested
|
||||
|
||||
if (voice->age != 0) {
|
||||
@@ -1290,7 +1290,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
|
||||
if (vp != NULL) {
|
||||
voice_select2.languages = &(vp->languages[1]);
|
||||
|
||||
if ((voice_select2.gender == 0) && (voice_select2.age == 0) && (voice_select2.variant == 0)) {
|
||||
if ((voice_select2.gender == ENGENDER_UNKNOWN) && (voice_select2.age == 0) && (voice_select2.variant == 0)) {
|
||||
if (variant_name[0] != 0) {
|
||||
sprintf(voice_id, "%s+%s", vp->identifier, variant_name);
|
||||
return voice_id;
|
||||
@@ -1312,10 +1312,10 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
|
||||
}
|
||||
|
||||
gender = 0;
|
||||
if ((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
|
||||
gender = 2;
|
||||
else if (voice_select2.gender == 1)
|
||||
gender = 1;
|
||||
if ((voice_select2.gender == ENGENDER_FEMALE) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
|
||||
gender = ENGENDER_FEMALE;
|
||||
else if (voice_select2.gender == ENGENDER_MALE)
|
||||
gender = ENGENDER_MALE;
|
||||
|
||||
#define AGE_OLD 60
|
||||
if (voice_select2.age < AGE_OLD)
|
||||
@@ -1332,7 +1332,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
|
||||
// is the main voice the required gender?
|
||||
skip = 0;
|
||||
|
||||
if ((gender != 0) && (vp->gender != gender))
|
||||
if ((gender != ENGENDER_UNKNOWN) && (vp->gender != gender))
|
||||
skip = 1;
|
||||
if ((ix2 == 0) && aged && (vp->age < AGE_OLD))
|
||||
skip = 1;
|
||||
|
||||
Reference in New Issue
Block a user