블로그·
음성 클로닝
May 17, 2026

48 kHz로 목소리를 클로닝하기
VoxCPM2로.

새로운 TTS 모델이 방금 Soniqo에 들어왔습니다. 당신의 노트북에서 돌아가고, 스튜디오 품질의 48 kHz 오디오를 출력하며, 짧은 클립 하나에서 목소리를 클로닝합니다. 이 글은 그것으로 무엇을 만들 수 있는지, 목소리를 클로닝하는 세 가지 방법, 그리고 모델이 내부에서 어떻게 작동하는지를 친근하게 살펴봅니다.

무엇을 만들 수 있나

클로닝이 로컬로 돌 때 바뀌는 네 가지.

기기에서 클로닝을 돌리면 네 가지 속성이 한꺼번에 열립니다 — 프라이버시, 오프라인 사용, 호출당 비용 없음, 그리고 목소리의 완전한 소유. 각각은 다른 방식으로는 만들기 까다로운 제품 부류를 엽니다.

개인 오디오북 내레이터

부모가 읽는 30초를 녹음하세요. 오디오북 앱은 이후 그 목소리로 어떤 장이든 낭독합니다 — 같은 온기, 같은 억양으로, 세션마다 로컬 생성.

다국어 크리에이터 콘텐츠

유튜버와 팟캐스터는 30개 언어에서 일관된 목소리 하나를 유지합니다. 영어로 한 번 녹음하고, 같은 에피소드를 일본어, 스페인어, 힌디어로 성우진 없이 내보내세요.

접근성과 음성 뱅킹

목소리를 잃을 위기에 있는 사람은 짧은 클립에 목소리를 저장하고, 일반 TTS 엔진이 아니라 자신처럼 들리는 보조 기술로 계속 말할 수 있습니다.

온디맨드 제품 보이스

원하는 목소리를 설명하면 — "젊은 여성, 부드럽고 따뜻한 목소리" — 모델이 참조 녹음 없이 설계합니다. 게임 NPC, 키오스크 안내, 브랜드 보이스 A/B 테스트에 유용.

온디바이스 vs 호스팅

VoxCPM2와 ElevenLabs 비교.

ElevenLabs는 명백한 클라우드 API 대안입니다. 트레이드오프는 무엇이 어디서 도는가 — 그리고 그다음 목소리는 누구의 것인가입니다.

프라이버시 보장, 오프라인 작동, 호출당 제로 비용이 필요한 제품에는 온디바이스 클로닝이 유일한 선택지입니다 — 모든 ElevenLabs 호출은 오디오를 그들의 서버로 업로드합니다.

VoxCPM2 (Soniqo)ElevenLabs
어디서 도는가사용자 기기에서호스팅 API
오디오가 기기를 떠나는가아니오예 (ElevenLabs로 업로드)
오프라인 사용아니오 (인터넷 필요)
호출당 비용없음문자 단위 과금
모델 라이선스Apache 2.0, 오픈 가중치독점, SaaS 전용
최대 출력 샘플레이트48 kHz 네이티브48 kHz (Pro 등급 이상)
언어3029 (Multilingual v2) · 70+ (Eleven v3)
필요한 참조 클립5–30초1분 (Instant) · 30분 (Professional)
텍스트에서 보이스 설계

두 엔진 모두 48 kHz에 도달하고, 둘 다 일상 클로닝을 위한 비슷한 언어 범위를 지원하며, 둘 다 텍스트 설명에서 보이스 설계를 제공합니다. 진짜 차이는 오디오가 애초에 기기를 떠나느냐입니다.

세 가지 클로닝 모드

하나의 모델, 세 가지 진입.

모델은 모든 호출에서 같습니다. 바뀌는 것은 당신이 넘기는 인자입니다 — 그것이 설명에서 목소리를 설계할지, 녹음된 목소리를 복사할지, 억양을 보존할지를 결정합니다.

보이스 설계
참조 녹음이 없을 때.

목소리를 자연어로 설명하세요. 모델은 어울리는 목소리를 고르고 호출 간에 일관성을 유지합니다.

let audio = try await tts.generateVoxCPM2(
    text: "Welcome to the show.",
    instruct: "A young woman, gentle and warm voice."
)
참조 클로닝
대상 화자의 짧은 클립이 있을 때.

깨끗한 음성 5–30초를 넘기세요. 모델은 음색과 리듬을 복사하고 그 목소리로 새 텍스트를 합성합니다.

let ref = try AudioFileLoader.load(
    url: URL(fileURLWithPath: "speaker.wav"),
    targetSampleRate: 16000
)
let audio = try await tts.generateVoxCPM2(
    text: "This is a cloned voice.",
    refAudio: ref
)
얼티밋 클로닝
화자에게 뚜렷한 억양이 있고 그것을 보존하고 싶을 때.

