프로젝트 배경과 공개 범위
이 프로젝트는 RK3588-S 스마트 단말의 오프라인 문자 음성 변환을 대상으로 했습니다. Android 12, arm64-v8a, 일반 앱 권한에서 모델 패키징, 스트리밍 콜백, 재생 제어, 남성 및 다중 여성 음성, AAR와 Demo APK를 구현하고 실기기 WAV와 성능 기록을 만들었습니다. 고객명과 자산 식별자는 제거하고 코드, 빌드, 로그, 오디오로 확인 가능한 사실만 공개합니다.
개발 목표
- 네트워크 없이 기기에서 음성을 합성한다.
- Android AAR에서 비동기 스트리밍 PCM을 제공한다.
- 중국어 남성 음성과 여러 여성 음성을 선택한다.
- Demo, 통합 문서, 라이선스, WAV와 시험 기록을 납품한다.
온디바이스 처리 경로
새 텍스트는 실행 중이거나 대기 중인 이전 요청을 중지할 수 있습니다. SDK 생성 시 비양자화 Kokoro 모델을 로드하고 RK3588-S CPU에서 추론하여 24 kHz 모노 PCM16 little-endian 청크를 반환합니다. 합성 경로는 클라우드 TTS를 호출하지 않습니다.
- 네트워크 없이 기기에서 음성을 합성한다.
- Android AAR에서 비동기 스트리밍 PCM을 제공한다.
- 중국어 남성 음성과 여러 여성 음성을 선택한다.
- Demo, 통합 문서, 라이선스, WAV와 시험 기록을 납품한다.
Android SDK 납품
독립 AAR는 EyeTtsSdk, TtsOptions, TtsStreamCallback, TtsAudioData를 제공합니다. replaceTextStreamAsync()는 이전 문장을 중지하고 최신 문장을 합성하며 stopTts()는 합성과 대기 요청을 정리합니다. 출력은 WAV가 아닌 원시 PCM입니다.
TtsOptions options = new TtsOptions("zm_009", 1.0f, 1.0f);
tts.replaceTextStreamAsync(text, options, callback);
// callback.onAudioChunk(... TtsAudioData audio)
남성 음성과 실기기 검증
남성 음성은 실기기 검증 항목입니다. 공개 음성은 zm_009, speaker ID 58이며 같은 문장을 0.8x, 1.0x, 1.4x로 생성했습니다. 길이는 5.549, 4.363, 3.086초이고 모두 24 kHz 모노 PCM16, 클리핑 0입니다. 이 수치는 주관적 음질 평가를 대신하지 않습니다.
Male zm_009 / 0.8x
Male zm_009 / 1.0x
Male zm_009 / 1.4x
다중 여성 음성
SDK 0.5.1은 공식 중국어 여성 음성 55개 이름을 매핑하고 Demo에서 12개 후보를 실기기로 생성했습니다. zf_001을 기준으로 공개합니다. 서로 다른 길이, 피크, 해시는 중복 출력을 배제하지만 자연스러움이나 업무 적합성 합격을 의미하지 않습니다.
Female zf_001 / 1.0x
하드웨어 및 소프트웨어 환경
| 항목 | 측정값 |
|---|---|
| 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 |
RK3588-S 측정 결과
| 음성 / 속도 | 첫 PCM | 총 시간 | 오디오 | RTF | 클리핑 |
|---|---|---|---|---|---|
| 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 |
같은 짧은 중국어 문장, CPU 4스레드, SDK 볼륨 매개변수 1.0으로 측정했습니다. 첫 청크는 초기 PCM 콜백까지, RTF는 생성 시간÷오디오 길이입니다. 출처는 2026-08-05 Winge RK3588-S 시험 기록입니다. 적은 표본은 모든 문장과 기기의 보증이 아닙니다.
시험과 납품물
- EyeAlgo TTS Android AAR 및 대응 Core AAR.
- 음성·속도·볼륨·재생·중지·WAV 내보내기용 Demo APK.
- Kokoro 목록과 SHA-256, 남녀 WAV, 실기기 로그, 통합 문서, 제3자 라이선스.
38 test suites / 185 test cases / 0 failures / 0 errors / 0 skipped. AAR and APK builds passed.
적용 시나리오
스마트 글래스 안내, 오프라인 OCR 읽기, 산업용 핸드헬드, 장비 경보, 전시 단말, 폐쇄망 Android 기기에 평가할 수 있습니다. 실시간 대화, 장문 읽기, 양산 펌웨어는 크기, 메모리, 지연, 오디오 경로, 정규화, 안정성을 별도로 검증해야 합니다.
통합 조건
- 시험 환경은 Android 12, arm64-v8a이며 다른 환경은 호환성 확인이 필요합니다.
- 비양자화 AAR는 약 354 MiB, Demo APK는 약 360 MiB입니다.
- 충돌 라이브러리를 제외하고 AudioTrack을 24000 Hz, 모노, PCM16 little-endian으로 설정합니다.
제한 및 인수 범위
- 상태는 CUSTOMER_TEST / NOT PRODUCTION입니다.
- 장문, 8시간 안정성, 전체 음성 주관 평가, INT8 비교, 프로덕션 서명이 미완료입니다.
- 첫 청크 P95와 RTF는 초기 목표를 통과하지 못했습니다.
공개 기술 자료
음성 ID, Android 설정, 샘플링 주파수는 sherpa-onnx Kokoro 다국어 문서를 따릅니다. 모델 출처와 라이선스는 Kokoro-82M-v1.1-zh를 참조합니다. 상위 문서는 구성요소 식별 자료이며 프로젝트 인수 증거가 아닙니다.
자주 묻는 질문
완전 오프라인으로 동작합니까?
합성은 기기에서 실행되며 클라우드 TTS를 호출하지 않습니다. 초기 배포나 데이터 동기화의 네트워크 여부는 배포 방식에 따릅니다.
남성 음성을 RK3588-S에서 시험했습니까?
예. zm_009를 세 가지 속도로 생성하고 지연, 시간, RTF, 클리핑을 기록했습니다. 장문과 8시간 시험은 미완료입니다.
여성 음성은 몇 개를 지원합니까?
55개 이름을 매핑하고 Demo에서 12개 후보를 실기기 생성했습니다. 모든 음성의 주관 평가 통과를 뜻하지 않습니다.
콜백이 WAV를 반환합니까?
아닙니다. 24 kHz 모노 PCM16 원시 데이터이며 저장할 때 WAV 헤더를 추가합니다.
왜 프로덕션 준비로 표시하지 않습니까?
장문, 전체 음성, 8시간 안정성, 프로덕션 서명, 고객 오디오 경로 검증이 완료되지 않았기 때문입니다.

Online
Phone
WeChat
Top