TRENDSHIFT 딥다이브 · 2026.05.30

VoxCPM2 딥다이브
— 토크나이저를 빼고 확산으로 음성을 그린다

칭화대 THUHCSI·ModelBest·OpenBMB가 만든 오픈소스 TTS. 텍스트를 토큰으로 자르지 않고 연속 잠재 공간에서 확산(diffusion)으로 음성을 직접 그리는 새 방식이다. 2B 파라미터, 30개 언어(한국어 포함), 48kHz 스튜디오 품질, 음성 디자인·클로닝까지 한 모델로 처리한다. Apache-2.0이라 상업 사용 무료. (저장소: OpenBMB/VoxCPM · ★ 13.5k · TrendShift 데일리 1위 · 2026-04 출시)
목차
  1. 한줄 요약
  2. 왜 지금 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어·시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1한줄 요약

한 문장으로 무엇을 하는 프로젝트인가
한 문장 정리

"음성을 정수 코드로 잘라 쓰는 기존 TTS와 달리, 음성을 연속적인 잠재 표현 위에서 확산으로 직접 그려내 — 같은 모델 하나로 30개 언어 TTS·자연어로 새 목소리 만들기·짧은 참조로 목소리 복제까지 처리하는 오픈소스 음성 합성기."

같은 OpenBMB의 전작 VoxCPM1.5는 2025년 12월 GitHub 트렌딩 1위, 0.5B 버전은 2025년 9월 HuggingFace 트렌딩 1위였다. 이번 VoxCPM2는 2026년 4월 공개돼 다시 트렌딩 1위로 돌아왔다.

친숙한 비유

지금까지의 신경 TTS는 "도트 그림"이다. 음성을 수천 개의 정수 코드(코드북 인덱스)로 양자화한 뒤, LLM처럼 다음 코드를 예측한다. 도트가 거칠수록 그림이 거칠어지듯, 코드북이 거칠면 "ㅈㅈ거리는" 합성음이 된다.

VoxCPM은 "도트 대신 수채화"다. 음성을 양자화하지 않고 연속적인 색면(잠재 벡터)으로 다루며, 확산(diffusion)이라는 "여러 번 덧칠하는 붓질"로 텍스트가 시키는 음성을 그려낸다. 그래서 디테일이 안 깎인다.

2왜 지금 주목받는가

트렌딩 이유와 기존 오픈소스 TTS 대비 차별점
먼저 알아둘 용어
TTS (Text-to-Speech, 음성 합성)
텍스트를 사람 목소리로 바꾸는 기술. 시리·내비게이션 음성·오디오북·게임 NPC 더빙·접근성 도구가 모두 TTS다. 1990년대엔 음성 조각을 이어 붙였고, 2010년대엔 신경망이 등장했으며, 지금은 LLM 스타일 모델이 주류다.

1. 토크나이저-프리 — 양자화 손실을 아예 빼버렸다

F5-TTS·CosyVoice·MaskGCT 같은 대부분의 오픈소스 TTS는 이산(discrete) 오디오 토큰을 거친다. 음성을 EnCodec·DAC 같은 코덱으로 정수 코드 시퀀스로 만들고, LM이 그 다음 코드를 예측하는 방식이다. 양자화 단계에서 디테일이 깎이고, 이게 합성음 특유의 "기계적인" 느낌의 원인 중 하나다.

VoxCPM은 이 양자화 단계를 통째로 들어낸다. AudioVAE V2가 음성을 연속 잠재 벡터로 압축하고, 모델은 그 연속 공간 안에서 확산(diffusion)으로 다음 음성 표현을 직접 그려낸다.

기존 신경 코덱 TTS의 약점
"음성 → 정수 코드 → 음성" 사이의 양자화 손실

코드북 크기가 무한하지 않으므로, 같은 음성이라도 가장 가까운 코드로 둥글어진다. 미세한 호흡·떨림·음색 변화가 코드 사이에 끼면 사라진다. 합성된 음성이 매끄럽긴 해도 "사람 같지 않은" 잔향이 남는 이유다.

