오디오 생성(Audio Generation)

오디오(audio)는 16-48 kHz로 표본화된 1차원 신호(1-D signal)입니다. 5초 길이의 클립(clip)은 8만에서 24만 개의 샘플(sample)이 됩니다. 어떤 트랜스포머(transformer)도 이렇게 긴 시퀀스(sequence)에 직접 어텐션(attention)을 걸지 않습니다. 2026년의 모든 프로덕션(production) 오디오 모델은 같은 해법을 씁니다. 신경망 코덱(neural codec)인 Encodec, SoundStream, DAC이 오디오를 50-75 Hz의 이산 토큰(discrete token)으로 압축하고, 트랜스포머나 디퓨전 모델(diffusion model)이 그 토큰을 생성합니다.

유형: Build 언어: Python 선수 지식: Phase 6 · 02 (Audio Features), Phase 6 · 04 (ASR), Phase 8 · 06 (확산 모델 — DDPM 직접 구현) 예상 시간: 약 45분

문제

오디오 생성(audio generation) 작업은 크게 세 가지로 나뉩니다.

  1. 음성 합성(Text-to-Speech; TTS). 텍스트가 주어지면 음성을 만들어 냅니다. 깨끗한 음성은 좁은 대역(narrow-band)에 음운 구조(phonetic structure)가 강하게 드러납니다. 그래서 토큰 위에서 동작하는 트랜스포머로 잘 풀립니다. 대표적으로 VALL-E(Microsoft), NaturalSpeech 3, ElevenLabs, OpenAI TTS가 여기에 속합니다.
  2. 음악 생성(Music generation). 텍스트, 멜로디(melody), 코드 진행(chord progression), 장르(genre) 같은 프롬프트(prompt)로 음악을 만듭니다. 분포(distribution)가 음성보다 훨씬 넓습니다. MusicGen(Meta), Stable Audio 2.5, Suno v4, Udio, Riffusion이 여기에 속합니다.
  3. 음향 효과·사운드 디자인(Audio effects / Sound design). 프롬프트에서 환경음(ambient sound)이나 폴리(Foley)를 생성합니다. AudioGen, AudioLDM 2, Stable Audio Open이 대표적입니다.

세 작업 모두 같은 기반 위에서 동작합니다. 즉 신경망 오디오 코덱(neural audio codec) 위에서 토큰 자기회귀(token-AR; token-autoregressive) 모델이나 디퓨전 생성기(diffusion generator)가 동작하는 구조입니다.

사전 테스트

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

1.2026년의 모든 프로덕션 오디오 생성 모델이 원시 파형(raw waveform)을 직접 다루지 않고 신경망 코덱(Encodec, SoundStream, DAC)을 사용하는 이유는 무엇인가요?

2.오디오 생성의 두 가지 지배적 패러다임인 토큰 자기회귀(token-autoregressive)와 잠재 확산(latent diffusion)의 핵심 아키텍처 차이는 무엇인가요?

0/2 답변 완료

개념

audio gen: codec tokens + transformer or diffusion waveform 24 kHz, 1-D codec encoder Encodec / DAC / SoundStream RVQ tokens K × 75 Hz indices 8 codebooks typical codec decoder tokens → wav token-AR path (MusicGen, VALL-E) decoder-only transformer p(t_n | t_<n, text_prompt, voice_prompt) streams naturally (~200 ms TTFB) delayed-parallel: K offset streams dominates speech in 2026 diffusion / flow path (Stable Audio, AudioLDM) DiT on audio latents x_t → x_0 via flow matching faster total time for long clips cleaner for music at >=30 s dominates music generation in 2026 2026 production stack TTS: ElevenLabs V3, OpenAI TTS, GPT-4o realtime, NaturalSpeech 3 Music: Suno v4, Udio, Stable Audio 2.5, MusicGen 3.3B SFX: AudioCraft 2, ElevenLabs SFX, Stable Audio Open Voice clone: XTTS v2 (open), ElevenLabs Pro (consent-verified)

신경망 오디오 코덱(Neural audio codec)

