From 7d0b6f3019731ccb444a2257174028a7fa73c3a3 Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Fri, 11 Nov 2022 23:51:18 +0300 Subject: [PATCH 1/2] Revert "Compensate silence duration when sonic enabled" This reverts commit 9f0b23f49ee293aaa0bb0b392cbb7eceb2335bc6. --- src/libespeak-ng/wavegen.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libespeak-ng/wavegen.c b/src/libespeak-ng/wavegen.c index 88d787b7..cc9d9dd4 100644 --- a/src/libespeak-ng/wavegen.c +++ b/src/libespeak-ng/wavegen.c @@ -918,10 +918,6 @@ 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 44b514febf811fc48a360c2c435bcbd02c21f1d8 Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Sat, 12 Nov 2022 00:03:07 +0300 Subject: [PATCH 2/2] Compensate SSML break time for libsonic --- src/libespeak-ng/ssml.c | 11 ++++++++++- tests/ssml.test | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libespeak-ng/ssml.c b/src/libespeak-ng/ssml.c index a068e50a..8905e539 100644 --- a/src/libespeak-ng/ssml.c +++ b/src/libespeak-ng/ssml.c @@ -879,7 +879,16 @@ 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); + int wpm = speech_parameters[espeakRATE]; + espeak_SetParameter(espeakRATE, wpm, 0); + + #if HAVE_SONIC_H + if (wpm >= espeakRATE_MAXIMUM) { + // Compensate speedup with libsonic, see function SetSpeed() + double sonic = ((double)wpm)/espeakRATE_NORMAL; + value2 = value2 * sonic; + } + #endif // compensate for speaking speed to keep constant pause length, see function PauseLength() // 'value' here is x 10mS diff --git a/tests/ssml.test b/tests/ssml.test index 481ad05a..e105f89d 100755 --- a/tests/ssml.test +++ b/tests/ssml.test @@ -51,6 +51,6 @@ test_ssml_audio "" bc47aac0142243b31dd1930e3462abe54 test_ssml_audio "" c7b3e92d90063761e9744b40b17bc9204fe7d25b "Breaktest" ( test_ssml_audio "" 64213dbaf593b139b0b21840ba938cf597f7ad35 "Breaktest" ) || \ ( test_ssml_audio "" ff0837020dadeb8c5a20784d31624b8f0221d9a4 "Breaktest" ) || exit 1 -( test_ssml_audio "" 4eac3d4c5c893824dfa7434d0e66116d8ff18676 "Breaktest" ) || \ -( test_ssml_audio "" 28b4ca77bd987d8a8a722d87f5daea70c2f7133a "Breaktest" ) || \ +( test_ssml_audio "" 4b4e30a2cfff1889972f013e514e81c1108283a4 "Breaktest" ) || \ +( test_ssml_audio "" 9849f0d27f5641db6da1a8aea82578e83656d323 "Breaktest" ) || \ ( test_ssml_audio "" bb172a03c16e90ad537981467059c9e7d28d6aba "Breaktest" ) || exit 1