Kokoro TTS — Android

Kokoro-82M là mô hình tổng hợp giọng nói nhẹ, không tự hồi quy chạy trên Android qua ONNX Runtime. Nó tạo ra giọng nói tự nhiên 24 kHz với 50 giọng dựng sẵn trên 8 ngôn ngữ.

Ngôn ngữ được hỗ trợ

Ngôn ngữMãGiọng ví dụ
Tiếng Anh (Mỹ)enaf_heart, am_adam, af_sky
Tiếng Anh (Anh)enbf_emma, bm_george
Tiếng Tây Ban Nhaesef_dora
Tiếng Phápfrff_siwis
Tiếng Hindihihf_alpha, hm_omega
Tiếng Ýitif_sara
Tiếng Nhậtjajf_alpha, jm_omega
Tiếng Bồ Đào Nhaptpf_dora
Tiếng Trungzhzf_xiaobei, zm_yunjian
Tiếng Đứcdedm_martin, df_victoria (gói giọng)

Tổng cộng 50 giọng dựng sẵn. Quy ước đặt tên giọng: [language][gender]_[name] — ví dụ, af_heart = nữ Mỹ "Heart".

Gói giọng tiếng Đức

Tiếng Đức không phải là một giọng của gói đa ngôn ngữ ở trên: hai giọng tiếng Đức là bản tinh chỉnh Kokoro-82M của kikiri-tts, mỗi giọng là một bộ trọng số riêng 162 MB chỉ được huấn luyện trên âm vị tiếng Đức. Chọn một gói bằng KokoroPack khi tải về, rồi tổng hợp với language = "de". Mỗi gói có bộ nhớ đệm riêng, nên tiếng Anh và tiếng Đức có thể cùng được cài đặt.

GóiGiọngTải về
KokoroPack.GERMAN_MARTINdm_martin (nam)soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB)
KokoroPack.GERMAN_VICTORIAdf_victoria (nữ)soniqo/Kokoro-82M-German-Victoria-ONNX (~170 MB)
val modelDir = ModelManager.ensureTtsModels(
    context,
    ttsModel = TtsModel.KOKORO_SHORT_TURN,
    kokoroPack = KokoroPack.GERMAN_MARTIN, // or GERMAN_VICTORIA
)
val tts = SpeechSynthesizer(SpeechSynthesizerConfig(modelDir = modelDir))
val audio = tts.synthesize("Am 3. Oktober um 18:30 Uhr kostet es 12,80 €.", "de")

Số, số thứ tự, ngày, giờ, số tiền, đơn vị và các từ viết tắt thông dụng được đọc thành chữ ngay trên thiết bị; từ vựng lấy từ từ điển tiếng Đức 50k từ với các phương án dự phòng về biến tố, từ ghép và quy tắc. Bộ máy TTS hệ thống (SpeechTextToSpeechService) cung cấp giọng Martin dưới dạng de-DE bên cạnh en-US.

File mô hình

FileKích thước
kokoro-e2e.onnx + .onnx.data~330 MB
voices.binEmbedding giọng
Từ điển âm vịDữ liệu phát âm theo từng ngôn ngữ

HuggingFace: soniqo/Kokoro-82M-ONNX

Hiệu năng

Chỉ sốGiá trị
Tham số82M
Backend suy luậnONNX Runtime
Tần số lấy mẫu đầu ra24 kHz

Phonemizer

Văn bản được chuyển thành token âm vị bằng một phonemizer dựa trên từ điển với hỗ trợ theo từng ngôn ngữ. Bản triển khai Android bao gồm phonemizer cho tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha, tiếng Ý, tiếng Bồ Đào Nha, tiếng Hindi, tiếng Nhật và tiếng Trung.

Tích hợp pipeline

Trên Android, Kokoro TTS là một phần của SpeechPipeline. Sau khi STT chuyển giọng nói thành văn bản, văn bản được chuyển sang âm vị rồi tổng hợp trở lại thành âm thanh. Pipeline tự động quản lý toàn bộ luồng 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 mono float32

Mã nguồn: github.com/soniqo/speech-android