VoxCPM의 방식
연속 잠재 공간 + 확산 자기회귀

잠재 벡터를 양자화하지 않고 연속값 그대로 다루며, 매 스텝마다 작은 확산 모델(LocDiT)이 다음 잠재를 매끄럽게 그려낸다. 코드북 둥글림이 없어 호흡·강세·감정 같은 미세한 결이 보존된다.

2. 한 모델 안에 4가지 음성 작업이 다 들어 있다

보통 음성 합성 도구는 "TTS만" 또는 "클로닝만" 한다. VoxCPM2는 같은 가중치 하나로 네 가지 작업을 처리한다.

사례 1 — TEXT-TO-SPEECH

가장 기본: 텍스트만 넣고 읽게 한다

중립적인 기본 화자가 자연스럽게 읽어준다. 한국어를 넣으면 한국어로, 일본어를 넣으면 일본어로 — 별도 언어 태그가 필요 없다.

사례 2 — VOICE DESIGN (음성 디자인)

참조 오디오 없이 자연어 묘사만으로 새 목소리

텍스트 앞 괄호 안에 (A young woman, gentle and sweet voice) 같은 묘사를 넣으면, 그 묘사대로 새 목소리가 만들어진다. 화자 임베딩을 따로 학습할 필요가 없다.

사례 3 — CONTROLLABLE CLONING

짧은 참조 한 조각으로 음색만 복제, 스타일은 명령으로

참조 오디오 한 조각을 주면 음색을 복제하고, 동시에 (slightly faster, cheerful tone) 같은 스타일 명령으로 감정·속도를 따로 조절한다. 음색은 유지하면서 표현만 바꿀 수 있다.

사례 4 — ULTIMATE CLONING (초정밀 클로닝)

참조 + 그 원문까지 줘서 음색·리듬·감정 전부 복제

참조 오디오에 해당 오디오의 transcript까지 함께 prompt로 넣으면, 모델이 "이 참조의 다음을 이어 읽는다"는 자세로 합성한다. 음색·리듬·감정·억양까지 가장 충실히 재현된다.

3. 30개 언어 — 한국어 포함, 단일 모델

아랍어·버마어·중국어·덴마크어·네덜란드어·영어·핀란드어·프랑스어·독일어·그리스어·히브리어·힌디어·인도네시아어·이탈리아어·일본어·크메르어·한국어·라오스어·말레이어·노르웨이어·폴란드어·포르투갈어·러시아어·스페인어·스와힐리어·스웨덴어·타갈로그어·태국어·터키어·베트남어, 거기에 중국어 방언 9종(광동어·쓰촨화·우어·등). 언어 태그도 안 줘도 됨 — 텍스트 보고 알아서 한다.

4. 48kHz 스튜디오 품질을 16kHz 입력으로

대부분의 오픈소스 TTS는 16/22/24kHz로 출력한다. VoxCPM2는 48kHz로 직접 출력한다. 핵심은 AudioVAE V2의 비대칭(asymmetric) 인코더-디코더다.

용어 풀이
비대칭 VAE + 슈퍼 리졸루션
VAE(Variational Autoencoder)는 데이터를 잠재 공간으로 인코딩하고 다시 복원하는 신경망이다. 보통은 입출력 샘플레이트가 같지만, AudioVAE V2는 16kHz 잠재 → 48kHz 출력으로 비대칭이다. 디코더가 부족한 고주파를 채워 넣는 슈퍼 리졸루션이 내장된 셈. 외부 업샘플러가 필요 없다.

5. RTX 4090 한 장으로 실시간

