Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a56d1d9
Rename release binaries from parakeet to onnx
peteonrails Feb 16, 2026
7702578
Add SenseVoice transcription backend (experimental)
peteonrails Feb 16, 2026
f3097e8
Add CJK test audio fixtures for SenseVoice validation
peteonrails Feb 16, 2026
851e932
Add SenseVoice to setup model menu and fix SentencePiece artifacts
peteonrails Feb 16, 2026
6f8527a
Extract shared fbank and CTC decoder modules
peteonrails Feb 16, 2026
6aec110
Add onnx-common meta-feature and wire 5 new engine variants
peteonrails Feb 16, 2026
88c32af
Add Paraformer, Dolphin, Omnilingual, and FireRedASR engines
peteonrails Feb 16, 2026
dc2b776
Add meeting transcription mode (Phase 1)
peteonrails Feb 16, 2026
cf90ced
Integrate meeting mode into daemon with file-based IPC
peteonrails Feb 16, 2026
6d54c23
Add dual audio capture and simple speaker attribution (Phase 2)
peteonrails Feb 16, 2026
9483b3f
Add ML speaker diarization with ONNX (Phase 3)
peteonrails Feb 16, 2026
1fb4c82
Add AI summarization with Ollama integration (Phase 5)
peteonrails Feb 16, 2026
4ae9a8c
Add meeting mode unit tests and smoke test procedures
peteonrails Feb 16, 2026
392013c
Fix clippy warnings across codebase
peteonrails Feb 16, 2026
f0b1614
Bump version to 0.6.0
peteonrails Feb 16, 2026
6b1e6e2
Add model definitions for Paraformer, Dolphin, Omnilingual, and FireR…
peteonrails Feb 16, 2026
6f2e528
Remove FireRedASR and update ASR engine implementations
peteonrails Feb 16, 2026
6ba8905
Remove Pro license gate and improve meeting mode code quality
peteonrails Feb 16, 2026
828ea4f
Fix Dolphin and Paraformer transcription backends
peteonrails Feb 16, 2026
2539084
Add multi-engine transcription smoke tests
peteonrails Feb 16, 2026
509e0d7
Update ONNX Dockerfiles for all engines, exclude worktrees from context
peteonrails Feb 16, 2026
05abcfd
Rename setup parakeet to setup onnx, keep parakeet as hidden alias
peteonrails Feb 16, 2026
e179461
Update documentation and website for v0.6.0
peteonrails Feb 17, 2026
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
41 changes: 17 additions & 24 deletions .claude/skills/build-release/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: build-release
description: Build all voxtype binaries for release. Builds Whisper (AVX2, AVX-512, Vulkan) and Parakeet (AVX2, AVX-512, CUDA) binaries using Docker. Use when preparing a new release.
description: Build all voxtype binaries for release. Builds Whisper (AVX2, AVX-512, Vulkan) and ONNX (AVX2, AVX-512, CUDA) binaries using Docker. Use when preparing a new release.
user-invocable: true
allowed-tools:
- Bash
Expand All @@ -12,7 +12,7 @@ allowed-tools:

Build all 6 voxtype binaries for a release:
- **Whisper**: AVX2, AVX-512, Vulkan
- **Parakeet**: AVX2, AVX-512, CUDA
- **ONNX** (Parakeet + Moonshine): AVX2, AVX-512, CUDA

## Prerequisites

Expand All @@ -26,20 +26,17 @@ Build all 6 voxtype binaries for a release:
# Set version
export VERSION=X.Y.Z

# Build remote binaries (AVX2, Vulkan, Parakeet-AVX2, Parakeet-CUDA)
# Build remote binaries (AVX2, Vulkan, ONNX-AVX2, ONNX-CUDA)
docker context use truenas
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan parakeet-avx2 parakeet-cuda
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-avx2
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-vulkan
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-parakeet-avx2
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-parakeet-cuda
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan onnx-avx2 onnx-cuda
docker compose -f docker-compose.build.yml up avx2 vulkan onnx-avx2 onnx-cuda

# Build local AVX-512 binaries
docker context use default
cargo clean && cargo build --release
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet,moonshine
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-onnx-avx512

# Verify versions
for bin in releases/${VERSION}/voxtype-*; do echo "$(basename $bin): $($bin --version)"; done
Expand Down Expand Up @@ -91,7 +88,7 @@ git commit -S -m "Bump to vX.Y.Z"
git push
```

### 2. Build Remote Binaries (AVX2, Vulkan, Parakeet)
### 2. Build Remote Binaries (AVX2, Vulkan, ONNX)

These builds use Ubuntu 22.04 to avoid AVX-512 instruction contamination:

Expand All @@ -101,14 +98,10 @@ docker context use truenas
mkdir -p releases/${VERSION}

# Build all Docker images (takes ~10-15 min)
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan parakeet-avx2 parakeet-cuda
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan onnx-avx2 onnx-cuda

# Extract binaries from images
for service in avx2 vulkan; do
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-${service}
done
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-parakeet-avx2
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-parakeet-cuda
# Extract binaries
docker compose -f docker-compose.build.yml up avx2 vulkan onnx-avx2 onnx-cuda
```

### 3. Build Local AVX-512 Binaries
Expand All @@ -122,9 +115,9 @@ docker context use default
cargo clean && cargo build --release
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512

