From f7cd113b68981880a0cc7a5dc4f872f04f00ac4c Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Thu, 05 Feb 2009 21:43:32 +0000 Subject: Rename lang(s) properties to voice(s) and add language --- 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 @@ * * Example launch line * |[ - * 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 * ]| * */ @@ -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 -- cgit v0.9.1