RTF(Real-Time Factor)는 "1초 음성을 만드는 데 걸리는 시간"이다. 0.3이면 1초 음성을 0.3초에 만든다는 뜻이라 충분한 실시간. VoxCPM2는 RTX 4090에서 표준 PyTorch RTF ~0.30, Nano-vLLM 가속 시 RTF ~0.13까지 떨어진다. 동시 요청 배치도 된다.

3기술 스택 전체 지도

모델 백본 / 학습·추론 / 서빙 / CLI

VoxCPM은 순수 Python 100% 프로젝트다(README 기준). 다만 단순 한 덩어리가 아니라 "모델 백본 + 학습·추론 파이프라인 + 서빙 + CLI/SDK" 네 레이어로 나뉜다.

① 모델 백본

용어 풀이
MiniCPM-4
OpenBMB가 만든 효율적 소형 LLM. VoxCPM2의 텍스트 이해 + 음성 잠재 예측을 담당하는 백본이다. 2B 파라미터로 소형 GPU에서도 굴릴 수 있게 설계됐다. 같은 회사가 만든 덕에 서빙 인프라(vLLM-Omni)를 공유한다.
용어 풀이
AudioVAE V2
음성을 연속 잠재로 인코딩하고 다시 복원하는 오디오 VAE. 16kHz로 받아 48kHz로 풀어주는 비대칭 구조 덕에 슈퍼 리졸루션이 자동으로 따라온다. 토대는 Descript의 DAC(신경 오디오 코덱)다.
용어 풀이
DiTAR (Diffusion Transformer AR, arXiv:2502.03930)
"확산을 자기회귀(AR)와 결합"한 backbone 아이디어. 다음 토큰을 한 번에 예측하는 대신, 매 스텝마다 작은 확산 모델로 다음 잠재를 그려낸다. VoxCPM의 LocDiT 모듈이 여기서 영감을 받았다.

② 학습·추론 파이프라인

레이어도구역할
딥러닝 프레임워크PyTorch ≥ 2.5, CUDA ≥ 12.0모델 정의·학습·추론
오디오 I/Osoundfile · librosa · torchaudio · torchcodecWAV/FLAC/MP3 디코딩·인코딩
모델 로딩transformers · huggingface-hub · modelscopeHuggingFace/ModelScope에서 가중치 다운로드
웹 데모Gradio ≥ 6app.py·lora_ft_webui.py의 WebUI
텍스트 정규화wetext · inflect숫자·약어 → 발음 가능한 문자열
ASR 평가FunASR합성 결과의 WER/CER 자동 측정
파인튜닝LoRA · 풀 SFT5~10분 오디오로 화자 적응
패키지 매니저uv (uv.lock)Rust 기반 초고속 의존성 해결
용어 풀이
LoRA (Low-Rank Adaptation, 저랭크 어댑터)
큰 모델 가중치 전체를 학습하는 대신, 작은 저랭크 행렬만 끼워 학습하는 효율적 파인튜닝 기법. 2B 모델도 5~10분 분량 데이터면 본인 목소리·특정 도메인에 적응시킬 수 있다. 핫스왑(어댑터 갈아 끼우기)이 쉬워 "한 모델로 여러 화자" 운영에 적합.

③ 서빙 / 배포

단일 GPU 추론 — NANO-VLLM-VOXCPM

a710128/nanovllm-voxcpm

Nano-vLLM 기반 전용 추론 엔진. RTX 4090에서 RTF 0.13까지. async API + 동시 요청 배치 + FastAPI HTTP 서버가 묶여 있다.

멀티테넌트 프로덕션 — VLLM-OMNI

vllm-project/vllm-omni

vLLM의 공식 옴니모달 확장. PagedAttention으로 KV 캐시를 페이지로 관리하고, /v1/audio/speech라는 OpenAI 호환 엔드포인트를 그대로 띄울 수 있다. 라이브러리 코드 한 줄도 안 바꾸고 OpenAI 클라이언트로 호출 가능.

CPU·엣지 추론 — 커뮤니티 포트 3종

VoxCPM.cpp · VoxCPM-ONNX · VoxCPMANE