# Parakeet AVX-512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512
# ONNX AVX-512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet,moonshine
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-onnx-avx512
```

### 4. Verify All Binaries
Expand Down Expand Up @@ -185,8 +178,8 @@ After successful build, `releases/${VERSION}/` should contain:
voxtype-X.Y.Z-linux-x86_64-avx2
voxtype-X.Y.Z-linux-x86_64-avx512
voxtype-X.Y.Z-linux-x86_64-vulkan
voxtype-X.Y.Z-linux-x86_64-parakeet-avx2
voxtype-X.Y.Z-linux-x86_64-parakeet-avx512
voxtype-X.Y.Z-linux-x86_64-parakeet-cuda
voxtype-X.Y.Z-linux-x86_64-onnx-avx2
voxtype-X.Y.Z-linux-x86_64-onnx-avx512
voxtype-X.Y.Z-linux-x86_64-onnx-cuda
SHA256SUMS
```
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ target/
releases/*
!releases/parakeet-test/

# Worktrees
.worktrees/
worktrees/

# Local test files
*.wav
*.mp3
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
# Audio files (test recordings)
*.wav
*.mp3
# Exception: VAD test fixtures are intentionally committed
# Exception: test fixtures are intentionally committed
!tests/fixtures/vad/*.wav
!tests/fixtures/sensevoice/*.wav

# Claude Code
.claude/settings.local.json
Expand Down
38 changes: 19 additions & 19 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -423,15 +423,15 @@ Building on modern CPUs (Zen 4, etc.) can leak AVX-512/GFNI instructions into bi
| Vulkan | Docker on remote pre-AVX-512 server | GPU build on CPU without AVX-512 |
| AVX512 | Local machine | Requires AVX-512 capable host |

**Parakeet Binaries (Experimental):**
**ONNX Binaries (Parakeet + Moonshine):**

| Binary | Build Location | Why |
|--------|---------------|-----|
| parakeet-avx2 | Docker on remote pre-AVX-512 server | Wide CPU compatibility |
| parakeet-avx512 | Local machine | Best CPU performance |
| parakeet-cuda | Docker on remote server with NVIDIA GPU | GPU acceleration |
| onnx-avx2 | Docker on remote pre-AVX-512 server | Wide CPU compatibility |
| onnx-avx512 | Local machine | Best CPU performance |
| onnx-cuda | Docker on remote server with NVIDIA GPU | GPU acceleration |

Note: Parakeet binaries include bundled ONNX Runtime which contains AVX-512 instructions, but ONNX Runtime uses runtime CPU detection and falls back gracefully on older CPUs.
Note: ONNX binaries include bundled ONNX Runtime which contains AVX-512 instructions, but ONNX Runtime uses runtime CPU detection and falls back gracefully on older CPUs.

### GPU Feature Flags

Expand Down Expand Up @@ -487,9 +487,9 @@ docker context use <your-remote-context>
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan
docker compose -f docker-compose.build.yml up avx2 vulkan

# 2. Build Parakeet binaries on remote server
docker compose -f docker-compose.build.yml build --no-cache parakeet-avx2
docker compose -f docker-compose.build.yml up parakeet-avx2
# 2. Build ONNX binaries on remote server
docker compose -f docker-compose.build.yml build --no-cache onnx-avx2
docker compose -f docker-compose.build.yml up onnx-avx2

# 3. Copy binaries from remote Docker volumes to local
mkdir -p releases/${VERSION}
Expand All @@ -504,9 +504,9 @@ docker context use default
cargo clean && cargo build --release
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512

# Parakeet AVX-512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512
# ONNX AVX-512
cargo clean && RUSTFLAGS="-C target-cpu=native" cargo build --release --features parakeet,moonshine
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-onnx-avx512

# 5. VERIFY VERSIONS before uploading (critical!)
for bin in releases/${VERSION}/voxtype-*; do
Expand All @@ -527,9 +527,9 @@ releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx2 --version
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512 --version
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-vulkan --version

# Parakeet binaries (experimental)
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx2 --version
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512 --version
# ONNX binaries
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-onnx-avx2 --version
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-onnx-avx512 --version
```

If versions don't match, the Docker cache is stale. Rebuild with `--no-cache`.
Expand All @@ -556,15 +556,15 @@ What to look for:
- `{1to4}`, `{1to8}`, `{1to16}` = AVX-512 broadcast syntax
- `vgf2p8`, `gf2p8` = GFNI instructions (not on Zen 3)

### Parakeet Binary Instruction Leakage
### ONNX Binary Instruction Leakage

**IMPORTANT: Parakeet binaries also need AVX-512 instruction checks**, even when built on pre-AVX-512 hardware.
**IMPORTANT: ONNX binaries also need AVX-512 instruction checks**, even when built on pre-AVX-512 hardware.

The `ort` crate downloads prebuilt ONNX Runtime binaries that may contain AVX-512 instructions regardless of the build host's CPU. This is different from Whisper builds where the leakage comes from system libraries.

```bash
# Check Parakeet binaries for AVX-512 leakage
objdump -d voxtype-*-parakeet-avx2 | grep -c zmm
# Check ONNX binaries for AVX-512 leakage
objdump -d voxtype-*-onnx-avx2 | grep -c zmm
# If >0, the ONNX Runtime contains AVX-512 instructions
```

Expand All @@ -573,7 +573,7 @@ objdump -d voxtype-*-parakeet-avx2 | grep -c zmm
2. **Build ONNX Runtime from source** - Use `ORT_STRATEGY=build` to compile ONNX Runtime with specific CPU flags (significantly increases build time)
3. **Use `load-dynamic` feature** - Link against system ONNX Runtime instead of bundled (requires users to install ONNX Runtime separately)

For now, Parakeet binaries may contain AVX-512 instructions from ONNX Runtime but should still run on pre-AVX-512 CPUs via runtime fallback. Test on target hardware to verify.
For now, ONNX binaries may contain AVX-512 instructions from ONNX Runtime but should still run on pre-AVX-512 CPUs via runtime fallback. Test on target hardware to verify.

### Packaging Deb and RPM

Expand Down
Loading