From 61de3304437002def8a5e2738ed6fd1a659da438 Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Tue, 8 Nov 2022 17:51:17 +0300 Subject: [PATCH 1/3] Sync rate for SSML break duration --- src/libespeak-ng/ssml.c | 2 ++ 1 file changed, 2 insertions(+) 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); From 9f0b23f49ee293aaa0bb0b392cbb7eceb2335bc6 Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Tue, 8 Nov 2022 17:54:49 +0300 Subject: [PATCH 2/3] Compensate silence duration when sonic enabled --- src/libespeak-ng/wavegen.c | 4 ++++ 1 file changed, 4 insertions(+) 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; From 877bab094272dd0efa36fef5aaced0cf12f317a7 Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Tue, 8 Nov 2022 21:19:49 +0300 Subject: [PATCH 3/3] Add SSML prosody-break tests --- tests/ssml.test | 7 +++++++ 1 file changed, 7 insertions(+) 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 "