Guia Técnico

TTS offline com múltiplas vozes e SDK Android no RK3588-S

A Winge integrou e testou um SDK Android de TTS offline no RK3588-S, Android 12 e arm64-v8a. A entrega incluiu PCM em fluxo de 24 kHz, voz masculina chinesa zm_009, várias vozes femininas, AAR, Demo APK, amostras WAV e registros de teste, com latência, RTF e limites de validação documentados.

TTS offline com múltiplas vozes e SDK Android no RK3588-S

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.

  1. Gerar voz localmente sem rede.
  2. Fornecer PCM assíncrono em fluxo por Android AAR.
  3. Permitir voz masculina e várias vozes femininas em chinês.
  4. 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

ItemValor
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

Resultados medidos no RK3588-S

Voz / taxaPCM inicialTotalÁudioRTFClipping
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

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.

Avaliar uma Modernização

Envie o modelo da câmera, parâmetros RTSP, amostras do local, campo de visão, rede, I/O de alarme e requisitos de aceite.

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