VibeVoice는 Microsoft가 공개한 오픈소스 Voice AI 모델 패밀리로, 최대 90분 길이의 멀티스피커 음성 합성(TTS)과 60분 오디오를 한 번에 처리하는 음성 인식(ASR)을 지원합니다. Hugging Face Transformers 4.51.3+에 공식 통합되어 from transformers import ...로 바로 사용할 수 있습니다.
기존 TTS 도구는 짧은 문장 단위로만 음성을 생성합니다. VibeVoice는 팟캐스트 한 편 분량의 스크립트를 통째로 넣으면, 화자 A~D의 구분된 목소리로 90분짜리 오디오를 한 번에 뽑아냅니다.
비결은 초당 7.5개 토큰이라는 극도로 낮은 프레임레이트입니다. 60분 오디오가 고작 27,000토큰으로 표현되어 LLM의 컨텍스트 창 안에 들어갑니다.
VibeVoice가 폭발적 관심을 받은 이유는 크게 네 가지입니다. 90분 TTS라는 전례 없는 생성 길이, 60분 단일패스 ASR의 혁신, Microsoft + MIT 라이선스라는 조합, 그리고 Hugging Face Transformers 공식 통합입니다.
대부분의 TTS 모델은 수십 초 단위까지만 자연스럽게 생성하고, ASR 모델은 긴 오디오를 작은 청크로 잘라서 처리합니다. 분할 경계에서 맥락이 끊기고, 화자 추적이 불가능합니다.
초당 7.5개 토큰이라는 극저 프레임레이트 덕분에 60분 오디오가 27,000토큰으로 압축됩니다. LLM이 오디오 전체를 한 컨텍스트에 담아 처리하므로 분할 없이 일관된 음질과 화자 구분이 가능합니다.
README 공지에 따르면, widespread misuse(광범위한 오남용) 우려로 VibeVoice-TTS 구현 코드가 2025-09-05부로 레포에서 삭제되었습니다. 현재 GitHub 레포에서 직접 접근 가능한 코드는 ASR·Realtime 모델뿐입니다. TTS 모델 가중치는 HuggingFace Hub에 잔존하나, 코드 없이는 직접 활용이 어렵습니다.
따라서 §8의 "TTS로 팟캐스트 생성" 과제 등 TTS 코드를 직접 실행하는 실습은 현재 시점에서 재현이 어려울 수 있습니다.
| 특성 | VibeVoice | OpenAI TTS | ElevenLabs | Bark |
|---|---|---|---|---|
| 최대 생성 길이 | 90분 | ~수 분 | ~수 분 | ~수십 초 |
| 멀티스피커 | 4명 | 1명 | 1명 | 1명 |
| ASR 통합 | 60분 단일패스 | Whisper 별도 | 없음 | 없음 |
| 오픈소스 | MIT | 없음 | 없음 | MIT |
| 실시간 스트리밍 | 300ms 지연 | 지원 | 지원 | 없음 |
| 카테고리 | 기술 |
|---|---|
| 기반 언어 | Python ≥ 3.9 |
| 딥러닝 프레임워크 | PyTorch |
| 모델 허브 | Hugging Face Transformers (4.51.3+) |
| 추론 가속 | vLLM (자체 플러그인) |
| 오디오 처리 | librosa, scipy, pydub, av |
| 확산 모델 | diffusers (Hugging Face) |
| 웹 데모 | Gradio |
| 실시간 통신 | aiortc (WebRTC), FastAPI, uvicorn |
| 항목 | 내용 |
|---|---|
| 모델 호스팅 | Hugging Face Hub (microsoft/VibeVoice-1.5B, microsoft/VibeVoice-ASR) |
| 추론 서버 | vLLM 플러그인으로 고속 배치 추론 |
| 데모 배포 | Google Colab, Gradio 웹 플레이그라운드, aka.ms/vibevoice-asr |
전통적인 TTS는 "텍스트→멜스펙트로그램→파형" 파이프라인을 사용했습니다. VibeVoice는 LLM의 next-token prediction + 확산 모델의 고품질 생성을 결합합니다.
모델 학습 시 컨텍스트 길이를 점진적으로 늘려 긴 시퀀스 처리 능력을 단계적으로 습득합니다.
# pyproject.toml에서 vLLM 플러그인 등록
[project.entry-points."vllm.general_plugins"]
vibevoice = "vllm_plugin"
| 파일 | 역할 | 배울 점 |
|---|---|---|
| modeling_vibevoice.py | TTS 메인 모델 (LLM + Diffusion) | Next-token diffusion 구현 방법 |
| modeling_vibevoice_asr.py | ASR 모델 (음성→텍스트+화자+시간) | 멀티태스크 출력 구조 |
| modular_vibevoice_diffusion_head.py | 확산 생성 헤드 | DDPM + CFG 구현 |
| modular_vibevoice_tokenizer.py | σ-VAE 기반 음성 토크나이저 | 초저프레임레이트 토큰화 |
| streamer.py | 실시간 스트리밍 처리 | WebRTC 기반 실시간 음성 전송 |
LLM의 autoregressive 생성과 diffusion 모델의 고품질 생성을 결합하는 방식, 텍스트와 음성을 하나의 토큰 시퀀스로 통합하는 방법, Classifier-Free Guidance(CFG)가 생성 품질에 미치는 영향을 배웁니다.
import torch
import torch.nn as nn
class MiniDiffusionHead(nn.Module):
def __init__(self, hidden_dim=256):
super().__init__()
self.denoiser = nn.Sequential(
nn.Linear(hidden_dim * 2, hidden_dim), # condition + noisy input
nn.ReLU(),
nn.Linear(hidden_dim, hidden_dim),
)
def forward(self, condition, x_t, t):
"""condition: LLM hidden state, x_t: noisy acoustic, t: timestep"""
combined = torch.cat([condition, x_t], dim=-1)
return self.denoiser(combined)
σ-VAE와 일반 VAE의 차이점, 왜 이산 토큰 대신 연속 토큰을 선택했는지, 3200x 다운샘플링의 구현 방식(7단계 Transformer 블록)을 배웁니다.
vLLM에 커스텀 모델을 플러그인으로 등록하는 방법, pyproject.toml의 entry_points 메커니즘, 배치 추론 최적화 전략을 배웁니다.
커스텀 모델을 Transformers 라이브러리에 통합하는 패턴, configuration_*.py + modeling_*.py 구조, AutoModel/AutoConfig 호환 설계 방법을 배웁니다.
AI 워터마크 삽입(imperceptible watermark), AI 면책 고지 오디오 자동 삽입, 해시 기반 추론 로깅으로 남용 탐지 패턴을 배웁니다.
| 구성 | 최소 사양 | 권장 사양 |
|---|---|---|
| GPU | NVIDIA GPU 16GB VRAM | A100 40GB / RTX 4090 24GB |
| RAM | 32GB | 64GB |
| 스토리지 | 20GB | SSD 50GB+ |
| CUDA | 11.8+ | 12.1+ |
| 구성 | 최소 사양 | 권장 사양 |
|---|---|---|
| GPU | A100 40GB / RTX 4090 24GB | A100 80GB × 2 |
| RAM | 64GB | 128GB |
| 스토리지 | 40GB | SSD 100GB+ |
| 구성 | 최소 사양 |
|---|---|
| GPU | RTX 3060 12GB 이상 |
| RAM | 16GB |
ASR 플레이그라운드에서 테스트 후 Python 코드로 직접 실행합니다. 목표: 10분짜리 회의 녹음에서 화자별 대화록 생성.
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
model = AutoModelForSpeechSeq2Seq.from_pretrained("microsoft/VibeVoice-ASR")
processor = AutoProcessor.from_pretrained("microsoft/VibeVoice-ASR")
# 오디오 파일 로드 후 텍스트 + 화자 + 타임스탬프 추출
2명의 화자가 대화하는 5분짜리 팟캐스트 오디오를 생성합니다. Speaker 1과 Speaker 2의 음색, 감정 변화를 관찰합니다.
vLLM을 사용하여 VibeVoice TTS API 서버를 구축하고 배치 처리 성능을 측정합니다.
python -m vllm.entrypoints.openai.api_server \
--model microsoft/VibeVoice-1.5B \
--trust-remote-code
VibeVoice-Realtime + FastAPI + WebRTC로 실시간 음성 응답 시스템을 구축합니다. 텍스트 입력에서 300ms 이내 음성 스트리밍 시작, LLM 응답과 연결한 Voice Agent 프로토타입을 제작합니다.
| 일 | 학습 내용 | 리소스 |
|---|---|---|
| 1-2일 | 오디오 신호 처리 기초 (샘플레이트, 스펙트로그램, 멜스케일) | librosa 튜토리얼 |
| 3-4일 | VAE 기초 이론 + σ-VAE 논문 읽기 | arxiv:2508.19205 |
| 5-7일 | Hugging Face Transformers 음성 모델 사용법 | HF Audio Course |
| 일 | 학습 내용 | 리소스 |
|---|---|---|
| 1-2일 | DDPM 기초 | Ho et al. 2020 논문 |
| 3-4일 | Classifier-Free Guidance (CFG) 이해 | Ho & Salimans 2022 |
| 5-7일 | DPM-Solver 추론 가속 방법 | diffusers 라이브러리 실습 |
| 일 | 학습 내용 | 리소스 |
|---|---|---|
| 1-2일 | Qwen2.5 아키텍처 분석 | Qwen 기술 리포트 |
| 3-4일 | Next-Token Diffusion 논문 분석 | arxiv:2412.08635 |
| 5-7일 | VibeVoice modeling_vibevoice.py 코드 리딩 | GitHub 소스코드 |
| 일 | 학습 내용 | 리소스 |
|---|---|---|
| 1-2일 | vLLM 아키텍처와 PagedAttention | vLLM 공식 문서 |
| 3-4일 | WebRTC 기초 + aiortc 실습 | aiortc 문서 |
| 5-7일 | FastAPI 기반 실시간 음성 API 서버 구축 | VibeVoice demo/ 참고 |
| 용어 | 설명 |
|---|---|
| TTS | Text-to-Speech. 텍스트를 음성으로 변환하는 기술. VibeVoice의 핵심 기능 |
| ASR | Automatic Speech Recognition. 음성을 텍스트로 변환. 60분 단일패스가 혁신 포인트 |
| Speaker Diarization | "누가 말했는가"를 자동 구분하는 기술. 회의록 작성에 필수 |
| Diffusion Model | 노이즈에서 시작해 점진적으로 깨끗한 데이터를 만드는 생성 모델 |
| DDPM | Denoising Diffusion Probabilistic Models. 확산 모델의 수학적 프레임워크 |
| CFG | Classifier-Free Guidance. 조건부 생성의 품질을 높이는 기법 |
| DPM-Solver | 확산 모델의 추론 속도를 높이는 수학적 솔버. 스텝 수를 줄여도 품질 유지 |
| σ-VAE | VAE의 변형. VibeVoice가 음성을 연속 토큰으로 압축하는 데 사용 |
| 7.5Hz 프레임레이트 | 초당 7.5개 토큰으로 오디오를 표현. 일반 50~100Hz 대비 극도로 낮아 긴 오디오 처리 가능 |
| vLLM | LLM 추론을 가속화하는 오픈소스 라이브러리. PagedAttention으로 GPU 메모리 효율화 |
| BF16 | BFloat16. 16비트 부동소수점 형식. FP16보다 표현 범위가 넓어 학습/추론에 유리 |
| Curriculum Learning | 쉬운 것부터 어려운 것 순으로 학습. VibeVoice는 짧은→긴 시퀀스 순서로 학습 |
| Hotword | ASR에서 특정 용어의 인식률을 높이기 위해 사전 등록하는 단어 |
| WebRTC | 웹 브라우저 간 실시간 통신 프로토콜. VibeVoice-Realtime의 스트리밍에 사용 |
| Autoregressive | 이전 출력을 다음 입력으로 사용하며 순차적으로 생성하는 방식. GPT와 같은 원리 |
| Next-Token Diffusion | LLM의 next-token prediction과 diffusion model을 결합한 VibeVoice의 핵심 생성 방식 |