GGML/GGUF 포팅(bluryar/VoxCPM.cpp), ONNX 익스포트(bluryar/VoxCPM-ONNX), Apple Neural Engine 백엔드(0seba/VoxCPMANE)까지 커뮤니티가 따로 만들었다. M2 맥북·라즈베리파이에서도 굴릴 수 있다.

ComfyUI 노드 워크플로우

ComfyUI-VoxCPM · ComfyUI_RH_VoxCPM · ComfyUI-VoxCPMTTS

ComfyUI(노드 기반 AI 워크플로우 도구) 노드가 세 개나 나와 있다. 다중 화자 생성, LoRA 핫스왑, 자동 ASR 검증 같은 후처리를 노드 그래프로 묶을 수 있다.

④ CLI / Python SDK

# 설치
pip install voxcpm

# CLI: 음성 디자인
voxcpm design --text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
              --control "Young female voice, warm and gentle" \
              --output out.wav

# CLI: 음색 클로닝
voxcpm clone --text "This is a voice cloning demo." \
             --reference-audio path/to/voice.wav \
             --output out.wav
# Python API
from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False)
wav = model.generate(
    text="VoxCPM2는 다국어 음성 합성에 적합합니다.",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)

4아키텍처 심화 분석

LocEnc → TSLM → RALM → LocDiT 4단계 파이프라인

VoxCPM2는 텍스트와 음성을 직접 매핑하지 않는다. 네 개의 모듈이 단계별로 정보를 다듬어 넘긴다. 이 분업이 "느린 자기회귀 + 빠른 확산"이라는 두 메커니즘을 한 모델 안에 공존하게 만드는 핵심이다.

┌─────────────────────────────────────────────────────────────────────┐ │ VoxCPM2 4-Stage Pipeline │ └─────────────────────────────────────────────────────────────────────┘ [ Text + optional "(young female...)" 묘사 ] │ ▼ ┌──────────────────────┐ │ ① LocEnc │ Local Encoder │ (텍스트·제어 임베딩)│ 짧은 컨텍스트 묶음 └──────────┬───────────┘ │ local context tokens ▼ ┌──────────────────────┐ │ ② TSLM │ Text-Speech Language Model │ (MiniCPM-4 백본) │ 다음 latent의 prior를 AR로 추정 └──────────┬───────────┘ │ next-latent prior (저속 6.25 Hz) ▼ ┌──────────────────────┐ │ ③ RALM │ Reference-Aware LM │ (참조 오디오 조건) │ 화자 timbre·prosody 조건 부여 └──────────┬───────────┘ │ conditioned prior ▼ ┌──────────────────────┐ │ ④ LocDiT │ Local Diffusion Transformer │ (Flow Matching) │ prior → 진짜 연속 latent로 그림 │ │ inference_timesteps ≈ 10 └──────────┬───────────┘ │ continuous audio latent ▼ ┌──────────────────────┐ │ AudioVAE V2 Decoder │ 비대칭 디코더 │ (16k → 48k SR) │ 48 kHz 풀밴드 PCM 복원 └──────────┬───────────┘ │ ▼ [ 48 kHz WAV ]

핵심 설계 패턴 ① — 토크나이저-프리 + Flow Matching

대부분의 신경 TTS는 음성을 코드북 인덱스 시퀀스로 만든다. VoxCPM은 그 단계를 빼고 연속 잠재 분포 자체를 다룬다. 이렇게 하면 코드북 양자화 손실이 없는 대신, 일반 회귀 모델 하나로 정답을 짚을 수 없다 — 그래서 Flow Matching 기반 확산이 끼어든다.

용어 풀이
Flow Matching
"노이즈에서 데이터로 가는 경로(흐름)"를 직접 학습하는 확산의 변종. DDPM·DDIM이 수십~수백 스텝을 쓰는 반면, Flow Matching은 ~10 스텝 안에 깨끗한 결과를 낸다. VoxCPM의 LocDiT가 이 방식을 쓰는 덕에 추론이 충분히 빠르다.

