#!/bin/sh

# This script is a part of Rbook package.
# It's purpose is to generate and play audible speech
# from the text which comes to standard input.
#
# The flag "-s" followed by a number means silence
# for the requested number of hundredth of second.
# -v <value> -- Set speech volume. Value must be between 0 and 1.
# -p <value> -- Set pitch. Value must be between 0 and 1.
# -r <value> -- Set speech rate. Value must be between 0 and 1.
# -f <value> defines treatment of sampling frequency in Hz.
# -n -- Don't play generated sound stream.
# Return it as a standard output instead.
# -l -- Collect unknown words in /var/log/unknown.words.

# These variable contains path to stress dictionary.  You can change it
# through environment if in your system this value differs, or completely
# disable stress dictionary by setting RBOOK_DICT to empty value as follows:
# export RBOOK_DICT=

RBOOK_DICT="${RBOOK_DICT-/usr/local/share/ru_tts/lexicon}"

# Default values of speech parameters:
VOLUME=0.8
FREQUENCY=10300
RATE=0.0
PITCH=0.0

# Commands to use for actual tasks accomplishing:
if [ -r "$RBOOK_DICT" ]; then
    sndgen='ru_tts -p $PITCH -r $RATE -s '"\"$RBOOK_DICT\""
else
    sndgen='ru_tts -p $PITCH -r $RATE'
fi
sndplay='aplay -q -t raw -f S8 -r $FREQUENCY 2>/dev/null'
collect=""

# Command line parsing:
while test $1
do case $1 in
     -s) shift
         length=$1
         sndgen='dd if=/dev/zero bs=`expr $FREQUENCY / 100` count=$length'
         ;;
     -v) shift
         VOLUME=$1
         ;;
     -p) shift
         PITCH=$1
         ;;
     -r) shift
         RATE=$1
         ;;
     -f) shift
         FREQUENCY=$1
         ;;
     -n) sndplay='sox -q -t raw -s -1 -r 10k - -t raw -s -2 -r 16k -'
         ;;
     -l) collect="-l /var/log/unknown.words"
         ;;
      *) ;;
   esac
   shift
done

# Do the job.
exec 2>/dev/null
eval "exec $sndgen $collect | $sndplay"
