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-03-08 06:09:32 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-03-08 06:09:32 (GMT)
commit81613252fbcb2eec85a95eb1fefbd861c88732f5 (patch)
tree93360a34d49a5a2a1d9696f8c095e2d10d111453
parent5f8e048768a4bec23e5770d7334c29bfb76ed726 (diff)
Add word gap property
-rw-r--r--src/espeak.c10
-rw-r--r--src/espeak.h2
-rw-r--r--src/gstespeak.c12
-rw-r--r--src/gstespeak.h1
4 files changed, 25 insertions, 0 deletions
diff --git a/src/espeak.c b/src/espeak.c
index 2457769..92395f5 100644
--- a/src/espeak.c
+++ b/src/espeak.c
@@ -74,6 +74,7 @@ struct _Econtext
volatile gint rate;
volatile gint pitch;
volatile const gchar *voice;
+ volatile gint gap;
GstElement *emitter;
GstBus *bus;
@@ -143,6 +144,7 @@ espeak_new(GstElement *emitter)
self->pitch = ESPEAK_DEFAULT_PITCH;
self->rate = ESPEAK_DEFAULT_RATE;
self->voice = ESPEAK_DEFAULT_VOICE;
+ self->gap = ESPEAK_DEFAULT_GAP;
self->emitter = emitter;
gst_object_ref(self->emitter);
@@ -433,6 +435,8 @@ synth(Econtext *self, Espin *spin)
espeak_SetParameter(espeakPITCH, g_atomic_int_get(&self->pitch), 0);
espeak_SetParameter(espeakRATE, g_atomic_int_get(&self->rate), 0);
espeak_SetVoiceByName((gchar*)g_atomic_pointer_get(&self->voice));
+ espeak_SetParameter(espeakWORDGAP, g_atomic_int_get(&self->gap), 0);
+
espeak_buffer = G_OUTPUT_STREAM(spin->sound);
espeak_events = spin->events;
@@ -486,6 +490,12 @@ espeak_set_voice(Econtext *self, const gchar *value)
g_atomic_pointer_set(&self->voice, value);
}
+void
+espeak_set_gap(Econtext *self, guint value)
+{
+ g_atomic_int_set(&self->gap, value);
+}
+
// process ----------------------------------------------------------------------
static gpointer
diff --git a/src/espeak.h b/src/espeak.h
index eaa7b68..4fb4fc5 100644
--- a/src/espeak.h
+++ b/src/espeak.h
@@ -21,6 +21,7 @@
#define ESPEAK_DEFAULT_PITCH 50
#define ESPEAK_DEFAULT_RATE 170
#define ESPEAK_DEFAULT_VOICE "default"
+#define ESPEAK_DEFAULT_GAP 0
struct _Econtext;
typedef struct _Econtext Econtext;
@@ -33,6 +34,7 @@ gchar** espeak_get_voices();
void espeak_set_pitch(Econtext*, guint);
void espeak_set_rate(Econtext*, guint);
void espeak_set_voice(Econtext*, const gchar*);
+void espeak_set_gap(Econtext*, guint);
void espeak_in(Econtext*, const gchar *str);
GstBuffer* espeak_out(Econtext*, gsize size_to_play);
diff --git a/src/gstespeak.c b/src/gstespeak.c
index cfbf86d..e095a9a 100644
--- a/src/gstespeak.c
+++ b/src/gstespeak.c
@@ -49,6 +49,7 @@ enum
PROP_RATE,
PROP_VOICE,
PROP_VOICES,
+ PROP_GAP,
PROP_CAPS
};
@@ -124,6 +125,10 @@ gst_espeak_class_init(GstEspeakClass * klass)
g_param_spec_string("voice", "Current voice",
"Current voice", ESPEAK_DEFAULT_VOICE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property(gobject_class, PROP_GAP,
+ g_param_spec_uint("gap", "Gap",
+ "Word gap", 0, G_MAXINT, ESPEAK_DEFAULT_GAP,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property(gobject_class, PROP_VOICES,
g_param_spec_boxed("voices", "List of voices",
"List of voices", G_TYPE_STRV,
@@ -197,6 +202,10 @@ gst_espeak_set_property(GObject *object, guint prop_id,
self->voice = g_strdup(g_value_get_string(value));
espeak_set_voice(self->speak, self->voice);
break;
+ case PROP_GAP:
+ self->gap = g_value_get_uint(value);
+ espeak_set_gap(self->speak, self->gap);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -219,6 +228,9 @@ gst_espeak_get_property(GObject * object, guint prop_id,
case PROP_VOICE:
g_value_set_string(value, self->voice);
break;
+ case PROP_GAP:
+ g_value_set_uint(value, self->gap);
+ break;
case PROP_VOICES:
g_value_set_boxed(value, self->voices);
break;
diff --git a/src/gstespeak.h b/src/gstespeak.h
index df17118..6759a4c 100644
--- a/src/gstespeak.h
+++ b/src/gstespeak.h
@@ -46,6 +46,7 @@ struct _GstEspeak
guint pitch;
guint rate;
gchar *voice;
+ guint gap;
gchar **voices;
GstCaps *caps;
gboolean poll;