핵심 설계 패턴 ② — Voice Design은 별도 모델이 아니다

음성 디자인 기능은 추가 네트워크가 아니다. 입력 텍스트 맨 앞 괄호 안 묘사를 LocEnc가 잡아내고, RALM이 이걸 잠재 조건으로 변환한다. "한 모델 안에서 텍스트 묘사 → 화자 임베딩 → 합성"이 매끄럽게 이어진다.

# 한 텍스트 필드 안에 묘사와 본문이 같이 들어간다
text = "(A young woman, gentle and sweet voice)Hello, welcome to VoxCPM2!"

# 클로닝 + 스타일 제어도 같은 방식
text = "(slightly faster, cheerful tone)This is a controlled clone."

핵심 설계 패턴 ③ — Isolated Reference vs Continuation

VoxCPM1.5까지는 참조 오디오와 텍스트를 이어 붙여 "이 다음을 계속 읽어줘" 식의 클로닝만 됐다. VoxCPM2는 두 갈래로 갈린다.

A. ISOLATED REFERENCE (분리 참조)

참조에서 음색만 떼어내 새 텍스트를 처음부터 읽기

참조 오디오를 음색 조건으로만 쓰고, 텍스트는 새로 시작한다. 그 위에 스타일 명령((빠르게, 명랑한 톤))을 얹을 수 있어 표현 제어가 자유롭다.

B. CONTINUATION (이어 읽기 = Ultimate Cloning)

참조 + 그 transcript를 둘 다 prompt로 — 가장 충실한 복제

모델이 "참조의 바로 다음 한 문장이 이거다"라는 자세로 합성한다. 음색뿐 아니라 리듬·감정·억양·호흡까지 가장 충실히 따라온다. VoxCPM1.5와 동일한 방식.

핵심 설계 패턴 ④ — 6.25Hz 저토큰레이트

TSLM은 초당 6.25개의 잠재 토큰만 예측한다. 보통 신경 코덱 TTS가 50~75Hz 토큰을 쓰는 것과 비교하면 10배 압축이다. 같은 길이 음성을 짧은 시퀀스로 다룰 수 있어 RTF가 떨어진다. 대신 거친 잠재를 LocDiT가 매끄럽게 다듬어야 하므로, TSLM(저속·자기회귀)LocDiT(고속·확산)가 역할을 나눈 셈이다.

5디렉토리 구조 해부

src 레이아웃 + YAML 설정 + uv 잠금
VoxCPM/ ├── src/voxcpm/ # 본체 Python 패키지 (src 레이아웃) │ ├── __init__.py # VoxCPM 클래스 export │ ├── cli.py # `voxcpm` 명령어 진입점 │ ├── core.py │ ├── model/ # VoxCPMModel / VoxCPM2Model 정의 │ ├── modules/ # audiovae · locdit · locenc · minicpm4 · layers 서브모듈 │ ├── training/ # SFT / LoRA 트레이너 │ ├── utils/ │ └── zipenhancer.py ├── conf/voxcpm_v2/ # YAML 설정 │ ├── voxcpm_finetune_lora.yaml │ └── voxcpm_finetune_all.yaml ├── scripts/ │ └── train_voxcpm_finetune.py # 학습 진입 스크립트 (LoRA·풀 공통) ├── examples/ # input.txt 등 배치 처리 예시 ├── tests/ # 유닛 테스트 ├── assets/ # 로고·다이어그램 이미지 ├── app.py # Gradio 데모 (포트 8808) ├── app_old.py # 이전 버전 데모 (호환용) ├── lora_ft_webui.py # LoRA 학습+추론 통합 WebUI (포트 7860) ├── pyproject.toml # voxcpm 패키지 정의 ├── uv.lock # uv 의존성 잠금 ├── README.md / README_zh.md └── LICENSE # Apache-2.0