클립과 그 전사를 함께 넘기세요. 이제 모델은 음향 특징을 음소와 맞출 수 있습니다 — 억양과 모음 선택이 이어집니다.

let audio = try await tts.generateVoxCPM2(
    text: "Hello from the cloned voice.",
    refAudio: ref,
    promptText: "this is what the reference clip actually said",
    promptAudio: ref
)
Three cloning modes, same modelEach mode arranges different pieces in the input sequence before the model. Voice design adds a written description, reference cloning adds an audio prefix, and ultimate cloning adds a paired audio-and-transcript example.Voice design(description)text to sayReference cloningreference audiotext to sayUltimate cloningreference audiotranscripttext to sayprompt audioaudio framestext conditiontext to synthesise

같은 입력 슬롯에 서로 다른 조각을 채웁니다. 모델은 결코 플래그를 보지 않습니다 — 시퀀스를 읽습니다.

내부 동작

VoxCPM2가 오디오를 만드는 법.

협력하는 네 개의 모듈. 모델을 쓰는 데 이걸 알 필요는 없지만, 48 kHz가 어디서 오는지 궁금하다면 — 여기 있습니다.

VoxCPM2 architectureText and optional voice prompts feed an autoregressive language model and a residual refiner. A local diffusion transformer produces audio latents which the AudioVAE V2 decodes to a 48 kHz waveform.TextVoice prompt audioVoice instructionPrompt transcriptLocEncaudio + text fused into one streamTSLM · MiniCPM-4 backbone28-layer autoregressive LMdecides what audio patch comes nextRALMrefines each patch for prosodic detailLocDiT · diffusion estimatorpaints the audio latent in each slotAudioVAE V2 → 48 kHz waveform

파이프라인은 텍스트 토큰과 (선택적) 참조 오디오를 하나의 벡터 스트림으로 융합하는 로컬 인코더(LocEnc)로 시작합니다. 그 스트림은 TSLM에 들어갑니다 — 텍스트 LM이 다음 토큰을 고르는 것과 똑같이 다음에 어떤 오디오 "패치"가 올지 결정하는 28층 MiniCPM-4 언어 모델입니다. RALM을 통한 두 번째 패스가 각 패치를 다듬습니다.

여기까지는 전부 트랜스포머입니다. 흥미로운 반전은 LocDiT입니다. 이산 오디오 토큰의 고정 어휘에서 고르는 대신, 작은 확산 과정을 돌려 각 슬롯의 오디오 잠재를 "그립니다". 이산 코덱이 없다는 건 양자화 병목이 없다는 뜻 — 그것이 마지막 단계인 AudioVAE V2가 곧장 48 kHz로 디코딩하게 합니다. 이 스택의 다른 모든 온디바이스 엔진은 24 kHz에서 멈춥니다.

이 분업은 주목할 만합니다. 자기회귀 LM은 다음에 무엇이 와야 하는지(내용, 리듬, 길이)를 결정하는 데 뛰어나고, 확산 헤드는 음향 디테일(위상, 스펙트럼)을 그리는 데 뛰어납니다. VoxCPM2는 각자 잘하는 일을 하게 둡니다. 그래서 모델이 겨우 2B 파라미터로도 버팁니다 — 지각 품질을 버는 건 크기가 아니라 아키텍처입니다.

논문

원본 연구를 읽어 보세요.

VoxCPM: Tokenizer-Free TTS for Context-Aware Speech Generation and True-to-Life Voice Cloning
OpenBMB · arXiv:2509.24650 · Sept 2025
arXiv에서 보기
번들

세 가지 크기. 디스크 예산으로 고르세요.

세 번들 모두 같은 아키텍처로 돌아갑니다. 언어 모델을 얼마나 공격적으로 양자화하는지만 다릅니다. int8 번들이 권장 기본값입니다 — 8문장 왕복 벤치마크에서 업스트림 Python 파이프라인과 맞먹으면서도 bf16보다 빠르고 40% 작습니다.

번들크기적합
bf16~5.0 GB참조 / 디버깅.
int8
기본
~3.0 GB일상 클로닝, 오디오북, 팟캐스트.
int4~1.9 GB디스크가 제한된 배포.
사용해 보기

CLI에서.

# Voice design — no reference clip
speech speak "Welcome to the show." \
    --engine voxcpm2 \
    --voxcpm2-instruct "A young woman, gentle and warm voice." \
    --output design.wav

# Reference cloning — 5–30 s clean clip
speech speak "This is a cloned voice." \
    --engine voxcpm2 \
    --voxcpm2-variant int8 \
    --voice-sample speaker.wav \
    --output clone.wav
다음은

계속 읽기.