Contexto e limite de divulgação
O projeto tratou de texto para fala offline em um terminal RK3588-S. Empacotamento do modelo, callbacks em fluxo, controle de reprodução, voz masculina e várias vozes femininas, AAR e Demo APK foram implementados em Android 12 arm64-v8a com permissões comuns. WAVs e métricas vieram do dispositivo físico. Nomes de clientes e ativos foram removidos; apenas fatos verificáveis por código, builds, logs e áudio são publicados.
Objetivos de engenharia
- Gerar voz localmente sem rede.
- Fornecer PCM assíncrono em fluxo por Android AAR.
- Permitir voz masculina e várias vozes femininas em chinês.
- Entregar Demo, guia, licenças, WAVs e registros de teste.
Fluxo no dispositivo
Novo texto pode interromper solicitações antigas ativas ou na fila. O modelo Kokoro não quantizado é carregado ao criar o SDK e executa na CPU RK3588-S. A saída são blocos de 24 kHz, mono, PCM16 little-endian. O fluxo não chama TTS em nuvem.
- Gerar voz localmente sem rede.
- Fornecer PCM assíncrono em fluxo por Android AAR.
- Permitir voz masculina e várias vozes femininas em chinês.
- Entregar Demo, guia, licenças, WAVs e registros de teste.
Entrega do Android SDK
O AAR fornece EyeTtsSdk, TtsOptions, TtsStreamCallback e TtsAudioData. replaceTextStreamAsync() interrompe texto antigo e sintetiza o mais novo; stopTts() para e limpa a fila. A saída é PCM bruto, não WAV.
TtsOptions options = new TtsOptions("zm_009", 1.0f, 1.0f);
tts.replaceTextStreamAsync(text, options, callback);
// callback.onAudioChunk(... TtsAudioData audio)
Voz masculina e teste no dispositivo
A voz masculina foi testada no dispositivo. A voz publicada é zm_009, speaker ID 58, com a mesma frase em 0,8x, 1,0x e 1,4x. As durações foram 5,549, 4,363 e 3,086 segundos; todos os WAVs são 24 kHz mono PCM16 sem clipping. Medidas não substituem avaliação auditiva.
Male zm_009 / 0.8x
Male zm_009 / 1.0x
Male zm_009 / 1.4x
Múltiplas vozes femininas
O SDK 0.5.1 mapeia 55 nomes oficiais de vozes femininas chinesas; o Demo gerou 12 candidatas no RK3588-S. zf_001 é a referência pública. Duração, pico e hash diferentes descartam exportação duplicada, mas não provam naturalidade ou adequação.
Female zf_001 / 1.0x
Ambiente de hardware e software
| Item | 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 no RK3588-S
| Voz / taxa | PCM inicial | Total | Áudio | 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 |
A mesma frase curta em chinês foi medida com quatro threads e parâmetro de volume 1,0. First chunk é o tempo até o primeiro PCM; RTF é tempo de geração dividido pela duração. Fonte: teste Winge RK3588-S de 2026-08-05. A amostra pequena não garante todos os textos.
Testes e entregáveis
- EyeAlgo TTS Android AAR e Core AAR correspondente.
- Demo APK para voz, taxa, volume, reprodução, parada e exportação WAV.
- Inventário Kokoro, SHA-256, WAVs, logs, guia de integração e licenças.
38 test suites / 185 test cases / 0 failures / 0 errors / 0 skipped. AAR and APK builds passed.
Cenários aplicáveis
Pode ser avaliado para óculos inteligentes, leitura OCR offline, terminais industriais, alarmes, exposições e Android em rede isolada. Diálogo, texto longo e firmware de produção exigem testes próprios de tamanho, memória, latência, áudio, normalização e estabilidade.
Condições de integração
- Alvo testado: Android 12, arm64-v8a; outros exigem validação.
- AAR não quantizado com cerca de 354 MiB e Demo APK com cerca de 360 MiB.
- Remover runtimes conflitantes e configurar AudioTrack em 24000 Hz, mono, PCM16 little-endian.
Limites e aceitação
- Estado CUSTOMER_TEST / NOT PRODUCTION.
- Texto longo, oito horas, avaliação de todas as vozes, INT8 e assinatura de produção estão pendentes.
- First-chunk P95 e RTF não atingiram a meta original.
Referências técnicas públicas
IDs de voz, configuração Android e amostragem seguem a documentação Kokoro do sherpa-onnx. Origem e licença seguem Kokoro-82M-v1.1-zh. A documentação upstream identifica o componente, mas não é evidência de aceitação.
Perguntas frequentes
O SDK funciona totalmente offline?
A síntese é local e não chama TTS em nuvem. Rede para distribuição inicial ou sincronização depende da implantação.
A voz masculina foi testada no RK3588-S?
Sim. zm_009 foi gerada em três velocidades com latência, tempo, RTF e clipping registrados. Texto longo e oito horas estão pendentes.
Quantas vozes femininas chinesas existem?
O SDK mapeia 55 nomes e o Demo gerou 12 candidatas no dispositivo. Isso não é aceitação subjetiva de todas.
O callback retorna WAV?
Não. Retorna PCM16 mono 24 kHz bruto; um cabeçalho WAV é adicionado ao salvar.
Por que não está pronto para produção?
Texto longo, todas as vozes, estabilidade de oito horas, assinatura de produção e cadeia de áudio do cliente ainda não foram aceitos.

Online
Phone
WeChat
Top