25MB 모델로 CPU 고품질 TTS
ONNX 기반으로 15M~80M 파라미터 모델을 제공하며 25~80MB 크기로 CPU에서 24 kHz 고품질 음성 합성을 수행하는 경량 TTS 라이브러리이다.
TL;DR
Kitten TTS는 ONNX 기반으로 15M에서 80M 파라미터 모델을 제공하여 디스크 크기를 25MB에서 80MB로 유지하면서 CPU 환경에서 24 kHz 품질의 음성 합성을 실행할 수 있도록 설계된 경량 TTS 라이브러리이다. 입력 텍스트는 normalize_text 전처리를 거쳐 숫자와 약어가 사람이 읽는 형태로 변환되며 모델은 지정된 보이스와 speed 파라미터를 사용해 NumPy 배열 형태의 오디오를 생성하거나 파일로 직접 저장할 수 있다. 이번 v0.8 릴리스로 다양한 크기 옵션과 Hugging Face Spaces 데모가 공개되어 즉시 체험이 가능하며 int8 변형 등 저용량 배포 옵션은 저장 공간과 메모리 제약이 있는 엣지 환경에서 유용하지만 일부 int8 모델에서 문제가 보고된 점이 존재한다. 개발자 프리뷰 상태로 API 변경 가능성이 명시되어 있으며 상업 지원과 커스텀 보이스 개발 옵션이 제공되어 엔터프라이즈 통합 경로가 준비되어 있다.
주요 기능
- 제공한다 CPU에서 동작하는 ONNX 기반 추론 경로를 통해 GPU 없이도 음성 합성을 수행할 수 있다. 모델 파일은 25MB에서 80MB 범위로 제공되어 임베디드나 경량 서버에 배포하기 용이하다. 내부적으로 텍스트 정규화와 음성 합성 파이프라인을 결합하여 입력 텍스트에서 바로 WAV 파일을 생성한다.
- 지원한다 8가지 내장 보이스(Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo)를 통해 다양한 음색을 즉시 테스트할 수 있다. 보이스는 문자열 식별자로 선택되며 speed 파라미터로 재생 속도를 조절할 수 있다. 모델별 특성과 보이스 음색은 제공된 모델 버전에 따라 차이가 있을 수 있다.
- 제공한다 텍스트 정규화 유틸리티(normalize_text)를 통해 숫자, 통화, 시간, 약어 등을 사람이 읽는 형태로 변환하고 변경된 문자 구간의 스팬 정보를 반환한다. 이 정보는 디버깅이나 커스텀 전처리 파이프라인에 활용할 수 있다. 정규화 단계는 음성 발음의 일관성을 높여 최종 출력 품질에 기여한다.
- 지원한다 파일 직접 저장(generate_to_file)과 NumPy 배열 반환(generate) 양쪽을 제공하여 파이프라인 통합이 유연하다. generate는 24 kHz 샘플링 레이트의 NumPy 오디오 배열을 반환하며 soundfile 같은 라이브러리로 파일로 저장할 수 있다. generate_to_file은 내부에서 파일 기록을 처리하여 간단한 스크립트에서 바로 결과물을 얻을 수 있다.
어떻게 동작하는가
모델과 추론 코어는 ONNX 포맷을 사용하여 런타임에서 최적화된 그래프 형태로 로드되고 CPU에서 효율적으로 실행되도록 설계되어 있다. 입력 텍스트는 normalize_text 같은 전처리 파이프라인을 거쳐 숫자와 약어가 음성화 가능한 토큰으로 변환되며 이후 TTS 모델이 음향 샘플을 합성한다. 합성 결과는 24 kHz 샘플링 레이트의 NumPy 배열로 반환되며 선택적으로 파일로 직접 저장하거나 CUDA 백엔드로 실행하도록 설정할 수 있다.
해결 문제
Kitten TTS는 GPU가 없는 환경에서도 고품질 음성 합성을 가능하게 하여 리소스가 제한된 엣지나 저비용 서버에 TTS를 배포하는 문제를 해결한다. 모델 파일 크기를 25MB에서 80MB로 제한함으로써 저장소와 메모리 부담을 줄여 배포 및 업데이트를 단순화한다. 또한 내장된 텍스트 정규화와 여러 보이스 옵션을 제공하여 텍스트 전처리와 음성 선택을 간단하게 통합할 수 있다.
지금 주목받는 이유
v0.8 릴리스로 15M, 40M, 80M 모델 라인업을 공개하여 경량 TTS 선택지가 명확해졌다. Hugging Face Spaces 데모와 GitHub에서의 활발한 공개로 사용자가 직접 체험할 수 있는 접근성이 높아졌다. 또한 CPU 실행만으로도 동작하며 디스크 크기가 25MB까지 가능한 점이 실무성 측면에서 주목받았다.
차별점
- 경량화에 초점을 맞춘 모델 라인업을 제공한다. 15M에서 80M 파라미터 범위의 모델을 제공하며 int8 변형은 디스크 크기를 25MB까지 낮추어 작은 장치에서도 모델을 호스팅할 수 있다. 이러한 크기 설계는 전통적으로 큰 TTS 모델이 요구하는 대규모 자원 없이도 배포가 가능하다는 점에서 차별화 요소이다.
- CPU-최적화 ONNX 추론 경로를 기본으로 사용한다. ONNX 포맷과 CPU 친화적 구현을 통해 GPU 없이도 실용적인 추론 성능을 달성하며 필요 시 CUDA 백엔드를 선택하여 GPU 가속을 활용할 수 있다. 이 접근은 다양한 실행 환경에서 동일한 모델 포맷을 유지하면서도 배포 유연성을 제공한다.
- 텍스트 전처리와 실사용 편의성에 집중한 API를 제공한다. normalize_text 함수는 원문과 정규화된 결과의 문자 매핑 정보를 반환하여 전처리 오류를 추적할 수 있으며 generate_to_file 같은 편의 함수로 빠른 통합이 가능하다. 이로 인해 개발자가 별도 전처리 파이프라인을 구축하지 않고도 실용적 TTS 워크플로를 시작할 수 있다.
사용 사례
- 오프라인 또는 엣지 장치에서 음성 합성 기능을 제공하는 용도로 적합하다. 모델 크기가 작아 로컬 저장과 실행이 용이하며 네트워크 연결 없이도 합성이 가능하다. 배터리나 메모리 제약이 있는 모바일·임베디드 환경에서 실용적인 대안이 된다.
- 프로토타이핑과 서버리스 환경에서 빠르게 TTS를 통합하는 용도로 활용할 수 있다. pip로 설치하고 간단한 generate 호출로 바로 WAV 파일을 생성할 수 있어 빠른 검증이 가능하다. 또한 여러 내장 보이스와 속도 조절을 이용해 UX 실험을 신속히 진행할 수 있다.
- 엔터프라이즈 통합 시 커스텀 보이스 개발과 상업 지원 옵션을 결합하여 상용 서비스에 적용할 수 있다. 레포지토리는 상업 지원과 커스텀 보이스 개발을 별도 제공한다고 명시하여 기업용 통합 경로를 열어두고 있다. 이로 인해 제품화 단계에서 맞춤형 요구사항을 반영할 수 있다.
시작하기
필수로 Python 3.8 이상과 pip가 설치되어야 하며 제공된 휠 파일을 pip로 설치하면 패키지 사용 환경이 준비된다. 예시로 pip install https://github.com/KittenML/KittenTTS/releases/download/0.8.1/kittentts-0.8.1-py3-none-any.whl 명령으로 패키지를 설치한 뒤 from kittentts import KittenTTS로 모델을 로드하여 model.generate로 오디오를 생성할 수 있다. GPU 가속을 사용하려면 requirements_gpu.txt를 설치한 뒤 KittenTTS 초기화 시 backend="cuda"를 지정하면 된다.
요구사항
- 운영체제로 Linux, macOS, Windows를 지원하며 Python 3.8 이상이 필요하다.
- 디스크 여유 공간은 선택한 모델에 따라 25MB에서 80MB가 요구되며, 모델 캐시를 위해 추가 공간이 권장된다.
- 기본 경로는 CPU 실행이며 GPU 가속을 사용하려면 별도의 GPU 종속성(requirements_gpu.txt) 설치와 CUDA 지원 환경이 필요하다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| kitten-tts-mini | parameters_and_size | 80M, 80 MB | — |
| kitten-tts-micro | parameters_and_size | 40M, 41 MB | — |
| kitten-tts-nano | parameters_and_size | 15M, 56 MB | — |
| kitten-tts-nano-int8 | parameters_and_size | 15M, 25 MB | — |
14.7k
Stars
818
Forks
+254
Trending
8
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.