#!/bin/sh
#
# RJP 21.9.2025 machine speaker 2
# simple version from machinespeaker
# default speed should be 130
# Version where packages espeak, yad, xterm, pulseaudio, sox and ffmpeg are required
# Two different recording method added
# 23.9.2025 added advanced section for ffmpeg recording
time=$(date "+%F-%H-%M-%S")
echo "
50

55

60

65

70

75

80

85

90

95
 
100

105

110

115

120

125

130

135 
 
140

145

150

155

160

165

170

175

180

185

190

195

200   

" > /tmp/options.txt

SPEAK="$(yad --center --entry --width=700 --height=100 --text-align=center --title="Write or paste here" --
text="WRITE OR PASTE TEXT INTO BOX" --entry --entry-label=BOX --entry-text="")"
echo "$SPEAK" > /tmp/input.txt

choose=$(cat /tmp/options.txt | \
yad --list --title="select speed" --text="select speed" --center --radiolist \
  --width=250 --height=2000 \
  --height=300 \
  --column=Select \
  --column=word_per_minute
) 
cat "$choose" 2> /tmp/tone.txt

cat /tmp/tone.txt | awk '{print $2}' > /tmp/tone2.txt
cat /tmp/tone2.txt | sed 's/^.//' > /tmp/tone3.txt
tr -dc '0-9' < /tmp/tone3.txt > /tmp/tone4.txt

locale=$(
yad --list --title="select locale" --text="select locale" --center --radiolist \
  --width=250 --height=200 \
  --column=fi \
  --column=en \
  true fi false en false de
) 
cat "$locale" 2> /tmp/locale.txt
cat /tmp/locale.txt | awk '{print $2}' > /tmp/locale2.txt
cat /tmp/locale2.txt | sed 's/^.//' > /tmp/locale3.txt
sed -i 's/TRUE|//g' /tmp/locale3.txt 
sed -i 's/.$//' /tmp/locale3.txt 
sed -i 's/.$//' /tmp/locale3.txt 
sed -i 's/.$//' /tmp/locale3.txt  

gender=$(
yad --list --title="select gender" --text="select gender" --center --radiolist \
  --width=300 --height=200 \
  --column="man is m5" \
  --column="woman is f5"\
  true m5 false f5
) 

cat "$gender" 2> /tmp/gender.txt
cat /tmp/gender.txt | awk '{print $2}' > /tmp/gender2.txt
cat /tmp/gender2.txt | sed 's/^.//' > /tmp/gender3.txt
sed -i 's/TRUE|//g' /tmp/gender3.txt 
sed -i 's/.$//' /tmp/gender3.txt 
sed -i 's/.$//' /tmp/gender3.txt 
sed -i 's/.$//' /tmp/gender3.txt 

yad --form --center --columns=2 --rows=3 --width=500 --title="MACHINE SPEAKER 2 plus" --text="                                      MACHINE SPEAKER 2 plus

                                Ctrl c under Terminal stops recording 

" \
\
--field="Speak text":fbtn "sh -c 'cat /tmp/input.txt | espeak -v  $(cat /tmp/locale3.txt)+$(cat /tmp/gender3.txt) -s $(cat /tmp/tone4.txt) ; exec sh' & " \
--field="Stop speaking":fbtn "sh -c 'killall espeak; exec sh' & " \
--field="Record speak with sox":fbtn "xterm -e sh -c ' sox -t alsa default Recording-$time.wav; exec sh' & " \
--field="Record speak with ffmpeg":fbtn "xterm -e sh -c 'ffmpeg -fflags nobuffer -f pulse -i default Recording-$time.mp3  ; exec sh' & " \
--field="Detec speaker output":fbtn "xterm -e sh -c 'pacmd list-sinks | grep -e 'name:' -e 'index' -e 'Speakers'  ; exec sh' & " \
--field="Record monitor audio with ffmpeg":fbtn "xterm -e sh -c 'ffmpeg -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -c:a libmp3lame -q:a 2 Recording-$time.mp3  ; exec sh' & " \
--button=Exit:1

cd /tmp && rm gender3.txt locale3.txt gender.txt locale.txt tone.txt input.txt gender2.txt locale2.txt options.txt tone2.txt tone3.txt tone4.txt


