Skip to content

Instantly share code, notes, and snippets.

@curioustorvald
Last active July 12, 2021 00:21
Show Gist options
  • Save curioustorvald/12f9f5dfa4870a2b586d0bb3ffa63119 to your computer and use it in GitHub Desktop.
Save curioustorvald/12f9f5dfa4870a2b586d0bb3ffa63119 to your computer and use it in GitHub Desktop.
Twitch Chat Reader with Espeak and Chatty
#!/bin/bash
file=speechtemp.txt
filetmp=speechtemp.tmp
while :
do
lastline=$(head -1 $file)
tail -n +2 $file > $filetmp && mv $filetmp $file
outline=$(echo $lastline | sed -r 's/\[[^\n]+\] <[^\n<>]+>\*?//')
outline=$(echo $outline | sed -r 's/\x01|\x02|\x03|\x04|\x05|\x06|\x07|\x08|\x09|\x0A|\x0B|\x0C|\x0D|\x0E|\x0F|\x10|x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F//g')
outline=$(echo $outline | sed -r 's/vulpe/불페/g')
outline=$(echo $outline | sed -r 's/boolgyeowoo/붉여우/g')
outline=$(echo $outline | sed -r 's/~([가-힣])/물결표 \1/g')
outline=$(echo $outline | sed -r 's/([가-힣])~+/\1/g')
outline=$(echo $outline | sed -r 's/([0-9][0-9]):([0-9][0-9]):([0-9][0-9])/\1시 \2분 \3초/g')
outline=$(echo $outline | sed -r 's/([0-9][0-9]):([0-9][0-9])/\1시 \2분/g')
outline=$(echo $outline | sed -r 's/!([가-힣])/느낌표 \1/g')
outline=$(echo $outline | sed -r 's/chivil2Nabchi/Chivilt납치/g')
outline=$(echo $outline | sed -r 's/chivil2KiKi/Chivilt키키/g')
outline=$(echo $outline | sed -r 's/chivil2Domangga/Chivilt도망가/g')
outline=$(echo $outline | sed -r 's/chivil2Gamgyul/Chivilt감귤/g')
outline=$(echo $outline | sed -r 's/funzinZthx/펀진제리감사/g')
outline=$(echo $outline | sed -r 's/funzinAng1/펀진앵무/g')
outline=$(echo $outline | sed -r 's/funzinAng3/펀진앵무/g')
outline=$(echo $outline | sed -r 's/funzinPepepe/펀진페페페/g')
outline=$(echo $outline | sed -r 's/funzinOMG/펀진칠레감탄/g')
outline=$(echo $outline | sed -r 's/funzinRctAngry/펀진롤코화남/g')
outline=$(echo $outline | sed -r 's/funzinRctUp/펀진롤코따봉/g')
outline=$(echo $outline | sed -r 's/funzinRctDown/펀진롤코따운/g')
outline=$(echo $outline | sed -r 's/funzinRctTrophy/펀진롤코트로피/g')
outline=$(echo $outline | sed -r 's/funzinRctToilet/펀진롤코변기/g')
outline=$(echo $outline | sed -r 's/funzinRctGoldToilet/펀진롤코고올든변기/g')
outline=$(echo $outline | sed -r 's/funzinFn1/펀진파누좌/g')
outline=$(echo $outline | sed -r 's/funzinFn2/펀진파누코/g')
outline=$(echo $outline | sed -r 's/funzinFn3/펀진파누우/g')
outline=$(echo $outline | sed -r 's/funzinFnA1/펀진파누하이/g')
outline=$(echo $outline | sed -r 's/funzinDodo1/펀진도도/g')
outline=$(echo $outline | sed -r 's/funzinDodo0/펀진도도메롱/g')
outline=$(echo $outline | sed -r 's/funzinFanu0/펀진파누/g')
outline=$(echo $outline | sed -r 's/funzinBabo/펀진바보/g')
outline=$(echo $outline | sed -r 's/sakemoEww/사케경멸/g')
outline=$(echo $outline | sed -r 's/sakemoHing/사케힝/g')
outline=$(echo $outline | sed -r 's/sakemoYung/사케융/g')
outline=$(echo $outline | sed -r 's/sakemoGgong/사케꽁/g')
outline=$(echo $outline | sed -r 's/sakemoSuperggong/사케꽁/g')
outline=$(echo $outline | sed -r 's/sakemoMusta/사케무스타/g')
outline=$(echo $outline | sed -r 's/sakemoWow/사케우왕/g')
outline=$(echo $outline | sed -r 's/silver119Hing/실버힝/g')
outline=$(echo $outline | sed -r 's/silver119Zero/실버제로콜라/g')
outline=$(echo $outline | sed -r 's/silver119Tach/실버땃쥐/g')
outline=$(echo $outline | sed -r 's/silver119Hi/실버하이/g')
outline=$(echo $outline | sed -r 's/silver119Hmm/실버흠/g')
outline=$(echo $outline | sed -r 's/silver119Heuk/실버흑/g')
outline=$(echo $outline | sed -r 's/ychickBoonuhbbang/치킨붕어빵/g')
outline=$(echo $outline | sed -r 's/ychickMelona/치킨메로나/g')
outline=$(echo $outline | sed -r 's/ychickLeftthigh/치킨닭다리/g')
outline=$(echo $outline | sed -r 's/ychickRightwing/치킨닭날개/g')
outline=$(echo $outline | sed -r 's/ychickIschicken/치킨은치킨/g')
outline=$(echo $outline | sed -r 's/ychickComeownism/치킨털산주의/g')
outline=$(echo $outline | sed -r 's/ㄴㄴ/노노/g')
outline=$(echo $outline | sed -r 's/ㄱㄱ/고고/g')
outline=$(echo $outline | sed -r 's/ㅊㅋ/추카/g')
outline=$(echo $outline | sed -r 's/ㅊㅊ/추추/g')
outline=$(echo $outline | sed -r 's/ㄹㅇ/레알/g')
outline=$(echo $outline | sed -r 's/ㅅㄱ/수고/g')
outline=$(echo $outline | sed -r 's/ㅇㅎ/아항/g')
outline=$(echo $outline | sed -r 's/ㅅㅌㅊ/가능/g')
outline=$(echo $outline | sed -r 's/ㅆㅅㅌㅊ/쉽가능/g')
outline=$(echo $outline | sed -r 's/시발([^역])/야발\1/g')
outline=$(echo $outline | sed -r 's/[시씨][발팔]/야발/g')
outline=$(echo $outline | sed -r 's/ㅅㅂ/야발/g')
outline=$(echo $outline | sed -r 's/링크/__eSqRingKeu/g')
outline=$(echo $outline | sed -r 's/젤다/__eSqJelDa/g')
outline=$(echo $outline | sed -r 's/__eSqRingKeu/젤다/g')
outline=$(echo $outline | sed -r 's/__eSqJelDa/링크/g')
outline=$(echo $outline | sed -r 's/https?:[^ ]+/(젤다)/g')
outline=$(echo $outline | sed -r 's/\(?+\)//g')
outline=$(echo $outline | sed -r 's/못읽/몯읽/g')
outline=$(echo $outline | sed -r 's/[vV]ulpe/불페/g')
outline=$(echo $outline | sed -r 's/[tT]aimu/타이무/g')
speaker=$(echo $lastline | sed -r 's/\[[^\n]+\] <[~!\^$%+]*([^\n<>]+)>[^\n]+/\1/')
speakerhash=$(( $(cksum <<< "$speaker" | cut -f 1 -d ' ') ))
speakernumber=$(( ($speakerhash % 7) + 1 ))
speakerstring="ko+m$speakernumber"
speakerpitch=$(( ($speakerhash % 60) + 20 ))
outline=${outline:0:100}
# echo $lastline
echo "["$speakerstring-$speakerpitch"]$" $speaker":" $outline
espeak-ng -s 250 -v $speakerstring -p $speakerpitch "$outline" 2>/dev/null
sleep 0.2
done
#!/bin/bash
file=~/.chatty/logs/#$1.log
rm speechtemp.txt
rm speechtemp.tmp
echo "Make sure to run 'twitch-tts-read.sh' to actually read the chat!"
while :
do
event=$(inotifywait -q $file)
echo $(tail -n 1 $file) >> speechtemp.txt
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment