Kokoro는 82M 파라미터 규모의 경량 텍스트 음성 변환(text-to-speech, TTS) 모델이다. 영어 중심의 약 50개 음성을 제공하고, 영어·중국어·힌디어 등 여러 언어 음성 합성을 지원한다. 핵심 장점은 품질 대비 실행 비용이 낮아 GPU를 LLM 추론에 남겨두고도 CPU만으로 로컬 음성 합성을 붙일 수 있다는 점이다.
왜 중요한가
로컬 LLM을 쓰는 환경에서 음성 합성까지 클라우드 API에 맡기면 프라이버시, 지연 시간, 비용 문제가 다시 생긴다. Kokoro는 모델 크기가 작고 CPU 실행이 가능해 개인용 음성 비서, 로컬 챗봇, 접근성 도구에 붙이기 쉽다.
가장 쉬운 실행 경로는 Kokoro-FastAPI 컨테이너다. 이 이미지는 음성 모델을 미리 포함하므로 약 5GB로 크지만, 실행 직후 웹 UI와 OpenAI Speech API 호환 엔드포인트를 제공한다.
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu실행 후 http://localhost:8880/web에서 텍스트를 입력해 바로 음성을 생성할 수 있다.
OpenAI Speech API 호환
Kokoro-FastAPI는 /v1 경로에 OpenAI Speech API와 유사한 인터페이스를 제공한다. 이미 OpenAI TTS API를 쓰는 코드라면 base URL만 로컬 서버로 바꾸는 방식으로 이식할 수 있다.
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.py "Good morning! How are you today?"음성을 바꾸려면 TTS_VOICE를 지정한다.
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
export TTS_VOICE="am_eric"
./speak.js "Good morning! How are you today?"성능 감각
Ariya Hidayat의 테스트에서는 짧은 문단을 am_eric 음성으로 합성할 때 다음 시간이 보고됐다.
| CPU | 생성 시간 |
|---|---|
| Intel Core i7-4770K | 4.7초 |
| Apple M2 Pro | 4.5초 |
| AMD Ryzen 7 8745HS | 1.5초 |
12년 전 CPU에서도 수초 단위로 합성이 가능하다는 점이 실용적이다. 실시간 대화형 음성 에이전트라면 응답 길이와 버퍼링 전략을 조정해야 하지만, 알림·요약 읽기·짧은 답변 낭독에는 충분히 쓸 수 있다.
Speaches와의 차이
Kokoro-FastAPI는 TTS에 초점을 맞춘 간단한 서버다. 반면 Speaches는 TTS뿐 아니라 Whisper 기반 음성 인식(STT)도 함께 제공한다. 음성 입력과 출력을 모두 로컬로 묶어야 한다면 Speaches가 더 편하고, 빠르게 TTS만 붙이려면 Kokoro-FastAPI가 단순하다.
누가 쓰면 좋은가
- 로컬 LLM 사용자: GPU는 LLM에 쓰고 CPU로 답변 낭독을 처리하려는 경우
- 개인 음성 비서 개발자: 음성 데이터를 외부 API로 보내지 않고 로컬에서 처리하려는 경우
- 프로토타입 개발자: OpenAI Speech API 호환 코드로 로컬 TTS를 빠르게 붙이고 싶은 경우
라이선스
Kokoro 모델과 Kokoro-FastAPI의 라이선스는 각각 Hugging Face 모델 카드와 GitHub 저장소를 확인해야 한다.
참고 자료
- Local, CPU-Friendly, High-Quality TTS with Kokoro — Ariya.io (2026-03-31)
- hexgrad/Kokoro-82M — Hugging Face
- remsky/Kokoro-FastAPI — GitHub 공식 저장소