[BRLTTY] Faster espeak and brltty

Nicolas Pitre nico at fluxnic.net
Sun Jun 3 06:59:30 EDT 2012


On Fri, 1 Jun 2012, Eric Scheibler wrote:

> But brltty doesn't use the faster speech, I've set the speech speed to 20
> and it's relatively slow. Is there something I can do to make the espeak
> also faster in brltty?

The attached patch should provide that ability.


Nicolas
-------------- next part --------------
diff --git a/Drivers/Speech/eSpeak/Makefile.in b/Drivers/Speech/eSpeak/Makefile.in
index f3b386f..821a1c1 100644
--- a/Drivers/Speech/eSpeak/Makefile.in
+++ b/Drivers/Speech/eSpeak/Makefile.in
@@ -19,7 +19,7 @@
 DRIVER_CODE = es
 DRIVER_NAME = eSpeak
 DRIVER_COMMENT = text to speech engine 
-DRIVER_VERSION = 0.1 
+DRIVER_VERSION = 0.2 
 DRIVER_DEVELOPERS = Nicolas Pitre <nico at fluxnic.net>
 SPK_OBJS = @speech_libraries_es@
 include $(SRC_TOP)speech.mk
diff --git a/Drivers/Speech/eSpeak/README b/Drivers/Speech/eSpeak/README
index f766686..23efe34 100644
--- a/Drivers/Speech/eSpeak/README
+++ b/Drivers/Speech/eSpeak/README
@@ -26,3 +26,8 @@ voice
 	Specifies a voice/language to use.  The complete list of available
 	voices may be obtained with the command 'espeak --voices'.
 
+maxrate
+
+	Overrides the maximum speech rate value. The default is 450.
+	This cannot be lower than 80.
+
diff --git a/Drivers/Speech/eSpeak/speech.c b/Drivers/Speech/eSpeak/speech.c
index 6367c7e..695633a 100644
--- a/Drivers/Speech/eSpeak/speech.c
+++ b/Drivers/Speech/eSpeak/speech.c
@@ -28,9 +28,10 @@
 typedef enum {
 	PARM_PATH,
 	PARM_PUNCTLIST,
-	PARM_VOICE
+	PARM_VOICE,
+	PARM_MAXRATE
 } DriverParameter;
-#define SPKPARMS "path", "punctlist", "voice"
+#define SPKPARMS "path", "punctlist", "voice", "maxrate"
 
 #define SPK_HAVE_TRACK
 #define SPK_HAVE_RATE
@@ -46,6 +47,7 @@ typedef enum {
 #define espeakRATE_MAXIMUM	450
 #endif
 
+static int maxrate = espeakRATE_MAXIMUM;
 static int IndexPos;
 
 static int SynthCallback(short *audio, int numsamples, espeak_EVENT *events)
@@ -97,6 +99,11 @@ static int spk_construct(SpeechSynthesizer *spk, char **parameters)
 		espeak_SetPunctuationList(w_punctlist);
 	}
 
+	if (parameters[PARM_MAXRATE]) {
+		int val = atoi(parameters[PARM_MAXRATE]);
+		if (val > espeakRATE_MINIMUM) maxrate = val;
+	}
+
 	espeak_SetSynthCallback(SynthCallback);
 
 	return 1;
@@ -156,7 +163,7 @@ spk_setVolume(SpeechSynthesizer *spk, unsigned char setting)
 static void
 spk_setRate(SpeechSynthesizer *spk, unsigned char setting)
 {
-	int h_range = (espeakRATE_MAXIMUM - espeakRATE_MINIMUM)/2;
+	int h_range = (maxrate - espeakRATE_MINIMUM)/2;
 	int rate = getIntegerSpeechRate(setting, h_range) + espeakRATE_MINIMUM;
 	espeak_SetParameter(espeakRATE, rate, 0);
 }


More information about the BRLTTY mailing list