특이점 1 — src 레이아웃

패키지를 src/voxcpm처럼 한 단계 더 들어간 디렉토리에 둔다. 현재 디렉토리에서 실수로 import 되는 사고를 막아주는 정석. 학습·추론을 한 패키지로 묶어 배포하는 라이브러리 프로젝트가 자주 쓴다.

특이점 2 — 설정은 YAML, 진입은 한 스크립트

scripts/train_voxcpm_finetune.py --config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml 한 줄로 LoRA·풀파인튜닝을 같은 진입점에서 처리한다. Hydra·Lightning CLI 같은 자동 매핑 도구 없이도 간결.

특이점 3 — uv 채택

uv.lock이 루트에 있다는 건 pip+venv 대신 uv(Rust로 만든 초고속 패키지 매니저)로 의존성을 잠가둔다는 뜻. 최근 Python ML 프로젝트가 uv로 옮겨가는 흐름의 대표 사례다.

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가
학습 포인트 1 — DIFFUSION

확산 모델의 흐름 잡기 (DDPM → DDIM → Flow Matching)

이미지에서 시작한 확산이 음성·잠재 공간으로 일반화되는 진화 과정을 정리해보자. 마지막 단계인 Flow Matching이 VoxCPM의 LocDiT 핵심이다.

실습 아이디어: MNIST에 Flow Matching을 10 step으로 구현해 깨끗한 숫자 생성. 같은 코드 구조가 LocDiT 안에서 동작한다.

학습 포인트 2 — NEURAL AUDIO CODEC

EnCodec / DAC / AudioVAE V2의 차이

RVQ(Residual Vector Quantization, 잔차 벡터 양자화)가 있는 코덱과 VoxCPM처럼 연속 잠재만 쓰는 VAE 코덱이 어떻게 다른지가 핵심.

실습 아이디어: Descript의 descript-audio-codec으로 본인 목소리를 1.5kbps에 인코딩·디코딩 → 어디가 깎이는지 직접 들어보기.

학습 포인트 3 — LORA FINE-TUNING

2B 모델을 5~10분 데이터로 화자 적응

전체 가중치를 건드리는 SFT 대신 작은 저랭크 어댑터만 학습. 학습이 끝나면 어댑터 파일 하나만 갈아 끼워 화자를 바꾼다.

실습 아이디어: lora_ft_webui.py를 띄우고 본인 목소리 5분 녹음으로 LoRA 학습 → 같은 텍스트를 본인 음성으로 읽게 만들기.

학습 포인트 4 — VLLM PAGEDATTENTION

LLM 서빙 표준이 멀티모달로 확장되는 과정

vLLM의 PagedAttention과 연속 배칭(continuous batching)이 TTS에도 어떻게 들어가는지. OpenAI 호환 엔드포인트가 표준화되는 흐름도 같이 본다.

실습 아이디어: vllm serve openbmb/VoxCPM2 --omni로 띄우고 OpenAI SDK로 /v1/audio/speech 호출. 라이브러리 코드 한 줄도 안 바꾸고 백엔드 교체 체험.

학습 포인트 5 — STREAMING TTS

긴 텍스트의 첫 음성까지 지연 줄이기

긴 텍스트를 통째로 합성하면 첫 음성이 나오기까지 수 초가 걸린다. generate_streaming 같은 청크 단위 합성 + 큐 기반 재생 설계.

실습 아이디어: FastAPI + WebSocket으로 텍스트를 받아 청크 PCM을 흘리고, 브라우저 AudioWorklet으로 실시간 재생하는 데모 만들기.

7하드웨어·시스템 요구사항

