#! /bin/sh
############## start modify ##############
# Transcription
TRANSC_API_KEY=""
TRANSC_URL=""
# Translation
TRANSL_API_KEY=""
TRANSL_URL=""
# A line in the email configuration within "Settings", "Voicemail", "Email Config" must contain (without the external double quotes): "New voicemail message for '${VM_NAME}' (${VM_MAILBOX})"
EXTSTRING="New voicemail message for"
DE=802
JP=803
FR=804
NL=805
############### end modify ###############
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
pushd .
TMPDIR=$(mktemp -d)
cd $TMPDIR
cat >> stream.org
BOUNDARY=`grep "boundary=" stream.org | cut -d'"' -f 2`
awk '/'$BOUNDARY'/{i++}{print > "stream.part"i}' stream.org
PLAINTEXT=`cat stream.part1 | grep 'plain'`
if [ "$PLAINTEXT" != "" ]
then
cat stream.org > stream.new
else
sed '7,$d' stream.part3 > stream.part3.wav.head
sed '1,6d' stream.part3 > stream.part3.wav.base64
dos2unix -o stream.part3.wav.base64
base64 -di stream.part3.wav.base64 > stream.part3.wav
lame --abr 24 -mm -h -c --resample 22.050 stream.part3.wav stream.part3.mp3
base64 stream.part3.mp3 > stream.part3.mp3.base64
sed 's/x-wav/mpeg/g' stream.part3.wav.head | sed 's/.wav/.mp3/g' > stream.part3.mp3.head
mv stream.part stream.new
cat stream.part1 >> stream.new
cat stream.part2 >> stream.new
EXT=`cat stream.part2 | grep "$EXTSTRING" | sed 's/^.*(//' | sed 's/)//'`
echo "Extension: $EXT"
case "$EXT" in
"$DE")
curl -s -k -u "apikey:$TRANSC_API_KEY" -X POST \
--limit-rate 40000 \
--header "Content-Type: audio/wav" \
--data-binary @stream.part3.wav \
"$TRANSC_URL/v1/recognize?model=de-DE_NarrowbandModel" 1>audio.txt
TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "##g'`
TRANSCONF=`cat audio.txt | grep confidence | sed 's#^.*"confidence": ##g'`
#TRANSC_TRANSL=`cat audio.txt`
LANGUAGE="German Transcription: "
DATA='{"text": ["'$TRANSCRIPT'"], "model_id":"de-en"}'
curl -X POST -s -k -u "apikey:$TRANSL_API_KEY" \
--header "Content-Type: application/json" \
--data "$DATA" \
"$TRANSL_URL/v3/translate?version=2018-05-01" 1>translation.txt
TRANSLATION=`grep "\"translation\" :" translation.txt | sed 's/^.*"translation" : "//' | sed 's/"//'`
echo "English Translation: " >> stream.new
echo "$TRANSLATION" >> stream.new
echo "" >> stream.new
echo "Transcription Confidence: $TRANSCONF" >> stream.new
echo "$LANGUAGE" >> stream.new
echo "$TRANSCRIPT" >> stream.new
echo "German"
;;
"$JP")
curl -s -k -u "apikey:$TRANSC_API_KEY" -X POST \
--limit-rate 40000 \
--header "Content-Type: audio/wav" \
--data-binary @stream.part3.wav \
"$TRANSC_URL/v1/recognize?model=ja-JP_NarrowbandModel" 1>audio.txt
TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "##g'`
TRANSCONF=`cat audio.txt | grep confidence | sed 's#^.*"confidence": ##g'`
DATA='{"text": ["'$TRANSCRIPT'"], "model_id":"jp-en"}'
curl -X POST -s -k -u "apikey:$TRANSL_API_KEY" \
--header "Content-Type: application/json" \
--data "$DATA" \
"$TRANSL_URL/v3/translate?version=2018-05-01" 1>translation.txt
TRANSLATION=`grep "\"translation\" :" translation.txt | sed 's/^.*"translation" : "//' | sed 's/"//'`
echo "English Translation: " >> stream.new
echo "$TRANSLATION" >> stream.new
echo "" >> stream.new
echo "Transcription Confidence: $TRANSCONF" >> stream.new
echo "Japanese Transcription: " >> stream.new
echo "$TRANSCRIPT" >> stream.new
echo "Japanese"
;;
"$FR")
curl -s -k -u "apikey:$TRANSC_API_KEY" -X POST \
--limit-rate 40000 \
--header "Content-Type: audio/wav" \
--data-binary @stream.part3.wav \
"$TRANSC_URL/v1/recognize?model=fr-FR_NarrowbandModel" 1>audio.txt
TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "##g'`
TRANSCONF=`cat audio.txt | grep confidence | sed 's#^.*"confidence": ##g'`
DATA='{"text": ["'$TRANSCRIPT'"], "model_id":"fr-en"}'
curl -X POST -s -k -u "apikey:$TRANSL_API_KEY" \
--header "Content-Type: application/json" \
--data "$DATA" \
"$TRANSL_URL/v3/translate?version=2018-05-01" 1>translation.txt
TRANSLATION=`grep "\"translation\" :" translation.txt | sed 's/^.*"translation" : "//' | sed 's/"//'`
echo "English Translation: " >> stream.new
echo "$TRANSLATION" >> stream.new
echo "" >> stream.new
echo "Transcription Confidence: $TRANSCONF" >> stream.new
echo "French Transcription: " >> stream.new
echo "$TRANSCRIPT" >> stream.new
echo "French"
;;
"$NL")
curl -s -k -u "apikey:$TRANSC_API_KEY" -X POST \
--limit-rate 40000 \
--header "Content-Type: audio/wav" \
--data-binary @stream.part3.wav \
"$TRANSC_URL/v1/recognize?model=nl-NL_NarrowbandModel" 1>audio.txt
TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "##g'`
TRANSCONF=`cat audio.txt | grep confidence | sed 's#^.*"confidence": ##g'`
DATA='{"text": ["'$TRANSCRIPT'"], "model_id":"nl-en"}'
curl -X POST -s -k -u "apikey:$TRANSL_API_KEY" \
--header "Content-Type: application/json" \
--data "$DATA" \
"$TRANSL_URL/v3/translate?version=2018-05-01" 1>translation.txt
TRANSLATION=`grep "\"translation\" :" translation.txt | sed 's/^.*"translation" : "//' | sed 's/"//'`
echo "English Translation: " >> stream.new
echo "$TRANSLATION" >> stream.new
echo "" >> stream.new
echo "Transcription Confidence: $TRANSCONF" >> stream.new
echo "Dutch Transcription: " >> stream.new
echo "$TRANSCRIPT" >> stream.new
echo "Dutch"
;;
*)
curl -s -k -u "apikey:$TRANSC_API_KEY" -X POST \
--limit-rate 40000 \
--header "Content-Type: audio/wav" \
--data-binary @stream.part3.wav \
"$TRANSC_URL/v1/recognize?model=en-US_NarrowbandModel" 1>audio.txt
TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "##g'`
TRANSCONF=`cat audio.txt | grep confidence | sed 's#^.*"confidence": ##g'`
LANGUAGE="English Transcription: "
echo "Transcription Confidence: $TRANSCONF" >> stream.new
echo "$LANGUAGE" >> stream.new
echo "$TRANSCRIPT" >> stream.new
echo "English - Catch All"
;;
esac
cat stream.part3.mp3.head >> stream.new
dos2unix -o stream.new
unix2dos -o stream.part3.mp3.base64
cat stream.part3.mp3.base64 >> stream.new
echo "" >> stream.tmp
echo "" >> stream.tmp
cat stream.part4 >> stream.tmp
dos2unix -o stream.tmp
cat stream.tmp >> stream.new
fi
cat stream.new | sendmail -t
popd
rm -Rf $TMPDIR