Hi All: I hope I am now subscribed to this list? Didier, an author of Slint wrote this script to enable us to more easily switch synthisizers. I would actually like to switch among my DecTalk U S B and an embedded Voxin voice, but when I run his script, I receive this error
gzip: /proc/config.gz: No such file or directory
Back again live, when running his script in Slint, it seems to know a list of available synths. Not sure why, but in Slint its called "talk-with" while his public releace is "speak-with"? He suggested I post his script as an atachment to this list, as he doesn't really use Debian. Thanks so much in advance
Chime
#!/bin/sh
# Didier Spaier <didier~at~slint.fr> 2019
# I wrote this script from scratch and put it in the public domain.
# I assume that the packages espeakup and speechd-up are installed.
# If fenrir is installed, it can also be used.
if [ ! $(id -u) -eq 0 ]; then
        echo "Please run this script as root."
        exit
fi
speakup="  a hard synthesizer (type its name, like \"apollo\" or \"acntsa\")"
if [ -x /usr/bin/espeakup ]; then
        espeakup="  espeakup (Console screen reader connecting espeak-ng and 
speakup)\n"
        n1="espeakup"
fi
if [ -x /usr/bin/speechd-up ]; then
        speechd_up="  speechd-up (Console screen reader connecting Speech 
Dispatcher and speakup)"
        n2="speechd-up"
fi
if [ -x /usr/bin/fenrir ]; then
        fenrir="  fenrir (Modular, flexible and fast console screen reader)\n"
        n3="fenrir"
fi
readers="$espeakup$fenrir$speechd_up"
hardlist="$(zgrep SPEAKUP_S /proc/config.gz|grep [ym]|grep -v DUMMY| \
sed 's/CONFIG_SPEAKUP_SYNTH_//;s/..$//'|tr '[:upper:]' '[:lower:]')"
usage() {
  echo "Usage: $0 <screen reader> or <hard synthesizer> or none"
  echo "Choose a console screen reader to talk with among:" 
  echo -e "$readers"
  echo "or use one of the supported hard synthesizers:"
  echo "  "$hardlist
  echo "or type  \"$0 none\" to mute all screen readers." 
  exit
}
to_lower() {
echo "$1"|tr '[:upper:]' '[:lower:]'
}
ARGUMENT=$(to_lower $1)
if [ $# -ne 1 ]; then usage; fi
if [ ! "$ARGUMENT" = "$n1" ] && \
   [ ! "$ARGUMENT" = "$n2" ] && \
   [ ! "$ARGUMENT" = "$n3" ] && \
   ! echo $hardlist| grep -qw $ARGUMENT && \
   [ ! "$ARGUMENT" = "none" ]; then
        echo "$1 is not a valid argument of this command."
        usage
        exit
fi
# We first check which console screen reader is already running, if any.
if [ ! "$(ps -C fenrir --noheaders|wc -l)" = "0" ]; then
        FENRIR=y
fi
if [ -f /sys/accessibility/speakup/synth ]; then
        SPKSYNTH=$(cat /sys/accessibility/speakup/synth)
        if [ "$SPKSYNTH" = "soft" ]; then 
                if [ ! "$(ps -C speechd-up --noheaders|wc -l)" = "0" ]; then
                        SPEECHDUP="y"
                fi
                if [ ! "$(ps -C espeakup --noheaders|wc -l)" = "0" ]; then
                        ESPEAKUP="y"
                fi
        else
        HARD=$SPKSYNTH
        fi
fi
# If a hard synth is in use store its name as we need to override it to
# use a soft synth instead if wished, but we need to restore it if the
# user does not want a permanent change.
if [ -f /etc/speakup.conf ]; then
        . /etc/speakup.conf
fi
case $ARGUMENT in
        espeakup)
                if [ ! -x /usr/bin/espeakup ]; then 
                        echo "espeakup is not installed."
                        exit
                fi
                if [ "$ESPEAKUP" = "y" ]; then
                        echo "$1 is already started."
                        exit
                fi
                if [ "$FENRIR" = "y" ]; then
                        [ -f /etc/rc.d/rc.fenrir ] && sh /etc/rc.d/rc.fenrir 
stop
                fi
                if [ "$SPEECHDUP" = "y" ]; then
                        sh /etc/rc.d/rc.speechd-up stop
                fi
                echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                echo "hard=none" >> /etc/speakup.conf
                sh /etc/rc.d/rc.espeakup start
                sleep 1
                printf "Should espeakup be also started at next boot? [Y/n] "
                read ANSWER
                if [ ! "$(to_lower $ANSWER)" = "n" ]; then
                        chmod 755 /etc/rc.d/rc.espeakup
                        chmod 644 /etc/rc.d/rc.speechd-up
                        [ -f /etc/rc.d/rc.fenrir ] && chmod 644 
