GitHub - KittenML/KittenTTS: 25MB 이하의 최신 음성 합성(TTS) 모델
(github.com/KittenML)- ONNX 기반의 경량 텍스트-음성 변환(TTS) 라이브러리로, CPU만으로 고품질 음성 합성을 수행
- 모델 크기는 15M~80M 파라미터(25~80MB) 범위로, GPU 없이도 효율적 실행 가능
- 8가지 내장 음성과 속도 조절, 텍스트 전처리 파이프라인, 24kHz 오디오 출력 기능 제공
- Hugging Face에서 바로 사용 가능하며, Python API로 간단히 통합 가능
- 엣지 디바이스 배포와 상용 통합 지원을 목표로 한 오픈소스 TTS 솔루션
Kitten TTS 개요
- Kitten TTS는 ONNX 기반 오픈소스 TTS 라이브러리로, GPU 없이 CPU에서 고품질 음성 합성을 수행
- 모델 크기는 15M~80M 파라미터이며, 디스크 기준 25~80MB
- 버전 0.8에서는 15M, 40M, 80M 모델이 제공됨
- 현재 개발자 프리뷰 단계로, API는 향후 변경될 수 있음
- 상용 지원(통합 지원, 커스텀 음성, 엔터프라이즈 라이선스) 제공
주요 기능
- 초경량 구조: int8 기준 25MB부터 시작해 엣지 환경 배포에 적합
- CPU 최적화: GPU 없이도 효율적인 ONNX 추론 수행
- 8가지 내장 음성: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
-
속도 조절 기능:
speed파라미터로 발화 속도 제어 - 텍스트 전처리 파이프라인: 숫자, 통화, 단위 등을 자동 처리
- 24kHz 출력: 표준 샘플레이트의 고품질 오디오 생성
제공 모델
- 네 가지 모델이 제공됨
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- 일부 사용자는
kitten-tts-nano-0.8-int8모델에서 문제를 보고했으며, 이슈 등록을 권장
데모 및 사용법
- Hugging Face Spaces에서 브라우저로 직접 체험 가능
-
Python 3.8 이상과 pip만으로 설치 가능
- 설치 명령:
pip install https://github.com/KittenML/KittenTTS/…
- 설치 명령:
- 기본 사용 예시:
-
from kittentts import KittenTTS -
model = KittenTTS("KittenML/kitten-tts-mini-0.8") -
audio = model.generate("텍스트", voice="Jasper")
-
- 고급 기능: 속도 조절(
speed), 파일 저장(generate_to_file), 사용 가능한 음성 목록 조회
API 구조
-
KittenTTS(model_name, cache_dir=None)- Hugging Face Hub에서 모델 로드
-
model.generate(text, voice, speed, clean_text)- 텍스트를 24kHz 오디오로 변환
-
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)- 합성된 음성을 파일로 직접 저장
-
model.available_voices- 사용 가능한 음성 리스트 반환
시스템 요구사항
- 운영체제: Linux, macOS, Windows
- Python: 3.8 이상
- 하드웨어: CPU만 필요, GPU 불필요
- 디스크 공간: 모델에 따라 25~80MB
- 가상환경(venv, conda 등) 사용 권장
로드맵
- 추론 엔진 최적화, 모바일 SDK, 고품질 모델, 다국어 TTS, KittenASR 출시 예정
- 추가 요청은 GitHub Issues를 통해 접수 가능
상용 지원
- 제품 통합, 커스텀 음성 개발, 엔터프라이즈 라이선스 등 상용 서비스 제공
- 문의: Google Form 또는 info@stellonlabs.com
커뮤니티 및 지원
- Discord 커뮤니티, 공식 웹사이트, 이메일 지원, GitHub Issues 운영
- 공식 사이트: kittenml.com
라이선스
- 프로젝트는 Apache License 2.0 하에 배포됨
Hacker News 의견들
-
Kitten TTS용 CLI 래퍼인 purr을 만들었음
kitten 패키지는 kittentts → misaki[en] → spacy-curated-transformers로 이어지는 의존 체인을 가짐
그래서uv로 직접 설치하면 torch와 NVIDIA CUDA 패키지(수 GB)를 끌어오는데, 실제 실행에는 필요하지 않음- 설치 스크립트가 잘 작동했음
처음 실행 시 “OSError: PortAudio library not found” 오류가 났는데,apt install libportaudio2로 해결했음 - 정말 고마움. 의존성 체인이 깨져서 설치가 계속 실패했는데, 이걸로 해결됨
그런데 불필요한 의존성을 제거하면서 기능 손실이 있는지 궁금함
- 설치 스크립트가 잘 작동했음
-
정말 멋진 프로젝트임
곧 직접 써볼 예정임
다만 궁금한 점이 있음 — 왜 명령줄 실행 파일 형태로 배포하지 않았는지?
API도 거의 manpage 스타일이라 금방 만들 수 있을 것 같음. 단순한 호기심임- 좋은 아이디어임. 그렇게도 할 예정임
우선 onnx 버전으로 피드백을 받고, 이후 명령줄 실행 파일을 포함해 실행 과정을 단순화할 계획임
- 좋은 아이디어임. 그렇게도 할 예정임
-
OpenClaw가 마음에 드는 이유는, Discord에서 GitHub URL만 보내도 바로 음성 메시지를 생성해줬기 때문임
몇 분 만에 벤치마크와 샘플 오디오도 받았음
품질이 크기에 비해 인상적임. 목소리는 완벽하진 않지만 나쁘지 않음
Intel 9700 CPU에서 80M 모델 기준 약 1.5배 실시간 속도였고, 3080 GPU에서도 더 빠르진 않았음- 더 전문적인 음성과 DIY 커스텀 보이스를 추가할 예정임
지금은 표현력을 보여주기 위해 애니메이션풍 목소리를 넣었음
GPU에서 느린 이유를 GitHub issue나 Discord로 공유해주면 좋겠음. 예시 코드도 추가할 예정임 - 좋은 사용 사례임. 이메일 같은 보안 취약 연결 없이 샌드박스로 테스트하고 배포할 수 있는 구조가 흥미로웠음
- 부럽다는 말밖에 없음. 나는 실행까지 훨씬 오래 걸렸음
Python 버전 충돌을 피하려고 고생했고, Docker로도 시도했지만 결국 직접 세팅해야 했음
겨우 실행은 됐지만 Python은 정말 싫음
- 더 전문적인 음성과 DIY 커스텀 보이스를 추가할 예정임
-
지금은 미국식 음성만 지원하는 듯함
개인적으로는 아일랜드, 영국, 웨일스 억양에만 관심이 있음. 미국식은 별로임 -
기기 내에서 동작하는 TTS는 접근성 도구로 정말 훌륭함
대부분의 기기가 온라인 서비스에 의존하는데, 이런 로컬 방식이 훨씬 좋음- 피드백 고마움. 곧 다양한 용도의 소형 모델을 더 출시할 예정임
-
예전 모델보다 훨씬 명확한 개선이 느껴짐
정말 인상적임. 공유해줘서 고마움- 고마움. 이번 모델들은 이전보다 훨씬 나아졌음
현재 15M 모델이 예전 80M 모델보다 좋고, 이런 개선 속도를 계속 유지할 예정임
- 고마움. 이번 모델들은 이전보다 훨씬 나아졌음
-
앞으로 일본어 전용 모델도 보고 싶음
Qwen3-tts가 일본어를 지원하긴 하지만, 가끔 중국어가 섞여서 쓸 수가 없음- 전처리 단계에서 히라가나 변환을 시도해볼 수도 있음
다만 그렇게 하면 음높이(예: 飴 vs 雨) 정보가 손실될 수 있음 - 다음 모델(약 3주 후 예정)에서 일본어를 지원할 예정임
사용 사례를 알려주면 품질 개선에 반영하고 싶음
- 전처리 단계에서 히라가나 변환을 시도해볼 수도 있음
-
모델 크기에 비해 성능이 인상적이었음
다만 숫자 발음에 문제가 있었음
“Startup finished in 135 ms.”를 시도했는데 숫자가 잡음처럼 들렸음
“one hundred and thirty five seconds”로 바꾸니 그나마 괜찮았음- 이 문제는 모델 수준에서도 수정 중임
그동안은 텍스트 전처리를 추가하면 해결 가능함
대부분의 TTS 모델이 숫자와 단위를 문자열로 변환하는 방식으로 처리함 - 피드백 고마움. 커스텀 전처리로 95%의 경우를 해결할 수 있음
다음 릴리스에서 모델 차원에서도 수정될 예정임 - 참고로, 단어는 “pronounce” 혹은 “pronouncing”이 맞음. “pronounciating”은 오타임
- 이 문제는 모델 수준에서도 수정 중임
-
네 가지 모델을 비교한 샘플 오디오를 함께 보여주면 좋겠음
같은 문장을 각 모델로 읽은 예시가 있으면 이해가 쉬울 듯함- 좋은 제안임. 바로 추가하겠음
그동안은 Hugging Face 데모에서 직접 모델을 시도해볼 수 있음
- 좋은 제안임. 바로 추가하겠음
-
이게 오픈소스인지, 아니면 오픈 웨이트 모델인지 궁금함
- 맞음. 오픈소스임
이번 주말까지 MIT 라이선스의 phonemizer도 추가할 예정이라 자유롭게 사용할 수 있을 것임
- 맞음. 오픈소스임