Files
voculinux/install-whisper.sh
T
Jatin K MalikandGitHub 917510d3f4 feat: Enhance Whisper Support & Improve Settings UI (#38)
* feat: Implement comprehensive Whisper speech recognition support

🎯 Complete Whisper Implementation:
- Proper model size validation and mapping (small->base, medium->small, large->medium)
- GPU/CPU device detection and automatic model placement
- Efficient in-memory audio processing (no temporary files)
- Custom model cache directory for organized storage
- Enhanced error handling with detailed logging
- Optimized transcription parameters for better accuracy

🔧 Technical Improvements:
- Replace temporary file approach with direct tensor processing
- Add torch.no_grad() context for efficient inference
- Implement proper audio normalization and padding
- Add comprehensive error handling and recovery
- Support for both CPU and CUDA acceleration

📦 Installation Integration:
- Add --with-whisper flag to installation script
- Update setup.py with correct openai-whisper dependencies
- Include torch and torchaudio in whisper extras
- Automatic and manual installation options

🧪 Testing & Validation:
- Add comprehensive test suite for Whisper functionality
- Test model size mapping, initialization, and transcription
- Mock-based testing for environments without Whisper installed
- Integration with existing test infrastructure

💡 Performance Optimizations:
- Efficient audio buffer processing without file I/O
- GPU acceleration when available
- Optimized Whisper parameters for real-time usage
- Memory-efficient model loading and caching

🔄 Backward Compatibility:
- Maintains full compatibility with existing VOSK implementation
- Graceful fallback when Whisper dependencies are missing
- No breaking changes to existing API

This implementation provides a production-ready Whisper integration
that significantly improves transcription accuracy while maintaining
the performance characteristics needed for real-time voice dictation.

* feat: Add comprehensive Whisper installation support and error handling

🎯 Enhanced User Experience:
- Add intelligent Whisper import error detection in settings dialog
- Show helpful installation instructions when Whisper is missing
- Automatically revert to VOSK when Whisper selection fails
- Provide multiple installation methods and troubleshooting tips

📋 New Installation Helper:
- Create install-whisper.sh script for dedicated Whisper installation
- Support multiple installation methods (standard, trusted hosts, break-system-packages)
- Comprehensive error handling and fallback options
- Clear instructions for SSL issues and alternative approaches

🔧 Improved Error Handling:
- Detect Whisper import errors specifically in settings dialog
- Show user-friendly dialog with installation instructions
- Graceful fallback to VOSK when Whisper unavailable
- Detailed logging for troubleshooting

💡 User Guidance:
- Step-by-step installation instructions in error dialog
- Multiple installation options for different environments
- Clear explanation of disk space and time requirements
- Troubleshooting tips for common SSL issues

🛠️ Technical Features:
- Automatic virtual environment detection
- Installation verification and model listing
- SSL issue detection and workarounds
- Comprehensive error reporting and recovery

This addresses the immediate issue where users get cryptic errors
when trying to use Whisper without proper installation, providing
clear guidance and multiple solutions for different scenarios.

* feat: Enhance Whisper support and improve Settings UI

## Whisper Implementation Fixes
- Fix Whisper transcription by removing unnecessary audio padding
- Fix API usage: pass numpy array directly instead of torch tensor
- Remove confusing model size remapping (users select exact model names)
- Add fp16=False for CPU to prevent warnings
- Fix missing 'import torch' in install-whisper.sh verification

## Audio System Improvements
- Add ALSA error handler to suppress noisy warnings
- Process remaining audio buffer when stopping recognition (fixes test button)

## Settings Dialog UI Enhancements
- Add model metadata display (download status, size, recommendations)
- Show ✓ for downloaded models, ↓ for pending downloads, ★ for recommended
- Add system-based model recommendations (based on RAM/GPU)
- Implement auto-apply settings on change (remove Apply button)
- Fix VOSK settings visibility when Whisper is selected
- Add VOSK model info panel with same features as Whisper
- Fix test recognition to show results in dialog instead of injecting text
- Fix race condition in test result display

## Startup Improvements
- Load saved config on startup (engine/model now persists correctly)
- Settings are remembered between app restarts

## Code Quality
- Add get_text_callbacks/set_text_callbacks methods for test isolation
- Update tests with proper mocking
2025-12-28 13:06:51 -08:00

130 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# VocaLinux Whisper Installation Helper Script
# This script helps install Whisper AI support for VocaLinux
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Print functions
print_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Check if we're in the VocaLinux directory
if [ ! -f "setup.py" ] || [ ! -d "src/vocalinux" ]; then
print_error "This script must be run from the VocaLinux root directory"
exit 1
fi
print_info "VocaLinux Whisper Installation Helper"
echo "======================================"
echo ""
# Check if virtual environment exists
if [ ! -d "venv" ]; then
print_error "Virtual environment not found. Please run ./install.sh first."
exit 1
fi
print_info "Found virtual environment: venv/"
# Activate virtual environment
print_info "Activating virtual environment..."
source venv/bin/activate
# Check current Python and pip
print_info "Python executable: $(which python)"
print_info "Pip version: $(pip --version)"
# Check if Whisper is already installed
print_info "Checking current Whisper installation..."
if python -c "import whisper; print('Whisper version:', whisper.__version__)" 2>/dev/null; then
print_success "Whisper is already installed!"
python -c "import whisper; print('Available models:', whisper.available_models())"
exit 0
fi
print_warning "Whisper is not installed. Attempting installation..."
# Try different installation methods
echo ""
print_info "Attempting Method 1: Standard pip installation..."
if pip install openai-whisper torch torchaudio; then
print_success "Whisper installed successfully using standard method!"
else
print_warning "Standard installation failed. Trying with trusted hosts..."
print_info "Attempting Method 2: Installation with trusted hosts..."
if pip install openai-whisper torch torchaudio \
--trusted-host pypi.org \
--trusted-host pypi.python.org \
--trusted-host files.pythonhosted.org; then
print_success "Whisper installed successfully using trusted hosts!"
else
print_warning "Trusted hosts method failed. Trying with --break-system-packages..."
print_info "Attempting Method 3: Installation with --break-system-packages..."
if pip install openai-whisper torch torchaudio --break-system-packages; then
print_success "Whisper installed successfully with --break-system-packages!"
else
print_error "All installation methods failed."
echo ""
print_info "Manual installation options:"
echo "1. Fix SSL issues in your Python installation"
echo "2. Use conda: conda install pytorch torchaudio -c pytorch && pip install openai-whisper"
echo "3. Install from source: https://github.com/openai/whisper"
echo "4. Use system packages if available"
echo ""
print_info "For SSL issues, you may need to:"
echo "- Install ca-certificates: sudo apt install ca-certificates"
echo "- Reinstall Python with SSL support"
echo "- Use a different Python installation (pyenv, conda, etc.)"
exit 1
fi
fi
fi
# Verify installation
echo ""
print_info "Verifying Whisper installation..."
if python -c "import whisper; import torch; print('✅ Whisper and PyTorch imported successfully')"; then
print_success "Whisper installation verified!"
# Show available models
python -c "
import whisper
import torch
print('Available Whisper models:', whisper.available_models())
print('PyTorch version:', torch.__version__)
print('CUDA available:', torch.cuda.is_available())
"
echo ""
print_success "Whisper is now ready to use in VocaLinux!"
print_info "You can now:"
echo "1. Start VocaLinux: ./activate-vocalinux.sh && vocalinux"
echo "2. Open Settings and select Whisper as the speech engine"
echo "3. Choose a model size (base, small, medium recommended)"
else
print_error "Whisper installation verification failed"
exit 1
fi