Skip to content

v0.8.0

Release date: 2026-07-27

This release adds full local, offline TTS and STT support via F5-TTS MLX and Whisper MLX on Apple Silicon, a pronunciation dictionary for TTS, robust subtitle alignment, and several fixes.

Highlights

  • Local, offline TTS & STT on Apple Silicon — generate voiceovers with F5-TTS and transcribe audio with Whisper entirely on-device via --local, no API keys or cloud calls required
  • Pronunciation dictionary — rewrite brand names and acronyms to a spoken form before TTS while keeping displayed text unchanged
  • Robust subtitle alignment--use-original-text now handles STT word splits/merges (e.g. "marp2video" → "MARP 2 Video") correctly

Added

Local providers

  • --local flag on slides tts, stt, subtitle, and browser video commands to enable local F5-TTS and Whisper MLX providers
  • --f5tts-endpoint and --whisper-endpoint flags to override the default Unix domain socket paths
  • scripts/localvoice.sh helper script to set up, start, stop, and check the local Python/MLX servers with a single command
  • pkg/omnivoice/tts and pkg/omnivoice/stt factory functions with EnableLocalProviders support

Pronunciation

  • VideoConfig.Pronunciations field — term → locale → spoken form, applied only to text sent to TTS (subtitles/manifests keep the original spelling)
  • pkg/tts.Pronouncer wrapping omnivoice-core/terminology for shared pronunciation logic
  • docs/guide/pronunciation.md user guide

Documentation

  • docs/guide/local-providers.md — setup, quick start, script commands, environment overrides, troubleshooting
  • Updated CLI reference, pipeline, subtitles, troubleshooting, requirements, and index with local provider and pronunciation coverage
  • README feature list updated with local providers and pronunciation dictionary

Fixed

  • Subtitle alignment--use-original-text now correctly maps original words onto STT timings when the transcriber splits ("marp2video" → "MARP 2 Video") or joins ("command-line" → "commandline") words; previously any mismatch cascaded and fell back to raw STT text
  • --limit-steps with transcripts — segment-level transcripts are now truncated to match the step limit, so TTS/pacing/duration actually respects the flag for transcript-based segments
  • Avatar overlay FPS — base videos are normalized to a target FPS (default 30) before compositing, so animated avatar overlays don't freeze between sparse native frames

Changed

  • Updated omnivoice-core to v0.16.0 (terminology engine, Whisper MLX fixes)

Consumers

The pronunciation dictionary and local provider support are used by: