Repository navigation
feat(sdk): add streaming TTS through the QAIRT plugin - #1581
Shivay Lamba (shivaylamba) wants to merge 5 commits into
Conversation
Signed-off-by: Shivay Lamba <19529592+shivaylamba@users.noreply.github.com>
Signed-off-by: Shivay Lamba <19529592+shivaylamba@users.noreply.github.com>
Signed-off-by: Shivay Lamba <19529592+shivaylamba@users.noreply.github.com>
Signed-off-by: Shivay Lamba <19529592+shivaylamba@users.noreply.github.com>
|
Hi Shivay Lamba (@shivaylamba), thanks for your contribution! For now, we are not going to add one extra plugin in GenieX, because it will increase a lot of maintanence efforts. I wonder if |
Signed-off-by: Shivay Lamba <19529592+shivaylamba@users.noreply.github.com>
|
Thanks for clarifying the preferred direction. I've implemented it in qualcomm/geniex-qairt-plugin#81:
I've also updated this draft to consume that pipeline through the existing I tested locally on the Windows ARM64 X Elite using the GenieX LLVM toolchain and QAIRT 2.45 with SC8380XP contexts:
Warm first-PCM callback medians were 6.99 ms / RTF 0.0540 (31M) and 9.02 ms / RTF 0.0617 (40M) over three warm requests each. These exclude model initialization and speaker playback. Detailed methodology and reproducible tests are included in the companion change. Android/Linux/VENTUNO Q hardware and concurrent LLM/TTS execution remain unvalidated in this revision. CLI/model-catalogue integration is also outside this change. I'll keep this SDK draft dependent on the companion pipeline review and update its submodule pin to the merged revision before landing. |
Summary
Add streaming text-to-speech to the existing
qairtplugin using the companionpipeline in qualcomm/geniex-qairt-plugin#81.
The implementation now uses that runtime's
Model,Graph, QNN HTP loader,buffers and profiling. The separate
phonon_qnnplugin and external Gradium QNNengine dependency have been removed. Phonon's acoustic scheduling lives in the
QAIRT model implementation; this SDK change is its streaming API adapter.
JNI/Kotlin surfaces. Existing Plugin vtables remain unchanged; plugins without
the optional speech factory return
NOT_SUPPORTED.GenieXTTSselectsqairtby default. Use the same process-wide QAIRT runtimeconfiguration and log sink as LLM/VLM. An optional runtime field only asserts
consistency with the selected runtime; it cannot switch providers per model.
counters and accelerator timings. Strict verification requires positive QNN
accelerator events for both prefill and step; no CPU/GPU retry.
remain host work. Compiled context binaries must match the target SoC and
runtime. GGUF alone is not a QAIRT pipeline input.
See
sdk/plugins/qairt/README.tts.mdand the companion pipeline'smodels/phonon/VALIDATION.mdfor setup and measured scope. No weights,credentials, generated audio or additional QAIRT payloads are introduced.
Validation of this revision
Windows ARM64 Snapdragon X Elite, GenieX ARM64 LLVM toolchain (Clang 22.1.8),
QAIRT 2.45.0.260326, SC8380XP contexts, Phonon 31M and 40M:
frontend, conflicting runtime assertion, locked shared selection, streaming,
cancellation, callback exceptions, invalid voice recovery and multi-chunk text.
installation, with no QNN CPU/GPU provider.
match the Gradium PR-273 reference runner's length with max PCM16 difference 1
for both models. Every successful run reports positive accelerator timings
for both graphs.
the new generic pipeline; device lifecycle tests passed for both models.
Observed warm Python first-PCM medians: 31M 6.99 ms (RTF 0.0540), 40M 9.02 ms
(RTF 0.0617), last three of four requests per loaded model. These exclude model
initialization and speaker playback and are not performance guarantees.
Remaining scope
This remains a draft SDK modality proposal dependent on the companion pipeline
review/merge. The submodule pin is that tested companion commit and should be
updated to its merged upstream revision before landing.
Android/Linux/VENTUNO Q hardware, current Android packaging/linking and
concurrent LLM/TTS execution have not been validated in this revision.
CLI speech routes, model catalogue /
pullintegration and GGUF CPU/GPU TTSare outside this implementation. No claim is made that it runs on arbitrary
devices without compatible compiled contexts, runtime and drivers.
Closes: N/A; companion implementation of the QAIRT-pipeline direction requested here.