음성 클로닝과 음성 변환(Voice Cloning & Voice Conversion)

음성 클로닝(voice cloning)은 다른 사람의 목소리로 내가 작성한 텍스트를 읽어 줍니다. 음성 변환(voice conversion)은 내가 말한 내용을 그대로 유지하면서 내 목소리를 다른 사람의 목소리로 바꿔 줍니다. 두 작업 모두 같은 기본 원리(primitive)에 의존합니다. 바로 화자 정체성(speaker identity)과 발화 내용(content)을 분리하는 것입니다.

유형: Build 언어: Python 선수 강의: Phase 6 · 06 (Speaker Recognition), Phase 6 · 07 (TTS) 예상 시간: 약 75분

학습 목표

  • 음성 클로닝(voice cloning)과 음성 변환(voice conversion)의 차이를 설명합니다.
  • 제로샷 클로닝(zero-shot cloning), 퓨샷 파인튜닝(few-shot fine-tuning), 인식-합성(recognition-synthesis), 분리(disentanglement) 방식을 구분합니다.
  • SECS, CER, 워터마크 검출(watermark detection)로 클로닝 품질과 안전성을 평가합니다.
  • 동의 게이트(consent gate)와 워터마킹(watermarking)이 운영 환경(production)에서 요구사항인 이유를 이해합니다.

문제

2026년에는 5초짜리 오디오 클립(audio clip)만으로도 일반 소비자용 GPU(consumer GPU)에서 누구의 목소리든 고품질 클론(clone)을 만들 수 있습니다. ElevenLabs, F5-TTS, OpenVoice v2, VoiceBox 모두 제로샷(zero-shot) 또는 퓨샷(few-shot) 클로닝을 제공합니다. 이 기술은 접근성 음성 합성(accessibility TTS), 더빙(dubbing), 보조 음성(assistive voices)에는 축복이지만, 사기 전화(scam calls), 정치 딥페이크(political deepfakes), 지식재산권 침해(IP theft)에는 무기가 됩니다.

밀접하게 연관된 두 가지 과제가 있습니다.

  • 음성 클로닝(voice cloning, TTS 측): 텍스트 + 5초 분량의 참조 음성(reference voice) → 해당 목소리로 만든 오디오.
  • 음성 변환(voice conversion, 음성 측): 원본 오디오(source audio; A가 X를 말함) + 사람 B의 참조 음성 → B가 X를 말하는 오디오.

두 방식 모두 파형(waveform)을 (내용, 화자, 운율)(content, speaker, prosody)로 분해(factorize)하고, 한 소스의 내용과 다른 소스의 화자를 다시 결합(recombine)합니다.

2026년에 운영 파이프라인을 구축할 때의 핵심 제약은 다음과 같습니다. 워터마킹과 동의 게이트는 EU에서는 AI Act(2026년 8월 시행), California에서는 AB 2905(2025년 발효)에 의해 법적으로 요구됩니다. 파이프라인은 들리지 않는 워터마크를 삽입해야 하며, 동의가 없는 클론은 거부해야 합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.음성 클로닝(voice cloning)과 음성 변환(voice conversion)은 모두 화자 정체성(speaker identity)을 다룹니다. 두 작업의 근본적인 차이는 무엇인가요?

2.음성 클로닝과 음성 변환 모두 모델이 입력 오디오에 대해 근본적으로 수행해야 하는 작업은 무엇인가요?

0/2 답변 완료

개념

factor → swap speaker → recombine (plus watermark) target ref (5 s) alice_5s.wav dry, close-mic, single speaker speaker encoder ECAPA / WavLM-SV 192-d embedding cloning TTS F5 / XTTS / VALL-E 2 text + speaker_emb → mel watermark SilentCipher ~32 bits, inaudible text: "add milk to list" source speech bob saying "turn off" any speaker, any text content extractor ASR PPG / WavLM frames speaker-invariant representation resynthesizer KNN-VC / Diff-HierVC content + alice_emb → wav output alice saying "turn off" content preserved legal and ethical stack (required 2026) consent gate signed record + speaker-hash match before inference watermark SilentCipher or PerTh; ~32-bit payload, MP3-robust detector pair AASIST / RawNet2 — ship with the generator audit log tamper-evident record of every synthesis request

제로샷 클로닝(zero-shot cloning). 수천 명의 화자로 학습된 모델에 5초짜리 클립을 입력합니다. 화자 인코더(speaker encoder)가 클립을 화자 임베딩(speaker embedding)으로 변환하고, TTS 디코더가 그 임베딩과 텍스트를 함께 조건으로 받아 오디오를 생성합니다.

사용 모델: F5-TTS(2024), YourTTS(2022), XTTS v2(2024), OpenVoice v2(2024).

퓨샷 파인튜닝(few-shot fine-tuning). 대상 음성을 5-30분 녹음합니다. 베이스 모델을 LoRA로 약 1시간 동안 파인튜닝(fine-tune)합니다. 품질은 "괜찮음" 수준에서 "구분하기 어려움" 수준으로 도약합니다. Coqui와 ElevenLabs가 모두 이 방식을 지원하며, 커뮤니티에서는 F5-TTS와 함께 사용합니다.

