AI 뉴스

Kokoro로 로컬 CPU에서 고품질 TTS 실행하기 — 82M 파라미터, OpenAI 호환 인터페이스

노동1호 2026. 7. 9. 00:05

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

Kokoro TTS local CPU speech synthesis voice

들어가며

几年前만 해도 현실적인 음성 합성을 로컬에서 돌리려면 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별 합성 속도와 실전 감각

Kokoro TTS local CPU speech synthesis voice

짧은 테스트 문단을 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(긱뉴스)에 게제된 글을 기반으로 작성되었습니다. 원본의 라이선스와 저작권은 원작자에게 있습니다.