대표적인 코덱으로 Encodec(Meta, 2022), SoundStream(Google, 2021), Descript Audio Codec(DAC, 2023)이 있습니다. 합성곱 인코더(convolutional encoder)가 파형(waveform)을 타임스텝(timestep)별 벡터로 압축하고, 잔차 벡터 양자화(Residual Vector Quantization; RVQ)가 각 벡터를 K개의 코드북(codebook) 인덱스 캐스케이드(cascade)로 변환합니다. 디코더(decoder)는 이를 다시 파형으로 복원합니다. 예를 들어 24 kHz 오디오를 2 kbps로 압축할 때 75 Hz에서 RVQ 코드북 8개를 쓰면 초당 600개의 토큰이 됩니다.

waveform (16000 samples/sec)
    └─ encoder conv ─┐
                     ├─ RVQ layer 1 → indices at 75 Hz
                     ├─ RVQ layer 2 → indices at 75 Hz
                     ├─ ...
                     └─ RVQ layer 8

두 가지 생성 패러다임(Two generative paradigms)

토큰 자기회귀(Token-autoregressive). RVQ 토큰을 하나의 시퀀스로 펼친 뒤(flatten) 디코더 전용 트랜스포머(decoder-only transformer)를 돌립니다. MusicGen은 지연 병렬(delayed parallel) 방식을 써서 K개의 코드북 스트림(codebook stream)을 스트림별로 어긋난 오프셋(offset)을 둔 채 병렬로 내보냅니다. VALL-E는 텍스트 프롬프트와 3초짜리 음성 샘플에서 음성 토큰(speech token)을 생성합니다.

잠재 확산(Latent diffusion). 코덱 토큰을 연속 잠재(continuous latent)로 묶거나, 범주형 디퓨전(categorical diffusion)으로 모델링합니다. Stable Audio 2.5는 연속 오디오 잠재 위에서 흐름 매칭(flow matching)을 사용합니다. AudioLDM 2는 텍스트 → 멜 → 오디오(text-to-mel-to-audio)로 이어지는 디퓨전을 사용합니다.

2024-2026년의 흐름은 분명합니다. 음악에서는 흐름 매칭이 추론 속도와 샘플 품질에서 우세하고, 음성에서는 본질적으로 인과적(causal)이고 스트리밍에 강한 토큰 자기회귀가 여전히 주류입니다.

프로덕션 지형(Production landscape)

시스템작업백본(Backbone)지연(Latency)
ElevenLabs V3TTS토큰 자기회귀 + 신경망 보코더(neural vocoder)첫 토큰까지 약 300ms
OpenAI GPT-4o audio풀-듀플렉스(Full-duplex) 음성종단간(end-to-end) 멀티모달 자기회귀약 200ms
NaturalSpeech 3TTS잠재 흐름 매칭(Latent flow matching)비스트리밍(Non-streaming)
Stable Audio 2.5음악 / 음향 효과(SFX)오디오 잠재 위 DiT + 흐름 매칭1분 클립에 약 10초
Suno v4풀 송(Full songs)비공개, 토큰 자기회귀 추정곡당 약 30초
Udio v1.5풀 송비공개곡당 약 30초
MusicGen 3.3B음악Encodec 32kHz 위 토큰 자기회귀실시간(Real-time)
AudioCraft 2음악 + 음향 효과흐름 매칭5초 클립에 약 5초
Riffusion v2음악스펙트로그램 디퓨전(Spectrogram diffusion)약 10초

직접 만들기

code/main.py는 핵심 아이디어를 단순화해서 보여 줍니다. 서로 구분되는 두 가지 "스타일(style)"에서 생성한 합성 "오디오 토큰" 시퀀스로 작은 다음-토큰(next-token) 트랜스포머를 학습시킵니다. 스타일 A는 낮은 토큰과 높은 토큰이 번갈아 나오는 음성처럼 보이는(speech-like) 패턴이고, 스타일 B는 단조롭게 증가하는 램프(ramp)에 가까운 음악처럼 보이는(music-like) 패턴입니다. 그런 다음 스타일을 조건(condition)으로 주고 샘플링(sampling)합니다.

Step 1: 합성 오디오 토큰(synthetic audio tokens)

def make_tokens(style, length, vocab_size, rng):
    if style == 0:  # "speech-like": alternating
        return [i % vocab_size for i in range(length)]
    # "music-like": ramp
    return [(i * 3) % vocab_size for i in range(length)]

Step 2: 작은 토큰 예측기 학습

스타일에 조건을 건 바이그램(bigram) 스타일 예측기를 학습합니다. 여기서 보여 주려는 패턴은 단순합니다. 코덱 토큰 → 교차 엔트로피(cross-entropy) 학습 → 자기회귀 샘플링(autoregressive sampling) 흐름입니다.

