로컬에서 CPU만으로 돌아가는 고품질 TTS, Kokoro
요약
Kokoro는 단 8200만 개의 파라미터만으로도 사실적인 음성을 생성하는 경량 TTS 모델로, GPU 없이 CPU만으로 구동된다. 12년 된 Intel Core i7-4770K에서도 4.7초 만에 문장을 합성할 정도로 성능이 뛰어나며, Apple M2 Pro와 AMD Ryzen 7 8745HS에서는 각각 4.5초, 1.5초가 소요된다. 이 모델은 영어, 중국어, 힌디어 등 여러 언어를 지원하고 약 50개의 음성을 제공하며, OpenAI 음성 API와 호환되는 서버를 Docker나 Podman으로 간편하게 실행할 수 있다. 컨테이너 이미지 크기는 약 5GB로, 음성 모델이 미리 포함되어 있어 별도 다운로드가 필요 없다.
전체 번역
로컬, CPU 친화적, 고품질 TTS(텍스트 음성 변환) with Kokoro
2026년 3월 31일 #tts #프라이버시
불과 몇 년 전만 해도 현실적인 로컬 음성 생성은 상상하기 어려웠습니다. 오늘날 그 품질은 뛰어나며, 중요한 점은 프라이버시를 훼손하지 않고도 이러한 결과를 제공한다는 것입니다. 위 영상은 샘플 텍스트로 생성된 오디오를 보여주며, 이전에 "GTX 1080 Ti로 로컬 LLM 구축하기" 글에서 다룬 로컬 머신에서 전적으로 실행됩니다. 이 머신에는 전용 GPU가 있지만, GPU는 전적으로 LLM 추론에 사용되며 음성 합성은 전적으로 CPU로 처리됩니다. 사용된 모델은 Kokoro로, 단 8200만 개의 파라미터를 가지고 있음에도 불구하고 영어, 중국어, 힌디어를 포함한 여러 언어로 현실적인 음성을 생성합니다. 약 50개의 고유한 음성을 제공하며, 주로 영어에 최적화되어 있습니다.
Kokoro 서버를 설정하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 사전 제작된 컨테이너 이미지인 Kokoro-FastAPI를 사용하는 것으로, 여기에는 미리 다운로드된 음성 모델이 포함되어 있습니다. 그렇기 때문에 컨테이너 이미지 크기는 약 5GB로 상당히 큽니다. Docker 또는 Podman을 사용하여 컨테이너를 실행하려면 다음 명령어를 사용하세요:
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
올바르게 실행되는지 빠르게 확인하려면, 컨테이너는 localhost:8880/web 에서 간단한 웹 UI를 제공합니다. 여기서 텍스트를 입력하면 오디오를 생성하고 자동으로 재생할 수 있습니다.
이 간단한 웹 UI 외에도, 이 컨테이너는 OpenAI 음성 API와 호환되는 TTS 인터페이스를 제공하여, 이미 OpenAI 음성 API를 사용하는 기존 프로그램을 쉽게 적용할 수 있습니다. 빠른 테스트를 위해 JavaScript와 Python 샘플 코드가 github.com/remotebrowser/speak 에 제공됩니다. 이 저장소를 클론하면 이후 데모를 따라 할 수 있습니다.
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?"
생성된 오디오는 MP3 파일로 저장됩니다. 머신에 SoX 또는 Sound eXchange(자세한 내용은 sox.sf.net 참조)가 설치되어 있으면 오디오가 자동으로 재생됩니다.
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?"
사용 가능한 전체 음성 목록은 공식 Kokoro 프로젝트 페이지에서 확인할 수 있습니다: huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md
합성 속도는 얼마나 빠를까요? 다음은 짧은 테스트 문단에서 am_eric 음성을 사용한 측정 결과입니다:
"Jupiter is the largest and most massive planet in our solar system. This gas giant, made mostly of hydrogen and helium, is known for its Great Red Spot—a massive storm observed for centuries."
다음 목록은 다양한 CPU에서의 생성 시간(3회 실행 중 최고 기록)을 요약한 것입니다:
- Intel Core i7-4770K: 4.7초
- Apple M2 Pro: 4.5초
- AMD Ryzen 7 8745HS: 1.5초
목록의 첫 번째 CPU는 12년 전에 출시되었습니다. 그 오래된 CPU조차도 문제없이 작업을 수행할 수 있다면, 이것이 매우 뛰어난 TTS 시스템임을 알 수 있습니다.
마지막으로, OpenAI 호환 컨테이너화된 TTS 서비스의 대안으로 Speaches(speaches.ai)를 고려해 보세요. Kokoro-FastAPI와 달리 Speaches는 음성 가중치가 컨테이너 이미지에 포함되어 있지 않으므로 API를 통해 명시적으로 다운로드해야 합니다. 그러나 Speaches는 OpenAI의 유명한 고품질 STT(Speech-to-Text) 시스템인 Whisper를 포함하는 장점이 있습니다. 애플리케이션에 TTS와 STT 기능이 모두 필요하다면 Speaches가 원스톱 솔루션이 될 수 있습니다.
로컬 LLM과 결합하면, 이와 같은 음성 합성 시스템을 통해 LLM 답변을 읽는 대신 듣는 즐거움을 누릴 수 있습니다!
참고: 이 글은 원래 Remote Browser Substack에 게재되었습니다.