Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/espeak.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/espeak.c')
-rw-r--r--src/espeak.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/espeak.c b/src/espeak.c
index 267e5eb..504f52e 100644
--- a/src/espeak.c
+++ b/src/espeak.c
@@ -157,10 +157,10 @@ espeak_new(GstElement *emitter)
self->process_chunk = g_slist_alloc();
self->process_chunk->data = self;
- self->pitch = ESPEAK_DEFAULT_PITCH;
- self->rate = ESPEAK_DEFAULT_RATE;
+ self->pitch = 50;
+ self->rate = 170;
self->voice = ESPEAK_DEFAULT_VOICE;
- self->gap = ESPEAK_DEFAULT_GAP;
+ self->gap = 0;
self->track = ESPEAK_TRACK_NONE;
self->emitter = emitter;
@@ -559,14 +559,27 @@ espeak_get_voices()
}
void
-espeak_set_pitch(Econtext *self, guint value)
+espeak_set_pitch(Econtext *self, gint value)
{
+ if (value == 0)
+ value = 50;
+ else
+ value = MIN(99, (value + 100) / 2);
+
g_atomic_int_set(&self->pitch, value);
}
void
-espeak_set_rate(Econtext *self, guint value)
+espeak_set_rate(Econtext *self, gint value)
{
+ if (value == 0)
+ value = 170;
+ else
+ if (value < 0)
+ value = MAX(80, value + 170);
+ else
+ value = 170 + value * 2;
+
g_atomic_int_set(&self->rate, value);
}