Recent Posts
Recent Comments
반응형
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

오늘도 공부

VoxCPM2 정리: 토크나이저 없이 다국어 TTS와 음성 클로닝을 만드는 오픈소스 모델 본문

AI

VoxCPM2 정리: 토크나이저 없이 다국어 TTS와 음성 클로닝을 만드는 오픈소스 모델

행복한 수지아빠 2026. 4. 13. 10:11
반응형

최근 TTS(Text-to-Speech)는 많이 발전했지만, 실무에서는 여전히 몇 가지 문제가 남아 있습니다. 음성은 자연스러워야 하고, 화자 특성은 유지해야 하고, 여러 언어를 지원해야 하며, 가능하면 실시간에 가깝게 동작해야 합니다. VoxCPM2는 이 요구를 하나의 오픈소스 모델 계열 안에서 풀어보려는 시도입니다. GitHub README와 공식 문서에 따르면, 이 모델은 tokenizer-free TTS, 30개 언어 지원, 보이스 디자인, 제어 가능한 음성 클로닝, 48kHz 출력을 핵심으로 내세웁니다. (GitHub)

 

GitHub - OpenBMB/VoxCPM: VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life

VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning - OpenBMB/VoxCPM

github.com

 

이 글은 이런 분들에게 특히 도움이 됩니다.

  • TTS 모델을 처음 구조적으로 이해해보고 싶은 개발자
  • 단순 합성보다 음성 복제와 스타일 제어까지 보고 싶은 사람
  • 실서비스에 넣을 수 있는 오픈소스 TTS 스택을 찾는 엔지니어
  • “왜 토크나이저를 없앴다는 말이 중요한가?”가 궁금한 사람

왜 이 문제가 중요한가

기존 TTS 파이프라인은 겉보기보다 복잡합니다. 텍스트를 음성으로 바꾸는 과정에서, 보통 중간 표현을 어떻게 다루느냐가 품질과 제어 가능성을 크게 좌우합니다. VoxCPM 계열이 해결하려는 문제는 바로 이 지점입니다. 기존 방식은 안정성과 표현력 사이에서 자주 트레이드오프를 만듭니다. 공개된 기술 보고서에서도, 이산 토큰 기반 접근은 안정적이지만 표현력이 떨어질 수 있고, 반대로 연속 표현 기반 접근은 음향 정보를 잘 보존하지만 오류 누적과 얽힘 문제가 생길 수 있다고 설명합니다. (arXiv)

실무에서는 이런 불편으로 이어집니다.

  • 자연스러움은 좋은데 화자 유지가 약한 경우
    데모에서는 괜찮아 보여도, 실제 문장을 길게 읽히면 목소리의 일관성이 흔들릴 수 있습니다. 이는 클로닝 품질과 직결됩니다. (arXiv)
  • 다국어 지원이 있어도 언어별 설정이 번거로운 경우
    언어 태그를 따로 넣거나, 언어별 모델을 나눠 운영해야 하는 경우가 있습니다. VoxCPM2는 README 기준으로 30개 언어 입력을 별도 언어 태그 없이 직접 합성하는 방향을 제시합니다. (GitHub)
  • 스타일 제어와 화자 복제가 분리되어 있는 경우
    “이 사람 목소리인데 좀 더 밝게 말해줘” 같은 요구는 생각보다 어렵습니다. VoxCPM2는 화자 정보와 말하는 방식 정보를 분리해서 다루려는 구조를 강조합니다. (GitHub)
  • 출력 품질을 높이려면 후처리 체인이 길어지는 경우
    업샘플러나 추가 후처리 모델이 필요한 경우 운영이 복잡해집니다. VoxCPM2는 AudioVAE V2 기반으로 16kHz 입력 참조를 받아 직접 48kHz 출력을 내는 구조를 설명합니다. (GitHub)
  • 실시간에 가까운 응답이 필요한데 추론 비용이 부담되는 경우
    README 기준으로 RTX 4090에서 기본 PyTorch 구현은 RTF 약 0.3, Nano-vLLM 기반 가속 시 약 0.13까지 내려간다고 안내합니다. 실시간 스트리밍이나 동시 요청 처리 관점에서 중요한 수치입니다. (GitHub)

