본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 06. 26. 08:33

audio.cpp: 1개의 C++/ggml 런타임에서 구동되는 12개의 오디오 모델 (Qwen3-TTS, PocketTTS, Vevo2 등)

요약

ggml 기반의 네이티브 C++ 오디오 추론 프레임워크인 audio.cpp를 소개합니다. Qwen3-TTS, Vevo2 등 12개의 모델을 단일 런타임에서 구동하며, Python 대비 압도적인 추론 속도와 효율적인 워크플로우 공유를 목표로 합니다.

핵심 포인트

  • ggml 기반의 단일 C++ 런타임으로 12개 오디오 모델 지원
  • Python 환경 대비 최대 5배 이상의 실행 속도 향상
  • TTS, ASR, 음성 변환 등 다양한 오디오 태스크 통합 관리
  • 실제 서비스 환경에 최적화된 웜 세션(warm-session) 성능 강조

저는 ggml을 기반으로 구축된 오디오 모델용 네이티브 C++ 추론 프레임워크인 audio.cpp를 작업해 왔습니다.

이 프레임워크는 현재 25개의 모델 제품군을 보유하고 있지만, 현재 상태를 정확히 말씀드리고자 합니다. 현재 저장소(repo)에 출시되어 일반적인 사용이 가능한 모델은 12개입니다. 통합(integration) 또는 최적화(optimization) 단계에 있는 것은 출시된 것으로 간주하지 않습니다.

출시된 세트는 이미 꽤 많은 범위를 커버하고 있습니다:

  • TTS / 음성 복제 (voice cloning) / 음성 설계 (voice design): Chatterbox, MioTTS, OmniVoice, PocketTTS, Qwen3-TTS 및 VoxCPM2
  • ASR / 정렬 (alignment) / VAD: Qwen3-ASR, Qwen3 Forced Aligner 및 Silero VAD
  • 음성 변환 (voice conversion) / 코덱 (codec) / 편집 (editing): Seed-VC, MioCodec 및 Vevo2

Vevo2는 TTS, 노래 생성 (singing generation), 노래 변환 (singing conversion) 및 편집도 처리하므로, 이는 단순한 TTS 포트 모음 그 이상으로 성장했습니다.

핵심은 모델 동물원 (model zoo)을 만드는 것이 아닙니다.
모든 오디오 모델을 별도의 Python 환경, 의존성 트리 (dependency tree), CLI, 배치 로직 (batching logic) 및 배포 설정이 필요한 개별적인 섬처럼 취급하는 것을 중단하는 것입니다. 저는 이 모델들이 동일한 런타임 (runtime), 세션 처리 (session handling), CLI, 서버, 오디오 유틸리티를 공유하고, 궁극적으로는 동일한 상위 수준의 워크플로우 (workflows)를 공유하기를 원합니다.

성능은 이 프로젝트가 단순히 배포하기 쉬운 수준을 넘어 진정으로 유용하다고 느껴지기 시작한 지점입니다.

이 결과는 양자화 (quantization)를 적용하지 않은 원본 가중치(weights)를 사용하여 Ubuntu/CUDA 환경에서 측정되었습니다. 수치는 audio.cpp의 실제 실행 시간 (wall time)을 대응하는 Python 참조 경로와 비교한 것입니다:

  • PocketTTS: 1-shot 실행 시 3.68배 빠름, warm session에서 3.22배, 롱폼 (long-form)에서 3.15배 빠름
  • Qwen3-TTS: 1-shot 실행 시 1.83배 빠름, warm session에서 2.74배, 롱폼에서 3.06배 빠름
  • Vevo2: 1-shot 실행 시 5.03배 빠름, warm session에서 1.75배, 롱폼에서 1.77배 빠름
  • MioTTS: 1-shot 실행 시 2.73배 빠름, warm session에서 2.28배 빠름
  • Chatterbox: 롱폼에서 1.58배 빠름

롱폼 처리량 (throughput)을 통해 이러한 수치를 더 쉽게 파악할 수 있습니다.

동일한 1,028단어 입력을 사용했을 때:
PocketTTS: 5분 53.12초 분량의 오디오를 7.30초 만에 생성 — 48.40배 실시간 (real time)
OmniVoice: 5분 57.00초 분량을 17.77초 만에 생성 — 20.09배 실시간 (real time)
Vevo2: 7분 37.68초 분량을 52.47초 만에 생성 — 8.72배 실시간 (real time)
해당 벤치마크에 포함된 모든 출시된 TTS 제품군은 4.34배에서 48.40배 사이의 범위로 실시간보다 빠르게 작동했습니다.
과장하고 싶지는 않습니다. 모든 경로가 아직 Python을 능가하는 것은 아니며, README에서도 성능이 낮은 결과들을 그대로 공개하고 있습니다. 하지만 제가 가장 중요하게 생각하는 것은 웜 세션 (warm-session) 수치입니다. 이는 모델을 한 번 로드한 후 여러 요청에 걸쳐 재사용하는 실제 서비스 환경에 더 가깝습니다.
공유 런타임 (shared runtime)은 더 큰 도박입니다.
현재의 동일 언어 재더빙 (redubbing) 파이프라인은 418초 분량의 녹음 파일을 가져와 관리 가능한 청크 (chunks)로 나누고, Qwen3-ASR로 전사 (transcribe)하며, 전사 내용을 병합한 뒤 Qwen3-TTS를 사용하여 대상 참조 음성으로 음성을 재생성합니다. 이 모든 과정이 단 하나의 CLI 명령어로 이루어집니다.
추론 (inference) 및 서버 경로는 네이티브 C++입니다. 모델 패키지를 다운로드하고 변환하기 위한 Python 유틸리티가 있지만, Python은 실제 추론 경로의 일부가 아닙니다.
아직 초기 단계입니다. 백엔드 지원 범위는 모델에 따라 다르며, 프레임워크 전반의 스트리밍 (streaming)은 아직 일반적으로 지원되지 않으므로 현재의 경로들은 여전히 오프라인 방식으로 취급되어야 합니다. 프레임워크는 모델이 지원하는 경우 CPU, CUDA, Vulkan 및 Metal을 대상으로 할 수 있습니다.
리포지토리 (Repo):
https://github.com/0xShug0/audio.cpp
다른 하드웨어에서의 벤치마크, 실패 사례, API 피드백 및 PR (Pull Request)을 매우 환영합니다.
submitted by /u/Acceptable-Cycle4645
[link] [comments]

AI 자동 생성 콘텐츠

본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0