Built-in Voice
Built-in speakers with controllable delivery. Nine voices across English, Chinese, Japanese, and Korean.
Local-first text-to-speech on Apple Silicon. One engine core
(QwenVoiceCore / MLXTTSEngine) hosted three ways:
macOS out-of-process XPC, iOS in-process, and a headless CLI. Model weights download
from Hugging Face; only metadata, privacy resources, UI assets, and iOS voice previews are bundled.
Built-in speakers with controllable delivery. Nine voices across English, Chinese, Japanese, and Korean.
Invent a voice from a natural-language brief. Save the result as a Clone reference.
Speak in a voice from a 10–20 s reference clip. Delivery follows the reference; emotion-bank personas add a delivery choice between verified references.
01 · Runtime
All hosts share MLXTTSEngine built by NativeRuntimeFactory.
They differ only in where the engine lives and how the UI talks to it.
SwiftUI app links the full XPC stack. Engine runs in QwenVoiceEngineService for crash isolation and memory containment.
QwenVoicecom.qwenvoice.appSwiftUI app hosts MLXTTSEngine in-process through its platform store. It links the shared engine/packages but deliberately excludes the macOS XPC frameworks.
QVoiceiOScom.patricedery.vocelloSame engine contract for generate, batch, bench, voices, and model install. Built via ./scripts/build.sh cli.
VocelloCLINever hand-edit project.pbxproj. Regenerate with ./scripts/regenerate_project.sh.
No Debug config. Runtime debug via DebugMode.isEnabled / QWENVOICE_DEBUG=1.
mlx-swift 0.31.6 and mlx-swift-lm 3.31.4 move together. No Core ML pivot.
Gates never use Simulator. XCUITest drives the paired physical iPhone.
02 · Product
Three generation modes share one chrome. Library surfaces (Voices, History, Models) are first-class. Platform deltas are intentional, not incomplete ports.
| Feature | macOS | iOS | CLI |
|---|
03 · Modules
14 Swift targets from project.yml; the graph shows ten build-graph participants. The four UI/logic test bundles are omitted; VocelloiOSCandidateUITests is standalone and never builds the production app. Click a node for details.
Hover highlights connected edges. Layering rule:
BackendCore ← Core ← apps / XPC / CLI.
04 · Generation
End-to-end path inside MLXTTSEngine → VocelloQwen3Engine → GenerationOutputAdapter.
Output is 24 kHz mono Int16 WAV with audio QC telemetry.
05 · Systems
Generation is only one lifecycle. These companion flows explain how models arrive, how local artifacts persist, how diagnostics join, and how releases leave the repository.
06 · Codebase
Sources/ is the product source of truth. SharedSupport compiles into both apps;
the XPC stack is macOS-only; iOS has a parallel support layer under iOSSupport/.
07 · Dependencies
Exact pins in project.yml and Package.resolved.
VocelloQwen3Core is the owned Qwen3-TTS core package under Packages/.
08 · Tooling
Development is Codex + scripts-first; optional MCP tools assist only when callable. Native builds are the typecheck. Commits, pushes, pull requests, ordinary merges, CI, and release packaging use deterministic checks only. XCUITest smoke, benchmark, and perf lanes are explicit frontend acceptance work.
./scripts/check_project_inputs.sh scripts/macos_test.sh test ./scripts/build.sh build
./scripts/check_project_inputs.sh ./scripts/build_foundation_targets.sh ios
XCUITest smoke and benchmark lanes remain available for explicit frontend acceptance. They never block signing, notarization, archive creation, or artifact upload.
09 · Data
Schema lives in Sources/Resources/qwenvoice_contract.json.
Three modes × Speed (4-bit) / Quality (8-bit). iOS downloads Speed only.
10 · Ship
macOS ships via notarized GitHub Release DMG. iOS is on-device-capable on
main with an optional TestFlight CI lane. Marketing site deploys from website/.
Signed Developer ID + notarized + stapled DMG (Vocello-macos26.dmg) via scripts/release.sh and .github/workflows/release.yml, gated by deterministic release-readiness and artifact checks.
Public TestFlight beta is live via the public join link (build 23 carries v2.4.0). Builds come from the manual CI job (archive_ios) gated by signing, entitlement, archive, catalog, and artifact checks. App Store listing still needs metadata, screenshots, and submission.
React 19 + Vite 8 single page at website/. Deployed on Vercel with cookieless Web Analytics. Brand tokens: gold / lavender / terracotta.
Hugging Face (model download), GitHub Releases (DMG), Apple Notarization / ASC API, optional TestFlight, Vercel (site). No cloud TTS. No bundled weights. No Python runtime in the shippable app.
Architecture Agent onboarding macOS app iOS app CLI Testing Language bench Development progress