Table of contents

Roadmap

Kokoro-Hexagon 0a03be39Updated 2026-09-27

This is the single implementation roadmap. A checked item has a named test or result; it does not imply that the whole synthesis path works. Historical measurements remain in the results and do not define production dependencies.

setup-kokoro.ps1 is an unofficial, separately maintained fork of Pwsh's setup.ps1; it independently builds the Kokoro base APK. Pwsh does not lower Kokoro models. Kokoro-specific PowerShell source owns the model DLL and direct backend, so model and host releases remain separate decisions. PowerShell authors and validates the graph, weights, and direct Hexagon code; the cDSP performs model tensor arithmetic. Bounded PowerShell FP32 operators are differential oracles, not the product inference backend or a TTFA target. Do not wait for a full scalar reference pass before promoting a source-traced, same-input/same-weight DSP operator with a physical-device result.

Product boundary

The product is a model-less Android appliance and a separately versioned, weight-bearing managed model DLL. The final DLL must contain the admitted phoneme and text path, tensor catalog, graph, control contract, and lowered hot paths—not merely a compressed checkpoint. PowerShell/System.Management.Automation parses and lowers the authored sources at build time. The phone executes the admitted managed and directly emitted Hexagon code and plays PCM through a resident audio stream. A Windows controller can use the same model protocol.

The base release is model-less and must remain smaller than 40 MiB. It obtains one or more model DLLs after installation or accepts the same artifacts over AOA for offline provisioning. Downloaded code and data must be verified against a signed release manifest before loading. Ordinary inference does not compile code or fetch unverified components.

No QNN library, QNN ABI, QNN context, QNN compiler, ONNX Runtime, Python, PyTorch, or LLVM component is a production build or execution dependency. Existing material under src/export/, src/runspace/Qnn.*, historical device jobs, and pinned compiler outputs remains isolated oracle/reference evidence. The pinned stock Kokoro checkpoint is a host-side source input only; it is not read by the released app. Independent assemblers and model frameworks may compare results, but cannot supply release artifacts.

New-KokoroDecoderGraph.ps1 is currently only a parsed two-node decoder contract with precomputed acoustic inputs. Its name describes its present scope; it is not the complete Kokoro model. The full authored synthesis graph and its directly emitted backend remain to be built.

Verified checkpoints

Next: live synthesis, before quantization

The first audible gate accepts admitted phonemes, not arbitrary text. It is blocked today by the absent full computation and QNN-free execution path, not by device discovery. Do not label a payload-only DLL as a live model.

Immediate demo: quoted text to the phone speaker over ADB

ADB is a development transport for this gate, not an APK dependency or the release protocol. Keep USB debugging available during development; do not add an unnecessary debugging-off condition to this loop. A passing demo begins with a single Windows PowerShell command such as:

pwsh -File .\tools\Invoke-KokoroSpeech.ps1 -Text "Hello from Kokoro." -Voice af_heart

Invoke-KokoroSpeech.ps1 is a target interface, not a working script today. The command must take the quoted phrase as data, select the intended phone explicitly when more than one is attached, and return a structured result only after generated PCM has drained through that phone's AAudio speaker. It must not play a recording, tone, prepared QNN context, or precomputed acoustic fixture. The path must use the verified stock model DLL and owned PowerShell-to-Hexagon execution described above.

Text and utterance planning

Precision and backend promotion

Appliance, facade, and release

Later demo: Windows PowerShell ↔ Android PowerShell over USB AOA

AOA is the prospective user-facing USB transport. It must not depend on ADB or require users to enable USB debugging. This is a later integration gate, not a prerequisite for the ADB-driven speech demo. Keep debugging available while developing AOA; prove absence of ADB calls in the AOA data path rather than disabling debugging in the daily loop. The platform contracts are Android's AOA protocol, accessory permission and descriptor API, and the NativeActivity handle. Windows driver admission must be checked against WinUSB installation rules, not inferred from this development machine.

tools/UsbAoa.ps1 already negotiates accessory mode on Windows, and tools/Invoke-KokoroAoa.ps1 has bounded request/reply framing for diagnostic status, ping, and result. src/runspace/Aoa.Appliance.ps1 is the old managed-host endpoint, not the independent appliance implementation. The current src/appliance/aoa/AndroidManifest.fragment.xml is not wired into setup-kokoro.ps1, and its referenced accessory-filter XML resource is not packaged. The independent appliance currently admits only status at its startup expression boundary. None of these parts yet proves a release AOA pipe. The Windows client currently asks UsbAoa.ps1 to stop ADB when starting accessory mode; determine whether that is necessary on each supported Windows configuration, and do not make it a default product requirement.

Change discipline

Only reviewed source, tests, manifests, and compact results enter Git. Keep DLLs, APKs, checkpoints, QNN contexts, audio, and raw device logs out of Git. The independent appliance build defaults to ignored build/; its signing-key and package-cache defaults stay outside the repository. A checked roadmap item requires its named test or result; a live speech claim requires PCM heard from a physical speaker. Production build reachability must be checked for forbidden reference dependencies. Commit and push coherent, tested checkpoints.