VoxCPM이란 무엇인가

VoxCPM은 외부 음성 토크나이저에 의존하지 않고, 연속적인 음성 표현을 직접 생성하는 tokenizer-free TTS 시스템입니다. 최신 버전인 VoxCPM2는 이 구조를 기반으로 다국어 합성, 음성 디자인, 음성 클로닝, 고품질 출력까지 확장한 모델입니다. (GitHub)

쉽게 말하면, 기존의 많은 TTS 시스템은 음성을 먼저 잘게 쪼갠 “토큰” 같은 형태로 바꾼 뒤 그 토큰을 예측하는 방식에 가깝습니다. VoxCPM은 이 과정을 우회하고, AudioVAE 잠재 공간(latent space) 안에서 음성을 더 직접적으로 다룹니다. 이 덕분에 표현력을 유지하면서도, 구조적으로 의미 정보와 음향 정보를 나눠 처리하려고 합니다. (GitHub)

기존 방식과의 차이를 한 줄로 요약하면 이렇습니다.

  • 기존: 음성 토큰 중심의 다단계 파이프라인
  • VoxCPM2: 토크나이저 없이 잠재 공간에서 end-to-end로 음성 생성 (GitHub)

핵심 특징

  • 30개 언어 지원
    영어, 한국어, 일본어, 프랑스어 등 30개 언어를 지원합니다. README 기준으로 별도 언어 태그 없이 입력 텍스트만으로 합성하는 흐름을 제시합니다. (GitHub)
  • Voice Design
    참조 음성 없이도 자연어 설명만으로 새로운 목소리를 설계할 수 있습니다. (GitHub)
  • Controllable Voice Cloning
    짧은 참조 음성으로 화자 음색을 복제하고, 동시에 감정·속도·스타일까지 제어할 수 있습니다. (GitHub)
  • Ultimate Cloning
    참조 음성과 그 전사문까지 함께 주면, 더 세밀한 발화 특성을 이어받는 continuation 기반 클로닝을 지원합니다. (GitHub)
  • 48kHz 출력
    AudioVAE V2의 비대칭 인코드/디코드 구조를 통해 고품질 오디오 출력을 제공합니다. (GitHub)
  • 오픈소스와 상업 사용 가능
    코드와 가중치는 Apache-2.0 라이선스로 공개되어 있습니다. (GitHub)

실제로 어떤 효과가 있는가

공개 자료 기준으로 VoxCPM2는 단순히 “새 기능이 추가된 버전”이 아니라, 용량·언어 범위·출력 품질·제어성이 함께 확장된 버전입니다. 공식 문서에서는 2B 파라미터, 2.36M 시간 규모의 다국어 데이터, 30개 언어, 48kHz 출력, 스타일 제어를 핵심 변화로 설명합니다. (voxcpm.readthedocs.io)

전/후 차이를 README 기준으로 정리하면 다음과 같습니다.

  • VoxCPM2 vs VoxCPM1.5
    • 파라미터: 2B vs 0.6B
    • 샘플레이트: 48kHz vs 44.1kHz
    • 언어 수: 30 vs 2
    • Voice Design: 지원 vs 미지원
    • Controllable Voice Cloning: 지원 vs 미지원
    • VRAM: 약 8GB vs 약 6GB
    • RTF(RTX 4090): 약 0.30 vs 약 0.15 (GitHub)

여기서 중요한 점은, 성능이 무조건 “더 빠르다”가 아니라는 점입니다. 최신 버전은 더 큰 모델이고 기능도 많아서 기본 추론 속도만 보면 1.5보다 느릴 수 있습니다. 대신 표현력, 언어 확장, 제어 가능성이 커졌고, 가속 엔진인 Nano-vLLM을 쓰면 RTF를 낮춰 실서비스용 처리량을 노릴 수 있습니다. (GitHub)

