#!/bin/bash # weak machines need a long time to create a gsm-Voicefile. # this script searches for an existing voice and if not it will create it # Martin Haas 071217 # The NSLU2 needs e.g. 5min to convert the word "Aussentemperatur" # Call this file (on a faster machine :-) ) with the words to convert # e-g voip2fhem_create_txt2gsm "This is a test" # otherwise this script creates number from -20 to +90 # hint: cat examplefile | while read line; do ./voip2fhem_create_txt2gsm "$line"; done location=/var/tmp/voip2fhem # later the owner must be asterisk.asterisk [[ ! -d $location ]] && { mkdir $location; chown asterisk.asterisk $location; } ################################################### ### CreateVoices() { lvoice="$location/$(echo $voice | sed 's/[ ,.:]/_/g').gsm" echo $lvoice if [ ! -f $lvoice ] then espeak -v de -s 120 -w /tmp/asterisk.wav "$voice" sox /tmp/asterisk.wav -r 8000 -c 1 $lvoice resample -ql fi } ################################################### ## main if [[ $1 ]] then voice=$1 CreateVoices "$voice" else for i in `seq -20 90 ` -0 do if [ ${i:0:1} == - ] then m="minus $i" ## negativ temperature voice=$(echo $m | sed -e 's/-//g' -e 's/\./,/g') # English people: change , against . else voice=$(echo $i | sed 's/\./,/g') # English people: change , against . fi CreateVoices "$voice" origvoice=$voice for k in `seq 0 9` do voice="$origvoice,$k" # English people: change , against . CreateVoices "$voice" voice=$origvoice done done fi