> 원본 출처: 긱뉴스 #31239 - Kokoro로 로컬 CPU에서 고품질 TTS 실행하기

들어가며
几年前만 해도 현실적인 음성 합성을 로컬에서 돌리려면 GPU가 거의 필수였습니다. 하지만 2026년 현재는 82M 파라미터 모델 하나로도 꽤 그럴듯한 음성을 만들 수 있는 시점이 왔습니다. 이번 글에서 소개하는 Kokoro는 Hugging Face에서 공개된 82M 파라미터 TTS 모델로, Apple M2 Pro 기준으로 한 문단을 약 4.5초 안에 합성할 수 있습니다.
특히 흥미로운 부분은 OpenAI의 speech API와 호환되는 인터페이스를 제공한다는 점입니다. 기존에 OpenAI TTS를 호출하던 코드를 거의 그대로 로컬 서버로 바꿔 끼울 수 있어, "외부 API에 텍스트를 보내지 않고 내 머신에서 음성을 만들고 싶다"는 요구를 비교적 적은 비용으로 만족시킬 수 있습니다.
CPU만으로 돌아가는 TTS, 왜 지금인가
예시 환경은 기존에 로컬 LLM용으로 쓰던 GTX 1080 Ti 머신입니다. 이 머신의 GPU는 LLM 추론에 이미 묶여 있으므로, TTS는 CPU만 사용해서 합성합니다. 즉 GPU 자원이 바쁜 상황에서도 음성 합성을 별도 작업으로 돌릴 수 있다는 뜻입니다.
Kokoro 자체의 사양을 정리하면 다음과 같습니다.
- 82M 파라미터의 소형 모델
- 영어, 중국어, 힌디어 등 다국어 지원
- 약 50개의 음성 제공 (영어에 가장 최적화)
- Apple M2 Pro 기준 짧은 문단 합성에 약 4.5초 소요
이 정도 크기면 컨테이너 한 번 띄우는 것만으로 LLM 답변을 음성으로 들려주는 워크플로를 만들 수 있습니다.
가장 쉬운 구성: Kokoro-FastAPI 컨테이너
가장 간단하게 Kokoro를 실행하는 방법은 Kokoro-FastAPI 이미지를 컨테이너로 띄우는 것입니다. 이 이미지에는 음성 모델 가중치가 미리 포함되어 있어서 별도 다운로드 없이 바로 실행할 수 있습니다. 다만 그만큼 이미지 크기가 약 5GB로 큽니다.
실행은 다음과 같이 한 줄이면 끝납니다.
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
컨테이너가 뜨면 localhost:8880/web에서 웹 UI에 접속할 수 있습니다. 텍스트를 입력하면 음성이 생성되고 자동 재생됩니다.
OpenAI 호환 API로 기존 코드 그대로 전환
단순한 웹 데모만 쓸 수 있는 건 아닙니다. Kokoro-FastAPI는 OpenAI speech API와 호환되는 TTS 인터페이스를 함께 제공합니다. 즉 기존에 OpenAI TTS를 호출하던 코드 베이스를 거의 그대로 두고, 엔드포인트만 로컬 서버로 바꾸면 됩니다.
JavaScript 예시입니다.
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.js "Good morning! How are you today?"
Python도 동일한 환경 변수만 설정하면 됩니다.
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.py "Good morning! How are you today?"
기본 음성 대신 다른 음성을 쓰고 싶다면 TTS_VOICE 환경 변수를 지정하면 됩니다. 사용 가능한 전체 음성 목록은 Hugging Face의 Kokoro VOICES.md에 정리되어 있습니다.
export TTS_VOICE="am_eric"
./speak.js "The quick brown fox jumps over the lazy dog."
생성된 오디오는 MP3 파일로 저장되며, 시스템에 SoX가 설치되어 있다면 자동 재생됩니다.
CPU별 합성 속도와 실전 감각

