Skip to content

Vocello 2.1.0

Latest

Choose a tag to compare

@PowerBeef PowerBeef released this 12 Jun 19:49

Vocello 2.1.0

Vocello 2.1.0 is a quality-and-performance release for the macOS 26-native, on-device voice generation app. Everything still runs locally on Apple Silicon via MLX; no audio leaves the Mac unless you export it. The headline themes: 8 GB Macs now generate faster than realtime with Speed models, the voice library grew up (record references with the Mac microphone, automatic transcription in all 10 languages), delivery and language handling got measurably more accurate, and you get reproducible generations with deterministic seeds and a new variation control.

Upgrading from 2.0.0? Download the new DMG below and drag Vocello.app to /Applications (replacing the old copy). Your installed models, history, and saved voices live in ~/Library/Application Support/QwenVoice/ and carry over automatically — no re-download needed.

Requirements

Unchanged from 2.0.0:

  • macOS 26.0 or later
  • Apple Silicon Mac
  • ~7 GB free disk for the three recommended Speed (4-bit) model variants; ~16 GB if you also install Quality (8-bit)
  • Internet for one-time model downloads from Hugging Face

Performance: realtime on 8 GB Macs

The MLX backend was specialized and tuned for Qwen3-TTS this cycle. The vendored audio stack now carries a fused code-predictor RoPE, per-generation sampler scratch buffers, and step-constant hoisting. Net effect on the 8 GB (floor-tier) baseline: warm Custom Voice generation went from RTF ≈ 0.83 to ≈ 1.03–1.11 — about a third faster, and now past realtime (RTF > 1 means audio is produced faster than it plays).

