Skip to content

feat(catalog): Kokoro-82M on the ANE, and pin SDK 0.20.34 - #19

Merged
sanchitmonga22 merged 1 commit into
mainfrom
feat/kokoro-tts-0.20.34
Sep 2, 2026
Merged

sanchitmonga22 merged 1 commit into
mainfrom
feat/kokoro-tts-0.20.34

Conversation

@sanchitmonga22

@sanchitmonga22 sanchitmonga22 commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

The app's first ANE text-to-speech row — and the last of NeuRT's eight served primitives to
reach a catalog. Published at
runanywhere/Kokoro-82M_ANE (public).

Kokoro-82M runs across three Core ML graphs (duration → decode → gen) plus two host seams that
are not expressible as ANE ops — the duration→alignment expansion and the harmonic source — and
ships its own G2P lexicon, so no runtime phonemizer is needed.

0.20.34, not 0.20.33, and the distinction matters

The tts_ops slot shipped in .33. But the engine emitted int16 PCM where every other engine
emits float32, under the same AUDIO_FORMAT_PCM enum — which names a container and carries
no bit depth at all. Consumers reading the documented float32 got half the samples and a
saturated waveform, with no error at any layer. Fixed in the 0.20.34 engine, so a row pinned
to .33 would have downloaded 146 MB and played garbage.

.tts sets allowedFrameworks nil, so this row is reachable with no picker change — unlike the
RAG contexts, which had to gain .coreml explicitly.

Verified

swift package resolve      runanywhere-swift 0.20.34 (8bd75a29)
xcodebuild test            ** TEST SUCCEEDED **   23 passed, 0 failed

End to end on the same engine through RCLI, which shares this SDK:

rcli pull kokoro-ane        145.9 MB pulled and extracted
rcli tts --model kokoro-ane 79200 samples  3.30s @ 24000 Hz  clipped 0.00%

🤖 Generated with Claude Code

https://claude.ai/code/session_01R6p1R4pwTg5pvVjiEjq9ZA

Summary by CodeRabbit

  • New Features

    • Added the Kokoro-82M text-to-speech model to the Apple Neural Engine catalog.
    • Added support for the model’s Core ML archive format and resource requirements.
  • Updates

    • Updated the RunAnywhere Swift package dependency to version 0.20.34.

The app's first ANE text-to-speech row, and the last of NeuRT's eight served
primitives to reach a catalog. Kokoro-82M runs across three Core ML graphs
(duration -> decode -> gen) plus two host seams that are not expressible as ANE
ops -- the duration->alignment expansion and the harmonic source -- and ships
its own G2P lexicon, so no runtime phonemizer is needed.

0.20.34, not 0.20.33, and the distinction matters. The tts_ops slot shipped in
.33, but the engine emitted int16 PCM where every other engine emits float32
under the same AUDIO_FORMAT_PCM enum -- which names a CONTAINER and carries no
bit depth at all. Consumers reading the documented float32 got half the samples
and a saturated waveform, with no error at any layer. Fixed in the 0.20.34
engine, so a row pinned to .33 would have downloaded 146 MB and played garbage.

`.tts` sets allowedFrameworks nil, so this row is reachable with no picker
change -- unlike the RAG contexts, which had to gain `.coreml` explicitly.

    swift package resolve      runanywhere-swift 0.20.34 (8bd75a29)
    xcodebuild test            ** TEST SUCCEEDED **  23 passed, 0 failed

Verified end to end on the same engine through RCLI, which shares this SDK:
79200 samples, 3.30s @ 24 kHz, 0.00% clipped.
@coderabbitai

coderabbitai Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 1d9ea8e4-f2fc-4e4b-932e-1d6b66155fbb

📥 Commits

Reviewing files that changed from the base of the PR and between bd102da and 058d30b.

⛔ Files ignored due to path filters (1)
  • Package.resolved is excluded by !**/Package.resolved
📒 Files selected for processing (3)
  • Package.swift
  • RunAnywhereAI.xcodeproj/project.pbxproj
  • RunAnywhereAI/Core/Services/ModelCatalogBootstrap.swift

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The package and Xcode project now require runanywhere-swift 0.20.34. The model catalog adds a Kokoro 82M Core ML speech synthesis archive for Apple Neural Engine use.

Changes

Kokoro ANE speech model

Layer / File(s) Summary
SDK version alignment
Package.swift, RunAnywhereAI.xcodeproj/project.pbxproj
Updates the runanywhere-swift dependency requirement from 0.20.33 to 0.20.34.
Kokoro ANE catalog registration
RunAnywhereAI/Core/Services/ModelCatalogBootstrap.swift
Registers kokoro-82m-ane as a Core ML speech synthesis archive with .zip and .nestedDirectory settings, a 400,000,000-byte memory requirement, and the runanywhere/Kokoro-82M_ANE source archive.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: 🟡 Moderate · up to 058d3

This PR adds a downloadable speech model hosted at a mutable external URL without a repository-visible immutable revision or trusted digest/signature. If the hosted artifact changes, clients could receive and load an unintended model, so the change should wait for integrity binding or explicit security-owner acceptance.

Suggested reviewers: siddhesh2377, amanswar

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies both primary changes: adding Kokoro-82M to the ANE catalog and pinning the SDK to version 0.20.34.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/kokoro-tts-0.20.34

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sanchitmonga22
sanchitmonga22 merged commit ada9dd4 into main Sep 2, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant