facts: Kokoro 모델 사양 및 배포 방식

Kokoro는 82M 파라미터 규모의 경량 모델로, 전용 GPU 없이 CPU만으로 고품질 음성을 생성한다. 영어, 중국어, 힌디어 등 다국어를 지원하며, 약 50개의 음성 라이브러리를 제공한다. 모델 최적화는 영어에 가장 집중되어 있다.

배포는 Kokoro-FastAPI 컨테이너를 통해 이루어진다. 해당 컨테이너 이미지에는 음성 모델 가중치가 미리 포함되어 있어 별도의 모델 다운로드 과정이 필요 없으며, 이로 인해 이미지 크기는 약 5GB 수준이다. Docker 또는 Podman 환경에서 다음과 같은 명령어로 실행할 수 있다.

bash
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu

실행 후 `localhost:8880/web` 경로를 통해 웹 UI에 접속하면 텍스트 입력부터 오디오 생성, 자동 재생까지의 과정을 직접 확인할 수 있다.

how-it-works: API 인터페이스 및 하드웨어별 합성 성능

인터페이스 수준에서 가장 먼저 확인되는 점은 OpenAI speech API와의 호환성이다. 기존에 OpenAI의 음성 API를 사용하던 프로그램은 엔드포인트 주소만 변경하여 로컬 TTS로 전환할 수 있다. 개발자는 `TTS_API_BASE_URL`과 `TTS_VOICE` 환경 변수를 통해 API 경로와 사용할 음성 모델을 제어한다.

구체적인 실행 예시는 다음과 같다.

bash
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?"

관련 JavaScript 및 Python 예제 코드는 github.com/remotebrowser/speak에서 확인할 수 있다. 생성된 오디오는 MP3 파일로 저장되며, sox.sf.net의 SoX(Sound eXchange)가 설치된 환경에서는 자동 재생이 지원된다.

하드웨어별 짧은 문단 합성 성능(3회 실행 중 최선 기록 기준)은 다음과 같다.

- AMD Ryzen 7 8745HS: 1.5초

- Apple M2 Pro: 4.5초

- Intel Core i7-4770K: 4.7초

특히 12년 전 출시된 Intel Core i7-4770K에서도 5초 미만의 합성 시간을 기록해, 구형 CPU 환경에서도 실용적인 작동이 가능함을 보여준다.

implementation-impact: 리소스 분리 전략 및 도입 고려사항

실무자가 인프라를 설계할 때 고려할 핵심은 GPU 자원의 역할 분리다. 로컬 LLM(대규모 언어 모델)을 운영하는 환경에서 GPU는 추론 연산에 전담 배치하고, TTS 작업은 CPU로 오프로딩(Offloading)함으로써 전체 시스템의 병목을 줄일 수 있다. 이는 LLM의 텍스트 응답을 실시간으로 음성으로 변환해 듣는 파이프라인을 구축할 때 유효한 전략이다.

대안으로 Speaches라는 컨테이너형 TTS 옵션이 존재한다. Kokoro-FastAPI와 Speaches의 결정적인 차이는 가중치 관리 방식과 기능 범위에 있다. Speaches는 컨테이너 이미지에 음성 가중치를 포함하지 않아 API를 통해 명시적으로 다운로드해야 하며, Whisper 기반의 STT(Speech-to-Text) 기능을 함께 제공한다. 따라서 서비스에 TTS와 STT가 모두 필요하다면 Speaches가 유리하며, 빠른 배포와 CPU 최적화된 음성 합성이 우선이라면 Kokoro가 적합하다.

사용 가능한 전체 음성 목록은 Kokoro의 VOICES.md에서 확인할 수 있으며, 이를 통해 서비스 성격에 맞는 음성 톤을 선택해 적용할 수 있다.