Constrained Macs also got smoother while generating:

  • Warm-admission gating. Proactive model warm-ups now defer when memory is tight on 8 GB / 16 GB Macs, so they never compete with your generation. User-initiated generations are never gated.
  • Engine retirement on idle. On an idle, memory-pressured 8 GB Mac the engine process now exits quietly to hand memory back to the system (model unloading alone can't return MLX fragmentation and shader caches). It relaunches lazily on your next generation — no error banners, no "reconnecting" flicker.
  • UI-responsiveness telemetry. Main-thread stalls during generation are now measured and tracked as a release KPI.

Behavior change for Quality (8-bit) on tight memory: the automatic Quality→Speed fallback from 2.0.0 was removed. Picking Quality now always loads the genuine 8-bit model and surfaces a real error if it cannot fit — no silent downgrade. On 8 GB Macs, Speed remains the recommended default.

Voice library: record, transcribe, recommend

Voice Cloning references no longer have to come from files:

  • Record in-app. A record sheet captures a reference clip directly with the Mac microphone, with level metering, duration guidance against the 10–30 s sweet spot, and a review-before-use step.
  • Automatic transcription. Imported or recorded reference clips are transcribed on-device across all 10 supported languages (Apple speech recognition; nothing leaves the Mac). The transcript lands in the reference's transcript field, ready to edit.
  • Language-aware recommendations. The speaker and language pickers gained "Recommended" sections that follow the language of your typed script.
  • Recoverable permission states. Microphone, speech-recognition, and output-folder permissions now surface visibly in the UI with direct paths to fix them — including the macOS case where Siri being disabled silently blocks speech recognition.

Delivery & language accuracy

A research pass over Qwen3-TTS instruction handling produced several accuracy fixes and upgrades:

  • Delivery presets v2. All preset instruction strings were rewritten against A/B listening evaluations, and three new presets joined the matrix: Surprised, Narrator, and News — 12 presets, each with intensity levels.
  • Sampler-order fix. Temperature scaling now applies before top-p/min-p truncation (it ran after, subtly distorting the sampling distribution). Generations follow delivery instructions more faithfully.
  • Auto-language fix. Automatic language detection now resolves Latin-script languages (French, Spanish, Italian, German, Portuguese) correctly instead of defaulting everything to English.
  • Official speaker descriptions. The nine built-in speakers now carry Alibaba's official Qwen3-TTS character descriptions in the picker.
  • Clone first-word fix. Voice Cloning no longer occasionally drops the first word of the script (a token-boundary bug in the in-context-learning prompt assembly).

Reproducible generations

  • Variation control. Settings → Generation has a new three-way control: Expressive (the 2.0.0 behavior, default), Balanced, and Consistent — trading take-to-take variety against stability.
  • Deterministic seeds. Every generation records its sampling seed; the same seed + settings reproduce the same take.
  • Steadier batches. Multi-line batch generations now share one sampling seed across segments, so a batch reads as one consistent performance instead of shifting character between lines.

UI refinements

  • Dark mode only. The app now pins its refined dark appearance regardless of the system setting; the half-supported light mode is gone.
  • Detected-language selector. The language control shows the auto-detected language of your script as you type (caption reads Language · Auto), and you can pin a specific language from the same compact menu.
  • One-row configuration. Language, Delivery, and Intensity merged onto a single configuration line, giving the script editor more room.
  • Voice Design polish. The brief editor is multi-line with a character counter; starting points moved into a compact menu; and the page fits scroll-free at the default window size.
  • Clear history. History's toolbar gained clear-all actions with an explicit choice: clear the list but keep audio files, or delete the audio too.
  • Cancel is quiet. Cancelling a generation no longer flashes an error state in the sidebar.
  • Reduce Motion honored. macOS animations now actually respect the system Reduce Motion setting (they previously only did on iOS).

New: the vocello command line

The repo now ships a headless CLI (vocello) exposing the same in-process engine: generate (all three modes, streaming, JSON output, stdin), batch, voices (list/enroll/delete), speakers, models, and a deterministic bench harness. It's built from source (./scripts/build.sh cli) rather than shipped in the DMG — see docs/reference/cli.md.

Quality process

This release passed a standing pre-release gate that is now permanent in-tree: a 10-test macOS XCUITest smoke suite, a deterministic engine benchmark matrix with reference-free audio QC on every cell plus a perceptual listening pass, five static audits, and a full interactive UI walkthrough of the packaged, signed app (docs/reference/macos-release-qa.md).

Known limitations

  • macOS 15 users: stay on v1.2.3. No 2.x backport is planned.
  • Quality (8-bit) on 8 GB Macs: with the fallback removed, a Quality load that doesn't fit now fails with an explanation instead of silently downgrading. Speed is the recommended default on 8 GB.
  • iPhone: the iOS app now runs the engine fully on-device in development builds (iPhone 17 Pro proven), but no TestFlight build is attached to this release. iPhone distribution continues on a separate path.
  • Voice Cloning is reference-driven. Only clone voices you own or have explicit permission to clone.

Install

  1. Download Vocello-macos26.dmg from this release's assets.
  2. Open the DMG and drag Vocello.app to /Applications.
  3. Double-click Vocello to launch. No right-click bypass needed — the DMG is notarized and stapled.
  4. On first launch (new installs), go to Settings → Model Downloads and click Download recommended to fetch the three Speed (4-bit) variants (~7 GB total). Quality variants are optional.
  5. Generate locally from Custom Voice, Voice Design, or Voice Cloning.

Verification (optional)

The DMG is signed and notarized; macOS will accept it without any extra steps. To verify out of band:

Before install (the DMG envelope):

  • xcrun stapler validate Vocello-macos26.dmg should print The validate action worked!
  • spctl --assess --type install -vv Vocello-macos26.dmg should print accepted with source=Notarized Developer ID.

After install (the .app itself):

  • spctl --assess --type execute -vv /Applications/Vocello.app should print the same accepted + source=Notarized Developer ID lines.
  • codesign --verify --deep --strict /Applications/Vocello.app should exit silently.

release-metadata.txt (attached once CI completes) records the commit SHA, Xcode version, SDK, marketing version (2.1.0), and build number (18) used to produce the DMG.