/etc/rc.d/rc.fenrir
                        echo "Done."
                elif [ ! "$hard" = "" ]; then
                        echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                        echo hard=$hard >> /etc/speakup.conf
                fi
        ;;
        speechd-up)
                if [ ! -x /usr/bin/speechd-up ]; then
                        echo "speechd-up is not installed."
                        exit
                fi
                if [ "$SPEECHDUP" = "y" ]; then
                        echo "speechd-up is already started."
                        exit
                fi
                if [ "$FENRIR" = "y" ]; then
                        sh /etc/rc.d/rc.fenrir stop
                fi
                if [ "$ESPEAKUP" = "y" ]; then
                        sh /etc/rc.d/rc.espeakup stop
                fi
                echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                echo "hard=none" >> /etc/speakup.conf
                sh /etc/rc.d/rc.speechd-up start
                sleep 1
                printf "Should speechd-up be also started at next boot? [Y/n] "
                read ANSWER
                if [ ! "$(to_lower $ANSWER)" = "n" ]; then
                        chmod 644 /etc/rc.d/rc.espeakup
                        [ -f /etc/rc.d/rc.fenrir ] && chmod 644 
/etc/rc.d/rc.fenrir
                        chmod 755 /etc/rc.d/rc.speechd-up
                        echo "Done."
                elif [ ! "$hard" = "" ]; then
                        echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                        echo hard=$hard >> /etc/speakup.conf
                fi
        ;;
        fenrir)
                if [ ! -x /usr/bin/fenrir ]; then
                        echo "fenrir is not installed."
                        exit
                fi
                if [ "$FENRIR" = "y" ]; then
                        echo "fenrir is already started."
                        exit
                fi
                if [ "$SPEECHDUP" = "y" ]; then
                        sh /etc/rc.d/rc.speechd-up stop
                fi
                if [ "$ESPEAKUP" = "y" ]; then
                        sh /etc/rc.d/rc.espeakup stop
                fi
                if [ ! "$SPKSYNTH" = "" ]; then
                        echo none > /sys/accessibility/speakup/synth
                fi
                echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                echo "hard=none" >> /etc/speakup.conf
                sh /etc/rc.d/rc.fenrir start
                sleep 1
                clear
                printf "Should fenrir be also started at boot time? [Y/n] "
                read ANSWER
                if [ ! "$(to_lower $ANSWER)" = "n" ]; then 
                        chmod 644 /etc/rc.d/rc.espeakup
                        chmod 644 /etc/rc.d/rc.speechd-up
                        chmod 755 /etc/rc.d/rc.fenrir
                        echo "Done."
                elif [ ! "$hard" = "" ]; then
                        echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                        echo hard=$hard >> /etc/speakup.conf
                fi
        ;;
        none)
                if [ "$FENRIR" = "y" ]; then
                        sh /etc/rc.d/rc.fenrir stop
                fi
                if [ "$ESPEAKUP" = "y" ]; then
                        sh /etc/rc.d/rc.espeakup stop
                fi
                if [ "$SPEECHDUP" = "y" ]; then
                        sh /etc/rc.d/rc.speechd-up stop
                fi
                if [ ! "$SPKSYNTH" = "" ]; then
                        echo none > /sys/accessibility/speakup/synth
                fi
                printf "Do you also want a mute console at next boot? [Y/n] "
                read ANSWER
                if [ ! "$(to_lower $ANSWER)" = "n" ]; then
                        chmod 644 /etc/rc.d/rc.espeakup
                        chmod 644 /etc/rc.d/rc.speechd-up
                        [ -f /etc/rc.d/rc.fenrir ] && chmod 644 
/etc/rc.d/rc.fenrir
                        echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                        echo "hard=none" >> /etc/speakup.conf
                        echo "OK"
                fi
        ;;
        *)
                if [ "$FENRIR" = "y" ]; then
                        sh /etc/rc.d/rc.fenrir stop
                fi
                if [ "$ESPEAKUP" = "y" ]; then
                        sh /etc/rc.d/rc.espeakup stop
                fi
                if [ "$SPEECHDUP" = "y" ]; then
                        sh /etc/rc.d/rc.speechd-up stop
                fi
                modprobe speakup_$ARGUMENT 2>/dev/null
                echo $ARGUMENT  > /sys/accessibility/speakup/synth
                if [ $? != 0 ]; then
                        echo "Unable to switch to the $ARGUMENT synthesizer."
                        echo "Something should be wrong."
                        exit 1
                fi
                printf "Should $ARGUMENT be also used at next boot? [Y/n] "
                read ANSWER
                if [ ! "$(to_lower $ANSWER)" = "n" ]; then
                        chmod 644 /etc/rc.d/rc.speechd-up
                        [ -f /etc/rc.d/rc.fenrir ] && chmod 644 
/etc/rc.d/rc.fenrir
                        chmod 755 /etc/rc.d/rc.espeakup
                        echo "# File written by speak-with. Do not edit." > 
/etc/speakup.conf
                        echo "hard=$ARGUMENT" >> /etc/speakup.conf
                        echo "Done."
                fi
esac

Reply via email to