음성 변환(voice conversion; VC). 두 계열이 있습니다.

  • 인식-합성(recognition-synthesis). ASR과 유사한 모델로 내용 표현(content representation)을 추출합니다. 예를 들어 부드러운 음소 사후확률(soft phoneme posteriors)이나 음소 사후확률 그래프(Phonetic Posteriorgrams; PPG)를 뽑은 뒤, 대상 화자 임베딩으로 다시 합성합니다. 언어와 억양(accent)에 견고합니다. KNN-VC(2023), Diff-HierVC(2023)가 이 방식을 사용합니다.
  • 분리(disentanglement). 오토인코더(autoencoder)가 병목(bottleneck) 지점의 잠재 공간(latent space)에서 내용, 화자, 운율을 분리하도록 학습합니다. 추론(inference) 시점에는 화자 임베딩만 교체합니다. 품질은 낮지만 더 빠릅니다. AutoVC(2019), VITS-VC 계열이 이 방식을 사용합니다.

신경 코덱 기반 클로닝(neural codec-based cloning, 2024+). VALL-E, VALL-E 2, NaturalSpeech 3, VoiceBox는 오디오를 SoundStream / EnCodec의 이산 토큰(discrete token)으로 다루고, 그 코덱 토큰 위에 대규모 자기회귀(autoregressive) 모델이나 흐름 매칭(flow-matching) 모델을 학습시킵니다. 짧은 프롬프트에서는 ElevenLabs에 견줄 만한 품질을 냅니다.

윤리는 부가 기능(bolt-on)이 아닙니다

워터마킹(watermarking). PerTh(Perth)와 SilentCipher(2024)는 약 16-32 비트(bit) ID를 사람이 알아챌 수 없게 오디오에 삽입합니다. 재인코딩(re-encoding), 스트리밍(streaming), 일반적인 편집을 견딥니다. 운영 환경에 바로 쓸 수 있는 오픈소스입니다.

동의 게이트(consent gates). 모든 클로닝 결과물은 검증 가능한 동의 기록(consent record)과 연결되어야 합니다. 예를 들면 다음과 같습니다. "I, Rohit, on 2026-04-22, authorize this voice for X purpose." 이 기록은 위·변조가 드러나는(tamper-evident) 로그에 저장해야 합니다.

검출(detection). AASIST, RawNet2, Wav2Vec2-AASIST가 검출기로 배포됩니다. ASVspoof 2025 challenge는 ElevenLabs, VALL-E 2, Bark 출력에 대해 최신(state-of-the-art) 검출기의 동일 오류율(Equal Error Rate; EER)을 0.8-2.3%로 발표했습니다.

2026년 숫자

모델Zero-shot?SECS(target sim)WER(intel.)Params
F5-TTSYes0.722.1%335M
XTTS v2Yes0.653.5%470M
OpenVoice v2Yes0.702.8%220M
VALL-E 2Yes0.772.4%370M
VoiceBoxYes0.782.1%330M

SECS가 0.70을 넘으면 대부분의 청취자에게 대상 음성과 구분하기 어려운 수준입니다.

직접 만들기

Step 1: 인식-합성으로 분해하기(main.py 코드 전용 데모)

def clone_pipeline(ref_audio, text, target_embedder, tts_model):
    speaker_emb = target_embedder.encode(ref_audio)
    mel = tts_model(text, speaker=speaker_emb)
    return vocoder(mel)

개념은 단순합니다. 구현의 무게는 대부분 tts_model과 화자 인코더 안에 들어 있습니다.

Step 2: F5-TTS로 제로샷 클로닝하기

from f5_tts.api import F5TTS
tts = F5TTS()
wav = tts.infer(
    ref_file="rohit_5s.wav",
    ref_text="The quick brown fox jumps over the lazy dog.",
    gen_text="Please add milk and bread to my list.",
)

참조 전사(reference transcript)는 오디오와 정확히 일치해야 합니다. 불일치하면 정렬(alignment)이 깨집니다.

Step 3: KNN-VC로 음성 변환하기

import torch
from knnvc import KNNVC  # 2023 model, https://github.com/bshall/knn-vc
vc = KNNVC.load("wavlm-base-plus")
out_wav = vc.convert(source="my_voice.wav", target_pool=["alice_1.wav", "alice_2.wav"])

KNN-VC는 원본과 대상 풀(target pool)에서 WavLM 프레임별 임베딩(per-frame embedding)을 추출한 뒤, 원본의 각 프레임을 풀 안에서 가장 가까운 이웃(nearest neighbor)으로 교체합니다. 비모수(non-parametric) 방식이며 대상 음성 1분 정도로도 작동합니다.

Step 4: 워터마크 삽입하기

from silentcipher import SilentCipher
sc = SilentCipher(model="2024-06-01")
payload = b"consent_id:abc123;ts:1745353200"
watermarked = sc.embed(wav, sr=24000, message=payload)
detected = sc.detect(watermarked, sr=24000)   # returns payload bytes

