87 lines
1.5 KiB
Bash
Executable File
87 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
default_libdir="/projects/festival/lib"
|
|
|
|
while true
|
|
do
|
|
case "$1" in
|
|
-f ) festival="${2}"
|
|
shift 2
|
|
;;
|
|
-l ) libdir="$2"
|
|
shift 2
|
|
;;
|
|
* ) break;;
|
|
esac
|
|
done
|
|
|
|
text=${1-"$HOME/projects/festival/examples/benchmark.text"}
|
|
|
|
for i in . src/main ../src/main $HOME/projects/festival/src/main /cstr/bin
|
|
do
|
|
if [ -n "$festival" ]
|
|
then
|
|
break;
|
|
fi
|
|
if [ -x "$i/festival" ]
|
|
then
|
|
festival="$i/festival"
|
|
fi
|
|
done
|
|
|
|
[ -n "$festival" ] ||
|
|
{
|
|
echo "Can't find festival"
|
|
exit 1
|
|
}
|
|
|
|
if [ -z "$libdir" ]
|
|
then
|
|
case $festival in
|
|
*main/festival ) libdir=`dirname $festival`/../../lib;;
|
|
* ) libdir=$default_libdir;;
|
|
esac
|
|
fi
|
|
|
|
echo Using $festival
|
|
|
|
start_flag_file="/tmp/fest_start_$$"
|
|
end_flag_file="/tmp/fest_end_$$"
|
|
script="/tmp/fest_script_$$"
|
|
|
|
echo -n > $flag_file;
|
|
|
|
cat > $script <<__END__
|
|
|
|
(set! libdir "$libdir/")
|
|
(set! lexdir "$default_libdir/dicts/")
|
|
(set! voiced_dir "$default_libdir/voices/")
|
|
|
|
(load (string-append libdir "init.scm"))
|
|
(if (probe_file (format nil "%s/.festivalrc" (getenv "HOME")))
|
|
(load (format nil "%s/.festivalrc" (getenv "HOME"))))
|
|
|
|
|
|
(audio_mode 'async)
|
|
(set! tts_hooks (list utt.synth))
|
|
|
|
(puts "start...\n" nil)
|
|
(fclose (fopen "$start_flag_file" "w"))
|
|
|
|
(tts_file "$text" (quote text))
|
|
|
|
(fclose (fopen "$end_flag_file" "w"))
|
|
(puts "...end\n" nil)
|
|
(audio_mode 'close)
|
|
|
|
(quit)
|
|
|
|
__END__
|
|
|
|
eval $festival --script $script
|
|
|
|
perl -e 'print "running time = ", (stat($ARGV[1]))[8]-(stat($ARGV[0]))[8], " seconds\n";' $start_flag_file $end_flag_file
|
|
|
|
/bin/rm -f $start_flag_file $end_flag_file $script
|
|
|