Project Case Study

Offline Multi-Voice TTS and Android SDK Delivery on RK3588-S

Winge integrated and tested an offline TTS Android SDK on RK3588-S with Android 12 and arm64-v8a. The delivery covered 24 kHz streaming PCM, the zm_009 Chinese male voice, multiple female-voice mappings, an AAR, a Demo APK, WAV samples and test records, with measured latency, RTF and stated validation limits.

Case Center
Offline Multi-Voice TTS and Android SDK Delivery on RK3588-S case image
01Requirement
02Delivery
03Review
Case Detail

Offline Multi-Voice TTS and Android SDK Delivery on RK3588-S Case Study

Kokoro 24 kHz, local streaming PCM, Chinese male and female voices, AAR and device validation

Project context and disclosure boundary

The project addressed offline text-to-speech on an RK3588-S smart terminal. Model packaging, streaming callbacks, playback control, male and multiple female voice selection, an AAR and a Demo APK were implemented for Android 12 and arm64-v8a with ordinary application permissions. WAV files and performance records were produced on the physical device. Customer names, asset identifiers and business text have been removed; only facts traceable to code, builds, logs and audio files are disclosed.

Engineering objectives

  • Convert text to speech locally when a network is unavailable.
  • Expose a stable asynchronous streaming PCM interface through an Android AAR.
  • Provide a selectable Chinese male voice and multiple Chinese female voices.
  • Deliver a demo, integration guide, licences, WAV samples and traceable test records.

On-device processing path

A text request first enters the task scheduler, where a new request can stop active or queued older text. The non-quantized Kokoro model loads when the SDK is created. Floating-point output is converted to 24 kHz mono PCM16 little-endian chunks and returned to AudioTrack or a file wrapper. No cloud TTS API is called in the synthesis path.

  1. The app submits text, voiceId, rate and volume.
  2. The SDK validates parameters and manages stop, replacement and queue state.
  3. Kokoro runs local CPU inference on RK3588-S.
  4. onAudioChunk() returns PCM chunks; onCompleted() reports completion statistics only.
  5. The app plays raw PCM or adds a WAV header before saving.

Android SDK delivery

The standalone TTS AAR retains the EyeTtsSdk, TtsOptions, TtsStreamCallback and TtsAudioData interfaces. replaceTextStreamAsync() stops older text and synthesizes the newest request; stopTts() stops synthesis and clears queued work. The SDK returns raw PCM rather than a WAV file with a header.

TtsOptions options = new TtsOptions("zm_009", 1.0f, 1.0f);
tts.replaceTextStreamAsync(text, options, callback);
// callback.onAudioChunk(... TtsAudioData audio)

Male voice capability and device test

The male voice is a tested capability, not a placeholder. The disclosed voice is zm_009, speaker ID 58. It generated the same sentence at 0.8x, 1.0x and 1.4x on RK3588-S. All three WAV files are 24 kHz, mono PCM16 with zero clipped samples. Durations were 5.549, 4.363 and 3.086 seconds, confirming that the rate control changed the output. These measurements do not replace human listening assessment.

Male zm_009 / 0.8x

Male zm_009 / 1.0x

Male zm_009 / 1.4x

Multiple female voices

SDK 0.5.1 maps all 55 official Chinese female voice names and keeps the female alias mapped to zf_001. The Demo exposes 12 female candidates and each was rendered to WAV on RK3588-S. The public table uses zf_001 as a baseline. Different durations, peaks and hashes rule out duplicate exports, but do not prove naturalness, intelligibility or suitability for a specific business context.

Female zf_001 / 1.0x

Hardware and software environment

ItemMeasured value
SoCRK3588-S
OSAndroid 12
ABIarm64-v8a
ModelKokoro multi-lang v1.1, non-quantized
Runtimesherpa-onnx 1.13.4, CPU, 4 threads
Output24000 Hz, mono, PCM16 little-endian

Measured RK3588-S results

Voice / rateFirst PCMTotalAudioRTFClipping
Female zf_001 / 1.0x1572 ms4387 ms4.241 s1.0340
Male zm_009 / 0.8x1923 ms5534 ms5.549 s0.9970
Male zm_009 / 1.0x1545 ms4396 ms4.363 s1.0080
Male zm_009 / 1.4x1133 ms3201 ms3.086 s1.0380

The test sentence was a short Chinese streaming-TTS phrase. Four CPU threads and SDK volume parameter 1.0 were used. First chunk is the time to the initial PCM callback; RTF is total generation time divided by audio duration. Source: Winge RK3588-S project test record dated 2026-08-05. The sample is small and does not establish performance for every text or device.