약 32비트 페이로드(payload)를 넣을 수 있으며, MP3 재인코딩과 가벼운 잡음(noise) 이후에도 검출할 수 있습니다.

Step 5: 동의 게이트

def cloned_inference(text, ref_audio, consent_record):
    assert verify_signature(consent_record), "Signed consent required"
    assert consent_record["speaker_id"] == hash_speaker(ref_audio)
    wav = tts.infer(ref_file=ref_audio, gen_text=text)
    wav = watermark(wav, payload=consent_record["id"])
    return wav

사용하기

2026년 기준 스택은 다음과 같이 고릅니다.

상황선택
5초 제로샷 클로닝, 오픈소스F5-TTS 또는 OpenVoice v2
상업용 운영 환경 클로닝ElevenLabs Instant Voice Clone v2.5
음성 변환(재작성)KNN-VC 또는 Diff-HierVC
다화자 파인튜닝StyleTTS 2 + speaker adapter
다국어 클로닝(cross-lingual)XTTS v2 또는 VALL-E X
딥페이크 검출(deepfake detection)Wav2Vec2-AASIST

흔한 함정

  • 참조 전사 불일치. F5-TTS와 유사 모델은 참조 텍스트가 참조 오디오와 정확히 일치해야 합니다. 문장부호까지 포함합니다.
  • 반향이 섞인 참조(reverberant reference). 메아리(echo)는 클론 품질을 망가뜨립니다. 잔향이 적은(dry) 환경에서 마이크 가까이(close-mic) 녹음합니다.
  • 감정 불일치(emotion mismatch). "쾌활한(cheerful)" 참조로 학습하면 어떤 텍스트를 합성하든 쾌활한 클론이 만들어집니다. 참조 감정을 실제 활용 목적에 맞춥니다.
  • 언어 누수(language leakage). 영어 화자를 클로닝한 뒤 프랑스어를 시키면 억양이 그대로 남는 경우가 많습니다. 다국어 모델(XTTS, VALL-E X)을 사용합니다.
  • 워터마크 없음. EU에서는 2026년 8월부터 법적으로 배포가 어렵습니다.

산출물 만들기

outputs/skill-voice-cloner.md로 저장합니다. 동의 게이트, 워터마크, 품질 목표를 포함해 클로닝 또는 변환 파이프라인을 설계하는 skill입니다.

연습문제

  1. 쉬움. code/main.py를 실행합니다. 두 "speakers" 사이에서 화자 임베딩 교체(speaker-embedding swap)를 시뮬레이션하고, 교체 전후의 코사인(cosine)을 계산합니다.
  2. 중간. OpenVoice v2로 본인 목소리를 클로닝합니다. 참조와 클론 사이의 SECS를 측정합니다. Whisper로 문자 오류율(Character Error Rate; CER)도 측정합니다.
  3. 어려움. SilentCipher 워터마크를 클론 20개에 적용하고, 128 kbps MP3 인코딩/디코딩을 거친 뒤 페이로드를 검출합니다. 비트 정확도(bit accuracy)를 보고합니다.

핵심 용어

용어흔한 설명실제 의미
Zero-shot clone5초면 충분함사전 학습 모델과 화자 임베딩만으로 추가 학습 없이 클로닝한다.
PPGPhonetic posteriorgram언어에 독립적인 내용 표현으로 쓰이는 프레임별 ASR 사후확률이다.
KNN-VCNearest-neighbor conversion원본 프레임마다 대상 풀의 가장 가까운 프레임으로 교체한다.
Neural codec TTSVALL-E 방식EnCodec/SoundStream 토큰 위에 동작하는 자기회귀 모델이다.
Watermark들리지 않는 서명오디오에 비트를 삽입하며 재인코딩 후에도 살아남는다.
SECSCloning fidelity대상과 클론 화자 임베딩 사이의 코사인 유사도이다.
AASISTDeepfake detector합성 음성을 탐지하는 위변조 방지(anti-spoof) 모델이다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

voice-cloner

Pick cloning approach (zero-shot / conversion / adaptation), consent artifact, watermark, and safety filters for a voice-cloning deployment.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.F5-TTS로 음성을 클로닝했는데 출력의 타이밍이 어긋나서 단어가 겹치거나 부자연스럽게 늘어납니다. 참조 오디오와 텍스트 모두 정확합니다. 가장 가능성 높은 원인은 무엇인가요?

2.운영 환경의 음성 클로닝 시스템이 2026년 8월 이후 EU에서 워터마킹(watermarking) 없이 배포되었습니다. 주된 위험은 무엇인가요?

3.KNN-VC는 원본 프레임의 WavLM 임베딩(embedding)을 대상 화자 풀(target speaker pool)에서 가장 가까운 이웃(nearest neighbor)으로 교체하여 음성을 변환합니다. 이 비모수(non-parametric) 방식의 주요 장점은 무엇인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다