벤치마크도 공개되어 있습니다. README는 VoxCPM2가 공개 zero-shot 및 controllable TTS 벤치마크에서 state-of-the-art 혹은 이에 준하는 성능을 보인다고 설명합니다. 다만 이 부분은 공개된 평가 셋과 설정 기준이므로, 실제 서비스 품질은 데이터 도메인과 언어, 사용 문장 길이에 따라 달라질 수 있습니다. (GitHub)

동작 원리 / 구조

VoxCPM2의 핵심은 4단계 파이프라인입니다.

  1. LocEnc (Local Encoder)
    입력 음성을 지역적인 오디오 특징으로 인코딩합니다. 음성의 세밀한 지역 정보가 이후 단계의 기반이 됩니다. 공식 문서상 VoxCPM2는 이 4단계 구조를 유지하되, 정보 전달 경로를 재설계했다고 설명합니다. (GitHub)
  2. TSLM (Text-Semantic Language Model)
    텍스트를 바탕으로 의미와 운율에 가까운 계획을 만듭니다. 원 논문 설명에 따르면, 이 단계는 의미적으로 안정적인 패턴에 집중하도록 설계되어 있습니다. (arXiv)
  3. RALM (Residual Acoustic Language Model)
    TSLM이 만든 큰 틀 위에, 더 미세한 음향 디테일과 화자 특성을 보완합니다. 논문 표현을 빌리면, TSLM이 semantic-prosodic plan을 만들고 RALM이 fine-grained acoustic detail을 복원하는 식입니다. (arXiv)
  4. LocDiT (Local DiT / CFM)
    최종적으로 고품질 음성 잠재 표현을 생성하는 diffusion 기반 디코더 역할을 합니다. README와 문서는 이 흐름이 AudioVAE V2의 latent space 안에서 동작한다고 설명합니다. (GitHub)

VoxCPM2에서 특히 눈에 띄는 구조 개선은 세 가지입니다.

1) Residual LM Fusion 변경

이전 1.x 계열은 base LM 출력과 로컬 오디오 특징을 단순 덧셈으로 합쳤습니다. VoxCPM2는 이를 concat 후 projection 방식으로 바꿨습니다. 문서 설명대로라면, 이렇게 하면 의미 정보와 음향 정보를 더 유연하게 결합할 수 있습니다. (voxcpm.readthedocs.io)

2) DiT Conditioning 강화

이전 버전은 conditioning 정보를 하나의 토큰처럼 다루는 성격이 강했지만, VoxCPM2는 multi-token prefix 방식으로 바꿨습니다. 덕분에 diffusion 쪽 attention이 semantic-level 정보와 acoustic-level 정보를 더 독립적으로 볼 수 있게 설계됐습니다. (voxcpm.readthedocs.io)

3) Isolated Reference Audio Channel

이 부분이 실무적으로 꽤 중요합니다. VoxCPM 1.x는 사실상 prompt continuation 기반의 클로닝 중심이었다면, VoxCPM2는 참조 음성을 별도 채널로 분리해 다룹니다. 그래서 다음 네 가지 모드를 더 자연스럽게 다룰 수 있습니다. (voxcpm.readthedocs.io)

  • 텍스트만으로 zero-shot 생성
  • prompt audio 기반 continuation
  • reference-only voice cloning
  • reference audio + prompt audio를 함께 쓰는 결합 모드

즉, “누가 말하는가”와 “어떻게 이어 말하는가”를 구조적으로 분리하려는 방향입니다. 이게 곧 보이스 디자인제어형 클로닝이 가능한 이유라고 볼 수 있습니다. 이 해석은 공식 문서의 구조 설명을 바탕으로 한 요약입니다. (voxcpm.readthedocs.io)

설치 / 사용 방법

가장 빠른 시작은 pip install voxcpm 입니다. README 기준 요구사항은 Python 3.10 이상 3.13 미만, PyTorch 2.5.0 이상, CUDA 12.0 이상입니다. (GitHub)

설치

pip install voxcpm

Python API로 기본 TTS

from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained(
    "openbmb/VoxCPM2",
    load_denoiser=False,
)

wav = model.generate(
    text="VoxCPM2는 다국어 음성 합성과 음성 클로닝을 지원하는 TTS 모델입니다.",
    cfg_value=2.0,
    inference_timesteps=10,
)