Tests and deliverables

  • EyeAlgo TTS Android AAR and the matching Core AAR.
  • Demo APK for text, male/female voice, rate, volume, play, pause, stop and WAV export.
  • Kokoro inventory with file sizes and SHA-256 checks.
  • Male and female device WAV files, logs, build tests and integration guide.
  • Third-party notices for sherpa-onnx, ONNX Runtime and the model.

38 test suites / 185 test cases / 0 failures / 0 errors / 0 skipped. AAR and APK builds passed.

Applicable scenarios

The implementation can be evaluated for smart-glasses prompts, offline OCR reading, industrial handhelds, equipment alerts, exhibition terminals and Android devices on isolated networks. Real-time dialogue, long-form reading and production firmware require separate evaluation against package size, memory, first-chunk latency, audio hardware, text normalization and stability targets.

Integration conditions

  • The tested target is Android 12 and arm64-v8a; other environments require compatibility validation.
  • The non-quantized AAR is about 354 MiB and the Demo APK about 360 MiB, so storage and distribution must be planned.
  • The host project must not package conflicting sherpa-onnx Java/JNI or ONNX Runtime versions.
  • AudioTrack must use 24000 Hz, mono, PCM16 little-endian.
  • Production acceptance requires a frozen text set, voices, rates, playback hardware, latency and stability criteria.

Limits and acceptance boundary

  • Current status is CUSTOMER_TEST / NOT_PRODUCTION.
  • No 100-item Chinese, English, number, punctuation and long-text intelligibility test is complete.
  • No eight-hour continuous synthesis, stop, preemption and playback stability test is complete.
  • Human ranking of every voice and the default female voice remain open.
  • INT8 size, latency, memory and quality comparison and production signing remain open.
  • Non-quantized first-chunk P95 and RTF were slightly above the original targets and cannot be reported as a passed performance gate.

Public technical references

Voice IDs, Android configuration and sample rate are based on the sherpa-onnx Kokoro multilingual model documentation. Model origin and licence are referenced from the Kokoro-82M-v1.1-zh page. Upstream documentation is used to identify the component; it is not treated as acceptance evidence for this delivery.

Frequently asked questions

Does the SDK work fully offline?

The current synthesis path loads the model and generates PCM locally without a cloud TTS call. Initial app or model distribution and business data synchronization depend on the deployment design.

Was the male voice tested on a physical RK3588-S?

Yes. zm_009, speaker ID 58 was generated at 0.8x, 1.0x and 1.4x, with first-chunk, total time, duration, RTF and clipping checks. Long-text and eight-hour stability acceptance are still open.

How many Chinese female voices are supported?

Version 0.5.1 maps 55 official Chinese female names and the Demo presents 12 candidates. Mapping does not mean every voice has passed subjective acceptance; selected voices should be retested with business text.

Does the streaming callback return a WAV file?

No. onAudioChunk() returns raw 24 kHz mono PCM16 little-endian data. It can be written to AudioTrack, or a standard WAV header can be added when saving.

Why is it not labelled production-ready?

Evidence covers builds, unit tests, the model inventory, short-sentence device synthesis and format checks, but not long text, all voices, eight-hour stability, production signing or the customer's audio chain.

Delivery Review

Typical Delivery Path

A similar project is usually delivered by confirming the business goal first, then completing technical validation, implementation, testing, launch and review.

01Requirement Review

Define target users, workflows, data scope and acceptance criteria.

02Solution Design

Confirm technical route, system structure, interfaces and deployment environment.

03Implementation

Complete core development, module integration, data connection and device debugging.

04Testing

Validate performance, stability, exception handling and business results.

05Launch Review

Deliver documents, deployment guidance, maintenance advice and iteration plan.

FAQ

Frequently Asked Questions

Additional information for evaluating similar software, AI, hardware, sensor or product engineering projects.

Which companies can use this case as a reference?
Companies with similar business processes, data handling, device access, algorithm recognition, platform construction or system integration requirements can refer to the requirement breakdown and delivery approach.
What materials are needed before starting a similar project?
It is helpful to prepare business process notes, current systems or devices, interface documents, sample data, expected results, deployment environment and acceptance standards.
Can the project continue to iterate after delivery?
Yes. Winge Technology can support feature expansion, model optimization, performance tuning and maintenance based on launch feedback and accumulated data.

Need to Evaluate a Similar Project?

Submit your industry scenario, business goal, existing system or device status. We can help evaluate the technical route, schedule and delivery scope.

Submit Requirement

Submit Project Requirement

Online
Phone
13910119357
WeChat
WhatsApp
Winge Technology WhatsApp QR code Scan or click to contact us
Top