# Kokoro로 로컬 CPU에서 고품질 TTS 실행하기

> Clean Markdown view of GeekNews topic #31239. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=31239](https://news.hada.io/topic?id=31239)
- GeekNews Markdown: [https://news.hada.io/topic/31239.md](https://news.hada.io/topic/31239.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-07-08T19:33:28+09:00
- Updated: 2026-07-08T19:33:28+09:00
- Original source: [ariya.io](https://ariya.io/2026/03/local-cpu-friendly-high-quality-tts-text-to-speech-with-kokoro/)
- Points: 1
- Comments: 1

## Topic Body

- 로컬 음성 생성은 이제 **전용 GPU 없이도** 충분히 현실적인 품질을 낼 수 있으며, 예시 환경에서는 GPU를 LLM 추론에 남기고 TTS를 CPU가 처리함
- **Kokoro**는 82M 파라미터 모델이지만 영어, 중국어, 힌디어 등 여러 언어를 지원하고 약 50개 음성을 제공하며 영어에 가장 최적화되어 있음
- 가장 쉬운 구성은 **Kokoro-FastAPI** 컨테이너를 실행하는 방식이고, 음성 모델이 미리 포함되어 이미지 크기가 약 5GB임
- OpenAI speech API와 호환되는 인터페이스를 제공해 기존 음성 API 기반 프로그램을 **로컬 TTS**로 비교적 쉽게 바꿔 쓸 수 있음
- 짧은 문단 합성은 Intel Core i7-4770K 4.7초, Apple M2 Pro 4.5초, AMD Ryzen 7 8745HS 1.5초 수준이라 로컬 LLM 응답을 **읽지 않고 듣는** 사용 방식이 가능함

---

### CPU만으로 실행하는 Kokoro TTS
- 몇 년 전만 해도 현실적인 로컬 음성 생성은 어려웠지만, 지금은 **개인정보를 외부 서비스에 맡기지 않고** 높은 품질의 음성을 만들 수 있음
- 예시는 이전에 다룬 로컬 LLM용 GTX 1080 Ti 머신에서 실행됨
  - 해당 머신의 **전용 GPU**는 LLM 추론에 예약됨
  - 음성 합성은 CPU만 사용함
- 사용 모델은 [Kokoro](https://huggingface.co/hexgrad/Kokoro-82M)
  - **82M 파라미터** 모델임
  - 영어, 중국어, 힌디어 등 여러 언어의 현실적인 음성을 생성함
  - 약 50개 음성을 제공하며, 주로 영어에 최적화되어 있음
- 가장 간단한 서버 설정은 [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) 컨테이너 이미지를 쓰는 방식임
  - 미리 다운로드된 음성 모델이 포함되어 있음
  - 이 때문에 컨테이너 이미지 크기는 약 **5GB**임
- Docker 또는 Podman 실행 명령:
  ```bash
  podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
  ```
- 실행 후 웹 UI는 `localhost:8880/web`에서 열 수 있으며, 텍스트를 넣어 오디오를 생성하고 자동 재생할 수 있음

### OpenAI 호환 API와 예제 실행
- Kokoro-FastAPI 컨테이너는 웹 UI 외에도 [OpenAI speech API](https://platform.openai.com/docs/guides/text-to-speech) 호환 **TTS 인터페이스**를 제공함
  - 기존 OpenAI speech API 사용 프로그램을 쉽게 맞춰 쓸 수 있음
  - JavaScript와 Python 예제 코드는 [github.com/remotebrowser/speak](http://github.com/remotebrowser/speak)에 있음
- JavaScript 실행 예:
  ```bash
  export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
  ./speak.js "Good morning! How are you today?"
  ```
- Python 실행 예:
  ```bash
  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 정보는 [sox.sf.net](https://sox.sf.net/)에서 확인할 수 있음
- 다른 음성을 고르려면 `TTS_VOICE` 환경 변수를 설정함
  ```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?"
  ```
- 사용 가능한 전체 음성 목록은 [Kokoro VOICES.md](https://huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md)에 있음

### CPU별 합성 시간과 대안
- `am_eric` 음성으로 짧은 테스트 문단을 합성한 결과, 3회 실행 중 최선 기록 기준 생성 시간은 다음과 같음
  - Intel Core i7-4770K: **4.7초**
  - Apple M2 Pro: **4.5초**
  - AMD Ryzen 7 8745HS: **1.5초**
- 목록의 첫 CPU는 12년 전에 출시된 모델이며, 오래된 CPU에서도 작업을 처리할 수 있음
- OpenAI 호환 컨테이너형 TTS 대안으로 [Speaches](https://speaches.ai/)도 있음
  - Kokoro-FastAPI와 달리 컨테이너 이미지에 음성 가중치가 포함되지 않으며, API로 명시적으로 다운로드해야 함
  - [Whisper](https://openai.com/index/whisper/)를 포함해 고품질 **STT** 기능도 제공함
  - 애플리케이션에 TTS와 STT가 모두 필요하면 한 곳에서 처리하는 선택지가 될 수 있음
- 로컬 LLM과 결합하면 LLM 답변을 읽는 대신 **음성으로 듣는** 사용 방식이 가능함

## Comments



### Comment 61435

- Author: neo
- Created: 2026-07-08T19:33:29+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=48821576) 
- 접근성 제품에 **Kokoro**를 꽤 많이 써봤는데, 비슷한 품질의 여러 TTS가 요구하는 NVidia GPU가 없어도 돼서 작업하기 좋았음  
  특히 **IPA 발음 가이드**를 수동으로 넣을 수 있는 점이 마음에 듦. 중요한 단어가 동형이의어라 Kokoro가 잘못 발음하는 경우가 있었기 때문임  
  다만 한두 단어만 말하게 하면 약해짐. 예를 들어 "six"만 말하게 하면 거의 항상 "ah-six-ah"처럼 말함. 대신 "The word is: six"처럼 긴 문장을 넣으면 제대로 읽고, Kokoro API가 문장 내 각 단어의 타임스탬프를 주기 때문에 Python 스크립트로 원하는 단어만 잘라낼 수 있음. 억양은 조금 평평하지만 매우 안정적임  
  Discord에서 물어보니 작은 매개변수 규모의 한계라고 들었고, Kokoro를 옹호하자면 eleven-labs 음성도 가끔 이런 문제가 생김
  - 다른 여러 도구에서도 같은 요령을 씀. Wispr나 Google에 "Knight"라고 말하면 "night"로 나오지만, "Knight to f3"라고 말한 뒤 "to f3"만 지우면 됨
  - 실제로 **TTS 모델**의 흔한 약점임  
    내 사용처는 거의 전부 단일 단어라서, 입력과 출력을 이어 붙이거나 분할하는 처리를 굳이 다루고 싶지 않아 맞지 않음

- 이건 실제로 관심 있는 주제라 재미있음  
  예전에는 whisperx를 따로 유지했는데, 단순 전사뿐 아니라 자막 같은 용도에 필요한 **타이밍과 화자 식별**도 중요하다고 보기 때문임. 다만 pyannote에 의존하고, 라이선스가 애매해서 설치 자동화도 더 까다로움  
  그래서 더 나은 전사를 제공하면서 화자 분리까지 지원하는 것을 찾다가, 전사는 parakeet, 화자 분리는 softformer로 정했음. 하지만 사용 가능한 엔진 대부분은 softformer를 포함하지 않음  
  softformer를 지원하는 parakeet-rs용 OpenAI 호환 서버를 만들었고([https://github.com/altunenes/parakeet-rs](<https://github.com/altunenes/parakeet-rs>)), 여러 편의 기능을 처리하는 데스크톱 전사 앱 OpenWhispr와 함께 쓰는 중임  
  GPU는 다른 일에 쓰고 있어서 아직 GPU 경로를 추가하지 않았고, 지금은 CPU만으로 전사하지만 원할 때 로컬에서 전사를 돌릴 수 있다는 점이 매우 강력하게 느껴짐
  - 이건 **텍스트 음성 변환**이고, 그쪽은 **음성 텍스트 변환**임  
    하려는 작업에는 parakeet과 함께 Senko를 쓰면 화자 분리가 아주 잘 됨. 내 MacBook에서는 Pyannote와 whisper보다 더 빠르고 정확했음
  - 단순한 whisper.cpp로도 비슷하게 가능함

- 이 모델이 정말 좋음. GPU가 부족해서 로컬 모델을 거의 못 만져본 게 아쉬웠는데, 한 달쯤 전 **GTX1650**에 Kokoro를 설치해 글 읽기용 TTS를 만들었음  
  간단한 WebUI에서 URL이나 복사한 텍스트 덩어리를 붙여 넣으면 Python이 정리해서 Kokoro에 보내 TTS를 만들고, 그 결과를 Apple Podcasts용 RSS로 제공함. 아침 운전할 때 모아둔 글이나 블로그 글을 따라잡는 데 씀  
  언젠가는 여러 음성을 나눠 써서, 모아둔 뉴스 항목을 라디오 아침 방송처럼 들려주는 **NotebookLM** 같은 것도 만들어보고 싶음
  - Open Notebook을 확인해보면 좋음: [https://github.com/lfnovo/open-notebook](<https://github.com/lfnovo/open-notebook>)

- 몇 달 전에 어떤 웹페이지에서든 이걸 해주는 **Chrome 확장**을 만들었고, 읽는 문장을 동시에 하이라이트함  
  컨테이너를 띄우는 단계와 웹사이트 내용을 복사해 붙여 넣는 단계를 모두 건너뛸 수 있어서, Kokoro를 더 편하게 쓰려는 사람에게 유용할 수 있음  
  [https://chromewebstore.google.com/detail/local-reader-ai-on-...](<https://chromewebstore.google.com/detail/local-reader-ai-on-device/fojpmmgbjcffadgoppmojnggkjhggimc>)

- TTS는 정말 많이 발전했고 선택지도 많음. Kokoro도 있고, **Pocket TTS**는 100M짜리 작은 모델이면서 음성 복제도 가능함  
  **Chatterbox Turbo**는 조금 더 크지만 음성의 감정 제어를 더 잘 지원하고, **Fish Audio S2**는 더 크지만 톤과 감정을 사실상 제한 없이 훨씬 세밀하게 제어할 수 있음. 이 모든 것이 MacBook에서 쉽게 돌아감

- TTS 모델 비교를 시작하기 좋은 저장소는 [https://github.com/5uck1ess/tts-bench](<https://github.com/5uck1ess/tts-bench>)임  
  Kokoro는 1.5년 전에 공개된 모델이라는 점을 고려하면 정말 좋은 모델이고, 크기에 비해 성능이 뛰어남: [https://5uck1ess.github.io/tts-bench/scores.html](<https://5uck1ess.github.io/tts-bench/scores.html>)

- 예전에 로컬 TTS로 **Piper**를 써봤는데, Kokoro도 흥미로워 보임

- 매우 멋짐. Linux를 쓰고 있어서 Aqua나 Whipsrflow 등을 못 써서, 1월부터 직접 만든 해법을 쓰고 있음  
  최근에 정리해서 설치하기 쉽게 만들었음. 관심 있으면 여기서 볼 수 있음: [https://github.com/Hugo0/voiceio](<https://github.com/Hugo0/voiceio>)  
  시간이 지나며 스스로 개선되고, 로컬 머신에서 돌아가며, 전반적으로 쓸 만한 소프트웨어임. 요즘 내 PC 상호작용의 60%는 순수 **음성 입력**임
  - 이건 텍스트 음성 변환이고, 그건 **음성 텍스트 변환**임. 그래도 STT는 흥미로워 보임

- Kokoro를 정말 좋아함. 오디오북이 없는 전자책을 읽게 하는 데 쓰고 있고, 그 용도로 꽤 잘 작동함  
  epub/html을 읽고 모델을 실행한 뒤 mp3를 쓰는 Python 스크립트를 만들어뒀음  
  Kokoro가 지원하는 언어 수는 제한적이라 **네덜란드어** 지원에는 다른 모델을 써야 했는데, 품질이 그만큼 좋지 않음. 보통 훨씬 느리고 더 크기도 해서 8GB VRAM에는 너무 큼  
  결국 Windows 내장 TTS까지 써봤는데 자연스럽게 들리지는 않지만, 적어도 대부분의 단어를 발음할 수 있고 매우 빠름

- 하루 동안 AI를 만지작거리며 Kokoro에서 비싼 계층을 빼봤고, 휴대폰 CPU와 **MNN**에서 3배 빠르게 돌아감  
  품질은 매우 비슷함. 환경에 따라 달라질 수 있지만 스크립트는 여기 있음: [https://github.com/DavidVentura/translator-rs/blob/master/sc...](<https://github.com/DavidVentura/translator-rs/blob/master/scripts/kokoro_mnn/rebuild_best_mnn.sh#L53>)