sf.write("demo.wav", wav, model.tts_model.sample_rate)

이 예시는 README의 기본 사용 예시를 한국어 문장으로 바꾼 형태입니다. 공식 API 흐름 자체는 동일합니다. (GitHub)

Voice Design

참조 음성 없이 자연어 설명만으로 목소리를 만들 수 있습니다. 설명은 보통 텍스트 앞의 괄호 안에 넣습니다. (GitHub)

wav = model.generate(
    text="(차분하고 부드러운 30대 여성 목소리)안녕하세요. VoxCPM2 사용 예시입니다.",
    cfg_value=2.0,
    inference_timesteps=10,
)

Voice Cloning

wav = model.generate(
    text="이 문장은 참조 음성을 바탕으로 생성된 클론 음성입니다.",
    reference_wav_path="path/to/voice.wav",
)

스타일 제어가 포함된 클로닝

wav = model.generate(
    text="(조금 더 밝고 경쾌한 톤)같은 화자의 목소리지만 말하는 느낌은 다르게 조절할 수 있습니다.",
    reference_wav_path="path/to/voice.wav",
    cfg_value=2.0,
    inference_timesteps=10,
)

Ultimate Cloning

참조 음성과 전사문을 함께 사용합니다. 더 높은 유사도를 노릴 때 쓰는 방식입니다. (GitHub)

wav = model.generate(
    text="이 문장은 더욱 세밀한 화자 특성을 이어받아 생성됩니다.",
    prompt_wav_path="path/to/voice.wav",
    prompt_text="참조 음성의 실제 전사문",
    reference_wav_path="path/to/voice.wav",
)

CLI 사용

공식 CLI도 제공합니다. 빠른 테스트에 유용합니다. (GitHub)

# 보이스 디자인
voxcpm design \
  --text "VoxCPM2는 스튜디오급 다국어 음성 합성을 지원합니다." \
  --output out.wav

# 스타일 제어
voxcpm design \
  --text "VoxCPM2는 스튜디오급 다국어 음성 합성을 지원합니다." \
  --control "Young female voice, warm and gentle, slightly smiling" \
  --output out.wav

# 참조 음성 기반 클로닝
voxcpm clone \
  --text "이 문장은 보이스 클로닝 데모입니다." \
  --reference-audio path/to/voice.wav \
  --output out.wav

# 배치 처리
voxcpm batch --input examples/input.txt --output-dir outs

웹 데모

python app.py --port 8808

README 기준으로 실행 후 브라우저에서 로컬 포트를 열어 테스트할 수 있습니다. (GitHub)

고처리량 배포

Nano-vLLM 기반 추론 엔진도 별도 제공됩니다. 동시 요청 처리나 FastAPI 서버 구성이 필요한 경우 이 경로가 더 적합합니다. (GitHub)

pip install nano-vllm-voxcpm

자주 쓰는 예시 / 활용 시나리오

1) 한국어·영어·일본어를 함께 지원하는 글로벌 서비스

한 모델 계열로 여러 언어를 처리하고 싶을 때 유용합니다. README와 문서 기준으로 한국어를 포함한 30개 언어를 지원합니다. (GitHub)

2) 캐릭터 음성 프로토타이핑

성우 녹음 전에, “차분한 중년 남성”, “밝고 빠른 20대 여성” 같은 식으로 보이스 디자인을 먼저 시도해볼 수 있습니다. 참조 음성 없이 시작할 수 있다는 점이 장점입니다. (GitHub)

3) 고객센터/안내 방송용 화자 통일

짧은 레퍼런스 음성으로 특정 화자 톤을 유지하면서, 문장 내용만 바꿔 대량 생성할 수 있습니다. 필요하면 말투나 감정도 텍스트 태그로 조절할 수 있습니다. (GitHub)

4) 오디오북·내레이션 실험

문맥에 맞는 prosody를 자동 추론하는 방향을 내세우기 때문에, 평면적인 낭독보다 자연스러운 억양을 기대할 수 있습니다. 다만 실제 효과는 텍스트 길이와 언어, 콘텐츠 유형에 따라 확인이 필요합니다. (GitHub)

