Skip to content

Ora 0.7.0

Latest

Choose a tag to compare

@wuwangzhang1216 wuwangzhang1216 released this 15 Jul 19:03

Ora 0.7.0

Improvements

  • Rolling translation context — final captions now carry the last 4 committed (source → translation) pairs as few-shot context, fixing pronoun and terminology drift across utterances. Context lives in the engine (identical behavior across MLX / Rapid-MLX / Ollama backends), survives backend reloads, and resets per listening session and on target-language change.
  • Decoupled caption pipeline — audio/VAD event dispatch never blocks on inference anymore; final utterances flow through a bounded queue with a dedicated worker. A slow translation can no longer stall the pipeline, and under sustained overload, shed utterances are counted and surfaced in the menu bar instead of vanishing silently.
  • Stop Listening actually stops generation — cancellation now propagates through the MLX and Rapid-MLX streaming backends, and a cancelled or failed stream no longer commits its truncated text to the transcript or context.
  • Fewer hallucinated captions — utterance gating now measures actual speech frames (for both partial and final captions), so noise blips and mostly-silence buffers no longer produce phantom text. Silero VAD state resets at every utterance boundary.
  • Auto language detection — the default ASR language hint is now auto-detect instead of hard-coded Chinese.
  • Bounded generation parameters on the in-process MLX path (maxTokens 512, temperature 0.3, topP 0.9), matching the Rapid-MLX configuration — the library default was unbounded and hotter.

Stability

  • Pinned mlx-swift-lm to stable tag 3.31.4 and committed Package.resolved — builds are reproducible instead of tracking a moving upstream branch.
  • ASR now runs on a dedicated serial executor, so its seconds-long blocking Metal calls stop starving the Swift cooperative thread pool.
  • Fixed a family of races around partial/final caption interleaving: chat-session access is serialized behind a generation gate, freeze/unfreeze is generation-guarded, quiescence waits are bounded (10 s), and the finals queue is fully cancellation-aware.

Testing

  • New unit test target covering the VAD endpointing state machine, finals-queue semantics, and prompt building with rolling context.
  • Opt-in real-model end-to-end tests (ORA_E2E=1) that exercise the full cascade — synthesized speech → Silero VAD → Qwen3-ASR → streamed Qwen3.5 translation — on the Metal GPU.

Install

Download Ora.dmg below, double-click to mount, drag Ora.app to Applications, and launch. Requires macOS 15 (Sequoia) or later on an Apple Silicon Mac. The DMG is signed with a Developer ID and notarized by Apple.