•
3 min read
Voice-note transcription CLI

🗺 Voxprint CLI

Extract 3–7 blueprint-level insights from any voice recording — runs entirely locally, no cloud APIs required. (Turn voice into blueprints.)

Pipeline: Voice file → afconvert (WAV) → whisper-cli (transcription) → Ollama/gemma3:4b (extraction) → Markdown file


Usage

# Basic — output markdown next to the audio file
voxprint meeting.m4a

# Choose output directory
voxprint meeting.m4a --output ~/Documents/Blueprints

# Extract 3 points instead of 5
voxprint meeting.m4a -n 3

# Include full transcript in the markdown output
voxprint meeting.m4a --verbose

# Transcribe only — skip extraction, save transcript.txt
voxprint meeting.m4a --transcript-only

Supported audio formats

.m4a, .mp3, .wav, .ogg, .webm, .flac, .mp4

Audio is converted to 16kHz mono WAV via afconvert before being passed to whisper-cli.


Output

A markdown file is saved in the same directory as the audio file (or --output dir):

2025-04-27_1430_meeting_blueprint.md

Example content:

# Blueprint: meeting

> Generated on **April 27, 2025 at 14:30**
> Source: `meeting.m4a`
> Word count: 8,412 words

---

## 🗺 Blueprint Points

### 1. Pricing Model Needs a Rethink

The team agreed the current flat-rate pricing doesn't reflect usage patterns
for enterprise clients, leading to undercharging heavy users.

**Implication →** A usage-based tier should be prototyped before Q3 planning.

### 2. ...

When --transcript-only is used, a transcript.txt file is saved instead of a markdown file.


Cost

Runs entirely locally — no API costs.

StepToolModel
Audio conversionafconvert (macOS built-in)—
Transcriptionwhisper-cli (whisper-cpp)ggml-base.en
ExtractionOllamagemma3:4b

Project structure

voxprint/
├── Cargo.toml
└── src/
    ├── main.rs      # CLI entry point + orchestration
    ├── whisper.rs   # Local whisper-cli transcription
    ├── extractor.rs # Ollama blueprint extraction
    └── output.rs    # Markdown file writer

Key details

  • Whisper model path is hardcoded in whisper.rs as WHISPER_MODEL — update if your path differs.
  • Ollama endpoint (http://localhost:11434) and model (gemma3:4b) are constants in extractor.rs.
  • Long transcripts are chunked at 1,000 words and summarized before final extraction.
  • Point count is validated to the range 3–7 at the CLI level.