Contexto y límite de publicación
El proyecto abordó texto a voz sin conexión en un terminal RK3588-S. Se implementaron empaquetado del modelo, callbacks de streaming, control de reproducción, voz masculina y varias voces femeninas, AAR y Demo APK para Android 12 arm64-v8a con permisos comunes. Los WAV y las métricas proceden del dispositivo físico. Se eliminaron nombres de cliente y activos; solo se publican hechos verificables mediante código, compilaciones, registros y audio.
Objetivos de ingeniería
- Generar voz localmente sin red.
- Ofrecer PCM asíncrono en streaming mediante Android AAR.
- Permitir voz masculina y varias voces femeninas en chino.
- Entregar Demo, guía, licencias, WAV y registros de prueba.
Flujo en el dispositivo
Un texto nuevo puede detener solicitudes antiguas activas o en cola. El modelo Kokoro no cuantizado se carga al crear el SDK y se ejecuta en la CPU RK3588-S. La salida son bloques de 24 kHz, mono, PCM16 little-endian. La síntesis no llama a TTS en la nube.
- Generar voz localmente sin red.
- Ofrecer PCM asíncrono en streaming mediante Android AAR.
- Permitir voz masculina y varias voces femeninas en chino.
- Entregar Demo, guía, licencias, WAV y registros de prueba.
Entrega del SDK Android
El AAR ofrece EyeTtsSdk, TtsOptions, TtsStreamCallback y TtsAudioData. replaceTextStreamAsync() detiene texto anterior y sintetiza el más nuevo; stopTts() detiene y limpia la cola. La salida es PCM bruto, no WAV.
TtsOptions options = new TtsOptions("zm_009", 1.0f, 1.0f);
tts.replaceTextStreamAsync(text, options, callback);
// callback.onAudioChunk(... TtsAudioData audio)
Voz masculina y prueba en dispositivo
La voz masculina se probó en el dispositivo. La voz publicada es zm_009, speaker ID 58, con la misma frase a 0,8x, 1,0x y 1,4x. Las duraciones fueron 5,549, 4,363 y 3,086 segundos; todos los WAV son 24 kHz mono PCM16 sin clipping. Las medidas no sustituyen la evaluación auditiva.
Male zm_009 / 0.8x
Male zm_009 / 1.0x
Male zm_009 / 1.4x
Múltiples voces femeninas
El SDK 0.5.1 asigna 55 nombres oficiales de voces femeninas chinas; el Demo generó 12 candidatas en RK3588-S. zf_001 es la referencia pública. Duración, pico y hash distintos descartan exportación duplicada, pero no demuestran naturalidad ni idoneidad.
Female zf_001 / 1.0x
Entorno de hardware y software
| Elemento | Valor |
|---|---|
| SoC | RK3588-S |
| OS | Android 12 |
| ABI | arm64-v8a |
| Model | Kokoro multi-lang v1.1, non-quantized |
| Runtime | sherpa-onnx 1.13.4, CPU, 4 threads |
| Output | 24000 Hz, mono, PCM16 little-endian |
Resultados medidos en RK3588-S
| Voz / tasa | PCM inicial | Total | Audio | RTF | Clipping |
|---|---|---|---|---|---|
| Female zf_001 / 1.0x | 1572 ms | 4387 ms | 4.241 s | 1.034 | 0 |
| Male zm_009 / 0.8x | 1923 ms | 5534 ms | 5.549 s | 0.997 | 0 |
| Male zm_009 / 1.0x | 1545 ms | 4396 ms | 4.363 s | 1.008 | 0 |
| Male zm_009 / 1.4x | 1133 ms | 3201 ms | 3.086 s | 1.038 | 0 |
Se midió la misma frase corta en chino con cuatro hilos y parámetro de volumen 1,0. First chunk es el tiempo hasta el primer PCM; RTF es tiempo de generación dividido por duración. Fuente: prueba Winge RK3588-S del 2026-08-05. La muestra pequeña no garantiza todos los textos.
Pruebas y entregables
- EyeAlgo TTS Android AAR y Core AAR correspondiente.
- Demo APK para voz, tasa, volumen, reproducción, parada y exportación WAV.
- Inventario Kokoro, SHA-256, WAV, registros, guía de integración y licencias.
38 test suites / 185 test cases / 0 failures / 0 errors / 0 skipped. AAR and APK builds passed.
Escenarios aplicables
Puede evaluarse para gafas inteligentes, lectura OCR offline, terminales industriales, alarmas, exposiciones y Android en red aislada. Diálogo, texto largo y firmware de producción requieren pruebas propias de tamaño, memoria, latencia, audio, normalización y estabilidad.
Condiciones de integración
- Objetivo probado: Android 12, arm64-v8a; otros requieren validación.
- AAR no cuantizado de unos 354 MiB y Demo APK de unos 360 MiB.
- Eliminar runtimes en conflicto y configurar AudioTrack a 24000 Hz, mono, PCM16 little-endian.
Límites y aceptación
- Estado CUSTOMER_TEST / NOT PRODUCTION.
- Texto largo, ocho horas, evaluación de todas las voces, INT8 y firma de producción están pendientes.
- First-chunk P95 y RTF no alcanzaron el objetivo original.
Referencias técnicas públicas
Los ID de voz, la configuración Android y el muestreo siguen la documentación Kokoro de sherpa-onnx. El origen y la licencia siguen Kokoro-82M-v1.1-zh. La documentación upstream identifica el componente, no demuestra la aceptación.
Preguntas frecuentes
¿El SDK funciona totalmente sin conexión?
La síntesis es local y no llama a TTS en la nube. La red para distribución inicial o sincronización depende del despliegue.
¿Se probó la voz masculina en RK3588-S?
Sí. zm_009 se generó a tres velocidades y se registraron latencia, tiempo, RTF y clipping. Faltan texto largo y ocho horas.
¿Cuántas voces femeninas chinas admite?
El SDK asigna 55 nombres y el Demo generó 12 candidatas en el dispositivo. No equivale a aceptación subjetiva de todas.
¿El callback devuelve WAV?
No. Devuelve PCM16 mono de 24 kHz sin cabecera; al guardar se añade una cabecera WAV.
¿Por qué no se declara listo para producción?
Faltan texto largo, todas las voces, estabilidad de ocho horas, firma de producción y la cadena de audio del cliente.

Online
Phone
WeChat
Top