로컬·프로덕션·CPU 케이스별 권장 구성
항목VoxCPM2 (2B)VoxCPM1.5 (0.6B)VoxCPM-0.5B
VRAM~8 GB~6 GB~5 GB
RTF (RTX 4090)~0.30~0.15~0.17
RTF (Nano-vLLM)~0.13~0.08~0.10
출력 샘플레이트48 kHz44.1 kHz16 kHz
언어 수302 (zh/en)2 (zh/en)
소프트웨어요구 버전
Python≥ 3.10 (< 3.13)
PyTorch≥ 2.5.0
CUDA≥ 12.0
권장 구성
로컬 개발

RTX 3090 / 4070 Ti SUPER 이상 (12GB+). 16GB면 마진 충분.

권장 구성
단일 인스턴스 프로덕션

RTX 4090 24GB + Nano-vLLM 가속. 동시 요청 적당히, 응답 빠름.

권장 구성
멀티테넌트 서버

A100 / H100 + vLLM-Omni. PagedAttention KV 캐시 공유 + 동시 연결 수십 건 처리.

CPU·맥 사용자라면

VoxCPM.cpp(GGML/GGUF 포팅) 또는 VoxCPMANE(Apple Neural Engine 백엔드)로 갈아탄다. 양자화된 GGUF를 쓰면 M2 맥북에서도 의미 있는 속도로 합성 가능하다 — GPU가 없어도 시도해볼 수 있다.

8직접 해볼 수 있는 실습 과제

난이도별 5개
EASY · 1~2시간

① 한국어 TTS 베이스라인 측정

VoxCPM2를 그대로 깔고 한국어 문장 20개를 합성한다. cfg_value를 1.5 / 2.0 / 2.5로 바꿔가며 음질을 청취 비교.

배우는 것: CFG(Classifier-Free Guidance, 무조건부 가이던스) 값이 클수록 텍스트 충실도는 올라가지만 자연스러움이 떨어지는 트레이드오프를 귀로 직접 체감.

EASY · 2~3시간

② Voice Design 프롬프트 라이브러리

"(중후한 50대 남성, 라디오 DJ 톤)" / "(밝고 빠른 20대 여성, ASMR 속삭임)" / "(피곤한 새벽 3시 목소리)" 같은 자연어 묘사 30개를 만들어 같은 한국어 문장을 30번 합성.

배우는 것: 어떤 묘사 어휘(나이·성별·감정·환경)가 잘 통하고 어떤 게 무시되는지 패턴 정리. 그대로 한국어 Voice Design 프롬프트 가이드가 된다.

MID · 약 1주

③ 내 목소리 LoRA 파인튜닝

본인 음성 5~10분 + transcript 준비. conf/voxcpm_v2/voxcpm_finetune_lora.yaml을 조금 손봐서 LoRA를 학습하고, 베이스 모델 vs LoRA 모델로 같은 텍스트를 합성해 비교.

배우는 것: 데이터 정제(노이즈 제거·세그먼테이션)부터 LoRA 학습률·rank 설정, 어댑터 핫스왑까지 한 사이클을 직접 돈다.

MID · 약 1주

④ FastAPI 스트리밍 TTS 서버

generate_streaming을 사용해 텍스트를 받아 WebSocket으로 PCM 청크를 흘리는 작은 서버 구현. 브라우저에서 텍스트 → 실시간 음성 재생까지.

배우는 것: 첫 음성까지 지연(TTFB) 측정·튜닝, 청크 크기와 버퍼링 트레이드오프, 끊김 없이 재생하기 위한 큐 관리.

HARD · 2~3주

⑤ vLLM-Omni 기반 멀티테넌트 음성 SaaS 프로토타입

vllm serve openbmb/VoxCPM2 --omni로 OpenAI 호환 엔드포인트를 띄우고, 인증·API 키 발급·과금·요청 로그를 묶는다. 동시 사용자 10명 시뮬레이션 → RTF·지연·VRAM 측정.

배우는 것: PagedAttention 기반 연속 배칭이 TTS에서 어떻게 동작하는지 직접 관찰. 프로덕션 TTS 인프라의 핵심 모듈을 손에 익힌다.

