Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-02-05 21:43:32 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-02-05 21:43:32 (GMT)
commitf7cd113b68981880a0cc7a5dc4f872f04f00ac4c (patch)
tree614ec880e886090e992a89b63d3ae862959f2867
parent75bc6fa6f1a00b089773d729576243b9ea1fce03 (diff)
Rename lang(s) properties to voice(s) and add language
-rw-r--r--src/espeak.c15
-rw-r--r--src/espeak.h4
-rw-r--r--src/gstespeak.c40
-rw-r--r--src/gstespeak.h4
4 files changed, 32 insertions, 31 deletions
diff --git a/src/espeak.c b/src/espeak.c
index c92c047..92d775e 100644
--- a/src/espeak.c
+++ b/src/espeak.c
@@ -63,7 +63,7 @@ static unsigned char wave_hdr[44] = {
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static GOutputStream *buffer = NULL;
static gint sample_rate = 0;
-static const espeak_VOICE **langs = NULL;
+static const espeak_VOICE **voices = NULL;
static gint
read_cb(short * wav, int numsamples, espeak_EVENT * events)
@@ -88,7 +88,7 @@ init()
++initialized;
sample_rate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS, 4096, NULL, 0);
espeak_SetSynthCallback(read_cb);
- langs = espeak_ListVoices(NULL);
+ voices = espeak_ListVoices(NULL);
}
pthread_mutex_unlock(&mutex);
}
@@ -108,7 +108,7 @@ espeak_new()
}
gchar**
-espeak_langs()
+espeak_voices()
{
gsize count = 0;
const espeak_VOICE **i;
@@ -116,15 +116,16 @@ espeak_langs()
init();
- for (i = langs; *i; ++i) ++count;
+ for (i = voices; *i; ++i) ++count;
out = j = g_new0(gchar*, count);
- for (i = langs; *i; ++i) *j++ = g_strdup((*i)->name);
+ for (i = voices; *i; ++i)
+ *j++ = g_strconcat((*i)->name, " ", (*i)->languages+1, NULL);
return out;
}
gboolean
-espeak_say(struct Espeak *es, const gchar *text, const gchar *lang,
+espeak_say(struct Espeak *es, const gchar *text, const gchar *voice,
guint pitch, guint rate)
{
g_seekable_seek(G_SEEKABLE(es->buffer), 0, G_SEEK_SET, NULL, NULL);
@@ -136,7 +137,7 @@ espeak_say(struct Espeak *es, const gchar *text, const gchar *lang,
buffer = es->buffer;
espeak_SetParameter(espeakPITCH, pitch, 0);
espeak_SetParameter(espeakRATE, rate, 0);
- espeak_SetVoiceByName(lang);
+ espeak_SetVoiceByName(voice);
gint status = espeak_Synth(text, strlen(text)+1, 0, POS_WORD, 0,
espeakCHARS_AUTO, NULL, NULL);
buffer = NULL;
diff --git a/src/espeak.h b/src/espeak.h
index f7cc833..e5074f7 100644
--- a/src/espeak.h
+++ b/src/espeak.h
@@ -49,8 +49,8 @@
struct Espeak;
struct Espeak* espeak_new();
-gchar** espeak_langs();
-gboolean espeak_say(struct Espeak*, const gchar *text, const gchar *lang,
+gchar** espeak_voices();
+gboolean espeak_say(struct Espeak*, const gchar *text, const gchar *voice,
guint pitch, guint rate);
gpointer espeak_hear(struct Espeak*, goffset offset, guint *size);
void espeak_unref(struct Espeak*);
diff --git a/src/gstespeak.c b/src/gstespeak.c
index 383e2fa..314d88c 100644
--- a/src/gstespeak.c
+++ b/src/gstespeak.c
@@ -51,7 +51,7 @@
* <refsect2>
* <title>Example launch line</title>
* |[
- * gst-launch-0.10 espeak text="Hello world" pitch=99 rate=300 lang=default ! wavparse ! alsasink
+ * gst-launch-0.10 espeak text="Hello world" pitch=99 rate=300 voice=default ! wavparse ! alsasink
* ]|
* </refsect2>
*/
@@ -75,8 +75,8 @@ enum
PROP_TEXT,
PROP_PITCH,
PROP_RATE,
- PROP_LANG,
- PROP_LANGS
+ PROP_VOICE,
+ PROP_VOICES
};
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE (
@@ -147,13 +147,13 @@ gst_espeak_class_init (GstEspeakClass * klass)
g_param_spec_uint("rate", "Speed in words per minute",
"Speed in words per minute", 80, 390, 170,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property(gobject_class, PROP_LANG,
- g_param_spec_string("lang", "Current lang",
- "Current lang", "default",
+ g_object_class_install_property(gobject_class, PROP_VOICE,
+ g_param_spec_string("voice", "Current voice",
+ "Current voice", "default",
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property(gobject_class, PROP_LANGS,
- g_param_spec_boxed("langs", "List of langs",
- "List of langs", G_TYPE_STRV,
+ g_object_class_install_property(gobject_class, PROP_VOICES,
+ g_param_spec_boxed("voices", "List of voices",
+ "List of voices", G_TYPE_STRV,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}
@@ -171,8 +171,8 @@ gst_espeak_init (GstEspeak * self,
self->pitch = 50;
self->rate = 170;
self->speak = espeak_new();
- self->lang = g_strdup("default");
- self->langs = espeak_langs();
+ self->voice = g_strdup("default");
+ self->voices = espeak_voices();
}
static void
@@ -183,8 +183,8 @@ gst_espeak_finalize(GObject * self_)
espeak_unref(self->speak); self->speak = NULL;
g_free(self->text); self->text = NULL;
g_free(self->uri); self->uri = NULL;
- g_free(self->lang); self->lang = NULL;
- g_strfreev(self->langs); self->langs = NULL;
+ g_free(self->voice); self->voice = NULL;
+ g_strfreev(self->voices); self->voices = NULL;
G_OBJECT_CLASS(parent_class)->dispose(self_);
}
@@ -240,8 +240,8 @@ gst_espeak_set_property (GObject *object, guint prop_id,
case PROP_RATE:
self->rate = g_value_get_uint(value);
break;
- case PROP_LANG:
- self->lang = g_strdup(g_value_get_string(value));
+ case PROP_VOICE:
+ self->voice = g_strdup(g_value_get_string(value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -265,11 +265,11 @@ gst_espeak_get_property (GObject * object, guint prop_id,
case PROP_RATE:
g_value_set_uint(value, self->rate);
break;
- case PROP_LANG:
- g_value_set_string(value, self->lang);
+ case PROP_VOICE:
+ g_value_set_string(value, self->voice);
break;
- case PROP_LANGS:
- g_value_set_boxed(value, self->langs);
+ case PROP_VOICES:
+ g_value_set_boxed(value, self->voices);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -305,7 +305,7 @@ gst_espeak_start (GstBaseSrc * self_)
if (self->text == NULL || self->text[0] == 0)
return FALSE;
- return espeak_say(self->speak, self->text, self->lang, self->pitch,
+ return espeak_say(self->speak, self->text, self->voice, self->pitch,
self->rate);
}
diff --git a/src/gstespeak.h b/src/gstespeak.h
index 4ba0953..5a9ecd2 100644
--- a/src/gstespeak.h
+++ b/src/gstespeak.h
@@ -75,8 +75,8 @@ struct _GstEspeak
gchar *uri;
guint pitch;
guint rate;
- gchar *lang;
- gchar **langs;
+ gchar *voice;
+ gchar **voices;
};
struct _GstEspeakClass