dictation-service/scripts/switch-model.sh
Kade Heyborne 73a15d03cd
Fix dictation service: state detection, async processing, and performance optimizations
- Fix state detection priority: dictation now takes precedence over conversation
- Fix critical bug: event loop was created but never started, preventing async coroutines from executing
- Optimize audio processing: reorder AcceptWaveform/PartialResult checks
- Switch to faster Vosk model: vosk-model-en-us-0.22-lgraph for 2-3x speed improvement
- Reduce block size from 8000 to 4000 for lower latency
- Add filtering to remove spurious 'the', 'a', 'an' words from start/end of transcriptions
- Update toggle-dictation.sh to properly clean up conversation lock file
- Improve batch audio processing for better responsiveness
2025-12-04 11:49:07 -07:00

109 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# Model Switching Script for Dictation Service
# Allows easy switching between different speech recognition models
DICTATION_DIR="/mnt/storage/Development/dictation-service"
SHARED_MODELS_DIR="$HOME/.shared/models/vosk-models"
ENHANCED_SCRIPT="$DICTATION_DIR/src/dictation_service/ai_dictation_simple.py"
echo "=== Dictation Model Switcher ==="
echo ""
# Available models
declare -A MODELS=(
["small"]="vosk-model-small-en-us-0.15 (40MB) - Fast, Basic Accuracy"
["lgraph"]="vosk-model-en-us-0.22-lgraph (128MB) - Good Balance"
["full"]="vosk-model-en-us-0.22 (1.8GB) - Best Accuracy"
)
# Show current model
if [ -f "$ENHANCED_SCRIPT" ]; then
CURRENT_MODEL=$(grep "MODEL_NAME = " "$ENHANCED_SCRIPT" | cut -d'"' -f2)
echo "Current Model: $CURRENT_MODEL"
echo ""
fi
# Show available options
echo "Available Models:"
for key in "${!MODELS[@]}"; do
echo " $key) ${MODELS[$key]}"
done
echo ""
# Interactive selection
read -p "Select model (small/lgraph/full): " choice
case $choice in
small|s|S)
NEW_MODEL="vosk-model-small-en-us-0.15"
;;
lgraph|l|L)
NEW_MODEL="vosk-model-en-us-0.22-lgraph"
;;
full|f|F)
NEW_MODEL="vosk-model-en-us-0.22"
;;
*)
echo "Invalid choice. Current model unchanged."
exit 1
;;
esac
echo ""
echo "Switching to: $NEW_MODEL"
# Check if model directory exists
if [ ! -d "$SHARED_MODELS_DIR/$NEW_MODEL" ]; then
echo "Error: Model directory $NEW_MODEL not found in $SHARED_MODELS_DIR!"
echo "Available models:"
ls -la "$SHARED_MODELS_DIR/"
exit 1
fi
# Update the script
if [ -f "$ENHANCED_SCRIPT" ]; then
# Create backup
cp "$ENHANCED_SCRIPT" "$ENHANCED_SCRIPT.backup"
echo "✓ Created backup of enhanced_dictation.py"
# Update model name
sed -i "s/MODEL_NAME = \".*\"/MODEL_NAME = \"$NEW_MODEL\"/" "$ENHANCED_SCRIPT"
echo "✓ Updated model in ai_dictation_simple.py"
# Show model comparison
echo ""
echo "Model Comparison:"
echo "┌─────────────────────────────────────┬──────────┬──────────────┐"
echo "│ Model │ Size │ WER (lower) │"
echo "├─────────────────────────────────────┼──────────┼──────────────┤"
echo "│ vosk-model-small-en-us-0.15 │ 40MB │ ~15-20 │"
echo "│ vosk-model-en-us-0.22-lgraph │ 128MB │ 7.82 │"
echo "│ vosk-model-en-us-0.22 │ 1.8GB │ 5.69 │"
echo "└─────────────────────────────────────┴──────────┴──────────────┘"
echo ""
echo "Restarting dictation service..."
systemctl --user restart dictation.service
# Wait and show status
sleep 3
if systemctl --user is-active --quiet dictation.service; then
echo "✓ Dictation service restarted successfully!"
echo "✓ Now using: $NEW_MODEL"
echo ""
echo "Press Alt+D to test the new model!"
else
echo "⚠ Service restart failed. Check logs:"
echo " journalctl --user -u dictation.service -f"
fi
else
echo "Error: enhanced_dictation.py not found!"
exit 1
fi
echo ""
echo "To restore backup:"
echo " cp $ENHANCED_SCRIPT.backup $ENHANCED_SCRIPT"
echo " systemctl --user restart dictation.service"