Subject: Re: bug#52321: festival can't do text-to-speech (Linux: can't open /dev/dsp)

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Mon, 06 Dec 2021 14:10:42 +0100

Luis Felipe,

Luis Felipe via Bug reports for GNU Guix 写道：
> UNEXPECTED RESULT
>
> There is no speech, and the following error is printed:
>
>   Linux: can't open /dev/dsp

Attached is a patch that makes Festival work with Linux (ALSA) by 
default… but it's a bit odd that we'd've been shipping a ‘broken’ 
Festival from day 0?

(TIL that our default Linux-Libre configurations enable legacy OSS 
emulation so this could probably be made to work with the right 
modprobes.  Still, this should not be required without good 
reason, and plenty of OSS-free kernels exist.)

I'd like to hear from existing Festival/Guix users if any actually 
do.

Until then, you can easily hack around it:

  $ cat <<EOF > ~/.festivalrc
  (Parameter.set 'Audio_Method 'Audio_Command)
  (Parameter.set 'Audio_Command
    "aplay -q -c 1 -t raw -f s16 -r \$SR \$FILE")
  EOF
  $ echo sup | festival --tts

From [0] of all places.  aplay is part of alsa-utils.

Kind regards,

T G-R

[0]: 
https://web.archive.org/web/20110522202347/http://ubuntuforums.org/showthread.php?t=171182&page=3

From 75c12a0838f4355c99ae3ee7f2bf8809be988f9f Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice <[email-masked]>
Date: Mon, 6 Dec 2021 14:25:08 +0100
Subject: [PATCH] gnu: festival: Support ALSA output.

* gnu/packages/speech.scm (festival)[arguments]: Add "LINUXAUDIO=alsa"
to #:make-flags.
[inputs]: Add alsa-lib.
---
 gnu/packages/speech.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index cbc46b32b4..bb1a7b8187 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -347,7 +347,8 @@ (define-public festival
                             "/bin/rm")
              (string-append "ECHO_N="
                             (assoc-ref %build-inputs "coreutils")
-                            "/bin/printf \"%s\""))
+                            "/bin/printf \"%s\"")
+             "LINUXAUDIO=alsa")
        #:parallel-build? #f ; not supported
        #:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -505,7 +506,8 @@ (define-public festival
          (add-before 'configure 'bootstrap
            (lambda _ (invoke "autoreconf" "-vif"))))))
     (inputs
-     `(("ncurses" ,ncurses)))
+     `(("alsa-lib" ,alsa-lib)
+       ("ncurses" ,ncurses)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-- 
2.34.0