vox models command, CI/release workflows, neutral whisper-fixes reference - #2
Merged
Conversation
Derives the listing from the WhisperModel and OpenAIModel enums so the output can never drift from what --model actually accepts, and ships the matching JSON schema for agent introspection. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7cceyUMrUTJrqqVc28bHH
Tests run on macos-latest since mlx-whisper only installs on Apple Silicon; the publish job runs on ubuntu and uses PyPI trusted publishing (OIDC), so no token is stored. Publishing requires declaring the trusted publisher on pypi.org first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7cceyUMrUTJrqqVc28bHH
Moves post-processing guidance out of SKILL.md into a reference covering what Whisper actually gets wrong on any audio — silence hallucinations, repetition loops, diacritics, homophones, segment boundaries — with the rule that corrections touch form, never content. Also documents the new models command. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7cceyUMrUTJrqqVc28bHH
Resolves the overlap with the trx-0.4-parity work. Keeps their SKILL.md post-processing order (ranked by measured frequency) and their reference as the base, with the domain-specific vocabulary removed so the library stays general-purpose: brand/instrument tables, house glossary and domain-absent term lists are gone, the measured decoder-level findings stay, and multilingual diacritics, homophones and language-detection guidance are folded in. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7cceyUMrUTJrqqVc28bHH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three additions ported from crafter-station/trx, which vox was originally inspired by.
vox modelsLists the transcription models available per backend, in table (TTY) or JSON (piped) form, with
-b/--backendto filter.The listing is derived from the
WhisperModel/OpenAIModelenums rather than hardcoded, so it cannot drift from what--modelactually accepts — a round-trip test asserts every displayed name resolves back to its model. Ships withsrc/vox/schemas/models.jsonsovox schema modelsanswers like the other commands.Built test-first: 14 tests across the use case, the CLI (
CliRunner), and the model.CI + release
ci.yml— on PR and push to master:uv sync --frozen,ruff check,ruff format --check,pytest. Runs on macos-latest becausemlx-whisperonly installs on Apple Silicon.release.yml— triggered whenpyproject.tomlchanges: tests on macOS, then a publish job on ubuntu that compares the local version against PyPI and, if it changed, builds and publishes via trusted publishing (OIDC, no stored token), then tags and creates a GitHub Release.Two caveats worth knowing before merging:
vox-transcribe, ownerPinous, repovox, workflowrelease.yml).ty checkis deliberately not in the pipeline — it currently reports 18 diagnostics on existing code, which would make the job red from day one. Worth a separate cleanup.Neutral post-processing reference
skills/vox/references/whisper-fixes.mddocuments what Whisper actually gets wrong on any audio: hallucinated boilerplate over silence ("Sous-titres réalisés par la communauté d'Amara.org", "Thanks for watching!"), repetition loops, dropped diacritics, homophones, numbers and units, words truncated across segment boundaries, wrong language detection. Domain-agnostic by design, with one framing rule: corrections touch form, never content.SKILL.mdno longer duplicates this guidance — it points at the reference and keeps the four high-value passes.Verification
ruff check,ruff format --checkand the full suite (159 tests) pass locally, anduv lock --checkconfirmsuv sync --frozenwill resolve in CI. The workflows themselves are only YAML-validated so far — this PR is their first real run.Not included
Their auto-chunking of oversized audio on cloud backends was left out on purpose: it only works around the OpenAI 25 MB limit, and the local MLX path has no such constraint. If it lands later it should be opt-in (
--chunk), not automatic.🤖 Generated with Claude Code
https://claude.ai/code/session_01H7cceyUMrUTJrqqVc28bHH