9관련 기술 심화 학습 로드맵

4주 코스
WEEK 1

음성 합성의 큰 그림 — 이전 세대 TTS 흐름

Tacotron 2 → FastSpeech 2 → VITS → 신경 코덱 TTS(VALL-E·CosyVoice) → Flow Matching TTS(F5-TTS·VoxCPM)의 진화. 각 단계에서 "왜 다음 단계가 필요했나"를 묻는다.

WEEK 2

확산 + Flow Matching 수학

Sohl-Dickstein 2015 → Ho et al. 2020(DDPM) → Song et al. 2021(DDIM) → Lipman et al. 2023(Flow Matching). 마지막으로 DiTAR(arXiv:2502.03930)를 정독하고 MNIST에 Flow Matching을 구현.

WEEK 3

신경 코덱 & VAE

EnCodec, DAC, AudioVAE V2의 흐름. RVQ와 연속 VAE의 차이, 비대칭 인코더-디코더가 슈퍼 리졸루션을 만들어 내는 메커니즘. descript-audio-codec으로 본인 음성을 1.5kbps에 압축·복원해 보기.

WEEK 4

서빙 & MLOps

vLLM 공식 블로그 + Kwon et al. 2023으로 PagedAttention을 이해. vLLM-Omni 예제로 VoxCPM2를 띄우고, locust·wrk로 부하 테스트 → 동시 요청 수에 따른 RTF·VRAM 변화 정리.

10핵심 키워드 사전

한 번에 정리해두면 좋은 용어들
용어
TTSText-to-Speech. 텍스트 → 사람 목소리
Tokenizer-Free음성·텍스트를 정수 코드로 자르지 않고 연속 표현으로 다루는 접근
Diffusion AR다음 토큰을 회귀로 한 번에 예측이 아니라, 작은 확산 스텝으로 다음 잠재를 그려내는 방식
Latent (잠재 표현)신경망이 음성을 압축한 "본질" 벡터. AudioVAE V2 잠재 공간에서 모든 일이 일어남
VAEVariational Autoencoder. 데이터를 잠재 분포로 인코딩하고 복원하는 신경망
Flow Matching노이즈→데이터 경로를 직접 학습하는 확산 변종. ~10 step으로 충분
CFGClassifier-Free Guidance. 조건부·무조건부 예측 가중합으로 텍스트 충실도 조절
RTFReal-Time Factor. 1초 음성 만드는 데 걸리는 시간 비율. 1.0 미만이면 실시간 가능
WER / CER합성 음성을 ASR로 받아쓰게 한 뒤 원문과 비교한 오류율. 명료도 지표
SIMSpeaker Similarity. 합성 화자가 참조 화자와 얼마나 비슷한지를 임베딩 코사인 유사도로
LoRALow-Rank Adaptation. 큰 모델에 작은 어댑터만 끼워 효율적으로 파인튜닝
SFTSupervised Fine-Tuning. 모델 전체를 지도학습으로 적응시키는 일반 파인튜닝
PagedAttentionvLLM 핵심. KV 캐시를 OS 가상 메모리처럼 페이지 단위로 관리해 GPU 메모리 절약
Continuous Batching요청이 끝나기 전이라도 새 요청을 같은 배치에 끼워 처리. GPU 활용도 ↑
DACDescript Audio Codec. SOTA 신경 오디오 코덱. AudioVAE V2의 토대
MiniCPM-4OpenBMB의 소형 LLM. VoxCPM2의 텍스트-음성 백본(TSLM)
ComfyUI노드 그래프 기반 AI 워크플로우 도구. 원래 Stable Diffusion용 → LLM·TTS로 확장
Apache-2.0관대한 오픈소스 라이선스. 상업 사용·재배포·사유 결합 모두 허용

11참고 링크

더 깊이 파고들 곳

공식 자료

논문 / 기술 보고서

생태계 / 커뮤니티 포트