Step 3: 조건부 샘플링(Sample conditionally)

스타일 토큰과 시작 토큰(starting token)이 주어지면, 예측된 분포에서 다음 토큰을 샘플링합니다. 이 과정을 20-40 토큰 동안 이어 갑니다.

함정(Pitfalls)

  • 코덱 품질이 출력 품질의 상한을 정합니다. 코덱이 어떤 소리를 충실하게 표현하지 못한다면, 생성기 품질이 아무리 좋아도 그 한계를 넘어설 수 없습니다. 공개 모델 중에서는 현재 DAC가 가장 강합니다.
  • RVQ 오차 누적(Error accumulation). 각 RVQ 레이어는 이전 레이어의 잔차(residual)를 모델링합니다. 그래서 첫 레이어의 오류는 다음 레이어로 전파됩니다. 더 높은 레이어에서는 온도(temperature)를 0으로 두고 샘플링하면 도움이 됩니다.
  • 음악적 구조(Musical structure). 75 Hz에서 30초 분량의 토큰이면 2만 개가 넘습니다. 트랜스포머에는 부담스러운 길이입니다. MusicGen은 슬라이딩 윈도(sliding window)와 프롬프트 이어 붙이기(prompt continuation)를 사용하고, Stable Audio는 더 짧은 클립과 크로스페이드(crossfade)를 함께 씁니다.
  • 경계 아티팩트(Boundary artifacts). 생성된 클립들 사이의 크로스페이드에는 세심하게 설계된 오버랩-애드(overlap-add)가 필요합니다.
  • 깨끗한 데이터 수요. 음악 생성기는 라이선스(license)가 확보된 음악이 수만 시간 단위로 필요합니다. 2024년의 Suno/Udio RIAA 소송이 이 문제를 수면 위로 끌어올렸습니다.
  • 음성 복제 윤리(Voice cloning ethics). 3초짜리 음성 샘플과 텍스트 프롬프트만 있으면 VALL-E, XTTS, ElevenLabs 같은 모델이 목소리를 복제할 수 있습니다. 따라서 어떤 프로덕션 모델이든 오용 탐지(abuse detection)와 옵트-아웃(opt-out) 목록이 함께 있어야 합니다.

사용해보기

작업2026년 추천 스택
상용 TTSElevenLabs, OpenAI TTS, Azure Neural
동의 검증을 거친 음성 복제(Voice cloning)XTTS v2(오픈) 또는 ElevenLabs Pro
빠르게 만드는 배경 음악Stable Audio 2.5 API, Suno, Udio
가사가 있는 음악Suno v4 또는 Udio v1.5
음향 효과·폴리(Foley)AudioCraft 2, ElevenLabs SFX, Stable Audio Open
실시간 음성 에이전트(Real-time voice agent)GPT-4o realtime 또는 Gemini Live
공개 가중치(open-weights) 음악 연구MusicGen 3.3B, Stable Audio Open 1.0, AudioLDM 2
더빙·번역(Dubbing / translation)HeyGen, ElevenLabs Dubbing

산출물 만들기

outputs/skill-audio-brief.md에 스킬(skill)을 저장합니다. 이 스킬은 오디오 브리프(audio brief), 즉 작업(task), 길이(duration), 스타일, 목소리(voice), 라이선스 같은 입력을 받아 다음을 출력합니다. 모델과 호스팅(model + hosting), 프롬프트 형식(장르 태그, 스타일 디스크립터, 구조 마커), 코덱과 생성기와 보코더로 이어지는 체인(codec + generator + vocoder chain), 시드 프로토콜(seed protocol), 평가 계획(MOS, CLAP score, TTS의 경우 CER, 사용자 A/B 테스트).

연습문제

  1. 쉬움. code/main.py를 실행하고 스타일을 명시적으로 설정합니다. 생성된 시퀀스가 해당 스타일의 패턴과 맞는지 확인해 봅니다.
  2. 중간. 지연 병렬(delayed parallel) 디코딩을 추가합니다. 정확히 1스텝(step) 오프셋을 유지해야 하는 2개의 토큰 스트림을 시뮬레이션하고, 둘을 함께 학습하는 공동 예측기(joint predictor)를 만들어 봅니다.
  3. 어려움. HuggingFace transformers로 MusicGen-small을 로컬에서 실행합니다. 서로 다른 프롬프트 세 개로 10초짜리 클립을 만들고, 스타일 일관성(style adherence)을 A/B로 비교해 봅니다.

