You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.6 KiB
93 lines
2.6 KiB
#!/bin/sh
|
|
#
|
|
#####################################################################
|
|
# filename: getWxFor
|
|
#
|
|
# description: Uses festival text-to-speech synthesiser to convert
|
|
# weather data to audio and save as a ul file.
|
|
#
|
|
# usage: getWxFor
|
|
#
|
|
# 2006/06/20 w0anm Original Release
|
|
#
|
|
# $Id: getWxFor 46 2009-04-10 04:27:25Z $
|
|
######################################################################
|
|
|
|
# Load config file
|
|
|
|
if [ -f ${CUSTOM}/wx_scripts.conf ] ; then
|
|
source ${CUSTOM}/wx_scripts.conf
|
|
else
|
|
echo "Missing ${CUSTOM}/wx_scripts.conf file, aborting..."
|
|
exit 1
|
|
fi
|
|
|
|
# if ZONE not an argument, then use what is defined in configure file.
|
|
if [ "$1" = "" ] ; then
|
|
ZONE_FOR=$ZONE
|
|
else
|
|
ZONE_FOR=$1
|
|
fi
|
|
if [ ! -d $WXFOR_SPOOLDIR/$ZONE_FOR ] ; then
|
|
mkdir -p $WXFOR_SPOOLDIR/$ZONE_FOR
|
|
fi
|
|
|
|
# Local noaa forecast text link
|
|
# setup ZONE_FOR variable to convert to lower case and extract state
|
|
LC_ZONE=`echo $ZONE_FOR | tr 'A-Z' 'a-z'`
|
|
STATE=`echo $LC_ZONE | awk 'BEGIN { FS="z" } { print $1} '`
|
|
|
|
# set URL for wget. This is the url where the forcasts originate.
|
|
URL="http://tgftp.nws.noaa.gov/data/forecasts/zone/${STATE}/${LC_ZONE}.txt"
|
|
|
|
WX_TXT="wx_forecast.txt"
|
|
WX_TXT_TMP="wx_forecast.tmp"
|
|
WX_TXT_TMP2="wx_forecast2.tmp"
|
|
|
|
#----------------------------- Main program -----------------------------
|
|
|
|
echo Downloading....
|
|
cd $WXFOR_SPOOLDIR/$ZONE_FOR
|
|
wget $URL
|
|
echo Done....
|
|
mv ohz070.txt $WX_TXT_TMP
|
|
|
|
# delete the first 10 lines before converting
|
|
TOTAL_LINE=`wc $WX_TXT_TMP | awk '{print $1}'`
|
|
LINE_DISP=`expr $TOTAL_LINE - 10`
|
|
|
|
# sed -f ${CUSTOM}/wxtext_conv.sed $WX_TXT_TMP > $WX_TXT
|
|
|
|
tail -${LINE_DISP} $WX_TXT_TMP | sed "s/\./\. /g ; s/0S/0's/g ; s/\$\$\$/. end of message . . . /g" | sed -f ${CUSTOM}/wxtext_conv.sed > $WX_TXT
|
|
|
|
|
|
# Do standard conversion..
|
|
# first convert to lower case
|
|
cat $WX_TXT | tr 'A-Z' 'a-z' > $WX_TXT_TMP
|
|
|
|
sed -f ${CUSTOM}/wxtext_conv.sed $WX_TXT_TMP > $WX_TXT_TMP2
|
|
|
|
# add heater and cat file
|
|
echo "Weather forecast for $ZONE..." > $WX_TXT_TMP
|
|
cat $WX_TXT_TMP $WX_TXT_TMP2 > $WX_TXT
|
|
|
|
# clean up temp files
|
|
rm $WX_TXT_TMP $WX_TXT_TMP2
|
|
|
|
# convert
|
|
|
|
if [ $TEXT2SPEECH = "festival" ] ; then
|
|
# $TEXT2WAVE -F 8000 -scale 0.5 -otype ulaw $WX_TXT -o forecast.ul -eval "(voice_ked_diphone)"
|
|
$TEXT2WAVE -otype wav -o forecast.wav $WXTXT
|
|
ffmpeg -i forecast.wav -y -ar 48000 forecast1.wav
|
|
/usr/local/bin/wav2dvtool forecast1.wav KD8TUZ_REPORT KD8TUZ_B KD8TUZ_G "Hamilton Forecast Report" forecast.dvtool
|
|
fi
|
|
|
|
if [ $TEXT2SPEECH = "cepstral" ] ; then
|
|
$TEXT2WAVE -m text -f $WX_TXT -p audio/encoding=ulaw,audio/sampling-rate=8000,audio/volume=$SWIFT_VOL -o forecast.ul
|
|
fi
|
|
|
|
exit 0
|
|
|
|
# EOF
|