2P by GN⁺ 7시간전 | ★ favorite | 댓글 1개
  • 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만으로 설치 가능
  • 기본 사용 예시:
    • 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를 통해 접수 가능

상용 지원

커뮤니티 및 지원

  • 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은 정말 싫음
  • 지금은 미국식 음성만 지원하는 듯함
    개인적으로는 아일랜드, 영국, 웨일스 억양에만 관심이 있음. 미국식은 별로임

  • 기기 내에서 동작하는 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도 추가할 예정이라 자유롭게 사용할 수 있을 것임