Kokoro TTS — Android
Kokoro-82M은 ONNX Runtime을 통해 Android에서 실행되는 경량 비자기회귀 텍스트-음성 변환 모델입니다. 7개 언어에 걸쳐 50개 프리셋 음색으로 자연스러운 24 kHz 음성을 생성합니다.
지원 언어
| 언어 | 코드 | 예시 음색 |
|---|---|---|
| 영어 (미국) | en | af_heart, am_adam, af_sky |
| 영어 (영국) | en | bf_emma, bm_george |
| 스페인어 | es | ef_dora |
| 프랑스어 | fr | ff_siwis |
| 힌디어 | hi | hf_alpha, hm_omega |
| 이탈리아어 | it | if_sara |
| 일본어 | ja | jf_alpha, jm_omega |
| 포르투갈어 | pt | pf_dora |
| 중국어 | zh | zf_xiaobei, zm_yunjian |
총 50개 프리셋 음색. 음색 이름 규칙: [언어][성별]_[이름] — 예: af_heart = 미국 여성 "Heart".
모델 파일
| 파일 | 크기 |
|---|---|
kokoro-model-int8.onnx | 약 89 MB |
voices.bin | 음색 임베딩 |
| 음소 사전 | 언어별 발음 데이터 |
HuggingFace: aufklarer/Kokoro-82M-ONNX
성능
| 지표 | 값 |
|---|---|
| 파라미터 | 82M |
| 추론 백엔드 | ONNX Runtime |
| 출력 샘플레이트 | 24 kHz |
Phonemizer
언어별 지원이 있는 사전 기반 phonemizer를 사용해 텍스트가 음소 토큰으로 변환됩니다. Android 구현은 영어, 프랑스어, 스페인어, 이탈리아어, 포르투갈어, 힌디어, 일본어, 중국어용 phonemizer를 포함합니다.
파이프라인 통합
Android에서 Kokoro TTS는 SpeechPipeline의 일부입니다. STT가 음성을 전사한 후, 텍스트가 phonemize되어 다시 오디오로 합성됩니다. 파이프라인은 전체 VAD → STT → TTS 흐름을 자동으로 관리합니다.
val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
when (event) {
is SpeechEvent.TranscriptionCompleted -> println(event.text)
else -> {}
}
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz 모노 float32