summaryrefslogtreecommitdiff
path: root/tools/genvoice.sh
diff options
context:
space:
mode:
authorJonas Häggqvist <rasher@rasher.dk>2006-11-03 21:47:52 +0000
committerJonas Häggqvist <rasher@rasher.dk>2006-11-03 21:47:52 +0000
commitda071d0d7c0067be55b2a6177ef01ee1ec5e88b8 (patch)
treeef33236850e37dd5595a53cb767f54311ccf4a9c /tools/genvoice.sh
parentb403c6007ac1db68f3732952a12fbebe1ad7a6ea (diff)
Voice update, most useful for non-Windows systems. Voice file building using Festival, Flite or eSpeak from the configure script. Compressing with Speex and Vorbis possible, but won't create useable voicefiles. Adds voicefont.c and wavtrim.c by Jörg Hohensohn. Also includes a script to generate talk clips.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11426 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools/genvoice.sh')
-rwxr-xr-xtools/genvoice.sh121
1 files changed, 121 insertions, 0 deletions
diff --git a/tools/genvoice.sh b/tools/genvoice.sh
new file mode 100755
index 0000000000..5b667ea3ba
--- /dev/null
+++ b/tools/genvoice.sh
@@ -0,0 +1,121 @@
+#!/bin/sh
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id$
+#
+# Copyright 2006 Jonas Häggqvist, some parts Copyright 2004 Daniel Gudlat
+#
+# All files in this archive are subject to the GNU General Public License.
+# See the file COPYING in the source tree root for full license agreement.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+
+# Include voicecommon.sh from the same dir as this script
+# Any settings from voicecommon can be overridden if added below the following
+# line.
+source `dirname $0`'/voicecommon.sh'
+
+####################
+# General settings #
+####################
+
+# These settings can be overridden by passing a file with definitions as
+# the fourth parameter to this script
+
+# which TTS engine to use. Available: festival, flite, espeak
+TTS_ENGINE=festival
+# which encoder to use, available: lame, speex, vorbis (only lame will produce
+# functional voice clips at this point)
+ENCODER=lame
+# Where to save temporary files
+TEMPDIR=/tmp
+
+###################
+# End of settings #
+###################
+
+createvoicefile() {
+ $VOICEFONT "$LANG_FILE" "$TEMPDIR/" "./$RLANG.voice"
+}
+
+deletefiles() {
+ # XXX: might be unsafe depending on the value of TEMPDIR
+ rm -f "${TEMPDIR}"/LANG_*
+ rm -f "${TEMPDIR}"/VOICE_*
+}
+
+generateclips() {
+ ROCKBOX_DIR="$1"
+ RLANG="$2"
+ TARGET="$3"
+ GENLANG="$ROCKBOX_DIR"/tools/genlang
+ ENGLISH="$ROCKBOX_DIR"/apps/lang/english.lang
+ LANG_FILE="$ROCKBOX_DIR"/apps/lang/$RLANG.lang
+
+ $GENLANG -e=$ENGLISH -o -t=$TARGET $LANG_FILE |(
+ i=0
+ while read line; do
+ case `expr $i % 3` in
+ 0)
+ # String ID no.
+ NUMBER=`echo $line |cut -b 2-`
+ ;;
+ 1)
+ # String ID
+ ID=`echo $line |cut -b 5-`
+ ;;
+ 2)
+ # String
+ STRING=`echo $line |cut -b 8-`
+
+ # Now generate the file
+ voice "$STRING" "$TEMPDIR/$ID".wav
+ encode "$TEMPDIR/$ID".wav "$TEMPDIR/$ID".mp3
+ ;;
+ esac
+ i=`expr $i + 1`
+ done
+ )
+}
+
+if [ -z "$3" ]; then
+ echo "Usage: $0 rockboxdirectory language target [settingsfile]";
+ exit 32
+else
+ if [ ! -d "$1" ] || [ ! -f "$1/tools/genlang" ]; then
+ echo "Error: $1 is not a Rockbox directory"
+ exit 33
+ fi
+ if [ ! -f "$1/apps/lang/$2.lang" ]; then
+ echo "Error: $2 is not a valid language"
+ exit 34
+ fi
+ if [ ! -z "$4" ]; then
+ if [ -f "$4" ]; then
+ # Read settings from file
+ source "$4"
+ else
+ echo "Error: $4 does not exist"
+ exit 36
+ fi
+ fi
+ # XXX: check for valid $TARGET?
+fi
+
+VOICEFONT=`dirname $0`/voicefont
+if [ ! -x $VOICEFONT ]; then
+ echo "Error: $VOICEFONT does not exist or is not executable"
+ exit 35
+fi
+
+init_tts
+init_encoder
+generateclips "$1" "$2" "$3"
+stop_tts
+createvoicefile
+#deletefiles