Just hacked together a simple proc to read text strings aloud using the espeak Linux command. Its good fun. It also shows how useful the gnocl::setOpts command can be.
#---------------
# espeak.tcl
#---------------
## \file
# File documentation.
#\verbatim
#!/bin/sh
#\
exec tclsh "$0" "$@"
#\endverbatim
package require Gnocl
##
# -f <text file>
# Text file to speak
# -a <integer>
# Amplitude, 0 to 200, default is 100
# -g <integer>
# Word gap. Pause between words, units of 10mS at the default speed
# -l <integer>
# Line length. If not zero (which is the default), consider
# lines less than this length as end-of-clause
# -p <integer>
# Pitch adjustment, 0 to 99, default is 50
# -s <integer>
# Speed in words per minute, 80 to 390, default is 170
# -v <voice name>
# Use voice file of this name from espeak-data/voices
# -w <wave file name>
# Write output to this WAV file, rather than speaking it directly
# -b Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit
# -m Interpret SSML markup, and ignore other < > tags
# -q Quiet, don't produce any speech (may be useful with -x)
# -x Write phoneme mnemonics to stdout
# -X Write phonemes mnemonics and translation trace to stdout
# -z No final sentence pause at the end of the text
proc readAloud {args} {
# set defaults and parse args
gnocl::setOpts "-a 5 -s 110 $args"
eval exec espeak -a $a -s $s [list $t]
}
readAloud -t "How now brown cow. She sell sea shells by the sea shore. Peter Piper picked a peck of pickled peppers."
#---------------
# espeak.tcl
#---------------
## \file
# File documentation.
#\verbatim
#!/bin/sh
#\
exec tclsh "$0" "$@"
#\endverbatim
package require Gnocl
##
# -f <text file>
# Text file to speak
# -a <integer>
# Amplitude, 0 to 200, default is 100
# -g <integer>
# Word gap. Pause between words, units of 10mS at the default speed
# -l <integer>
# Line length. If not zero (which is the default), consider
# lines less than this length as end-of-clause
# -p <integer>
# Pitch adjustment, 0 to 99, default is 50
# -s <integer>
# Speed in words per minute, 80 to 390, default is 170
# -v <voice name>
# Use voice file of this name from espeak-data/voices
# -w <wave file name>
# Write output to this WAV file, rather than speaking it directly
# -b Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit
# -m Interpret SSML markup, and ignore other < > tags
# -q Quiet, don't produce any speech (may be useful with -x)
# -x Write phoneme mnemonics to stdout
# -X Write phonemes mnemonics and translation trace to stdout
# -z No final sentence pause at the end of the text
proc readAloud {args} {
# set defaults and parse args
gnocl::setOpts "-a 5 -s 110 $args"
eval exec espeak -a $a -s $s [list $t]
}
readAloud -t "How now brown cow. She sell sea shells by the sea shore. Peter Piper picked a peck of pickled peppers."
Comments