Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian....@packages.debian.org
Usertags: pu

Hello,

[ Reason ]
We have recently noticed that one cannot choose between the various
mbrola speech synthesis voices in the orca screen reader.

This is not a regression from previous releases.

[ Impact ]
This prevents users from being able to switch between e.g. male/female
voices to efficiently mark different contents.

[ Tests ]
This was tested in a VM as well as on the end-user system where the bug
was noticed first.

[ Risks ]
The code is very simple: it just moves a single line of code, and adds a
few debugging prints to make sure this gets effect.

[ Checklist ]
  [X] *all* changes are documented in the d/changelog
  [X] I reviewed all changes and I approve them
  [X] attach debdiff against the package in (old)stable
  [X] the issue is verified as fixed in unstable

[ Changes ]
The bug comes from the fact that there are several ways to specify the
voice to be used: either through language + voice type, or precise voice
name. The second way is of course very precise, but unfortunately it was
coming first, and thus overwritten by the other ways. The change is just
to use the voice name last, so that one takes precedence over the other
(more generic) types.
diff -Nru speech-dispatcher-0.10.2/debian/changelog 
speech-dispatcher-0.10.2/debian/changelog
--- speech-dispatcher-0.10.2/debian/changelog   2020-12-16 01:17:56.000000000 
+0100
+++ speech-dispatcher-0.10.2/debian/changelog   2021-09-19 15:55:15.000000000 
+0200
@@ -1,3 +1,10 @@
+speech-dispatcher (0.10.2-2+deb11u1) bullseye; urgency=medium
+
+  * patches/generic-set-voice-name: Fix setting voice name for the generic
+    module.
+
+ -- Samuel Thibault <sthiba...@debian.org>  Sun, 19 Sep 2021 15:55:15 +0200
+
 speech-dispatcher (0.10.2-2) unstable; urgency=medium
 
   * speech-dispatcher: Handle moving configuration file from main package to
diff -Nru speech-dispatcher-0.10.2/debian/patches/generic-set-voice-name 
speech-dispatcher-0.10.2/debian/patches/generic-set-voice-name
--- speech-dispatcher-0.10.2/debian/patches/generic-set-voice-name      
1970-01-01 01:00:00.000000000 +0100
+++ speech-dispatcher-0.10.2/debian/patches/generic-set-voice-name      
2021-09-19 15:55:15.000000000 +0200
@@ -0,0 +1,41 @@
+commit 2aff49e3b8eb49dceb2c135025bc19cea6b0fd2e
+Author: Samuel Thibault <samuel.thiba...@ens-lyon.org>
+Date:   Sun Sep 19 15:52:31 2021 +0200
+
+    generic: Set voice name after setting voice language and type
+    
+    E.g. when using various mbrola languages, we want to be able to specify
+    a precise voice name. Setting the voice language/type after the voice
+    name would override that choice.
+
+diff --git a/src/modules/generic.c b/src/modules/generic.c
+index 5072867d..b62cdb58 100644
+--- a/src/modules/generic.c
++++ b/src/modules/generic.c
+@@ -205,9 +205,9 @@ int module_speak(const gchar * data, size_t bytes, 
SPDMessageType msgtype)
+               DBG("Speaking when requested to write");
+               return 0;
+       }
+-      UPDATE_STRING_PARAMETER(voice.name, generic_set_synthesis_voice);
+       UPDATE_STRING_PARAMETER(voice.language, generic_set_language);
+       UPDATE_PARAMETER(voice_type, generic_set_voice);
++      UPDATE_STRING_PARAMETER(voice.name, generic_set_synthesis_voice);
+       UPDATE_PARAMETER(punctuation_mode, generic_set_punct);
+       UPDATE_PARAMETER(pitch, generic_set_pitch);
+       UPDATE_PARAMETER(pitch_range, generic_set_pitch_range);
+@@ -707,6 +707,7 @@ void generic_set_language(char *lang)
+ 
+ void generic_set_voice(SPDVoiceType voice)
+ {
++      DBG("Setting voice type %d", voice);
+       assert(generic_msg_language);
+       generic_msg_voice_str =
+           module_getvoice(generic_msg_language->code, voice);
+@@ -717,6 +718,7 @@ void generic_set_voice(SPDVoiceType voice)
+ 
+ void generic_set_synthesis_voice(char *name)
+ {
++      DBG("Setting voice name %s (%s)", name, msg_settings.voice.name);
+       assert(msg_settings.voice.name);
+       if (module_existsvoice(msg_settings.voice.name))
+               generic_msg_voice_str = msg_settings.voice.name;
diff -Nru speech-dispatcher-0.10.2/debian/patches/series 
speech-dispatcher-0.10.2/debian/patches/series
--- speech-dispatcher-0.10.2/debian/patches/series      2020-11-25 
00:43:56.000000000 +0100
+++ speech-dispatcher-0.10.2/debian/patches/series      2021-09-19 
15:55:15.000000000 +0200
@@ -1,3 +1,4 @@
 doc-figures
 systemd-debian
 mbrola-paths
+generic-set-voice-name

Reply via email to