VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
VoxCPM은 토크나이저 없는 Text-to-Speech 시스템으로, 종단간 확산 자기회귀 아키텍처를 통해 연속적인 음성 표현을 직접 생성하여 이산 토큰화를 우회함으로써 매우 자연스럽고 표현력 있는 합성을 달성합니다.
VoxCPM2는 최신 주요 릴리스로, 2B 파라미터 모델이 2백만 시간 이상의 다국어 음성 데이터로 훈련되어 현재 30개 언어, 음성 디자인, 제어 가능한 음성 복제 및 48kHz 스튜디오 품질 오디오 출력을 지원합니다. MiniCPM-4 백본을 기반으로 구축되었습니다.
🌍 지원 언어 (30개) 아랍어, 버마어, 중국어, 덴마크어, 네덜란드어, 영어, 핀란드어, 프랑스어, 독일어, 그리스어, 히브리어, 힌디어, 인도네시아어, 이탈리아어, 일본어, 크메르어, 한국어, 라오어, 말레이어, 노르웨이어, 폴란드어, 포르투갈어, 러시아어, 스페인어, 스와힐리어, 스웨덴어, 타갈로그어, 태국어, 터키어, 베트남어
중국어 방언: 四川话, 粤语, 吴语, 东北话, 河南话, 陕西话, 山东话, 天津话, 闽南话
pip install voxcpm
요구 사항: Python ≥ 3.10 (<3.13), PyTorch ≥ 2.5.0, CUDA ≥ 12.0. 자세한 내용은 빠른 시작 문서를 참조하세요.
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained(
"openbmb/VoxCPM2",
load_denoiser=False,
)
wav = model.generate(
text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
print("saved: demo.wav")
ModelScope에서 먼저 다운로드하려면 다음을 사용할 수 있습니다:
pip install modelscope
from modelscope import snapshot_download
snapshot_download("OpenBMB/VoxCPM2", local_dir='./pretrained_models/VoxCPM2') # 로컬 디렉토리 지정
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("./pretrained_models/VoxCPM2", load_denoiser=False)
wav = model.generate(
text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
자연어 설명으로 음성을 생성합니다 — 참조 오디오가 필요 없습니다. 형식: text의 시작 부분에 설명을 괄호 안에 넣습니다 (예: "(your voice description)The text to synthesize."):
wav = model.generate(
text="(A young woman, gentle and sweet voice)Hello, welcome to VoxCPM2!",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)
참조 오디오를 업로드합니다. 모델이 음색을 복제하고, 제어 명령을 사용하여 속도, 감정 또는 스타일을 조정할 수 있습니다.
wav = model.generate(
text="This is a cloned voice generated by VoxCPM2.",
reference_wav_path="path/to/voice.wav",
)
sf.write("clone.wav", wav, model.tts_model.sample_rate)
wav = model.generate(
text="(slightly faster, cheerful tone)This is a cloned voice with style control.",
reference_wav_path="path/to/voice.wav",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write("controllable_clone.wav", wav, model.tts_model.sample_rate)
참조 오디오와 정확한 대본을 모두 제공하여 오디오 연속 기반 복제로 모든 음성 뉘앙스를 재현합니다. 최대 복제 유사성을 위해 아래와 같이 동일한 참조 클립을 referencewavpath와 promptwavpath 모두에 전달합니다:
wav = model.generate(
text="This is an ultimate cloning demonstration using VoxCPM2.",
prompt_wav_path="path/to/voice.wav",
prompt_text="The transcript of the reference audio.",
reference_wav_path="path/to/voice.wav", # 선택 사항, 더 나은 유사성을 위해
)
sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)
🔄 스트리밍 API
import numpy as np
chunks = []
for chunk in model.generate_streaming(
text="Streaming text to speech is easy with VoxCPM!",
):
chunks.append(chunk)
wav = np.concatenate(chunks)
sf.write("streaming.wav", wav, model.tts_model.sample_rate)
# 음성 디자인 (참조 오디오 불필요)
voxcpm design \
--text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
--output out.wav
# 스타일 제어가 포함된 제어 가능한 음성 복제
voxcpm design \
--text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
--control "Young female voice, warm and gentle, slightly smiling" \
--output out.wav
# 음성 복제 (참조 오디오)
voxcpm clone \
--text "This is a voice cloning demo." \
--reference-audio path/to/voice.wav \
--output out.wav
# 궁극의 복제 (프롬프트 오디오 + 대본)
voxcpm clone \
--text "This is a voice cloning demo." \
--prompt-audio path/to/voice.wav \
--prompt-text "reference transcript" \
--reference-audio path/to/voice.wav \ # 선택 사항, 더 나은 유사성을 위해
--output out.wav
# 배치 처리
voxcpm batch --input examples/input.txt --output-dir outs
# 도움말
voxcpm --help
python app.py --port 8808 # 브라우저에서 열기: http://localhost:8808
--device를 사용하여 런타임 장치를 선택합니다:
python app.py --device auto
지원되는 값은 auto, cpu, mps, cuda, cuda:N입니다. Apple Silicon Mac에서 auto는 MPS를 사용 가능할 때 사용합니다.
높은 처리량 서빙을 위해 Nano-vLLM-VoxCPM 을 사용하세요 — 동시 요청 지원 및 비동기 API를 갖춘 Nano-vLLM 기반 전용 추론 엔진입니다.
pip install nano-vllm-voxcpm
from nanovllm_voxcpm import VoxCPM
import numpy as np, soundfile as sf
server = VoxCPM.from_pretrained(model="/path/to/VoxCPM", devices=[0])
chunks = list(server.generate(target_text="Hello from VoxCPM!"))
sf.write("out.wav", np.concatenate(chunks), 48000)
server.stop()
NVIDIA RTX 4090에서 RTF가 약 0.13 (표준 PyTorch 구현의 약 0.3 대비), 배치 동시 요청 및 FastAPI HTTP 서버 지원. 배포 세부 사항은 Nano-vLLM-VoxCPM 저장소를 참조하세요.
프로덕션 멀티 테넌트 배포를 위해 vLLM-Omni 를 사용하세요 — 기본 VoxCPM2 지원을 갖춘 공식 vLLM 프로젝트의 옴니모달 확장입니다. PagedAttention KV 캐시, 연속 배치, 드롭인 OpenAI 호환 /v1/audio/speech 엔드포인트를 제공합니다.
# 소스에서 설치 (최신 main — vllm-omni는 빠르게 진화 중)
uv pip install vllm==0.19.0 --torch-backend=auto
git clone https://github.com/vllm-project/vllm-omni.git && cd vllm-omni
uv pip install -e.
다른 플랫폼 (ROCm, XPU, MUSA, NPU) 및 Docker에 대한 내용은 vLLM-Omni 설치 가이드를 참조하세요.