CPU에서 200ms로 첫 청크를 내보내는 100M 경량 TTS
Pocket TTS는 100M 파라미터 경량 모델로 CPU에서 동작하며 약 200ms의 초기 지연과 실시간 대비 6배 속도를 달성하는 오픈소스 TTS이다.
TL;DR
Pocket TTS는 GPU나 원격 API 없이 로컬 CPU에서 동작하도록 설계된 약 100M 파라미터 경량 TTS로, 스트리밍으로 약 200ms 내에 첫 오디오 청크를 반환하고 MacBook Air M4 기준으로 실시간 대비 약 6배의 처리 속도를 보고한다. 음성 클로닝은 입력 오디오에서 voice state를 추출해 safetensors로 저장한 뒤 디스크에서 kvcache를 빠르게 읽어 로딩 시간을 최소화하는 방식으로 구현되어 있다. 브라우저용 WebAssembly, ONNX Runtime Web 등 커뮤니티 포팅이 존재해 서버 없는 클라이언트 사이드 실행이 가능하며 긴 텍스트도 연속 스트리밍으로 처리할 수 있다는 점이 이 프로젝트의 핵심 가치이나 README는 GPU에서의 가속 이득이 관찰되지 않았음을 명시해 CPU 최적화에 초점이 맞춰져 있음을 분명히 하고 있다.
주요 기능
- CPU에서 실행해 GPU나 외부 API 없이 로컬에서 음성을 생성할 수 있다.
- 모델 크기가 약 100M 파라미터로 경량화되어 낮은 메모리와 연산 요구량으로 동작한다.
- 초기 오디오 청크를 약 200ms 내에 스트리밍으로 반환해 지연을 낮춘다.
- 음성 클로닝을 지원하며 voice state를 safetensors로 내보내 빠르게 재로딩할 수 있다.
- 다국어를 지원하며 브라우저용 WebAssembly 포팅을 통해 클라이언트 사이드 실행도 가능하다.
어떻게 동작하는가
Pocket TTS는 약 100M 파라미터의 작은 음성 합성 모델을 사용해 CPU 환경에서 직접 추론하도록 설계되어 GPU가 없이도 실용적인 응답성을 제공한다. 모델은 스트리밍 방식으로 오디오 청크를 순차적으로 생성해 약 200ms 내에 첫 음성 청크를 반환하며 긴 텍스트도 지속적으로 처리할 수 있도록 키-값 캐시와 음성 상태 파일을 활용한다. 음성 클로닝은 오디오에서 voice state를 추출해 safetensors로 저장하고 이를 다시 로드해 kvcache를 바로 읽어오는 방식으로 빠른 로딩을 실현한다.
해결 문제
Pocket TTS는 GPU나 원격 웹 API에 의존하지 않고 로컬 CPU에서 저지연 음성 합성을 실행하는 문제를 해결한다. README는 모델이 100M 파라미터로 작게 설계되어 MacBook Air M4 같은 CPU에서 실시간보다 약 6배 빠른 처리 성능을 보이고 약 200ms의 초기 지연을 달성한다고 밝히고 있다. 또한 voice state를 safetensors로 저장해 반복적인 음성 로딩 비용을 줄이고 브라우저 기반 WebAssembly 포팅까지 가능한 점이 자원 제약 환경에서의 배포 장벽을 낮춘다.
지금 주목받는 이유
로컬에서 저지연으로 동작하는 경량 TTS 수요 증가와 브라우저 실행 가능성을 동시에 충족해 커뮤니티와 데모가 빠르게 확산되고 있다.
차별점
- GPU나 클라우드 TTS API 없이도 CPU만으로 실시간 수준의 합성이 가능한 경량 모델 설계를 채택한다.
- voice state를 safetensors로 내보내고 디스크에서 kvcache를 직접 읽어 빠르게 음성을 복원하는 워크플로를 제공한다.
- 브라우저용 WebAssembly와 ONNX Runtime Web 등으로 커뮤니티 포팅이 활발해 클라이언트 사이드 실행 옵션이 다양하다.
사용 사례
- 서버 비용이나 개인정보 문제로 외부 API 사용이 어려운 로컬 애플리케이션에서 텍스트를 즉시 음성으로 변환하는 용도로 활용할 수 있다.
- 단일 기기 기반의 스크린 리더나 오디오북 생성처럼 긴 텍스트를 스트리밍으로 읽어야 하는 인터랙티브한 서비스에 적용할 수 있다.
- 짧은 음성 샘플로 화자를 클로닝해 게임 대사, 캐릭터 보이스, 로컬 음성 어시스턴트 등에 동일한 음성 특성으로 실시간 대화를 제공하는 데 사용할 수 있다.
시작하기
가장 빠른 시작은 pip install pocket-tts 또는 uv를 통해 패키지를 설치한 뒤 pocket-tts generate 명령을 실행해 기본 wav 출력과 속도 통계를 확인하는 것이다. 로컬 서버가 필요하면 pocket-tts serve 명령으로 모델을 메모리에 로드한 상태에서 http://localhost:8000으로 접속해 웹 인터페이스를 사용하면 된다. 자세한 예제와 추가 옵션은 공식 문서와 Colab 예제 노트북에서 확인할 수 있다.
요구사항
- Python 3.10, 3.11, 3.12, 3.13 또는 3.14
- PyTorch 2.5 이상 (GPU 전용 빌드 불필요)
- CPU 환경에서 실행 가능하며 권장 코어 수는 README의 사례에 따라 적게는 2코어 수준
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| initial_latency | time-to-first-chunk | ≈200ms | — |
| throughput_cpu | real-time-speed-multiplier | ~6x real-time on MacBook Air M4 | — |
| model_size | parameters | 100M parameters | — |
| cpu_usage | cpu-cores | uses only 2 CPU cores | — |
7k
Stars
702
Forks
+208
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.