diff --git a/src/libespeak-ng/ssml.c b/src/libespeak-ng/ssml.c index 18ab3a11..99b22af9 100644 --- a/src/libespeak-ng/ssml.c +++ b/src/libespeak-ng/ssml.c @@ -872,6 +872,8 @@ int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, con if ((attr2 = GetSsmlAttribute(px, "time")) != NULL) { value2 = attrnumber(attr2, 0, 1); // pause in mS + espeak_SetParameter(espeakRATE, speech_parameters[espeakRATE], 0); + // compensate for speaking speed to keep constant pause length, see function PauseLength() // 'value' here is x 10mS value = (value2 * 256) / (speed.clause_pause_factor * 10); diff --git a/src/libespeak-ng/wavegen.c b/src/libespeak-ng/wavegen.c index cc9d9dd4..88d787b7 100644 --- a/src/libespeak-ng/wavegen.c +++ b/src/libespeak-ng/wavegen.c @@ -918,6 +918,10 @@ static int PlaySilence(int length, bool resume) if (length == 0) return 0; +#if HAVE_SONIC_H + length = (int)(length * sonicSpeed); +#endif + if (resume == false) n_samples = length; diff --git a/tests/ssml.test b/tests/ssml.test index 60adf5cb..431e082e 100755 --- a/tests/ssml.test +++ b/tests/ssml.test @@ -44,3 +44,10 @@ test_ssml_audio "" 88fccb35536158f25f4ae44a03fb005fef95c99b " bug #410" 8d3bace9548ae73c4770a73c88c6f65e848b45cf " Slow and low. Fast and high." test_ssml_audio "