Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 2 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ This copies the hooks from `.githooks/` into `.git/hooks/` and makes them execut
Minimal root README. Full developer & architecture guide: see [`CLAUDE.md`](CLAUDE.md).

## Overview
ColdVox is a modular Rust workspace providing real‑time audio capture, VAD, STT (Faster-Whisper), and cross‑platform text injection.
ColdVox is a modular Rust workspace providing real‑time audio capture, VAD, STT (Candle Whisper), and cross‑platform text injection.

## Quick Start

**For Voice Dictation (Recommended):**
```bash
# Run with default Faster-Whisper STT and text injection (model auto-discovered)
# Run with default Candle Whisper STT and text injection (model auto-discovered)
cargo run --features text-injection

# With specific microphone device
Expand All @@ -49,15 +49,12 @@ cargo run --bin mic_probe -- list-devices

> Audio dumps: The TUI dashboard now records raw audio to `logs/audio_dumps/` by default. Pass `--dump-audio=false` to disable persistent capture.

**Note on Defaults**: Faster-Whisper STT is the default feature (enabled automatically), ensuring real speech recognition in the app and tests. This prevents fallback to the mock plugin, which skips transcription. Override with `--stt-preferred mock` or env `COLDVOX_STT_PREFERRED=mock` if needed for testing. For other STT backends, enable their features and set preferred accordingly.

### Configuration (Canonical Path)
- Canonical STT selection config lives at `config/plugins.json`.
- Any legacy duplicates like `./plugins.json` or `crates/app/plugins.json` are deprecated and ignored at runtime. A warning is logged on startup if they exist. Please migrate changes into `config/plugins.json` only.
- Some defaults can also be set in `config/default.toml`, but `config/plugins.json` is the source of truth for STT plugin selection.

### Whisper Model Setup
- **Python Package**: Install the `faster-whisper` Python package via pip
- **Models**: Whisper models are automatically downloaded on first use
- **Model Identifiers**: Use standard Whisper model names (e.g., "tiny.en", "base.en", "small.en", "medium.en")
- **Manual Path**: Set `WHISPER_MODEL_PATH` to specify a model identifier or custom model directory
Expand All @@ -74,19 +71,6 @@ cargo run --bin mic_probe -- list-devices

More detail: See [`CLAUDE.md`](CLAUDE.md) for full developer guide.

### Python 3.13 and PyO3
If your system default Python is 3.13, current `pyo3` versions may warn about unsupported Python version during build. Two options:

1) Prefer Python 3.12 for development tools, or
2) Build using the stable Python ABI by exporting:

```bash
set -gx PYO3_USE_ABI3_FORWARD_COMPATIBILITY 1 # fish shell
cargo check
```

We plan to upgrade `pyo3` in a follow-up to remove this requirement.

### Future Vision (Experimental)
- We're actively exploring an **always-on intelligent listening** architecture that keeps a lightweight listener running continuously and spins up tiered STT engines on demand.
- This speculative work includes decoupled listening/processing threads, dynamic STT memory management, and context-aware activation.
Expand Down
6 changes: 3 additions & 3 deletions crates/coldvox-stt/src/plugins/whisper_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,8 @@ impl SttPlugin for WhisperPlugin {
fn info(&self) -> PluginInfo {
PluginInfo {
id: "whisper".to_string(),
name: "Faster Whisper".to_string(),
description: "Local transcription via faster-whisper".to_string(),
name: "Candle Whisper".to_string(),
description: "Local transcription via Candle Whisper".to_string(),
requires_network: false,
is_local: true,
is_available: check_whisper_available(),
Expand Down Expand Up @@ -722,7 +722,7 @@ impl SttPluginFactory for WhisperPluginFactory {
if !check_whisper_available() {
return Err(SttError::NotAvailable {
plugin: "whisper".to_string(),
reason: "The faster-whisper Python module is not available. Install the `faster-whisper` package.".to_string(),
reason: "The Candle Whisper implementation is not available.".to_string(),
}
.into());
}
Expand Down
Loading