speechd: Fix espeak-mbrola voice check

main
Jan Tojnar 2 years ago
parent b0a4fa5273
commit 67e5298bfb
  1. 4
      pkgs/applications/audio/espeak-ng/default.nix
  2. 7
      pkgs/development/libraries/speechd/default.nix
  3. 21
      pkgs/development/libraries/speechd/fix-mbrola-paths.patch

@ -45,6 +45,10 @@ stdenv.mkDerivation rec {
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
'';
passthru = {
inherit mbrolaSupport;
};
meta = with lib; {
description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
homepage = "https://github.com/espeak-ng/espeak-ng";

@ -19,6 +19,7 @@
, withOss ? false
, withFlite ? true, flite
, withEspeak ? true, espeak, sonic, pcaudiolib
, mbrola
, withPico ? true, svox
}:
@ -38,6 +39,12 @@ in stdenv.mkDerivation rec {
src = ./fix-paths.patch;
utillinux = util-linux;
})
] ++ lib.optionals espeak.mbrolaSupport [
# Replace FHS paths.
(substituteAll {
src = ./fix-mbrola-paths.patch;
inherit espeak mbrola;
})
];
nativeBuildInputs = [

@ -0,0 +1,21 @@
diff --git a/src/modules/espeak.c b/src/modules/espeak.c
index 94a01197..9bb34475 100644
--- a/src/modules/espeak.c
+++ b/src/modules/espeak.c
@@ -898,13 +898,13 @@ static SPDVoice **espeak_list_synthesis_voices()
path = g_strdup_printf("%s/mbrola/%s", espeak_data, voicename);
if (access(path, O_RDONLY) != 0) {
g_free(path);
- path = g_strdup_printf("/usr/share/mbrola/%s", voicename);
+ path = g_strdup_printf("@mbrola@/share/mbrola/%s", voicename);
if (access(path, O_RDONLY) != 0) {
g_free(path);
- path = g_strdup_printf("/usr/share/mbrola/%s/%s", voicename, voicename);
+ path = g_strdup_printf("@mbrola@/share/mbrola/%s/%s", voicename, voicename);
if (access(path, O_RDONLY) != 0) {
g_free(path);
- path = g_strdup_printf("/usr/share/mbrola/voices/%s", voicename);
+ path = g_strdup_printf("@mbrola@/share/mbrola/voices/%s", voicename);
if (access(path, O_RDONLY) != 0) {
g_free(path);
espeak_mbrola[j] = NULL;
Loading…
Cancel
Save