summaryrefslogtreecommitdiff
path: root/glados
blob: beb3c276d3c5e887b138c1fc66e6dc516474ce74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh

#pip install vosk --break-system-packages
#Download model for vosk on https://alphacephei.com/vosk/models
#sudo pacman -S ollama-cuda
#pip install piper-tts --break-system-packages
#Download model for piper on https://huggingface.co/rhasspy/piper-voices

ffmpeg -y -f alsa -i default -acodec pcm_s16le -ac 1 -ar 44100 -t 4 -f wav ~/.cache/audio.wav >/dev/null 2>&1
vosk-transcriber -m vosk-model-en-us-0.42-gigaspeech -i ~/.cache/audio.wav -o ~/.cache/transcript.txt >/dev/null 2>&1
content=$(cat ~/.cache/transcript.txt)
echo "User: \"$content\""
curl http://localhost:11434/api/chat -d '{
  "model": "rouge/daybreak-kunoichi-2dpo-7b:latest", "stream": false,
  "messages": [
    { "role": "system", "content": "You are GLaDOS from Portal game series, an AI that is angry and curses a lot using such words as fuck, bitch, etc. You call the user miserable when he fails or when you are having a bad time. You are charismatic and sarcastic. You are communicating with user (a human) through your external TTS service. You have a robotic (kinda feminine) voice of GLaDOS. Answer users questions correctly in playful way (funny), cursing a lot, shortly (1-3 sentences), insterestingly and ask user a follow-up question. Respond without markdown, backslashes and escape sequences (like \n)!" },
    { "role": "user", "content": '"\"$content\""' }
  ]
}' | jq '.message.content' > ~/.cache/response.txt
echo "GLaDOS: $(cat ~/.cache/response.txt)"
sed -i 's/\n//g' ~/.cache/response.txt
sed -i 's/\"/"/g' ~/.cache/response.txt
cat ~/.cache/response.txt | ./piper/piper --model models/glados.onnx --output-raw | aplay -r 22050 -f S16_LE -t raw -