* feat(speech): add whisper.cpp with Vulkan support for GPU acceleration
Add whisper.cpp as a new speech recognition engine with the following features:
- Vulkan GPU acceleration support (AMD, Intel, NVIDIA)
- Fallback to CUDA for NVIDIA GPUs
- CPU-only mode with automatic thread optimization
- Support for all model sizes: tiny, base, small, medium, large
- Hardware detection to recommend best model/backend
- Models downloaded from Hugging Face (ggml format)
- Updated UI to show compute backend info in settings
- pywhispercpp as the Python binding library
- whisper_cpp as the new default engine
Changes:
- New whispercpp_model_info.py with model metadata and hardware detection
- Updated recognition_manager.py with whisper.cpp init and transcription
- Updated settings_dialog.py with whisper.cpp UI support
- Updated config_manager.py with whisper_cpp_model_size config
- Updated main.py with whisper_cpp CLI option
- Updated pyproject.toml with pywhispercpp dependency
- Updated install.sh with vulkan-tools for GPU detection
Closes#104
* style: fix black and isort formatting issues
* test: update config manager test for whisper_cpp default engine
* feat(install): interactive mode with 3 engine choices and whisper.cpp as default
Major changes to install.sh:
- Interactive mode is now the DEFAULT (not --auto)
- Added --auto flag for non-interactive automatic installation
- New --engine flag to specify engine directly
- Interactive mode shows 3 engine options with visual boxes:
1. whisper.cpp (recommended) - Vulkan/CUDA/CPU support
2. whisper (OpenAI) - PyTorch-based, NVIDIA-only
3. VOSK - lightweight option
- Hardware detection with recommendations:
- Detects Vulkan support (AMD/Intel/NVIDIA)
- Detects NVIDIA CUDA
- Checks available RAM
- Recommends best engine based on hardware
- Updated help text with new options and examples
- Removed old --with-whisper, --whisper-cpu, --no-whisper flags
- whisper.cpp is now the default engine for automatic mode
* feat(uninstall): kill running vocalinux processes before uninstall
* fix(whisper.cpp): auto-download model, use all CPU cores, hide unavailable engines
Three fixes for whisper.cpp implementation:
1. Auto-download model during install
- Added install_whispercpp_model() function to install.sh
- Downloads ggml-tiny.bin (~39MB) from Hugging Face
- Runs automatically when whisper.cpp engine is selected
2. Use all CPU cores for transcription
- Added n_threads parameter to Model initialization
- Uses multiprocessing.cpu_count() to get all cores
- Significantly improves transcription speed
3. Hide unavailable engines from dropdown
- Added get_available_engines() function to detect installed engines
- Settings dialog now only shows engines that are actually installed
- Falls back to first available engine if current not available
Fixes user-reported issues with whisper.cpp integration.
* ui(settings): display whisper.cpp correctly and increase dialog height
- Changed engine display name from 'whisper_cpp' to 'whisper.cpp'
- Added format_engine_display_name() helper function
- Dialog now uses 75% of screen height for better visibility
- More options visible by default without scrolling
* revert(settings): remove display name change, keep dialog height increase
- Reverted engine display name change (was breaking engine selection)
- Kept dialog height at 75% of screen for better visibility
* style: fix black and isort formatting for whisper.cpp logging
* style: fix black formatting in settings_dialog.py
* ci: fix Fedora 39 container package installation
Add dnf cache update and fallback with --nogpgcheck for Fedora containers
that may have stale or missing package metadata.
* fix: install/uninstall scripts for curl | bash usage
Install script improvements:
- Detect non-interactive mode (curl | bash) automatically
- Skip interactive prompts in non-interactive mode
- Add --no-whisper and -y/--yes flags for explicit control
- Continue with defaults when stdin is not a tty
Uninstall script improvements:
- Clean up curl-installed files:
- ~/.local/share/vocalinux-install (cloned repo)
- ~/.local/share/vocalinux/venv (virtual environment)
- ~/.local/bin/vocalinux (symlink)
- ~/.local/bin/activate-vocalinux.sh
- Add -y/--yes flag for non-interactive mode
- Verify all curl-installed components are removed
README updates:
- Document curl installation with --with-whisper option
- Add uninstall instructions for both methods
- Clarify what gets installed where
* feat: install Whisper by default in non-interactive mode
- curl | bash now installs both VOSK and Whisper out of the box
- Users can freely switch between engines in settings
- Add --no-whisper flag for faster install (VOSK only)
- Update README to reflect new default behavior
* chore: remove install-whisper.sh (now part of install.sh)
Whisper is installed by default via install.sh, making this
separate script redundant.
* chore: remove activate-vocalinux.sh (generated by install.sh)
This file is dynamically created by install.sh based on the
venv location, so the static template is not needed.
* Implement custom icon for Vocalinux (Closes#10)
* Fix system tray icon display issue
* Temp commit before purging
* refactor: restructure project into proper vocalinux package
* test: fix and improve audio_feedback and tray_indicator tests with proper mocking and isolation
* test: update import paths in test files to use the new package structure
* Remove icon background
* fix: implement robust resource path discovery in audio_feedback module
* fix: improve resource discovery across application for consistent icon and sound loading
* chore: ensure uninstall script is compatible with new resource paths
* Fix black formatting