vibevoice.cpp: Microsoft VibeVoice (TTS + long-form ASR with diarization) 를
요약
이 글은 Microsoft VibeVoice(TTS 및 장문 ASR, 화자 식별 포함)를 순수 C++ ggml 포팅 버전인 vibevoice.cpp로 출시한 내용을 담고 있습니다. 이 프로젝트는 TTS와 ASR 기능을 모두 제공하며, 특히 CPU 환경에서도 높은 성능을 보여주며 다양한 백엔드(CUDA, Metal 등)를 지원합니다. 핵심은 Python 의존성 없이 독립적인 C++ 라이브러리 형태로 배포되어 임베딩 및 시스템 통합에 매우 용이하다는 점입니다.
핵심 포인트
- Microsoft VibeVoice의 순수 C++ ggml 포팅 버전인 vibevoice.cpp가 출시되었습니다.
- TTS(음성 클로닝)와 화자 식별을 포함한 장문 ASR 기능을 모두 지원합니다.
- CPU, CUDA, Metal 등 다양한 백엔드를 지원하는 단일 바이너리 또는 라이브러리 형태로 제공되어 임베딩에 최적화되어 있습니다.
- Python이나 vLLM 같은 복잡한 환경 의존성 없이 독립적으로 실행할 수 있어 시스템 통합이 용이합니다.
몇 주 전 vibevoice.cpp를 출시했습니다. 이는 Microsoft VibeVoice (음성 클로닝이 포함된 speech-to-speech 모델, https://github.com/microsoft/VibeVoice) 의 순수 C++ ggml 포팅입니다. 엔진이 "첫 번째 포팅"을 넘어 다른 사람들이 실제로 실행하고 싶을 만한 수준으로 성장했기 때문에, 여기에서 후속 게시물을 올리고 싶습니다.
이 작업은 LocalAI 팀의 <3 로 제공되었습니다!
기능:
- 사전 변환된 음성 프롬프트를 사용한 TTS (상류 프로젝트의 .pt 음성, 또는 스크립트/convert_voice_to_gguf.py 를 통해 변환된 ours 또는 yours): 30 초 참조 클립을 주면, 복제된 음성의 24kHz 음성 생성. 사전 변환된 GGUFs(0.5B 실시간 모델) 를 https://huggingface.co/mudler/vibevoice.cpp-models 에 제공.
- 화자 식별을 포함한 장문 ASR: 7B 파라미터 모델, JSON 세그먼트 {start, end, speaker, content} 반환. 최대 17 분까지 테스트됨.
- 한 번에 오디오 처리.
백엔드: CPU (CPU 전용 기준), CUDA, Metal, Vulkan, ggml 의 backend dispatch 를 통한 hipBLAS. 단일 바이너리 또는 libvibevoice.so + 평면 C ABI 를 통한 임베딩 (purego/cgo/dlopen 친화적).
숫자:
추론 RTF 최대 RSS
68s 샘플, CUDA Q4_K (GB10): 28 s 0.41 ~6 GB
68s 샘플, CPU Q4_K (R9): 150 s 2.20 ~8 GB
17min 오디오, CPU Q8_0: 1929 s 1.94 ~26 GB
Microsoft Python + Transformers + vLLM 플러그인과의 비교:
- 동일한 Qwen2.5 7B/0.5B 백본, 동일한 DPM-Solver 확산 헤드, 동일한 윈도우드 프리필 (mlx-audio 패턴에 따라 5 텍스트 토큰 / 6 음성 프레임).
- 닫힌 루프 TTS→ASR 테스트는 고정된 시드에서 100% 소스 단어 회상을 확인합니다. CI 에서 실행됨.
- 추론 시 Python 없음, vLLM 없음, torch 없음.
한계점 / 솔직한:
- CPU 의 17 분 오디오 피크는 엔코더 활성화 풀 + 14 GB Q8_0 가중치 때문에 여전히 ~26 GB 입니다. Q4_K 는 모델 측면을 절감 (~10 GB 디스크), 하지만 엔코더 풀은 별도의 작업을 필요로 합니다.
- 확산 헤드는 잠재 프레임당 20 개의 작은 그래프를 생성합니다.那里的 그래프 재사용이 다음 명백한 승리입니다.
- 아직 스트리밍 출력 없음. 완전한 WAV / 전체 전사본을 방출합니다.
- ASR 전사본 품질은 상류 프로젝트가 제공하는 것과 동일합니다. 17 분 이탈리아 오디오에서 복원된 전사본은 자연스러운 문장 경계를 통해 충실합니다.
저널: https://github.com/mudler/vibevoice.cpp (MIT)
모델: https://huggingface.co/mudler/vibevoice.cpp-models
LocalAI 통합: 이 작업은 LocalAI 팀의 <3 로 수행되었습니다. vibevoice.cpp 는 이미 준비된 상태로 사용할 수 있는 백엔드입니다!
질문과 피드백에 답변하고 싶습니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기