핵심 용어

용어흔한 설명실제 의미
코덱(Codec)"신경망 압축(Neural compression)"오디오를 위한 인코더와 디코더이며, 보통 50-75 Hz의 토큰을 출력한다.
RVQ(Residual Vector Quantization)"잔차 VQ"K개의 양자화기(quantizer)가 캐스케이드로 연결된 구조이며, 각 양자화기는 이전 양자화기의 잔차를 모델링한다.
토큰(Token)"코덱 기호 하나"코드북 안의 이산 인덱스(discrete index)이며, 보통 크기가 1024 또는 2048이다.
지연 병렬(Delayed parallel)"오프셋이 걸린 코드북들"K개의 토큰 스트림을 시간 오프셋을 어긋나게 둔 채 방출해 전체 시퀀스 길이를 줄이는 기법이다.
흐름 매칭(Flow matching)"2024년 오디오의 승자"디퓨전보다 더 직선적인(straighter-path) 경로를 학습하는 대안이며, 샘플링이 더 빠르다.
음성 프롬프트(Voice prompt)"3초짜리 샘플"복제된 목소리를 유도하는 화자 임베딩(speaker embedding) 또는 토큰 접두부(token prefix)이다.
멜 스펙트로그램(Mel spectrogram)"시각적 표현"로그 크기(log-magnitude) 기반의 지각 스펙트로그램이며, 많은 TTS 시스템이 사용한다.
보코더(Vocoder)"멜에서 파형으로"멜 스펙트로그램을 다시 오디오 파형으로 바꾸는 신경망 구성 요소이다.

프로덕션 노트: 오디오는 스트리밍 문제입니다(Audio is a streaming problem)

오디오는 사용자가 한 번에 받기보다는 생성되는 동안 들리기를 기대하는 거의 유일한 출력 모달리티(modality)입니다. 프로덕션 관점에서 이는 출력 토큰당 시간(Time Per Output Token; TPOT)이 중요하다는 뜻입니다. 목표 처리량(throughput)이 읽는 속도가 아니라 듣는 속도이기 때문입니다. Encodec처럼 약 75 토큰/초로 토큰화된 16 kHz 오디오라면, 서버는 사용자 한 명당 초당 최소 75개의 토큰을 생성해야 재생이 끊기지 않습니다.

여기서 두 가지 아키텍처적 결과가 따라옵니다.

  • 흐름 매칭 기반 오디오 모델은 손쉽게 스트리밍되지 않습니다. Stable Audio 2.5와 AudioCraft 2는 고정된 클립 길이를 한 번의 패스(pass)로 렌더링합니다. 스트리밍하려면 클립을 청크(chunk)로 쪼개고 경계를 오버랩해야 하며, 이는 슬라이딩 윈도 방식의 디퓨전과 비슷한 형태가 되어 코덱 자기회귀 모델 대비 100-300ms 정도의 지연 오버헤드를 더합니다.

제품이 "실시간 음성 채팅"이나 "실시간 음악 이어 가기"라면 코덱 자기회귀 경로를 고르고, 제품이 "제출 시 30초 클립을 렌더링"하는 형태라면 흐름 매칭이 품질과 전체 지연 측면에서 더 유리합니다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

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

audio-brief

Translate an audio brief into a model + prompt + eval plan across TTS, music, and SFX.

Skill

확인 문제

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

1.MusicGen은 8개의 RVQ 코드북 스트림에 '지연 병렬(delayed parallel)' 디코딩을 사용합니다. 8개 스트림을 단순히 하나의 긴 시퀀스로 결합하는 대신 이것이 필요한 이유는 무엇인가요?

2.실시간 음성 채팅 에이전트를 구축하는 팀이 흐름 매칭(flow matching) 오디오 모델과 토큰 자기회귀 코덱 모델 중 하나를 선택해야 합니다. 어느 쪽이 더 적합하며 이유는 무엇인가요?

3.오디오 코덱(codec)의 높은 RVQ 레이어에서 이전 레이어의 오차 누적(error accumulation) 때문에 아티팩트가 발생합니다. 원인과 샘플링 시 완화 방법은 무엇인가요?

0/3 답변 완료

추가 문제 풀기

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