[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/4] use SPDVoice in SPDMsgSettings instead of language and synth
From: |
Andrei Kholodnyi |
Subject: |
[PATCH 2/4] use SPDVoice in SPDMsgSettings instead of language and synthesis_voice |
Date: |
Wed, 27 Oct 2010 17:15:19 +0200 |
replace char* language and synthesis_voice with SPDVoice which includes both
vars
rename variable voice to voice_type in SPDMsgSettings
and use voice for the SPDVoice variable
---
src/modules/espeak.c | 12 ++++++------
src/modules/festival.c | 18 +++++++++---------
src/modules/generic.c | 6 +++---
src/modules/ibmtts.c | 16 ++++++++--------
src/modules/module_utils.c | 21 ++++++++++++++++++---
src/modules/module_utils.h | 18 ++++++++----------
src/modules/pico.c | 4 ++--
7 files changed, 54 insertions(+), 41 deletions(-)
diff --git a/src/modules/espeak.c b/src/modules/espeak.c
index 5f1ec52..ad236d1 100644
--- a/src/modules/espeak.c
+++ b/src/modules/espeak.c
@@ -352,9 +352,9 @@ module_speak(gchar *data, size_t bytes, SPDMessageType
msgtype)
espeak_state = BEFORE_SYNTH;
/* Setting speech parameters. */
- UPDATE_STRING_PARAMETER(language, espeak_set_language);
- UPDATE_PARAMETER(voice, espeak_set_voice);
- UPDATE_STRING_PARAMETER(synthesis_voice, espeak_set_synthesis_voice);
+ UPDATE_STRING_PARAMETER(voice.language, espeak_set_language);
+ UPDATE_PARAMETER(voice_type, espeak_set_voice);
+ UPDATE_STRING_PARAMETER(voice.name, espeak_set_synthesis_voice);
UPDATE_PARAMETER(rate, espeak_set_rate);
UPDATE_PARAMETER(volume, espeak_set_volume);
@@ -762,14 +762,14 @@ espeak_set_language_and_voice(char *lang, SPDVoiceType
voice_code)
static void
espeak_set_voice(SPDVoiceType voice)
{
- assert(msg_settings.language);
- espeak_set_language_and_voice(msg_settings.language, voice);
+ assert(msg_settings.voice.language);
+ espeak_set_language_and_voice(msg_settings.voice.language, voice);
}
static void
espeak_set_language(char *lang)
{
- espeak_set_language_and_voice(lang, msg_settings.voice);
+ espeak_set_language_and_voice(lang, msg_settings.voice_type);
}
static void
diff --git a/src/modules/festival.c b/src/modules/festival.c
index 5ba0469..9b1b871 100644
--- a/src/modules/festival.c
+++ b/src/modules/festival.c
@@ -361,9 +361,9 @@ module_speak(char *data, size_t bytes, SPDMessageType
msgtype)
/* If the voice was changed, re-set all the parameters */
// TODO: Handle synthesis_voice change too
- if ((msg_settings.voice != msg_settings_old.voice)
- || ((msg_settings.language != NULL) &&
(msg_settings_old.language!=NULL) &&
- (strcmp(msg_settings.language, msg_settings_old.language)))){
+ if ((msg_settings.voice_type != msg_settings_old.voice_type)
+ || ((msg_settings.voice.language != NULL) &&
(msg_settings_old.voice.language!=NULL) &&
+ (strcmp(msg_settings.voice.language,
msg_settings_old.voice.language)))){
DBG("Cleaning old settings table");
CLEAN_OLD_SETTINGS_TABLE();
}
@@ -371,9 +371,9 @@ module_speak(char *data, size_t bytes, SPDMessageType
msgtype)
/* Setting voice parameters */
DBG("Updating parameters");
- UPDATE_STRING_PARAMETER(language, festival_set_language);
- UPDATE_PARAMETER(voice, festival_set_voice);
- UPDATE_STRING_PARAMETER(synthesis_voice, festival_set_synthesis_voice);
+ UPDATE_STRING_PARAMETER(voice.language, festival_set_language);
+ UPDATE_PARAMETER(voice_type, festival_set_voice);
+ UPDATE_STRING_PARAMETER(voice.name, festival_set_synthesis_voice);
UPDATE_PARAMETER(rate, festival_set_rate);
UPDATE_PARAMETER(pitch, festival_set_pitch);
UPDATE_PARAMETER(volume, festival_set_volume);
@@ -992,11 +992,11 @@ cache_gen_key(SPDMessageType type)
char ktype;
int kpitch = 0, krate = 0, kvoice = 0;
- if (msg_settings.language == NULL) return NULL;
+ if (msg_settings.voice.language == NULL) return NULL;
DBG("v, p, r = %d %d %d", FestivalCacheDistinguishVoices,
FestivalCacheDistinguishPitch, FestivalCacheDistinguishRate);
- if (FestivalCacheDistinguishVoices) kvoice = msg_settings.voice;
+ if (FestivalCacheDistinguishVoices) kvoice = msg_settings.voice_type;
if (FestivalCacheDistinguishPitch) kpitch = msg_settings.pitch;
if (FestivalCacheDistinguishRate) krate = msg_settings.rate;
@@ -1008,7 +1008,7 @@ cache_gen_key(SPDMessageType type)
return NULL;
}
- key = g_strdup_printf("%c_%s_%d_%d_%d", ktype, msg_settings.language,
kvoice,
+ key = g_strdup_printf("%c_%s_%d_%d_%d", ktype,
msg_settings.voice.language, kvoice,
krate, kpitch);
return key;
diff --git a/src/modules/generic.c b/src/modules/generic.c
index bbce9f0..a362a64 100644
--- a/src/modules/generic.c
+++ b/src/modules/generic.c
@@ -198,8 +198,8 @@ module_speak(gchar *data, size_t bytes, SPDMessageType
msgtype)
return 0;
}
- UPDATE_STRING_PARAMETER(language, generic_set_language);
- UPDATE_PARAMETER(voice, generic_set_voice);
+ UPDATE_STRING_PARAMETER(voice.language, generic_set_language);
+ UPDATE_PARAMETER(voice_type, generic_set_voice);
UPDATE_PARAMETER(punctuation_mode, generic_set_punct);
UPDATE_PARAMETER(pitch, generic_set_pitch);
UPDATE_PARAMETER(rate, generic_set_rate);
@@ -603,7 +603,7 @@ generic_set_language(char *lang)
generic_msg_language->name = g_strdup("english");
}
- generic_set_voice(msg_settings.voice);
+ generic_set_voice(msg_settings.voice_type);
}
void
diff --git a/src/modules/ibmtts.c b/src/modules/ibmtts.c
index 3c7dc99..81a1b6c 100644
--- a/src/modules/ibmtts.c
+++ b/src/modules/ibmtts.c
@@ -590,9 +590,9 @@ module_speak(gchar *data, size_t bytes, SPDMessageType
msgtype)
ibmtts_message_type = SPD_MSGTYPE_SPELL;
/* Setting speech parameters. */
- UPDATE_STRING_PARAMETER(language, ibmtts_set_language);
- UPDATE_PARAMETER(voice, ibmtts_set_voice);
- UPDATE_STRING_PARAMETER(synthesis_voice, ibmtts_set_synthesis_voice);
+ UPDATE_STRING_PARAMETER(voice.language, ibmtts_set_language);
+ UPDATE_PARAMETER(voice_type, ibmtts_set_voice);
+ UPDATE_STRING_PARAMETER(voice.name, ibmtts_set_synthesis_voice);
UPDATE_PARAMETER(rate, ibmtts_set_rate);
UPDATE_PARAMETER(volume, ibmtts_set_volume);
UPDATE_PARAMETER(pitch, ibmtts_set_pitch);
@@ -1229,15 +1229,15 @@ ibmtts_set_language_and_voice(char *lang, SPDVoiceType
voice, char* variant)
static void
ibmtts_set_voice(SPDVoiceType voice)
{
- if (msg_settings.language) {
- ibmtts_set_language_and_voice(msg_settings.language, voice, NULL);
+ if (msg_settings.voice.language) {
+ ibmtts_set_language_and_voice(msg_settings.voice.language, voice, NULL);
}
}
static void
ibmtts_set_language(char *lang)
{
- ibmtts_set_language_and_voice(lang, msg_settings.voice, NULL);
+ ibmtts_set_language_and_voice(lang, msg_settings.voice_type, NULL);
}
/* sets the IBM voice according to its name. */
@@ -1254,7 +1254,7 @@ ibmtts_set_synthesis_voice(char *synthesis_voice)
for (i=0; i < MAX_NB_OF_LANGUAGES; i++) {
if (!strcasecmp(eciLocales[i].name, synthesis_voice)) {
- ibmtts_set_language_and_voice(eciLocales[i].lang,
msg_settings.voice, eciLocales[i].dialect);
+ ibmtts_set_language_and_voice(eciLocales[i].lang,
msg_settings.voice_type, eciLocales[i].dialect);
break;
}
}
@@ -1550,7 +1550,7 @@ ibmtts_subst_keys(char *key)
GString *tmp = g_string_sized_new(30);
g_string_append(tmp, key);
- GList *keyTable = g_hash_table_lookup(IbmttsKeySubstitution,
msg_settings.language);
+ GList *keyTable = g_hash_table_lookup(IbmttsKeySubstitution,
msg_settings.voice.language);
if (keyTable)
g_list_foreach(keyTable, ibmtts_subst_keys_cb, tmp);
diff --git a/src/modules/module_utils.c b/src/modules/module_utils.c
index cc22b7a..c2e849a 100644
--- a/src/modules/module_utils.c
+++ b/src/modules/module_utils.c
@@ -193,9 +193,24 @@ do_set(void)
else SET_PARAM_STR_C(punctuation_mode, str2EPunctMode)
else SET_PARAM_STR_C(spelling_mode, str2ESpellMode)
else SET_PARAM_STR_C(cap_let_recogn, str2ECapLetRecogn)
- else SET_PARAM_STR_C(voice, str2EVoice)
- else SET_PARAM_STR(synthesis_voice)
- else SET_PARAM_STR(language)
+ else
+ if(!strcmp(cur_item, "voice")){
+ ret = str2EVoice(cur_value);
+ if (ret != -1) msg_settings.voice_type = ret;
+ else err = 2;
+ }
+ else
+ if(!strcmp(cur_item, "synthesis_voice")){
+ g_free(msg_settings.voice.name);
+ if(!strcmp(cur_value, "NULL")) msg_settings.voice.name =
NULL;
+ else msg_settings.voice.name = g_strdup(cur_value);
+ }
+ else
+ if(!strcmp(cur_item, "language")){
+ g_free(msg_settings.voice.language);
+ if(!strcmp(cur_value, "NULL")) msg_settings.voice.language
= NULL;
+ else msg_settings.voice.language = g_strdup(cur_value);
+ }
else err=2; /* Unknown parameter */
}
g_free(line);
diff --git a/src/modules/module_utils.h b/src/modules/module_utils.h
index aa7020c..91ff2bd 100644
--- a/src/modules/module_utils.h
+++ b/src/modules/module_utils.h
@@ -56,10 +56,8 @@ typedef struct{
SPDSpelling spelling_mode;
SPDCapitalLetters cap_let_recogn;
- char* language;
-
- SPDVoiceType voice;
- char *synthesis_voice;
+ SPDVoiceType voice_type;
+ SPDVoice voice;
}SPDMsgSettings;
int log_level;
@@ -86,9 +84,9 @@ int module_num_dc_options;
msg_settings_old.punctuation_mode = -1;\
msg_settings_old.spelling_mode = -1;\
msg_settings_old.cap_let_recogn = -1;\
- msg_settings_old.language = NULL; \
- msg_settings_old.voice = -1;\
- msg_settings_old.synthesis_voice = NULL;
+ msg_settings_old.voice_type = -1;\
+ msg_settings_old.voice.name = NULL;\
+ msg_settings_old.voice.language = NULL;
#define INIT_SETTINGS_TABLES()\
module_dc_options = NULL;\
@@ -98,9 +96,9 @@ int module_num_dc_options;
msg_settings.punctuation_mode = SPD_PUNCT_NONE;\
msg_settings.spelling_mode = SPD_SPELL_OFF;\
msg_settings.cap_let_recogn = SPD_CAP_NONE;\
- msg_settings.language = NULL;\
- msg_settings.voice = SPD_MALE1;\
- msg_settings.synthesis_voice = NULL;\
+ msg_settings.voice_type = SPD_MALE1;\
+ msg_settings.voice.name = NULL;\
+ msg_settings.voice.language = NULL;\
CLEAN_OLD_SETTINGS_TABLE()
#define DBG(arg...) \
diff --git a/src/modules/pico.c b/src/modules/pico.c
index 4a508b4..bc3cd59 100644
--- a/src/modules/pico.c
+++ b/src/modules/pico.c
@@ -499,9 +499,9 @@ int module_speak(char * data, size_t bytes, SPDMessageType
msgtype)
/* Setting speech parameters. */
- UPDATE_STRING_PARAMETER(synthesis_voice, pico_set_synthesis_voice);
+ UPDATE_STRING_PARAMETER(voice.name, pico_set_synthesis_voice);
/* UPDATE_PARAMETER(voice_type, pico_set_voice);*/
- UPDATE_STRING_PARAMETER(language, pico_set_language);
+ UPDATE_STRING_PARAMETER(voice.language, pico_set_language);
picoInp = (pico_Char *) module_strip_ssml(data);
--
1.6.0.4