Files
blackroad/scripts/voice-chat.sh
Alexa Amundson 78fbe80f2a Initial monorepo — everything BlackRoad in one place
bin/       230 CLI tools (ask-*, br-*, agent-*, roadid, carpool)
scripts/   99 automation scripts
fleet/     Node configs and deployment
workers/   Cloudflare Worker sources (roadpay, road-search, squad webhooks)
roadc/     RoadC programming language
roadnet/   Mesh network (5 APs, WireGuard)
operator/  Memory system scripts
config/    System configs
dotfiles/  Shell configs
docs/      Documentation

BlackRoad OS — Pave Tomorrow.

RoadChain-SHA2048: d1a24f55318d338b
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
2026-03-14 17:08:41 -05:00

52 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# BR-Voice - Voice chat with AI (TTS via Cecilia)
PINK='\033[38;5;205m'
BLUE='\033[38;5;69m'
GREEN='\033[38;5;82m'
AMBER='\033[38;5;214m'
RESET='\033[0m'
clear
printf "${PINK}╔══════════════════════════════════════╗${RESET}\n"
printf "${PINK}║ 🎙 BR-Voice Chat 🎙 ║${RESET}\n"
printf "${PINK}╚══════════════════════════════════════╝${RESET}\n\n"
# Check for say command (macOS TTS)
if ! command -v say &>/dev/null; then
printf "${AMBER}⚠ 'say' not found${RESET}\n"; exit 1
fi
VOICES=($(say -v '?' | awk '{print $1}' | head -10))
printf "${BLUE}Available voices:${RESET}\n"
for i in "${!VOICES[@]}"; do
printf " ${GREEN}%d${RESET}) %s\n" "$((i+1))" "${VOICES[$i]}"
done
printf "\n${BLUE}Select voice [1]: ${RESET}"
read -r vc
[[ -z "$vc" ]] && vc=1
VOICE=${VOICES[$((vc-1))]}
printf "${GREEN}Using voice: $VOICE${RESET}\n\n"
while true; do
printf "${PINK}You> ${RESET}"
read -r msg
[[ -z "$msg" || "$msg" == "quit" || "$msg" == "q" ]] && break
# Try Ollama on localhost first, then Cecilia
response=""
if curl -s --connect-timeout 2 http://localhost:11434/api/tags &>/dev/null; then
response=$(curl -s http://localhost:11434/api/generate -d "{\"model\":\"llama3.2\",\"prompt\":\"$msg\",\"stream\":false}" 2>/dev/null | python3 -c "import sys,json; print(json.load(sys.stdin).get('response',''))" 2>/dev/null)
fi
if [[ -z "$response" ]]; then
response=$(ssh -o ConnectTimeout=3 cecilia "curl -s http://localhost:11434/api/generate -d '{\"model\":\"llama3.2\",\"prompt\":\"$msg\",\"stream\":false}'" 2>/dev/null | python3 -c "import sys,json; print(json.load(sys.stdin).get('response',''))" 2>/dev/null)
fi
if [[ -z "$response" ]]; then
response="I couldn't connect to any AI model. Check Ollama on localhost or Cecilia."
fi
printf "${GREEN}AI> ${RESET}%s\n\n" "$response"
say -v "$VOICE" "$response" &
done
printf "${AMBER}Goodbye!${RESET}\n"