Yes, there are other ways of doing this, so in some respect I'm reinventing
the wheel. My initial goal (when I wrote this in (pd)ksh) was to get it
done, since there was no other way (that I saw) of doing this without
incurring a significant amount of overhead. Now there probably is, but
since some scripts depend on it, I'll rewrite it in sh.
Festival isn't particularly lightweight, but I guess you can use whatever
you want. It acts as a daemon, accepting festival-language commands (LISP,
I think) over TCP port 1314. This script sends $* as one statement. If
that fails, it sends one word at a time. If a word fails, it resends that
word as l e t t e r s.
#!/bin/sh
# eben wrote this
saytext () {
netcat -c "echo '(SayText \"$*\")' ;
while read line ; do
case \"z\$line\" in
*OK) exit ;;
zER) exit 1 ;;
esac
done
echo '(quit)'" localhost 1314
}
saytext "$@" || {
echo -E "`date`" "$*" >> /tmp/say.errors
set $*
for word in "$@" ; do
saytext "$word" || saytext "$(echo "$word" | sed 's/\(.\)/\1 /g')"
done
}
I call at "say".
-- -eben QebWenE01R@vTerYizUonI.nOetP royalty.mine.nu:81 If you need someone to blame Throw a rock in the air You'll hit someone guilty -- U2, _Zooropa_, "Dirty Day" ----------------------------------------------------------------------- This list is provided as an unmoderated internet service by Networked Knowledge Systems (NKS). Views and opinions expressed in messages posted are those of the author and do not necessarily reflect the official policy or position of NKS or any of its employees.
This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 17:14:12 EDT