짧은 테스트 문단을 am_eric 음성으로 합성해 본 결과입니다. 3회 실행 중 최선 기록을 가져왔습니다.
| CPU | 합성 시간 |
|---|---|
| Intel Core i7-4770K | 4.7초 |
| Apple M2 Pro | 4.5초 |
| AMD Ryzen 7 8745HS | 1.5초 |
표에서 가장 오래된 CPU인 Intel Core i7-4770K는 12년 전에 출시된 모델입니다. 그 정도 CPU에서도 짧은 문장 합성은 현실적인 시간 안에 끝납니다. Ryzen 7 8745HS는 1.5초로 거의 실시간 수준이라, LLM 답변을 "읽는" 대신 "듣는" 인터랙션이 충분히 가능하다는 뜻이 됩니다.
Speaches라는 대안, 그리고 STT 결합
단일 TTS만 필요하다면 Kokoro-FastAPI만으로도 충분합니다. 다만 TTS와 STT를 한 컨테이너에서 함께 처리하고 싶다면 Speaches를 고려해볼 만합니다.
| 항목 | Kokoro-FastAPI | Speaches |
|---|---|---|
| 음성 가중치 포함 여부 | 포함 | 미포함 (API로 다운로드) |
| TTS 지원 | ✅ | ✅ |
| STT (Whisper) | ❌ | ✅ |
| 컨테이너 이미지 크기 | ~5GB | 상대적으로 가벼움 |
TTS와 STT가 한 곳에서 움직여야 하는 음성 인터페이스(예: 로컬 음秘書 같은 동반자 앱)를 만든다면 Speaches가 더 매력적인 선택지가 될 수 있습니다.
단일 단어 합성의 함정과 회피 패턴
Hacker News 댓글에서 자주 언급되는 약점이 하나 있습니다. 단어를 단일로 합성하면 발음이 불안정하다는 점입니다. 예를 들어 "six"만 입력하면 "ah-six-ah" 같은 잡스러운 발음이 나오는 경우가 많다고 합니다.
다만 회피 방법이 명확합니다. "The word is: six"처럼 긴 문장을 넣은 다음 Kokoro가 함께 반환하는 단어별 타임스탬프를 Python 스크립트로 잘라내면 원하는 단어만 깔끔하게 추출할 수 있습니다.
조금 평평한 억양이 남는 한계는 있지만, 안정성 자체는 매우 높다고 사용자들은 평가합니다. 비슷한 한계는 ElevenLabs 같은 상용 TTS에서도 가끔 나타나는 현상이라 소형 모델의 어쩔 수 없는 트레이드오프로 봐야 합니다.
정리
- Kokoro는 82M 파라미터로 CPU만으로도 현실적인 TTS를 제공합니다.
- Kokoro-FastAPI 컨테이너를 띄우면 OpenAI 호환 API로 기존 코드를 거의 그대로 전환할 수 있습니다.
- Apple M2 Pro 4.5초, Ryzen 7 8745HS 1.5초 정도의 합성 속도라 로컬 LLM과 결합해 음성 인터랙션이 가능합니다.
- TTS/STT를 모두 로컬에서 처리하고 싶다면 Speaches도 좋은 대안입니다.
- 단일 단어 합성은 약하니, 긴 문장 → 타임스탬프 기반 추출 패턴이 안전합니다.
> 원본 출처: 긱뉴스 #31239 - Kokoro로 로컬 CPU에서 고품질 TTS 실행하기
📰 원본 출처 · https://news.hada.io/topic?id=31239 (#N=31239)
이 글은 GeekNews(긱뉴스)에 게제된 글을 기반으로 작성되었습니다. 원본의 라이선스와 저작권은 원작자에게 있습니다.
'AI 뉴스' 카테고리의 다른 글
| no-mistakes — git push 실수를 AI 검증 파이프라인으로 차단하는 도구 (0) | 2026.07.09 |
|---|---|
| 코딩 배우기는 여전히 가치 있다 — LLM 시대, 프로그래밍이 여전히 가르치는 것 (0) | 2026.07.09 |
| EU 의회, Chat Control 1차 관문 통과 — 메시지 스캔 의무화 시도의 정치적 의미 (0) | 2026.07.08 |
| 30 Papers - 일리야 서츠케버 추천 AI 핵심 논문 입문 가이드 (0) | 2026.07.08 |
| Google의 디지털 비대화 — AI 인프라 확장이 기후 목표를 앞서는 지수적 경로 (0) | 2026.07.08 |