5) 특정 도메인/화자용 파인튜닝

공식 문서와 README에 따르면 SFT와 LoRA 파인튜닝을 모두 지원하며, 5~10분 정도의 오디오로도 특정 화자·언어·도메인 적응이 가능하다고 안내합니다. (GitHub)

# LoRA 파인튜닝
python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml

# Full fine-tuning
python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_all.yaml

한계 / 주의할 점

좋은 점만 보면 안 됩니다. 공식 README와 문서가 직접 밝히는 한계도 분명합니다. (GitHub)

1) 오용 위험이 큽니다

음성 클로닝이 매우 사실적일 수 있기 때문에, 사칭·사기·허위정보 생성에 쓰면 안 된다고 저장소가 명시합니다. AI 생성 음성은 명확히 표시하라고 권장합니다. (GitHub)

2) 제어형 생성은 결과 변동이 있습니다

Voice Design과 Controllable Voice Cloning은 실행마다 결과가 조금 달라질 수 있고, 저장소는 원하는 결과를 위해 1~3회 재생성을 권장합니다. 즉, “지시문 하나로 항상 완전히 같은 목소리”를 기대하면 안 됩니다. (GitHub)

3) 언어 지원 범위 밖에서는 직접 검증이 필요합니다

공식 지원은 30개 언어입니다. 그 밖의 언어는 직접 테스트하거나 파인튜닝이 필요할 수 있습니다. (GitHub)

4) 최신 버전이 항상 가장 가벼운 선택은 아닙니다

VoxCPM2는 기능이 많고 2B 모델이라, 리소스와 속도 면에서는 더 작은 모델이 나을 수 있습니다. README 기준 VRAM은 약 8GB 수준입니다. 개발 환경과 운영 예산에 따라 0.5B나 1.5 계열이 더 실용적일 수 있습니다. (GitHub)

5) 벤치마크와 실서비스 품질은 다를 수 있습니다

공개 벤치마크에서 좋은 결과를 보였더라도, 실제 서비스에서는 입력 길이, 텍스트 스타일, 잡음 있는 참조 음성, 특정 언어 데이터 편중 같은 요소가 큰 영향을 줍니다. README도 프로덕션 배포 전 충분한 테스트와 안전성 평가를 권장합니다. (GitHub)

마무리

VoxCPM2의 핵심은 단순히 “오픈소스 TTS 하나 더 나왔다”가 아닙니다.
이 프로젝트는 토크나이저 없는 TTS 구조, 의미와 음향의 계층적 분리, 다국어 지원, 보이스 디자인, 제어 가능한 클로닝을 한 흐름으로 묶으려는 시도라는 점에서 의미가 있습니다. (GitHub)

실무 관점에서 보면, VoxCPM2는 특히 이런 사람에게 유용합니다.

  • 하나의 모델 계열로 다국어 TTS + 클로닝 + 스타일 제어를 함께 다루고 싶은 팀
  • 오픈소스 기반으로 빠르게 실험하고, 필요하면 LoRA 파인튜닝까지 확장하고 싶은 개발자
  • 단순 음성 합성보다 화자 유지와 표현력이 중요한 제품을 만드는 엔지니어 (GitHub)

핵심 요약

  • VoxCPM2는 tokenizer-free TTS 구조를 채택한 OpenBMB의 최신 오픈소스 모델이다. (GitHub)
  • 2B 파라미터, 2.36M 시간 규모 데이터, 30개 언어, 48kHz 출력, Voice Design, Controllable Voice Cloning이 핵심 변화다. (voxcpm.readthedocs.io)
  • 구조적으로는 LocEnc → TSLM → RALM → LocDiT의 4단계 파이프라인을 사용한다. (GitHub)
  • Python API, CLI, Web Demo, Nano-vLLM 배포 경로까지 제공해 실험부터 서비스화까지 이어가기 좋다. (GitHub)
  • 다만 음성 클로닝 오용 위험, 제어 결과의 변동성, 언어 범위 한계는 반드시 고려해야 한다. (GitHub)
반응형