Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/gstespeak.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gstespeak.c')
-rw-r--r--src/gstespeak.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/gstespeak.c b/src/gstespeak.c
index 951890b..6857fce 100644
--- a/src/gstespeak.c
+++ b/src/gstespeak.c
@@ -74,7 +74,9 @@ enum
PROP_0,
PROP_TEXT,
PROP_PITCH,
- PROP_RATE
+ PROP_RATE,
+ PROP_LANG,
+ PROP_LANGS
};
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE (
@@ -155,7 +157,14 @@ 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_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_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}
/* initialize the new element
@@ -169,9 +178,11 @@ gst_espeak_init (GstEspeak * self,
{
self->text = NULL;
self->uri = NULL;
- self->speak = espeak_new();
self->pitch = 50;
self->rate = 170;
+ self->speak = espeak_new();
+ self->lang = g_strdup("default");
+ self->langs = espeak_langs();
}
static void
@@ -182,6 +193,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_OBJECT_CLASS(parent_class)->dispose(self_);
}
@@ -237,6 +250,9 @@ 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));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -259,6 +275,12 @@ 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);
+ break;
+ case PROP_LANGS:
+ g_value_set_boxed(value, self->langs);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -286,7 +308,8 @@ gst_espeak_start (GstBaseSrc * self_)
if (self->text == NULL || self->text[0] == 0)
return FALSE;
- return espeak_say(self->speak, self->text, self->pitch, self->rate);
+ return espeak_say(self->speak, self->text, self->lang, self->pitch,
+ self->rate);
}
static gboolean