CPU 기반 경량 텍스트 음성 변환 (TTS) 애플리케이션: Pocket TTS
요약
Pocket TTS는 CPU 환경에 최적화된 경량 텍스트-음성 변환(TTS) 애플리케이션으로, 별도의 GPU나 복잡한 웹 API 설정 없이도 간단한 Python 호출이나 CLI를 통해 오디오 생성이 가능합니다. 이 모델은 작은 크기(100M 파라미터)에도 불구하고 낮은 지연 시간과 높은 실시간 처리 속도를 자랑하며, 다국어 지원 및 음성 클로닝 기능까지 제공하여 범용성이 뛰어납니다. 사용자는 `pocket-tts generate` 명령어나 Python 라이브러리 호출을 통해 텍스트를 오디오 파일로 변환할 수 있으며, 로컬 서버(`serve`) 기능을 이용해 웹 인터페이스에서도 쉽게 접근할 수 있습니다.
핵심 포인트
- CPU 전용 경량 설계: GPU 의존성 없이 CPU 환경에서 효율적으로 작동합니다. 낮은 지연 시간 및 고속 처리: 첫 오디오 청크를 200ms 내에 얻을 수 있으며, 실시간보다 빠른 속도를 보여줍니다. 다기능 지원: 다국어(영어, 프랑스어, 독일어 등) 지원과 사용자 음성 클로닝 기능을 제공합니다. 사용 편의성: Python API와 CLI 명령어(`pocket-tts generate`)를 모두 지원하며, 로컬 서버 기능으로 웹 인터페이스 접근이 용이합니다. 모델 효율성: 1억만 개(100M) 파라미터라는 작은 모델 크기로도 높은 성능을 유지합니다.
CPU 에서 효율적으로 실행되도록 설계된 경량 텍스트 음성 변환 (Text-to-Speech, TTS) 애플리케이션입니다. GPU 와 TTS 모델을 제공하는 웹 API 를 사용하는 번거로움을 잊으세요. Kyutai 의 Pocket TTS 를 사용하면 오디오 생성은 pip install 와 함수 호출만으로도 가능합니다.
Python 3.10, 3.11, 3.12, 3.13, 3.14 을 지원합니다. PyTorch 2.5+ 를 필요로 합니다. PyTorch 의 GPU 버전을 필요로 하지 않습니다.
🔊 데모 | 🐱💻 GitHub 저장소 | 🤗 Hugging Face 모델 카드 | ⚙️ 기술 보고서 | 📄 논문 | 📚 문서
- CPU 에서 실행됨
- 작은 모델 크기, 1 억만개 (100M) 파라미터
- 오디오 스트리밍
- 낮은 지연 시간, 첫 번째 오디오 청크를 얻기까지 약 200ms
- 실시간보다 빠름, MacBook Air M4 의 CPU 에서 약 6 배 실시간 속도
- 2 개 CPU 코어만 사용
- Python API 와 CLI
- 음성 클로닝
- 다국어 지원: 영어 (english), 프랑스어 (french), 독일어 (german), 포르투갈어 (portuguese), 이탈리아어 (italian), 스페인어 (spanish)
- 무한히 긴 텍스트 입력 처리 가능
- 브라우저에서 클라이언트 측 실행 가능
추가 언어는 향후 추가될 수 있습니다.
Kyutai 웹사이트로 이동하여 브라우저에서 직접 사용해 보세요. 텍스트를 입력하고 다른 음성을 선택하며 설치 없이 음성 생성을 할 수 있습니다.
코명선 (command line) 에서 pocket-tts 를 직접 사용할 수 있습니다. uv
를 사용하는 것을 권장합니다. 이는 격리된 환경에서 필요 사항을 실행으로 설치하기 때문입니다 (uv 설치 지침은 여기). 또한 pip install pocket-tts
로 수동으로 설치할 수도 있습니다.
이것은 기본 텍스트와 기본 음성으로 wav 파일 ./tts_output.wav
을 생성하고 일부 속도 통계를 표시합니다.
uvx pocket-tts generate
# 또는 pip 로 수동 설치한 경우:
pocket-tts generate
음성을 --voice
로 수정하고 텍스트를 --text
로 수정합니다. 우리는 작은 음성 카탈로그를 제공합니다.
generate
, export-voice
, 또는 serve
를 실행할 때 --language
로 사전 학습된 언어 모델을 선택하세요 (기본값: english
). 영어가 아닌 언어는 더 높은 품질이지만 느린 24 레이어 변형도 있습니다. 예를 들어 --language italian_24l
을 사용하여 선택할 수 있습니다.
--config
옵션은 커스텀 가중치를 위한 로컬 YAML 경로만 허용합니다.
각 음성별 라이선스를 상세히 설명하는 이 페이지를 확인하세요.
- alba (en)
- giovanni (it)
- lola (es)
- juergen (de)
- rafael (pt)
- estelle (fr)
- anna (en)
- azelma (en)
- bill_boerst (en)
- caro_davy (en)
- charles (en)
- cosette (en)
- eponine (en)
- eve (en)
- fantine (en)
- george (en)
- jane (en)
- jean (en)
- javert (en)
- marius (en)
- mary (en)
- michael (en)
- paul (en)
- peter_yearsley (en)
- stuart_bell (en)
- vera (en)
--voice
아르구먼트는 음성 클로닝을 위한 평범한 wav 파일 입력도 받을 수 있습니다. 자체 음성을 사용하거나 우리 음성 저장소를 확인하세요.
Pocket TTS 와 함께 사용하기 전에 샘플을 정화하는 것을 권장합니다. 오디오 품질은 또한 재현되기 때문입니다.
더 많은 세부 사항과 예제를 위해 generate 문서를 확인하세요.
여러 음성 및 프롬프트를 빠르게 시도하기 위해 serve
명령어를 사용하는 것을 선호하세요.
HTTP 요청을 통해 오디오를 생성할 수 있는 로컬 서버도 실행할 수 있습니다.
uvx pocket-tts serve
# 또는 pip 로 수동 설치한 경우:
pocket-tts serve
http://localhost:8000
로 이동하여 웹 인터페이스를 시도하세요. 모델은 요청 간에 메모리에 유지되므로 명령선보다 빠릅니다.
더 많은 세부 사항과 예제를 위해 serve 문서를 확인하세요.
Voice 클로닝을 위한 오디오 파일 (예: .wav 또는 .mp3) 처리는 상대적으로 느리지만, 오디오 파일에서 변환된 음성 임베딩인 safetensors 파일을 로드하는 것은 매우 빠릅니다. 이 변환은 export-voice 명령어를 사용하여 수행할 수 있습니다. 자세한 내용과 예제는 export-voice 문서를 참조하세요.
Colab 에서 Python 라이브러리를 테스트해 볼 수 있습니다.
다음으로 패키지를 설치합니다:
pip install pocket-tts
# 또는
uv add pocket-tts
이 패키지는 텍스트에서 오디오를 생성하는 간단한 Python 라이브러리로 사용할 수 있습니다.
from pocket_tts import TTSModel
import scipy.io.wavfile
tts_model = TTSModel.load_model()
...
여러 개의 음성 상태를 사용하려는 경우, 여러 개의 음성을 사용해야 할 수 있습니다. load_model() 및 get_state_for_audio_prompt()는 상대적으로 느린 작업이므로, 가능하다면 모델과 음성 상태를 메모리에 유지하는 것을 권장합니다.
더 빠른 음성 로딩을 위해 음성 상태를 safetensors 파일로 내보낼 수 있습니다:
from pocket_tts import TTSModel, export_model_state
model = TTSModel.load_model()
# 나중에 빠르게 로드할 음성 상태 내보내기
...
자세한 내용과 예제는 Python API 문서를 확인하세요.
현재는 다음을 지원하지 않지만 (추가 PR 을 환영합니다):
- GPU 에서 이 TTS 모델을 실행하려고 했지만, CPU 실행에 비해 속도 향상을 관찰하지 못했습니다. 특히 우리가 배치 크기를 1 로 사용하고 모델이 매우 작기 때문입니다.
우리는 기여를 수용합니다! GitHub 에서 이슈나 풀 리퀘스트를 자유롭게 열 수 있습니다.
개발 지침은 CONTRIBUTING.md 파일에서 찾을 수 있습니다. 또한 패키지 로컬 개발용 편집 가능 설치를 하는 방법도 해당 파일에서 찾을 수 있습니다.
Pocket TTS 는 WebAssembly/JavaScript 에서 브라우저에 직접 실행할 만큼 작습니다. 아직 공식 지원은 없지만, 다음 커뮤니티 구현을 테스트해 볼 수 있습니다:
-
wasm-pocket-tts by @LaurentMazare: XN 으로 포팅된 pocket TTS 의 Rust 포트. 데모 здесь
-
pocket-tts-onnx-export by @KevinAHM: .onnx 로 내보낸 모델로 ONNX Runtime Web 을 사용하여 실행합니다. 데모 здесь
-
pocket-tts by @babybirdprd: WebAssembly 와 PyO3 바인딩을 가진 Candle 버전 (Rust) 으로 웹에서도 실행할 수 있습니다.
-
jax-js by @ekzhang: 웹용 ML 라이브러리 jax-js 를 사용합니다. 데모 здесь
-
pocket-tts-mlx by @jishnuvenugopal - Apple Silicon 을 위한 MLX 백엔드 최적화
-
pocket-tts-xn by @LaurentMazare - XN 으로 구현된 Pocket TTS 의 Rust 포트.
-
pocket-tts-candle by @babybirdprd - WebAssembly 와 PyO3 바인딩을 가진 Candle 버전 (Rust) 입니다.
-
PocketTTS.cpp by @VolgaGerm - ONNX Runtime 를 사용하는 단일 파일 C++ 런타임으로 CLI, HTTP 서버, FFI C API 를 제공합니다.
-
sherpa-onnx by @csukuangfj - Windows, macOS, Linux 및 임베디드 보드 (Raspberry Pi, Jetson, RK3588 등) 에서 PocketTTS 를 실행하며 12 가지 프로그래밍 언어 바인딩을 제공합니다:C++, C, Python, JavaScript, Java, C#, Kotlin, Swift, Go, Dart, Rust, Pascal, plus WebAssembly.
-
pocket-tts-csharp by @TheAjaykrishnanR - TorchSharp 와 TorchSharp.PyBridge 를 사용하여 구현된 Pocket TTS 의 C# 포트로 .NET 프로젝트에서 라이브러리로 사용하기 쉽습니다.
-
pocket-reader by @lukasmwerner- Browser screen reader
-
pocket-tts-wyoming by @ikidd - Docker container for pocket-tts using Wyoming protocol, ready for Home Assistant Voice use.
-
Sonorus by @KevinAHM - Talk to any named character in Hogwarts Legacy with their original voice.
-
Mac pocket-tts by @slaughters85j - Mac Desktop App + macOS Quick Action
-
pocket-tts-openai_streaming_server by @teddybear082 - OpenAI-compatible streaming server, dockerized and with an
.exe
release - pocket-tts-unity by @lookbe - A Unity 6 integration for Pocket-TTS. -
ComfyUI-Pocket-TTS by @ai-joe-git Lightweight CPU-based Text-to-Speech for ComfyUI
-
pocket-tts-server by @ai-joe-git A lightweight, real-time voice cloning and chat server with OpenAI-compatible API. Clone any voice with just 20 seconds of audio and chat with AI using that voice instantly.
-
discord-tts by @alkmei - Multivoice Discord text-to-speech bot that uses Pocket TTS.
-
cursed-codex by @dooart - AI coding agent with unhinged live football commentary
-
pocket-tts-deno Port of pocket-tts-server as a wasm + onnx deno server with voice TTS API.
-
FrontPocket by @markd89 - Front-end for Pocket-TTS to speak text from clipboard, file, CLI (hotkeys) & GUI toolbar. Change playback speed, voice, and move forward/backward between sentences instantaneously.
-
openclaw-pockettts by @dodgyrabbit - A Docker container with the Python implementation but exposed as an OpenAI TTS API for easy integration with OpenClaw.
-
openclaw-pocketts.cpp by @dodgyrabbit - A Docker container with the PocketTTS.cpp version, packaged for easy integration with OpenClaw.
-
tts-audiobook-tool by @zeropointnine - Multi-model audiobook generator with automatic error detection, 48khz upscaling, synced browser reader, stand-alone server-mode.
Use of our model must comply with all applicable laws and regulations and must not result in, involve, or facilitate any illegal, harmful, deceptive, fraudulent, or unauthorized activity. Prohibited uses include, without limitation, voice impersonation or cloning without explicit and lawful consent; misinformation, disinformation, or deception (including fake news, fraudulent calls, or presenting generated content as genuine recordings of real people or events); and the generation of unlawful, harmful, libelous, abusive, harassing, discriminatory, hateful, or privacy-invasive content. We disclaim all liability for any non-compliant use.
Manu Orsini*, Simon Rouard*, Gabriel De Marmiesse*, Václav Volhejn, Neil Zeghidour, Alexandre Défossez
*equal contribution
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기