voice-mode 2.26.0__tar.gz → 2.28.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {voice_mode-2.26.0 → voice_mode-2.28.0}/.gitignore +6 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/CHANGELOG.md +131 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/PKG-INFO +5 -1
- {voice_mode-2.26.0 → voice_mode-2.28.0}/README.md +4 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/__version__.py +1 -1
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/cli.py +730 -7
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/cli_commands/exchanges.py +6 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/config.py +11 -3
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/configuration.py +8 -4
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/whisper_models.py +10 -13
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/systemd/voicemode-frontend.service +1 -1
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/configuration_management.py +7 -2
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/converse.py +75 -24
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/service.py +30 -3
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/kokoro/install.py +4 -3
- voice_mode-2.28.0/voice_mode/tools/services/whisper/__init__.py +23 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/whisper/install.py +43 -11
- voice_mode-2.28.0/voice_mode/tools/services/whisper/list_models.py +70 -0
- voice_mode-2.28.0/voice_mode/tools/services/whisper/model_active.py +54 -0
- voice_mode-2.28.0/voice_mode/tools/services/whisper/model_benchmark.py +159 -0
- voice_mode-2.26.0/voice_mode/tools/services/whisper/download_model.py → voice_mode-2.28.0/voice_mode/tools/services/whisper/model_install.py +72 -11
- voice_mode-2.28.0/voice_mode/tools/services/whisper/model_remove.py +36 -0
- voice_mode-2.28.0/voice_mode/tools/services/whisper/models.py +473 -0
- voice_mode-2.28.0/voice_mode/utils/services/whisper_helpers.py +446 -0
- voice_mode-2.28.0/voice_mode/utils/services/whisper_version.py +138 -0
- voice_mode-2.26.0/voice_mode/utils/services/whisper_helpers.py +0 -259
- {voice_mode-2.26.0 → voice_mode-2.28.0}/build_hooks.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/pyproject.toml +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/__main__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/cli_commands/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/conversation_logger.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/core.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/data/versions.json +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/conversations.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/filters.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/formatters.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/models.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/reader.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/exchanges/stats.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/README.md +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/app/api/connection-details/route.ts +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/app/favicon.ico +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/app/globals.css +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/app/layout.tsx +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/app/page.tsx +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/components/CloseIcon.tsx +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/components/NoAgentNotification.tsx +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/components/TranscriptionView.tsx +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/hooks/useCombinedTranscriptions.ts +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/hooks/useLocalMicTrack.ts +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/next-env.d.ts +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/next.config.mjs +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/package-lock.json +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/package.json +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/pnpm-lock.yaml +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/postcss.config.mjs +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/tailwind.config.ts +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/frontend/tsconfig.json +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/prompts/README.md +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/prompts/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/prompts/converse.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/prompts/release_notes.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/prompts/services.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/provider_discovery.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/providers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/audio_files.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/changelog.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/statistics.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/resources/version.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/server.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/shared.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/simple_failover.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/statistics.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/streaming.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/com.voicemode.frontend.plist +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/com.voicemode.kokoro.plist +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/com.voicemode.livekit.plist +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/com.voicemode.whisper.plist +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/start-kokoro-with-health-check.sh +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/launchd/start-whisper-with-health-check.sh +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/systemd/voicemode-kokoro.service +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/systemd/voicemode-livekit.service +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/templates/systemd/voicemode-whisper.service +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/dependencies.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/devices.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/diagnostics.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/providers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/kokoro/uninstall.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/list_versions.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/livekit/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/livekit/frontend.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/livekit/install.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/livekit/production_server.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/livekit/uninstall.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/version_info.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/services/whisper/uninstall.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/statistics.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/tools/voice_registry.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/__init__.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/audio_diagnostics.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/event_logger.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/ffmpeg_check.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/format_migration.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/gpu_detection.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/migration_helpers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/services/common.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/services/kokoro_helpers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/services/livekit_helpers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/utils/version_helpers.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/version.py +0 -0
- {voice_mode-2.26.0 → voice_mode-2.28.0}/voice_mode/voice_preferences.py +0 -0
@@ -7,6 +7,137 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [2.28.0] - 2025-08-23
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- **Comprehensive CLI help support**
|
14
|
+
- Added `-h` and `--help` options to all CLI commands and subcommands
|
15
|
+
- Consistent help functionality across all command groups (kokoro, whisper, livekit, config, etc.)
|
16
|
+
- Help options available for both groups and individual commands
|
17
|
+
- Improved user experience with quick access to command documentation
|
18
|
+
|
19
|
+
- **Core ML support for whisper.cpp installation**
|
20
|
+
- Whisper install now uses CMake instead of Make for better control
|
21
|
+
- Automatically enables Core ML support on Apple Silicon Macs
|
22
|
+
- Provides ~3x faster encoding performance with Core ML acceleration
|
23
|
+
- Core ML models automatically converted during installation
|
24
|
+
- Falls back gracefully if Core ML conversion fails
|
25
|
+
|
26
|
+
- **Enhanced whisper status command**
|
27
|
+
- Shows whisper.cpp version information
|
28
|
+
- Displays Core ML support status (enabled/disabled)
|
29
|
+
- Shows if Core ML model is active for current model
|
30
|
+
- Reports GPU acceleration type (Metal/CUDA)
|
31
|
+
- Helper utility in `whisper_version.py` for capability detection
|
32
|
+
|
33
|
+
- **Audio conversion optimization for local whisper**
|
34
|
+
- Automatically detects truly local whisper (not SSH-forwarded)
|
35
|
+
- Skips WAV to MP3 conversion for local whisper, sending WAV directly
|
36
|
+
- Adds timing measurements for audio format conversion
|
37
|
+
- Logs conversion time at INFO level for performance monitoring
|
38
|
+
- Significantly reduces STT processing time for local deployments
|
39
|
+
|
40
|
+
- **Whisper model benchmark command**
|
41
|
+
- New `whisper model benchmark` CLI command
|
42
|
+
- Compares performance across multiple models
|
43
|
+
- Shows load time, encode time, and total processing time
|
44
|
+
- Calculates real-time factor for each model
|
45
|
+
- Fixed timing output by removing --no-prints flag
|
46
|
+
- Helps users choose optimal model for speed/accuracy tradeoffs
|
47
|
+
- Provides personalized recommendations based on results
|
48
|
+
|
49
|
+
### Fixed
|
50
|
+
- **MCP server configuration**
|
51
|
+
- Fixed .mcp.json to use `uv run voicemode` for local development
|
52
|
+
- Removed hardcoded paths for better portability
|
53
|
+
- Works correctly with project-local development version
|
54
|
+
|
55
|
+
- **Whisper model management**
|
56
|
+
- Fixed model active command to properly update configuration
|
57
|
+
- Fixed naming conflict in model install CLI command
|
58
|
+
- Benchmark now correctly shows timing information
|
59
|
+
- Core ML conversion errors are now properly reported and handled
|
60
|
+
|
61
|
+
## [2.27.0] - 2025-08-20
|
62
|
+
|
63
|
+
### Added
|
64
|
+
- **CLI version and update commands**
|
65
|
+
- New `voice-mode version` command to display current version
|
66
|
+
- New `voice-mode update` command to upgrade to latest version
|
67
|
+
- Comprehensive bats tests for version and update functionality
|
68
|
+
- Automatic version detection from package metadata
|
69
|
+
|
70
|
+
- **Shell completion support for CLI**
|
71
|
+
- New `voice-mode completion` command group with bash, zsh, and fish subcommands
|
72
|
+
- Automatic tab completion for all commands, options, and arguments
|
73
|
+
- Install.sh automatically configures shell completions during setup
|
74
|
+
- Native Click completion mechanism for dynamic suggestions
|
75
|
+
|
76
|
+
- **Parallel operations documentation**
|
77
|
+
- Documented `wait_for_response=False` pattern in converse tool
|
78
|
+
- Enables speaking while performing other operations simultaneously
|
79
|
+
- Creates more natural conversations by eliminating dead air
|
80
|
+
- Marked as RECOMMENDED pattern with clear usage examples
|
81
|
+
|
82
|
+
- **Comprehensive Whisper model management system**
|
83
|
+
- New `whisper models` CLI command to list all available models with status
|
84
|
+
- `whisper model active` command to get/set the active model
|
85
|
+
- `whisper model install` and `whisper model remove` commands
|
86
|
+
- Model registry with complete size/hash metadata for all Whisper models
|
87
|
+
- Color-coded output showing installed/available models (green=installed, yellow=selected)
|
88
|
+
- Support for English-only models and all multilingual variants
|
89
|
+
- Automatic Core ML conversion on Apple Silicon for improved performance
|
90
|
+
- Shell completion support for all model management commands
|
91
|
+
|
92
|
+
- **MCP tools for model management**
|
93
|
+
- `list_models` tool to list all available Whisper models with status
|
94
|
+
- Enhanced `download_model` tool with registry validation
|
95
|
+
- Force download option to re-download corrupted models
|
96
|
+
- Skip Core ML option for testing
|
97
|
+
- Parity between CLI and MCP interfaces
|
98
|
+
|
99
|
+
- **Infrastructure improvements**
|
100
|
+
- Centralized model registry in `whisper/models.py` with all model metadata
|
101
|
+
- Model categorization: tiny, base, small, medium, large, turbo
|
102
|
+
- Size information for all models (39MB to 3.1GB)
|
103
|
+
- SHA256 hashes for integrity verification
|
104
|
+
- Shared download logic extracted to helpers module
|
105
|
+
- Dynamic Click-based shell completions replacing static files
|
106
|
+
- Comprehensive test suite for model management
|
107
|
+
|
108
|
+
### Changed
|
109
|
+
- **Configuration file naming**
|
110
|
+
- Renamed `.voicemode.env` to `voicemode.env` (removed leading dot)
|
111
|
+
- Added backwards compatibility to check for old filename
|
112
|
+
- Shows deprecation warning when old filename is used
|
113
|
+
- Updated all documentation to reference new filename
|
114
|
+
- Updated systemd service templates
|
115
|
+
|
116
|
+
- Replaced static shell completions with Click-generated dynamic completions
|
117
|
+
- Shell completion files now generated from CLI structure
|
118
|
+
- Whisper model downloads now use centralized registry for validation
|
119
|
+
- Model status checks now verify both file existence and selection
|
120
|
+
|
121
|
+
### Fixed
|
122
|
+
- **macOS installation improvements**
|
123
|
+
- Added coreutils dependency for timeout command support
|
124
|
+
- Fixed duplicate launchctl load in service installers
|
125
|
+
- Improved zsh PATH configuration by sourcing profile after UV/npm additions
|
126
|
+
- Skip sudo prompts on macOS to prevent installation issues
|
127
|
+
|
128
|
+
- **Test suite fixes**
|
129
|
+
- Fixed deprecation warning appearing in help output
|
130
|
+
- Renamed deprecated `.voicemode.env` to `voicemode.env` to fix test failures
|
131
|
+
|
132
|
+
- Whisper model management now properly uses voicemode.env configuration file
|
133
|
+
- Test suite updated for all API changes and return value structures
|
134
|
+
- Resolved all CI test failures related to service status and diagnostics
|
135
|
+
|
136
|
+
### Removed
|
137
|
+
- Old static shell completion files
|
138
|
+
- SERVICE_COMMANDS.md (replaced by integrated CLI commands)
|
139
|
+
- Shell aliases file (functionality moved to Click commands)
|
140
|
+
|
10
141
|
## [2.26.0] - 2025-08-18
|
11
142
|
|
12
143
|
### Added
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: voice-mode
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.28.0
|
4
4
|
Summary: VoiceMode - Voice interaction capabilities for AI assistants (formerly voice-mcp)
|
5
5
|
Project-URL: Homepage, https://github.com/mbailey/voicemode
|
6
6
|
Project-URL: Repository, https://github.com/mbailey/voicemode
|
@@ -98,6 +98,10 @@ Natural voice conversations for AI assistants. Voice Mode brings human-like voic
|
|
98
98
|
1. **🎤 Computer with microphone and speakers** OR **☁️ LiveKit server** ([LiveKit Cloud](https://docs.livekit.io/home/cloud/) or [self-hosted](https://github.com/livekit/livekit))
|
99
99
|
2. **🔑 OpenAI API Key** (optional) - Voice Mode can install free, open-source transcription and text-to-speech services locally
|
100
100
|
|
101
|
+
**Optional for enhanced performance:**
|
102
|
+
|
103
|
+
- **🍎 Xcode** (macOS only) - Required for Core ML acceleration of Whisper models (2-3x faster inference). Install from [Mac App Store](https://apps.apple.com/app/xcode/id497799835) then run `sudo xcode-select -s /Applications/Xcode.app/Contents/Developer`
|
104
|
+
|
101
105
|
## Quick Start
|
102
106
|
|
103
107
|
> 📖 **Using a different tool?** See our [Integration Guides](docs/integrations/README.md) for Cursor, VS Code, Gemini CLI, and more!
|
@@ -29,6 +29,10 @@ Natural voice conversations for AI assistants. Voice Mode brings human-like voic
|
|
29
29
|
1. **🎤 Computer with microphone and speakers** OR **☁️ LiveKit server** ([LiveKit Cloud](https://docs.livekit.io/home/cloud/) or [self-hosted](https://github.com/livekit/livekit))
|
30
30
|
2. **🔑 OpenAI API Key** (optional) - Voice Mode can install free, open-source transcription and text-to-speech services locally
|
31
31
|
|
32
|
+
**Optional for enhanced performance:**
|
33
|
+
|
34
|
+
- **🍎 Xcode** (macOS only) - Required for Core ML acceleration of Whisper models (2-3x faster inference). Install from [Mac App Store](https://apps.apple.com/app/xcode/id497799835) then run `sudo xcode-select -s /Applications/Xcode.app/Contents/Developer`
|
35
|
+
|
32
36
|
## Quick Start
|
33
37
|
|
34
38
|
> 📖 **Using a different tool?** See our [Integration Guides](docs/integrations/README.md) for Cursor, VS Code, Gemini CLI, and more!
|