Description of problem: I've installed the voice synthesizer on MGA 8 to read sounds with Firefox in French of this type: https://pragmatice.net/pragmactivites/orthodefi/app/index.html?epc&91 I followed the procedure found on the French ubuntu forum: install speech-dispatcher and svox-pico modify the file /etc/speech-dispatcher/speechd.conf line 113 replace en by fr DefaultLanguage "fr" replaces DefaultLanguage "en". line 231 uncomment AddModule "pico" "sd_pico" "pico.conf" #DefaultModule espeak-ng is replaced by DefaultModule pico pico This works without a problem, but MGA 9 following the same procedure does not work. Without touching the conf file, the reading is done in French with a very bad English accent, which makes the reading incomprehensible. If I touch conf file the reading doesn't work, there is no sound. Papoteur made some tests with me and even with Okular the result is disastrous. This problem does not depend on the version of FF, we carried out the tests with the 2 versions. It is reproducible.
I activated logs in file. LogDir "/var/log/speech-dispatcher/" I reloaded speech-dispatcherd.service I found these errors: [Sat Jul 8 12:43:25 2023 : 817345] speechd: Initializing output module pico with binary /usr/lib64/speech-dispatcher-modules//sd_pico and configuration /etc/speech-dispatcher/modules/pico.conf [Sat Jul 8 12:43:25 2023 : 817382] speechd: Output module is logging to file /var/log/speech-dispatcher//pico.log [Sat Jul 8 12:43:25 2023 : 819914] speechd: Module pico loaded. [Sat Jul 8 12:43:25 2023 : 832031] speechd: ERROR: Bad syntax from output module pico 2 [...] [Sat Jul 8 12:43:26 2023 : 263812] speechd: Error: Module reported error in request from speechd (code 3xx): 300-Opening sound device failed. Reason: Cannot open plugin server. error: file not found. 300 MODULE ERROR . [Sat Jul 8 12:43:26 2023 : 280016] speechd: Error: Module reported error in request from speechd (code 3xx): 300-Opening sound device failed. Reason: Couldn't open pulse plugin. 300 MODULE ERROR Then speech-dispatcher works with espeak and flite, but not svox-pico.
CC: (none) => yves.brungard_mageia
Two pkgs: speech-dispatcher, speech-dispatcher-conf + svox-pico For the uninitiated: - svox-pico: Text-To-Speech engine from Android project - espeak: eSpeak is a compact open source software speech synthesizer for English and other languages - flite: Small, fast speech synthesis engine (text-to-speech) "speech-dispatcher works with espeak and flite, but not svox-pico" Where do you think the problem lies: - speech-dispatcher[-conf]-0.11.4-2.mga9 (0.10.2-1.mga8) or - svox-pico-20220603-2.mga9 (20180214-2.mga8) I wonder whether there is any way of substituting one at a time the M8 versions in an M9 system, to test which one breaks things. If this is possible, it would be worth confirming M8 speech-dispatcher with M9 espeak and flite. Yves? http://its.freebsoft.org/its/issues/project/1876 would be worth a look, but requires a user account. Would you like to try that, Guillaume (unless you already have)?
CC: (none) => lewyssmithSource RPM: speech-dispatcher & svox-pico => speech-dispatcher-0.11.4-2.mga9.src.rpm, svox-pico-20220603-2.mga9.src.rpm
I launched the command: pico2wave -l fr-FR -w 1.wav Bonjour Setting wavfile to 1.wav Remaining text after options is Bonjour Cannot load text analysis resource file (-40): cannot open file: ./lang/fr-FR_ta.bin The same command in Mageia 8 works fine. urpmf fr-FR_ta.bin in cauldron: nothing in Mageia 8: svox-pico package It seems that the switch to other sources misses some part of the package: https://svnweb.mageia.org/packages/cauldron/svox-pico/current/SPECS/svox-pico.spec?annotate=1948368#l74 Adding Guiseppe who did the switch. Perhaps should we add a part of the old source.
CC: (none) => ghibomgx
Summary: voice synthesizer malfunction => svox-pico miss voices dataSource RPM: speech-dispatcher-0.11.4-2.mga9.src.rpm, svox-pico-20220603-2.mga9.src.rpm => svox-pico-20220603-2.mga9.src.rpm
This also should be reported upstream at https://github.com/jpwhiting/svox-pico/
CC: (none) => geiger.david68210
I found the problem. For some reason the files in oldbinfiles/*.bin were missed from the %meson_install, and also picolangdir macro in pico2wave.c source doesn't point to /usr/share/pico/lang, thus the path for them is <currentdir>/lang/. I added a small fix, but using the hardcoded path and providing manually the missed binfiles which were already in sourcetree as in the previous version. Fix in current updates_testing. In theory this could be set without the hardcoded path patch at %meson configure stage with something like: %meson -Dc_args=-Dpicolangdir=%{_datadir}/pico/lang or %meson -Dc_args="-Dpicolangdir=\"%{_datadir}/pico/lang\" or %meson -Dc_args='-Dpicolangdir=\"%{_datadir}/pico/lang\"' but in either cases it seems meson is failing to pass the extra quotes. If you find a better way to pass the path in meson arguments then feel free to improve it.
Hmmm, is ok the old binfiles from license point of view? or this package should be moved to tainted?
Or alternatively we can move to tainted just the oldbinfiles in a standalone package.
Installed svox-pico from testing. pico2wave works :) However: spd-say -l "fr" "La crise sanitaire a mis en lumière l’intervention des consultants" Failed to connect to Speech Dispatcher: Error: Can't connect to unix socket /run/user/1000/speech-dispatcher/speechd.sock: Connexion refusée. Autospawn: Server successfully autospawned [yves@CauldronMV ~]$ ll /run/user/1000/speech-dispatcher/ total 0 drwx------ 3 yves yves 60 juil. 9 17:26 log/ drwx------ 2 yves yves 40 juil. 9 17:31 pid/ srwxrwx--- 1 yves yves 0 juil. 9 17:31 speechd.sock= systemctl status speech-dispatcherd.service ● speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: active (running) since Sun 2023-07-09 17:29:14 CEST; 1min 32s ago Process: 4846 ExecStart=/usr/bin/speech-dispatcher -d -t 0 (code=exited, status=0/SUCCESS) Tasks: 9 (limit: 2356) Memory: 9.8M CPU: 713ms CGroup: /system.slice/speech-dispatcherd.service ├─4869 /usr/lib64/speech-dispatcher-modules//sd_pico /etc/speech-dispatcher/modules/pico.conf ├─4872 /usr/lib64/speech-dispatcher-modules//sd_flite /etc/speech-dispatcher/modules/flite.conf ├─4873 /usr/lib64/speech-dispatcher-modules//sd_espeak /etc/speech-dispatcher/modules/espeak.conf └─4877 /usr/bin/speech-dispatcher -d -t 0 juil. 09 17:29:14 CauldronMV systemd[1]: Starting speech-dispatcherd.service... juil. 09 17:29:14 CauldronMV speech-dispatcher[4846]: [Sun Jul 9 17:29:14 2023 : 115778] speechd: Speech Dispatcher 0.11.4 starting juil. 09 17:29:14 CauldronMV systemd[1]: Started speech-dispatcherd.service.
(In reply to papoteur from comment #8) > Installed svox-pico from testing. > pico2wave works :) > However: > spd-say -l "fr" "La crise sanitaire a mis en lumière l’intervention des > consultants" > Failed to connect to Speech Dispatcher: > Error: Can't connect to unix socket > /run/user/1000/speech-dispatcher/speechd.sock: Connexion refusée. Autospawn: > Server successfully autospawned > [yves@CauldronMV ~]$ ll /run/user/1000/speech-dispatcher/ > total 0 > drwx------ 3 yves yves 60 juil. 9 17:26 log/ > drwx------ 2 yves yves 40 juil. 9 17:31 pid/ > srwxrwx--- 1 yves yves 0 juil. 9 17:31 speechd.sock= > This is weird. If I try after a clean reboot, the default speech-dispatcher service is disabled (as you can see from "systemctl list-unit-files speech-dispatcherd.service"). And also doing "systemctl status speech-dispatcherd.service" would return: ○ speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: inactive (dead) Under that conditions, /run/user/1000/speech-dispatcher/ contains the speechd.sock socket owned by the user, and there is also and no speech-dispatcherd daemon running in background, then in these conditions your command would work without any error. But if you start the speech-dispatcherd.service from systemd then the error above would arise.
Running another VM, spd-say -l fr-FR "Bonjour" works OK :) Perhaps the first one has older configuration.
Hello, Thank you Giuseppe. After installing new package, the voice synthesizer works fine to me. spd-say -l "fr" "La crise sanitaire a mis en lumière l’intervention des consultants" is read clearly in French And the website quoted at the beginning of this report works fine too But: systemctl status speech-dispatcherd.service ○ speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: inactive (dead) I don't know why I have same result than Giuseppe and not Papoteur.
There is (In reply to papoteur from comment #10) > Running another VM, > spd-say -l fr-FR "Bonjour" > works OK :) > Perhaps the first one has older configuration. There is still something "weak", as if you run (as root): systemctl start speech-dispatcherd.service (and even after a login/logout) you get the same problem again. I wonder what is the default behaviour. Maybe could be something related to user ownership (e.g. the speech-dispatcherd.service runs as root so maybe it overrides the user socket). Also we need still to check whether the files in /usr/share/pico/lang/*bin are ok with the license. Otherwise we might just split them in a standlone package and move to tainted.
[collision with previous comment] Well, thanks to Giuseppe for his rapid work on this. And Yves for his backup. And Guillaume for trying Giuseppe's new version. > After installing new package, the voice synthesizer works fine to me. > spd-say -l "fr" "La crise sanitaire a mis en lumière l’intervention des > consultants" is read clearly in French > And the website quoted at the beginning of this report works fine too This is all excellent. But there remains the ambiguity about whether the daemon is running, or should be, or not. comment 8: (disabled, running) - works, then does not ● speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: active (running) since Sun 2023-07-09 17:29:14 CEST; 1min 32s ago comment 9: (disabled, dead) comment 11 : (disabled, dead) - works ○ speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: inactive (dead) (In reply to Giuseppe Ghibò from comment #9) >> spd-say -l "fr" "La crise sanitaire a mis en lumière l’intervention des >> consultants" >> Failed to connect to Speech Dispatcher: >> Error: Can't connect to unix socket >> /run/user/1000/speech-dispatcher/speechd.sock: Connexion refusée. Autospawn: >> Server successfully autospawned > Under that conditions, /run/user/1000/speech-dispatcher/ contains the > speechd.sock socket owned by the user, and there is also and no > speech-dispatcherd daemon running in background, then in these conditions > your command would work without any error. But if you start the > speech-dispatcherd.service from systemd then the error above would arise. This reads as if something does not work if the daemon is already running (like when started from systemd), but does work if it not running. Confused! Is this something remaining to be sorted?
It seems that license is APACHE2 https://android.googlesource.com/platform/external/svox/+/6fbadb666c32920cf36e646f3c00aab1ad49cdf6/PicoLangInstallerFraFra/ Perhaps some info about systemd: https://github.com/brailcom/speechd/issues/336 https://github.com/brailcom/speechd/pull/763
Looks like the daemon should not be running before the user runs spd-say. Running spd-say under strace shows it's using a socket to connect to speech-dispatcher ... execve("/usr/bin/speech-dispatcher", ["/usr/bin/speech-dispatcher", "--spawn", "--communication-method", "unix_socket", "--socket-path", "/run/user/1000/speech-dispatcher" That connects to pulseaudio ... connect(28, {sa_family=AF_UNIX, sun_path="/run/user/1000/pulse/native"}, 110) = 0
CC: (none) => davidwhodgins
I have restart the problematic VM. systemctl status speech-dispatcherd.service ○ speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: inactive (dead) In user's console: spd-say "La crise sanitaire a mis en lumière l’intervention des consultants" Failed to connect to Speech Dispatcher: Error: Can't connect to unix socket /run/user/1000/speech-dispatcher/speechd.sock: Connexion refusée. Autospawn: Server successfully autospawned [yves@CauldronMV ~]$ spd-say -l "fr-FR" "La crise sanitaire a mis en lumière l’intervention des consultants" Failed to connect to Speech Dispatcher: Error: Can't connect to unix socket /run/user/1000/speech-dispatcher/speechd.sock: Connexion refusée. Autospawn: Server successfully autospawned Speech-dispatcher is still not running. Thus it seems that, on this machine, the mechanism to start the daemon is not working. I replaced the speech-dispatcher and speech-dispatcher.conf packages, always the same behaviour. The machine was upgraded from Mageia 8
No assigned maintainer. Assigning to all packagers.
Assignee: bugsquad => pkg-bugs
CC: lewyssmith => (none)
I backported upstream PR#763 for speech-dispacher to implement socket activation and also switched to espeak-ng support instead of the older one espeak so please test it in updates_testing repo! - speech-dispatcher-0.11.4-3.mga9
I tried it on my two VM. The one which wasn't working is still not working. The one which was working is still working. Thus, no regression.
(In reply to papoteur from comment #19) > I tried it on my two VM. > The one which wasn't working is still not working. > The one which was working is still working. > Thus, no regression. Can you try runnning under strace as in comment #15, to see exactly where it fails. I wonder if it's a matter of writable permission of some socket dir.
I also noticed that debian, for instance, run the speech-dispatcher daemon not as root but as speech-dispatcher user, as of: https://salsa.debian.org/tts-team/speech-dispatcher/-/blob/master/debian/patches/systemd-debian maybe worthwhile to run as non-root too?
(In reply to Giuseppe Ghibò from comment #21) > I also noticed that debian, for instance, run the speech-dispatcher daemon > not as root but as speech-dispatcher user, as of: > > https://salsa.debian.org/tts-team/speech-dispatcher/-/blob/master/debian/ > patches/systemd-debian > > maybe worthwhile to run as non-root too? I think this could be an improvement, but this will not change a lot the behaviour. On my side, I have removed speech-dispatcher packages and reinstalled them again on the problematic machine. It is now working. Thus, except for setting a speech-dispatcher user, this report can be closed
Summary: svox-pico miss voices data => speech-dispatcher could be set to be run as specific user
Closing then.
Status: NEW => RESOLVEDResolution: (none) => INVALID
Then we still need to move the corresponding packages from updates_testing to release.
Oops. As the second round of the m9 rc1 iso images have just started testing, the update may need to be redone after cauldron reopens after m9 release.
Status: RESOLVED => REOPENEDResolution: INVALID => (none)
(In reply to Dave Hodgins from comment #25) > Oops. As the second round of the m9 rc1 iso images have just started testing, > the update may need to be redone after cauldron reopens after m9 release. OK. We have just to remember.
I think it is time wake up this report. I have submitted speech-dispatcher-0.11.4-2.mga9 python3-speechd-0.11.4-2.mga9 lib64speechd2-0.11.4-2.mga9 speech-dispatcher-conf-0.11.4-2.mga9 lib64speechd-devel-0.11.4-2.mga9 speech-dispatcher-0.11.4-2.mga9
Assignee: pkg-bugs => qa-bugs
Version: Cauldron => 9
MGA9 GNOME 64 Updated with QA repo and rpms: lib64speechd2 0.11.4 2.1.mga9 x86_64 speech-dispatcher 0.11.4 2.1.mga9 x86_64 speech-dispatcher-conf 0.11.4 2.1.mga9 x86_64 The test was inconclusive for me with the svox pico module. spd-say "bonjour" Failed to connect to Speech Dispatcher: Error: Can't connect to unix socket /run/user/1000/speech-dispatcher/speechd.sock: Aucun fichier ou dossier de ce type. Autospawn: Autospawn failed. Speech Dispatcher refused to start with error code, stating this as a reason: systemctl status speech-dispatcherd.service ○ speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers Loaded: loaded (/usr/lib/systemd/system/speech-dispatcherd.service; disabled; preset: disabled) Active: inactive (dead)
Created attachment 14003 [details] Script to test for missing requires I'm not clear the problem has been identified. It's working for me with the release version installed. I've tested with running spd-say multiple times, including logging out/in and rebooting in between tests. Enabled the following packages using qarepo ... lib64speechd2-0.11.4-2.1.mga9 lib64speechd-devel-0.11.4-2.1.mga9 python3-speechd-0.11.4-2.1.mga9 speech-dispatcher-0.11.4-2.1.mga9 speech-dispatcher-conf-0.11.4-2.1.mga9 # urpmi --auto-select To satisfy dependencies, the following packages are going to be installed: Package Version Release Arch (medium "QA Testing (64-bit)") lib64speechd2 0.11.4 2.1.mga9 x86_64 python3-speechd 0.11.4 2.1.mga9 x86_64 speech-dispatcher 0.11.4 2.1.mga9 x86_64 speech-dispatcher-conf 0.11.4 2.1.mga9 x86_64 (medium "Core Release (distrib1)") espeak-ng 1.51.1 1.mga9 x86_64 lib64espeak-ng1 1.51.1 1.mga9 x86_64 lib64pcaudio0 1.2 1.mga9 x86_64 Intalled those packages. spd-say still works, though the sound sounds a little more broken up. (i.e. sounds worse). Would someone who doesn't have spd-say workng run the attached script to (runs urpmi --test of all of the packages being used when running spd-say), to see if it wants to install any packages? That should help id any missing requires that I may have installed due to something else.
The sound quality seems inconsistent but seems more likely to be related to something in my system rather then which version I use. I'm testing in a vb guest, not on the host which is running m8.
I didn't specify that when I updated the following packages were also updated: (medium "Core Release (distrib1)") espeak-ng 1.51.1 1.mga9 x86_64 lib64espeak-ng1 1.51.1 1.mga9 x86_64 lib64pcaudio0 1.2 1.mga9 x86_64 about playback quality, that's why I use svox-pico. It makes it smoother and the French language is supported. I also have the same pico + speech-dispatcher configuration on my Mint and Ubuntu PCs and everything works without a hitch (once I've found the right settings). I would like to use Mageia professionally and this is a sticking point for me.
(In reply to Guillaume Royer from comment #31) > I didn't specify that when I updated the following packages were also > updated: > > (medium "Core Release (distrib1)") > espeak-ng 1.51.1 1.mga9 x86_64 > lib64espeak-ng1 1.51.1 1.mga9 x86_64 > lib64pcaudio0 1.2 1.mga9 x86_64 > > about playback quality, that's why I use svox-pico. It makes it smoother and > the French language is supported. > I also have the same pico + speech-dispatcher configuration on my Mint and > Ubuntu PCs and everything works without a hitch (once I've found the right > settings). > I would like to use Mageia professionally and this is a sticking point for > me. If you get on mint and ubuntu working, can you see exactly which package and which version are they using. Maybe they are using another (older) series? AFAIK we are using the latest versions and even with patches from git upstream. For the rest, probably we don't know how exactly the speaking capability works, to consider them "full working". What I also noticed, but I don't know if it's a feature or a bug, is that if we run 2 commands in sequence, the last one "cancel" the first one. E.g. with: spd-say hi;spd-say hello you get the speech only from the latter. As for speech quality, "apparently" the problem seems with the english language, e.g.; using: spd-say -l fr "Bonjour à tout" sleep 2 spd-say -l en_US "Hello world!" sleep 2 spd-say -l it "Ciao a tutti" sleep 2 you'd listen that the quality with the english is different, with sound more "metallic" with respect to french, like as if it was in the first generations speech synthetizers of '85-'90.