- 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
109 lines
3.6 KiB
Bash
Executable File
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" |