--- a/Drivers/Speech/eSpeak/README
+++ b/Drivers/Speech/eSpeak/README
@@ -31,3 +31,7 @@ maxrate
 	Overrides the maximum speech rate value. The default is 450.
 	This cannot be lower than 80.
 
+cancelpause
+
+        Overrides the default pause (in ms) introduced after canceling
+        speech. The default is 150.
--- a/Drivers/Speech/eSpeak/speech.c
+++ b/Drivers/Speech/eSpeak/speech.c
@@ -29,9 +29,10 @@ typedef enum {
 	PARM_PATH,
 	PARM_PUNCTLIST,
 	PARM_VOICE,
-	PARM_MAXRATE
+	PARM_MAXRATE,
+	PARM_CANCEL_PAUSE
 } DriverParameter;
-#define SPKPARMS "path", "punctlist", "voice", "maxrate"
+#define SPKPARMS "path", "punctlist", "voice", "maxrate", "cancel_pause"
 
 #include "spk_driver.h"
 
@@ -43,6 +44,7 @@ typedef enum {
 #endif /* ESPEAK_API_REVISION < 6 */
 
 static int maxrate = espeakRATE_MAXIMUM;
+static int cancelpause = 150;
 
 static void
 spk_say(volatile SpeechSynthesizer *spk, const unsigned char *buffer, size_t length, size_t count, const unsigned char *attributes)
@@ -59,7 +61,10 @@ spk_say(volatile SpeechSynthesizer *spk,
 static void
 spk_mute(volatile SpeechSynthesizer *spk)
 {
+	int dopause = espeak_IsPlaying();
 	espeak_Cancel();
+	if (dopause)
+		asyncWait(cancelpause);
 }
 
 static int SynthCallback(short *audio, int numsamples, espeak_EVENT *events)
@@ -167,6 +172,10 @@ static int spk_construct(volatile Speech
 		if (val > espeakRATE_MINIMUM) maxrate = val;
 	}
 
+	if (parameters[PARM_CANCEL_PAUSE]) {
+		cancelpause = atoi(parameters[PARM_CANCEL_PAUSE]);
+	}
+
 	espeak_SetSynthCallback(SynthCallback);
 
 	return 1;
