From a16ad96b1b4ccdc86ccf4467c4b930c6582eca42 Mon Sep 17 00:00:00 2001 From: Jonas Häggqvist Date: Fri, 16 Nov 2007 20:07:23 +0000 Subject: Remove deprecated shellscripts git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15647 a1c6a512-1295-4272-9138-f99709370657 --- tools/gentalkclips.sh | 152 ------------------------- tools/genvoice.sh | 153 ------------------------- tools/voicecommon.sh | 301 -------------------------------------------------- 3 files changed, 606 deletions(-) delete mode 100755 tools/gentalkclips.sh delete mode 100755 tools/genvoice.sh delete mode 100644 tools/voicecommon.sh diff --git a/tools/gentalkclips.sh b/tools/gentalkclips.sh deleted file mode 100755 index 8da3b37704..0000000000 --- a/tools/gentalkclips.sh +++ /dev/null @@ -1,152 +0,0 @@ -#!/bin/sh -# __________ __ ___. -# Open \______ \ ____ ____ | | _\_ |__ _______ ___ -# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / -# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < -# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ -# \/ \/ \/ \/ \/ -# $Id$ -# -# Copyright (c) 2004 Daniel Gudlat -# - http://www.rockbox.org/tracker/task/2131 -# Copyright (c) 2006 Jonas Häggqvist -# - This version, only dirwalk and the following comments remains -# -# 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. -# -# Note: You may wish to change some of the settings below. -# -# A script to automatically generate audio clips containing the names of all -# folders in a directory tree for use with the "Talkbox" feature available to -# users of the Rockbox open source firmware for Archos MP3 players and -# recorders as well as several other devices. Talkbox permits the device to -# speak the names of the folders as one navigates the directory structure on -# the device, thus permitting "eyes-free" use for those for whom the usual -# visual navigation is difficult or simply inadvisable. -# -# Audio clips are captured and stored in wave format, then converted into MP3 -# format by a third party application (lame). If you execute the script, -# passing it the top level of your music file hierarchy as an argument while -# your device is connected to your PC, then the resulting audio clips will be -# generated and stored in the correct location for use with the Talkbox -# feature. Alternatively, if you mirror your music folder structure from your -# PC to your Archos device, you can just run the script on the PC and then -# update the files on your Archos with your usual synchronization routine. -# -# NOTE: If you don't already have them installed, you may obtain the Festival -# text to speech system and several voices at: -# -# http://www.cstr.ed.ac.uk/projects/festival.html -# http://festvox.org/festival/ -# -# The most pleasant freely available Festival voice I know of is the slt_arctic -# voice from HST at http://hts.ics.nitech.ac.jp/ -# -# Known bugs -# - This script generates talk clips for all files, Rockbox only uses talk clips -# for music files it seems. - -# 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 # -#################### - -# 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) -ENCODER=lame -# whether to overwrite existing mp3 files or only create missing ones (Y/N) -OVERWRITE_TALK=N -# whether, when overwriting mp3 files, also to regenerate all the wav files -OVERWRITE_WAV=N -# whether to remove the intermediary wav files after creating the mp3 files -REMOVE_WAV=Y -# whether to recurse into subdirectories -RECURSIVE=Y -# whether to strip extensions from filenames -STRIP_EXTENSIONS=Y - -################### -# End of settings # -################### - -strip_extension() { - TO_SPEAK=$1 - # XXX: add any that needs adding - for ext in mp3 ogg flac mpc sid; do - TO_SPEAK=`echo "$TO_SPEAK" |sed "s/\.$ext//i"` - done -} - -# Walk directory $1, creating talk files if necessary, descend into -# subdirecotries if specified -dirwalk() { - if [ -d "$1" ]; then - for i in "$1"/*; do - # Do not generate talk clip for talk(.wav) files - if [ `echo "$i" | grep -c "\.talk$"` -ne 0 ] || \ - [ `echo "$i" | grep -c "\.talk\.wav$"` -ne 0 ]; then - echo "Notice: Skipping file \"$i\"" - continue - fi - - TO_SPEAK=`basename "$i"` - if [ X$STRIP_EXTENSIONS = XY ]; then - strip_extension "$TO_SPEAK" - fi - - if [ -d "$i" ]; then - # $i is a dir: - SAVE_AS="$i"/_dirname.talk - WAV_FILE="$SAVE_AS".wav - - # If a talk clip already exists, only generate a new one if - # specified - if [ ! -f "$SAVE_AS" ] || [ X$OVERWRITE_TALK = XY ]; then - voice "$TO_SPEAK" "$WAV_FILE" - encode "$WAV_FILE" "$SAVE_AS" - fi - - # Need to be done lastly, or all variables will be dirty - if [ X$RECURSIVE = XY ]; then - dirwalk "$i" - fi - else - # $i is a file: - SAVE_AS="$i".talk - WAV_FILE="$SAVE_AS".wav - - # If a talk clip already exists, only generate a new one if - # specified - if [ ! -f "$i.talk" ] || [ X$OVERWRITE_TALK != XY ]; then - voice "$TO_SPEAK" "$WAV_FILE" - encode "$WAV_FILE" "$SAVE_AS" - fi - fi - # Remove wav file if specified - if [ X$REMOVEWAV = XY ]; then - rm -f "$WAV_FILE" - fi - done - else - echo "Warning: $1 is not a directory" - fi -} - -init_tts -init_encoder -if [ $# -gt 0 ]; then - dirwalk "$*" -else - dirwalk . -fi -stop_tts diff --git a/tools/genvoice.sh b/tools/genvoice.sh deleted file mode 100755 index 4e58801205..0000000000 --- a/tools/genvoice.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/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 -# List of IDs to send to voicefont -VOICEFONTIDS=voicefontids - -################### -# End of settings # -################### - -TARGET_ID="$4" -createvoicefile() { - RLANG="$1" - $GENLANG -e=$ENGLISH -o -t=$TARGET $LANG_FILE > $VOICEFONTIDS - $VOICEFONT "$VOICEFONTIDS" "$TARGET_ID" "$TEMPDIR/" "./$RLANG.voice" - rm -f $VIOCEFONTIDS -} - -deletefiles() { - # XXX: might be unsafe depending on the value of TEMPDIR - rm -f "${TEMPDIR}"/LANG_* - rm -f "${TEMPDIR}"/VOICE_* - rm -f "${TEMPDIR}"/NOT_USED_* -} - -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-` - # xxx: Should the hash include encoder/tts options? - POOL_FILE=${POOL}/`echo "$STRING" |md5sum|cut -b-32`-${RLANG}.mp3 - - if [ -n "$POOL" ]; then - # we have a common pool of snippets, check that first - # for available mp3 sounds, and if it is available copy - # (symlink!) it over - if [ -f "$POOL_FILE" ]; then - echo "Re-using $ID from pool (${POOL_FILE})" - if [ ! -e "$TEMPDIR/$ID".mp3 ]; then - # only do this if not present - cp -f "$POOL_FILE" "$TEMPDIR/$ID".mp3 - fi - fi - fi - - # only make an mp3 if not already present - if [ ! -e "$TEMPDIR/$ID".mp3 ]; then - # Now generate the file - voice "$STRING" "$TEMPDIR/$ID".wav - if [ -n "$POOL" ]; then - # create it in the pool, symlink it back - encode "$TEMPDIR/$ID".wav "$POOL_FILE" - cp -f "$POOL_FILE" "$TEMPDIR/$ID".mp3 - else - encode "$TEMPDIR/$ID".wav "$TEMPDIR/$ID".mp3 - fi - fi - ;; - esac - i=`expr $i + 1` - done - ) -} - -if [ -z "$4" ]; then - echo "Usage: $0 rockboxdirectory language target targetid [settingsfile]"; - exit 32 -else - if [ ! -d "$1" ] || [ ! -f "$1/tools/genlang" ]; then - echo "Error: $1 is not a Rockbox directory" - exit 33 - fi - # Check for valid language - if [ ! -f "$1/apps/lang/$2.lang" ]; then - echo "Error: $2 is not a valid language" - exit 34 - fi - if [ ! -z "$5" ]; then - if [ -f "$5" ]; then - # Read settings from file - . "$5" - else - echo "Error: $5 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 "$2" -deletefiles diff --git a/tools/voicecommon.sh b/tools/voicecommon.sh deleted file mode 100644 index 458a7b2ec6..0000000000 --- a/tools/voicecommon.sh +++ /dev/null @@ -1,301 +0,0 @@ -#!/bin/sh -# __________ __ ___. -# Open \______ \ ____ ____ | | _\_ |__ _______ ___ -# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / -# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < -# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ -# \/ \/ \/ \/ \/ -# $Id$ -# -# Copyright (c) 2006 Jonas Häggqvist -# -# 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. -# -# A selection of functions common to creating voicefiles for Rockbox. -# -# You may wish to change some of the settings below. - -##################### -# Program locations # -##################### - -# Leave any you're not using untouched, enter full path if the program is -# not found - -# the festival main executable -FESTIVAL_BIN=festival -# the festival_client binary -FESTIVAL_CLIENT=festival_client - -# The flite executable -FLITE_BIN=flite - -# The eSpeak executable -ESPEAK_BIN=espeak - -# The lame executable -LAME_BIN=lame - -# The speexenc executable -SPEEX_BIN=speexenc - -# The oggenc executable -VORBIS_BIN=oggenc - -# Tools directory -TOOLSDIR=`dirname $0` - -# The wavtrim executable -WAVTRIM=$TOOLSDIR/wavtrim - -# The SAPI5 script directory -if [ -f "`which cygpath`" ]; then - SAPI5DIR=`cygpath $TOOLSDIR -a -w` -fi - -##################### -# Festival settings # -##################### - -# If you're not using festival, leave untouched - -# whether to start the Festival server locally (Y/N) -FESTIVAL_START=Y -# the host of the Festival server -# this is set to localhost automatically when FESTIVAL_START is Y -FESTIVAL_HOST=localhost -# the port of the Festival server -FESTIVAL_PORT=1314 -# where to log the Festival client output -FESTIVAL_LOG=/dev/null -# other options to the festival server -FESTIVAL_OPTS="" - -################## -# Flite settings # -################## - -# If you're not using flite, leave untouched -FLITE_OPTS="" - -################### -# eSpeak settings # -################### - -# If you're not using eSpeak, leave untouched -ESPEAK_OPTS="" - -#################### -# Wavtrim settings # -#################### - -# The maximum sample value that will be treated as silence by the wavtrim tool. -# The value is expressed as an absolute 16 bit integer sample value (0 dB equals -# 32767). -# -# 500 is a good guess - at least for Festival - -NOISEFLOOR='500' - -##################### -# Encoding settings # -##################### -# where to log the encoder output -ENC_LOG=/dev/null - -# Suggested: --vbr-new -t --nores -S -# VBR, independent frames, silent mode -LAME_OPTS="--vbr-new -t --nores -S" - -# Suggested: -# XXX: suggest a default -SPEEX_OPTS="" - -# Suggested: -q0 --downmix -# Low quality, mono -VORBIS_OPTS="-q0 --downmix" - -################### -# End of settings # -################### - -# Check if executables exist and perform any necessary initialisation -init_tts() { - case $TTS_ENGINE in - festival) - # Check for festival_client - if [ ! -f "`which $FESTIVAL_CLIENT`" ]; then - echo "Error: $FESTIVAL_CLIENT not found" - exit 4 - fi - - # Check for, and start festival server if specified - if [ X$FESTIVAL_START = XY ]; then - if [ ! -f "`which $FESTIVAL_BIN`" ]; then - echo "Error: $FESTIVAL_BIN not found" - exit 3 - fi - FESTIVAL_HOST='localhost' - $FESTIVAL_BIN $FESTIVAL_OPTS --server 2>&1 > /dev/null & - FESTIVAL_SERVER_PID=$! - sleep 3 - if [ `ps | grep -c "^\ *$FESTIVAL_SERVER_PID"` -ne 1 ]; then - echo "Error: Festival not started" - exit 9 - fi - fi - # Test connection to festival server - output=`echo -E "Rockbox" | $FESTIVAL_CLIENT --server \ - $FESTIVAL_HOST --otype riff --ttw --output \ - /dev/null 2>&1` - if [ $? -ne 0 ]; then - echo "Error: Couldn't connect to festival server at" \ - "$FESTIVAL_HOST ($output)" - exit 8 - fi - ;; - flite) - # Check for flite - if [ ! -f "`which $FLITE_BIN`" ]; then - echo "Error: $FLITE_BIN not found" - exit 5 - fi - ;; - espeak) - # Check for espeak - if [ ! -f "`which $ESPEAK_BIN`" ]; then - echo "Error: $ESPEAK_BIN not found" - exit 5 - fi - ;; - sapi5) - # Check for SAPI5 - cscript /B $SAPI5DIR/sapi5_init_tts.vbs - if [ $? -ne 0 ]; then - echo "Error: SAPI 5 not available" - exit 5 - fi - ;; - *) - echo "Error: no valid TTS engine selected: $TTS_ENGINE" - exit 2 - ;; - esac - if [ ! -x $WAVTRIM ]; then - echo "Error: $WAVTRIM is not available" - exit 11 - fi -} - -# Perform any necessary shutdown for TTS engine -stop_tts() { - case $TTS_ENGINE in - festival) - if [ X$FESTIVAL_START = XY ]; then - # XXX: This is probably possible to do using festival_client - kill $FESTIVAL_SERVER_PID > /dev/null 2>&1 - fi - ;; - esac -} - -# Check if executables exist and perform any necessary initialisation -init_encoder() { - case $ENCODER in - lame) - # Check for lame binary - if [ ! -f "`which $LAME_BIN`" ]; then - echo "Error: $LAME_BIN not found" - exit 6 - fi - ;; - speex) - # Check for speexenc binary - if [ ! -f "`which $SPEEX_BIN`" ]; then - echo "Error: $SPEEX_BIN not found" - exit 7 - fi - ;; - vorbis) - # Check for vorbis encoder binary - if [ ! -f "`which $VORBIS_BIN`" ]; then - echo "Error: $VORBIS_BIN not found" - exit 10 - fi - ;; - *) - echo "Error: no valid encoder selected: $ENCODER" - exit 1 - ;; - esac - -} - -# Encode file $1 with ENCODER and save the result in $2, delete $1 if specified -encode() { - INPUT=$1 - OUTPUT=$2 - - if [ ! -f "$INPUT" ]; then - echo "Warning: missing input file: \"$INPUT\"" - else - echo "Action: Encode $OUTPUT with $ENCODER" - case $ENCODER in - lame) - $LAME_BIN $LAME_OPTS "$WAV_FILE" "$OUTPUT" >>$ENC_LOG 2>&1 - ;; - speex) - $SPEEX_BIN $SPEEX_OPTS "$WAV_FILE" "$OUTPUT" >>$ENC_LOG 2>&1 - ;; - vorbis) - $VORBIS_BIN $VORBIS_OPTS "$WAV_FILE" -o "$OUTPUT" >>$ENC_LOG 2>&1 - esac - if [ ! -f "$OUTPUT" ]; then - echo "Warning: missing output file \"$OUTPUT\"" - fi - fi -} - -# Generate file $2 containing $1 spoken by TTS_ENGINE, trim silence -voice() { - TO_SPEAK=$1 - WAV_FILE=$2 - if [ ! -f "$WAV_FILE" ] || [ X$OVERWRITE_WAV = XY ]; then - if [ "${TO_SPEAK}" = "" ]; then - touch "$WAV_FILE" - else - case $TTS_ENGINE in - festival) - echo "Action: Generate $WAV_FILE with festival" - echo -E "$TO_SPEAK" | $FESTIVAL_CLIENT \ - --server $FESTIVAL_HOST \ - --otype riff --ttw --output "$WAV_FILE" 2>"$WAV_FILE" - ;; - espeak) - echo "Action: Generate $WAV_FILE with eSpeak" - echo $ESPEAK_BIN $ESPEAK_OPTS -w "$WAV_FILE" - echo -E "$TO_SPEAK" | $ESPEAK_BIN $ESPEAK_OPTS -w "$WAV_FILE" - ;; - flite) - echo "Action: Generate $WAV_FILE with flite" - echo -E "$TO_SPEAK" | $FLITE_BIN $FLITE_OPTS -o "$WAV_FILE" - ;; - sapi5) - cscript /B "$SAPI5DIR\sapi5_voice.vbs" ""$TO_SPEAK"" "$WAV_FILE" - ;; - esac - fi - fi - trim "$WAV_FILE" -} - -# Trim wavefile $1 -trim() { - WAVEFILE="$1" - echo "Action: Trim $WAV_FILE" - $WAVTRIM "$WAVEFILE" $NOISEFLOOR -} -- cgit v1.2.3