TRENDSHIFT 딥다이브 · 일간 #4 · 2026-06-05

Miso TTS 8B 딥다이브
— 감정을 '연기'하는 80억 파라미터 음성 모델

Miso TTS 8B는 글자(텍스트)를 넣으면 사람처럼 감정을 실어 말하는 음성을 만들어 주는 대화형 음성 합성(TTS) 모델이다. 단순히 글을 또박또박 읽는 게 아니라, 앞 사람의 말투와 대화 흐름을 듣고 다음 대사를 자연스럽게 이어 말하는 것이 핵심이다. Sesame AI Labs의 CSM(Conversational Speech Model) 구조를 80억 파라미터로 키웠고, 가중치(weight)를 Hugging Face에 공개해 내 GPU에서 직접 돌릴 수 있다. (저장소: MisoLabsAI/MisoTTS · Python 100% · 추론 코드 + 모델 정의 공개 · 생성 음성에 워터마크 내장 · ⚠️ 언어 지원: 현재 영어 전용(English only). 한국어 등 다국어 미지원.)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

한 문장으로 이 프로젝트가 뭘 하는지부터.

Miso TTS 8B = "글자 → 감정 실린 대화 음성" 변환기. 텍스트와 (선택적으로) 화자 번호·이전 대화를 입력하면, 그에 어울리는 24kHz 음성 파형(.wav)을 만들어 낸다. 보통의 TTS가 한 문장을 무미건조하게 읽는다면, Miso는 "누가, 어떤 맥락에서, 어떤 감정으로" 말하는지를 함께 모델링해 더 사람 같은 대화를 만든다.

🎙️ 한 줄 비유

"성우 한 명"이 아니라 "녹음 부스 전체"를 모델에 담았다

일반 TTS는 대본을 받아 또박또박 읽는 오디오북 낭독기에 가깝다. 반면 Miso는 대본뿐 아니라 "방금 상대가 이렇게 말했으니, 나는 이런 톤으로 받아쳐야지"까지 계산한다. 즉 낭독기가 아니라, 대화 상황을 이해하는 연기 디렉터 + 성우 세트에 가깝다.

그래서 결과물도 "문장 하나"가 아니라, 두 화자가 주고받는 자연스러운 대화 한 토막이 나온다.

용어
TTS (Text-to-Speech, 음성 합성)
글자를 사람 목소리로 바꾸는 기술. 내비게이션 안내음, AI 비서 목소리, 오디오북 자동 낭독이 모두 TTS다. Miso는 그중에서도 "감정·대화"에 특화된 모델이다.
용어
8B (80억 파라미터)
모델 내부의 '학습된 숫자(가중치)' 개수가 약 80억 개라는 뜻. 숫자가 많을수록 미묘한 억양·감정까지 표현할 여력이 커지지만, 그만큼 큰 GPU 메모리가 필요하다. 같은 계열의 원조 모델 Sesame CSM-1B는 10억 개였는데, Miso는 이를 8배로 키운 셈이다.

저장소에는 모델을 학습시키는 코드가 아니라 "이미 학습된 모델을 돌리는(추론) 코드"가 들어 있다. 실제 가중치는 Hugging Face의 MisoLabs/MisoTTS에서 자동으로 내려받는다. 즉 이 레포는 엔진 설계도 + 시동 키이고, 연료(가중치)는 별도 창고(HF)에서 가져오는 구조다.

2왜 주목받는가

TrendShift 일간 4위까지 올라온 이유 — 트렌딩의 배경.

2025~2026년은 "오픈 음성 모델 전쟁"의 해다. 글자를 읽는 건 이미 잘 되니, 경쟁의 초점이 "얼마나 사람처럼, 감정을 실어, 대화하듯 말하느냐"로 옮겨갔다. Miso는 이 흐름의 정중앙에 있다.

① 낭독이 아니라 '대화'를 생성한다

핵심 차별점. Miso의 입력은 text 하나가 아니라 (text, speaker, context) 세 가지다. context에는 이전 발화의 텍스트 + 실제 오디오가 함께 들어간다. 모델은 "앞 화자가 이런 톤으로 이렇게 말했다"를 듣고, 그에 맞춰 다음 대사의 억양·호흡·감정을 정한다. 예제 코드(run_misotts.py)부터가 화자 0번과 1번이 주고받는 4턴짜리 대화를 생성한다.

② 가중치가 공개된 '오픈 모델'

ElevenLabs·OpenAI TTS 같은 최고 품질 경쟁자들은 API 뒤에 숨은 폐쇄형(closed)이다. 비용·검열·데이터 유출 우려가 따라온다. 반면 Miso는 가중치를 HF에 올려, 내 서버에서 오프라인으로, 무료로, 무제한 돌릴 수 있다. 자막 더빙·게임 NPC·접근성 도구를 만드는 개발자에게 이건 큰 차이다.

③ 음성 클로닝(voice cloning)을 기본 지원

짧은 prompt.wav 하나와 그 대본을 context로 넣으면, 그 목소리의 톤을 흉내 내 새 문장을 말하게 할 수 있다. 별도 파인튜닝 없이 예시 음성만으로 화자를 따라 한다(zero-shot voice cloning).

④ 검증된 'CSM' 계보 위에 섰다

Miso는 무에서 발명한 게 아니라, Sesame AI Labs가 공개한 CSM(Conversational Speech Model) 구조를 그대로 따른다. 오디오 토크나이저(Mimi), 워터마크(SilentCipher), 생성 API(Segment/Generator)까지 CSM 생태계를 재사용한다. 검증된 레시피를 8B로 스케일업했다는 점이 신뢰를 준다.

비유로 정리

일반 TTS = 자동응답기 안내음 — 정확하지만 영혼 없는 목소리.

Miso TTS = 라디오 드라마 녹음 현장 — 대본·상황·상대 배우의 연기를 모두 보고, 거기에 맞춰 감정을 실어 연기한다. 결과는 한 문장이 아니라 살아있는 '장면'이다.

냉정하게 보기
트렌딩 ≠ 검증 완료

GitHub 스타 수는 아직 적고(저장소는 거의 새것), 인기는 X(트위터) 등 소셜 멘션에서 온 '신상 화제성'이 크다. 8B 모델이라 실행 장벽(GPU)이 높고, 품질·라이선스(license: other)·상업적 사용 조건은 직접 확인이 필요하다. "트렌딩이라 무조건 좋다"가 아니라, 구조를 공부하기 좋은 최신 사례로 보는 게 맞다.

3기술 스택 전체 지도

requirements.txt · pyproject.toml · 소스코드에서 뽑아낸 실제 구성.

Miso는 웹 백엔드/프론트엔드가 아니라 "딥러닝 추론 파이프라인"이다. 그래서 스택을 ⓐ 모델 코어 ⓑ 오디오 처리 ⓒ 실행·배포 세 층으로 나눠 본다.

ⓐ 모델 코어 (두뇌)

구성요소무엇역할
PyTorch 2.4딥러닝 프레임워크모든 신경망 연산의 기반. bfloat16 정밀도로 추론.
torchtune 0.4LLM 빌딩 블록Llama 3.2 구조(backbone·decoder)를 그대로 가져다 씀.
torchao 0.9양자화/최적화모델 경량화·가속을 위한 PyTorch 부속.
transformers 4.49HF 라이브러리Llama 3 텍스트 토크나이저 로딩.
bitsandbytes 0.45양자화(리눅스)저정밀 가중치 지원(선택). Miso는 비양자화 경로도 패치해 둠.

ⓑ 오디오 처리 (귀와 입)

구성요소무엇역할
Mimi (moshi 0.2.2)신경망 오디오 코덱음성↔'오디오 토큰' 변환기. 32개 코드북, 24kHz. Miso의 입·귀.
torchaudio 2.4오디오 I/O.wav 읽기/쓰기, 샘플레이트 리샘플링.
SilentCipher오디오 워터마크생성 음성에 사람 귀엔 안 들리는 식별 신호를 새김(AI 생성 표시).

ⓒ 실행·배포 (운영)

구성요소무엇역할
uv초고속 패키지 매니저의존성 설치·가상환경 구성을 pip보다 빠르게. uv sync.
Hugging Face Hub모델 저장소8B 가중치 + Mimi + 워터마커를 자동 다운로드·캐시.
Python 3.10–3.12런타임고정 버전(.python-version = 3.10).
CUDA GPU하드웨어8B 추론에 사실상 필수. CPU 폴백은 있으나 매우 느림.
용어
신경망 오디오 코덱 (Neural Audio Codec)
소리를 압축하는 AI. MP3가 소리를 작은 파일로 줄이듯, Mimi는 소리를 '오디오 토큰'이라는 정수 숫자 묶음으로 바꾼다. LLM은 글자 토큰을 다루듯 이 오디오 토큰을 다룰 수 있어, "언어모델로 소리를 생성"하는 길이 열린다.
왜 토크나이저가 핵심일까

LLM은 본래 '토큰(숫자) 다음에 올 토큰'을 맞히는 기계다. 글자를 토큰으로 바꾸면 글을 생성하고, 소리를 토큰으로 바꾸면 소리를 생성한다. Mimi는 바로 그 "소리 → 숫자" 변환기다. Miso의 신경망은 결국 "다음 오디오 토큰 맞히기"를 반복하는 것뿐이다.

4아키텍처 심화 분석

두 개의 트랜스포머가 한 프레임을 만든다 — models.py / generator.py 해부.

Miso의 심장은 크기가 다른 트랜스포머 두 개다. 이 "큰 두뇌 + 작은 입" 구조가 CSM 계열의 핵심 설계다.

이름크기스펙(models.py)하는 일
Backbone (백본)Llama 3.2 8B32층, 헤드 32, KV헤드 8(GQA), 차원 4096텍스트+오디오 맥락을 읽고 프레임의 '뼈대'(코드북 0)를 예측
Decoder (디코더)Llama 3.2 300M8층, 헤드 24, KV헤드 6, 차원 1536한 프레임 안의 나머지 31개 코드북을 순차 예측

한 '프레임'이 만들어지는 과정

Mimi는 음성을 80ms짜리 '프레임' 단위로 쪼갠다(1초 = 12.5프레임). 그리고 한 프레임은 32개 코드북의 토큰으로 표현된다. 0번 코드북은 소리의 큰 윤곽(의미·음소), 1~31번은 점점 미세한 음색·디테일을 담는다. 이게 RVQ(잔차 벡터 양자화) 방식이다.

용어
RVQ (Residual Vector Quantization, 잔차 벡터 양자화)
소리를 '여러 겹'으로 근사하는 압축법. 1겹(코드북0)으로 대충 그린 뒤, 2겹에서 "1겹이 놓친 차이(잔차)"를 메우고, 3겹에서 또 그 차이를 메우고… 32겹까지 쌓아 점점 원음에 가까워진다. 그림을 밑그림→채색→명암 순으로 완성하는 것과 같다.
왜 트랜스포머를 둘로 나눴나

32개 코드북을 8B 모델이 매번 32번 통째로 돌리면 너무 느리고 무겁다. 그래서 비싼 8B 백본은 프레임당 딱 한 번 돌려 가장 중요한 0번 코드북과 '맥락 요약'만 뽑고, 나머지 31겹의 디테일은 값싼 300M 디코더가 빠르게 채운다. "대가는 큰 결정만, 조수는 디테일을"이라는 분업이다.

ASCII로 보는 전체 흐름

입력: text="안녕", speaker=0, context=[이전 발화들] │ ▼ ┌──────────────────────────────────────────────┐ │ 1) 토큰화 (generator.py) │ │ · 텍스트 → Llama3 토크나이저 → 텍스트 토큰 │ │ · 이전 오디오 → Mimi 인코더 → 오디오 토큰 │ │ · 텍스트·오디오를 한 줄로 '교차 배치'(interleave)│ └──────────────────────────────────────────────┘ │ (프레임들의 시퀀스) ▼ ┌──────────────────────────────────────────────┐ │ 2) BACKBONE Llama 3.2 8B ※프레임당 1회 │ │ 임베딩 32+1겹을 '합(sum)'으로 한 벡터로 압축 │ │ → 맥락 이해 → codebook0_head → [코드북 0] 샘플 │ └──────────────────────────────────────────────┘ │ last_h(맥락요약) + 코드북0 ▼ ┌──────────────────────────────────────────────┐ │ 3) DECODER Llama 3.2 300M ※코드북마다 반복 │ │ projection으로 차원 축소 → 코드북 1,2,…,31 │ │ audio_head로 한 겹씩 자기회귀 예측 │ │ (프레임마다 디코더 KV캐시 reset) │ └──────────────────────────────────────────────┘ │ 완성된 32겹 프레임 ▼ ── 다음 프레임으로 (전부 0이면 EOS=종료) ── ▼ ┌──────────────────────────────────────────────┐ │ 4) Mimi 디코더 → 파형 복원 → SilentCipher 워터마크│ │ → 24kHz .wav 저장 │ └──────────────────────────────────────────────┘

설계 디테일 3가지 (코드에서 직접 확인)

디테일 1
임베딩을 '더해서' 한 벡터로 — masked sum

generate_frame()은 한 프레임의 33개 토큰(텍스트1 + 오디오32) 임베딩에 마스크를 곱한 뒤 sum(dim=2)으로 더해 하나의 벡터로 만든다. 그래서 백본 입장에선 "프레임 = 토큰 1개"처럼 보여 시퀀스가 짧아지고 빨라진다.

디테일 2
GQA + KV 캐시로 8B를 견딜 만하게

백본은 헤드 32개에 KV헤드는 8개뿐인 GQA(그룹 쿼리 어텐션)를 쓴다. 메모리·속도를 아끼는 표준 기법. 또 생성 중 과거 계산을 KV cache에 저장하되, 디코더 캐시는 프레임마다 reset한다(한 프레임 안의 31겹만 보면 되므로).

디테일 3
CUDA 동기화 없는 top-k 샘플링

sample_topk()은 temperature·top-k로 후보를 거른 뒤, 지수분포 난수로 나눠 argmax하는 Gumbel-max 트릭으로 샘플링한다. GPU를 멈추지 않고(no-sync) 뽑아 추론을 빠르게 한다. 기본값 temperature=0.9, topk=50.

용어
자기회귀 (Autoregressive)
"방금 내가 만든 걸 다시 입력으로 넣어 다음을 만든다"는 방식. 프레임을 하나 만들면 그걸 보고 다음 프레임을, 코드북을 하나 예측하면 그걸 보고 다음 코드북을 예측한다. 사람이 말을 한 단어씩 이어 붙이는 것과 같다.

5디렉토리 구조 해부

파일 7개짜리 작고 단단한 레포 — 각 파일이 뭘 하는지.

Miso는 거대한 모노레포가 아니다. 핵심 파이썬 파일 5개 + 설정 파일들로 끝난다. 그래서 처음부터 끝까지 읽기 좋은 '교과서' 같은 코드베이스다.

MisoTTS/ ├── models.py ★ 모델 '설계도' — 두 트랜스포머 + 임베딩/헤드 정의 ├── generator.py ★ 추론 파이프라인 — 토큰화·생성루프·워터마크·로딩 ├── moshi_compat.py Moshi(Mimi) 호환 패치 — bitsandbytes 없이도 동작 ├── watermarking.py SilentCipher 워터마크 삽입/검증 + CLI ├── run_misotts.py ▶ 실행 예제 — 4턴 대화를 만들어 .wav로 저장 ├── pyproject.toml 프로젝트 메타 + 의존성(고정 버전) ├── requirements.txt pip용 의존성 목록(동일) ├── uv.lock uv 잠금 파일(재현 가능한 설치) ├── .python-version 3.10 고정 ├── LICENSE 라이선스 └── images/ README 배너 이미지

가장 중요한 두 파일

파일핵심 내용
models.pyllama3_2_8B()/llama3_2_300M() 정의, ModelArgs 설정값, Model 클래스(generate_frame = 프레임 1개 생성의 전 과정), top-k 샘플링·인과 마스크 유틸.
generator.pySegment(화자·텍스트·오디오 묶음), Generator.generate()(전체 생성 루프), 텍스트/오디오 토큰화, Mimi·워터마커 로딩, HF에서 가중치 다운로드.
두 파일의 관계

models.py = 엔진 그 자체(피스톤·실린더가 어떻게 생겼나). generator.py = 운전석(연료 넣고, 시동 걸고, 기어 바꾸며 목적지까지 운전). 엔진만 있어도, 운전석만 있어도 차는 못 간다. 둘을 함께 읽어야 그림이 완성된다.

용어
moshi_compat.py가 하는 일
Mimi 코덱은 원래 Moshi(Kyutai) 프로젝트 소속이라, 일부 레이어가 bitsandbytes(양자화 라이브러리)를 전제로 짜여 있다. Miso는 양자화를 안 쓰는 일반 레이어에서도 동작하도록 quantize.linear 함수를 런타임에 슬쩍 바꿔치기(monkey-patch)한다. 외부 코드를 포크하지 않고 호환을 맞추는 영리한 수법이다.

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있나 — 기술별 + 실습 아이디어.

① "LLM으로 소리를 만든다"는 발상

가장 큰 배움. 언어모델은 본래 텍스트용이지만, 소리를 토큰으로 바꾸면 똑같은 LLM 기법으로 소리를 생성할 수 있다. Miso는 이 다리(텍스트 토큰 ↔ 오디오 토큰)를 어떻게 놓는지 보여 준다.

실습 아이디어

generator.py_tokenize_text_segment/_tokenize_audio를 읽고, "텍스트 토큰은 프레임의 마지막 칸, 오디오 토큰은 앞 32칸"에 어떻게 배치되는지 종이에 그려 보기.

② RVQ 코덱과 멀티 코드북

왜 코드북이 32개나 필요한지, 0번과 31번의 역할 차이가 무엇인지 이해하면 현대 오디오 생성의 절반을 이해한 셈이다. Mimi·EnCodec·SoundStream이 모두 이 RVQ 계열이다.

실습 아이디어

Mimi로 짧은 음성을 인코딩해 토큰을 뽑고, 코드북을 1·4·16·32개만 써서 디코딩한 소리를 각각 들어 보기 → 겹을 쌓을수록 음질이 어떻게 좋아지는지 귀로 확인.

③ 계층적(2단) 트랜스포머 분업

"큰 모델은 가끔, 작은 모델은 자주"라는 분업은 비용을 줄이는 강력한 패턴이다. 음성뿐 아니라 영상·코드 생성에도 응용된다.

실습 아이디어

generate_frame()print()를 넣어, 한 프레임을 만들 때 백본은 몇 번, 디코더는 몇 번 호출되는지 세어 보기. (예상: 백본 1, 디코더 31)

④ torchtune으로 Llama 재사용하기

바닥부터 트랜스포머를 짜지 않고, torchtune.models.llama3_2를 불러와 tok_embeddings·outputnn.Identity()로 갈아끼우는 기법. "검증된 블록을 가져와 입출력만 바꾼다"는 실전 엔지니어링 감각을 배운다.

⑤ 책임 있는 생성 — 워터마킹

모든 출력에 들리지 않는 워터마크를 기본으로 새기는 설계는, AI 음성 악용(사칭·사기)에 대한 현실적 방어다. watermarking.pywatermark()/verify() 쌍을 보면 "삽입 → 검출"의 전체 사이클을 알 수 있다.

윤리 포인트
워터마크 키는 비밀로

README도 강조한다: 다른 앱에 Miso를 넣을 땐 자기만의 비밀 워터마크 키를 쓰고 공개하지 말 것. 키가 공개되면 누구나 "이건 내 모델 출력이 아니다"라고 위조하거나, 추적을 회피할 수 있다.

7하드웨어 / 시스템 요구사항

"내 컴퓨터에서 돌아갈까?"를 먼저 따져 보자.

항목요구/권장설명
GPUCUDA(NVIDIA) GPU 사실상 필수기본 추론은 torch.bfloat16. CPU 폴백은 있지만 8B라 매우 느려 실사용 불가에 가깝다.
VRAM대략 16GB+ 권장8B를 bf16로 올리면 가중치만 ~16GB. 여유 있게 24GB(예: RTX 4090/3090)면 편하다. (정밀도·구현에 따라 달라짐)
디스크수십 GB8B 가중치 + Mimi + 워터마커가 HF 캐시로 내려온다.
Python3.10 ~ 3.12.python-version은 3.10 고정. uv sync --python 3.10 권장.
OS리눅스 우선bitsandbytes는 리눅스에서만 설치(설정 조건부). macOS는 MPS의 float64 한계로 CPU로 폴백.
네트워크최초 1회 필요가중치·코덱·워터마커 다운로드 때문. 이후엔 캐시 재사용으로 오프라인 가능.
함정
"맥북에서 그냥 될 줄 알았는데…"

예제는 cuda 없으면 cpu로 떨어지게 짜여 있지만, 8B를 CPU로 돌리면 한 문장에 수 분~수십 분이 걸릴 수 있다. GPU 없는 환경이면 클라우드 GPU(런팟·코랩 등)나 misolabs.ai의 데모를 먼저 써 보는 편이 현실적이다.

8직접 해볼 수 있는 실습 과제

난이도별로. 위에서 아래로 갈수록 어렵다.

🟢 Lv.1 — 첫 음성 만들어 보기 입문 · 30분

레포를 클론하고 uv sync --python 3.10uv run python run_misotts.py 실행. full_conversation.wav가 생기는 걸 확인하고 들어 본다. (GPU 환경 전제)

목표: 설치 → 다운로드 → 첫 출력까지의 전체 흐름을 몸으로 익히기. 에러가 나면 어느 단계에서 멈췄는지 기록.

🟢 Lv.2 — 내 대본으로 바꿔 말하게 하기 입문 · 30분

run_misotts.pyconversation 리스트를 내가 쓴 대사로 교체하고, speaker_id를 0/1로 번갈아 줘서 두 사람 대화를 만들어 본다. max_audio_length_ms도 바꿔 보기.

관찰: 같은 문장이라도 화자 번호·앞 맥락을 바꾸면 톤이 어떻게 달라지나?

🟡 Lv.3 — 음성 클로닝 시도 중급 · 1~2시간

README의 "Prompted generation" 예제를 따라, 짧은 prompt.wav + 그 대본을 Segment로 넣어 context를 구성. 그 목소리 톤으로 새 문장을 말하게 해 본다.

실험: 프롬프트 오디오의 길이·감정·잡음이 클로닝 품질에 어떤 영향을 주는지 비교.

🟡 Lv.4 — 워터마크 검출기 돌려 보기 중급 · 1시간

watermarking.py의 CLI(check_audio_from_file)로 내가 만든 .wav가 "Watermarked"로 나오는지 확인. 그다음 일반 음성 파일을 넣어 "Not watermarked"가 나오는지 대조한다.

생각해 보기: 오디오를 재인코딩(mp3 변환)하면 워터마크가 살아남을까? 직접 깨 보며 강건성을 체감.

🔴 Lv.5 — 생성 루프 계측·시각화 고급 · 반나절

generate_frame()generate()에 타이머·카운터를 심어, 프레임당 백본/디코더 호출 횟수와 소요 시간을 측정. temperature·topk를 바꿔 가며 음질과 속도의 트레이드오프를 그래프로 그려 본다.

도전: 코드북을 16개로 줄이면 속도와 음질이 어떻게 변하나? set_num_codebooks를 만져 직접 실험.

9관련 기술 심화 학습 로드맵

Miso를 발판 삼아 "음성 AI"를 제대로 파고드는 4주 코스.

주차주제핵심 학습 + 산출물
1주차오디오 토큰의 세계샘플링·STFT·멜스펙트로그램 기초 → 신경망 코덱(EnCodec/Mimi) 개념. 산출물: 음성을 토큰으로 인코딩→디코딩하는 노트북.
2주차RVQ & 멀티 코드북잔차 양자화 원리, 코드북 수 vs 음질 실험. 산출물: 코드북 수별 음질 비교 리포트.
3주차CSM 아키텍처Sesame CSM 논문/블로그 + Miso models.py 정독, 백본·디코더 분업 재현. 산출물: 아키텍처 다이어그램 + 코드 주석본.
4주차응용 & 책임음성 클로닝·대화 맥락 조건화 실험, 워터마킹·딥페이크 윤리. 산출물: 미니 대화 더빙 데모 + 윤리 체크리스트.
학습 순서의 핵심

코덱(소리↔토큰)을 먼저 이해해야 그 위의 LLM(토큰 생성)이 보인다. "코덱 → RVQ → 트랜스포머 → 응용" 순서를 지키면, Miso뿐 아니라 VALL-E·Bark·VibeVoice 같은 다른 음성 모델도 같은 렌즈로 읽힌다.

곁들이면 좋은 비교 학습

Miso와 같은 "오픈 음성 모델" 계보를 함께 보면 좌표가 잡힌다: Sesame CSM(원조 구조), Kyutai Moshi/Mimi(코덱 출처), VALL-E(코덱 언어모델의 시초), Bark·XTTS·VibeVoice·Kokoro(다양한 오픈 TTS). 이 문서 폴더의 VibeVoice·VoxCPM·stable-audio-3 딥다이브와 함께 읽으면 비교가 쉽다.

10핵심 키워드 사전

레포에 등장하는 용어를 한 곳에 모았다.

아키텍처
CSM (Conversational Speech Model)
Sesame AI Labs가 제안한, 대화 맥락을 조건으로 음성을 생성하는 구조. "백본 트랜스포머 + 오디오 디코더 + RVQ 코덱"이 한 세트. Miso는 이 설계를 8B로 확장한 모델이다.
코덱
Mimi
Kyutai의 Moshi 프로젝트에서 온 신경망 오디오 코덱. 24kHz 음성을 12.5Hz(80ms) 프레임의 RVQ 토큰으로 바꾼다. Miso의 "귀(인코더)와 입(디코더)" 역할.
압축
RVQ (잔차 벡터 양자화)
소리를 여러 겹(코드북)으로 점점 정밀하게 근사하는 양자화. 0번은 큰 윤곽, 뒤로 갈수록 미세한 디테일. Miso는 32겹을 쓴다.
모델
Backbone / Decoder
백본 = 맥락을 읽고 핵심(코드북0)을 정하는 큰 8B 트랜스포머. 디코더 = 나머지 코드북을 채우는 작은 300M 트랜스포머. 분업으로 비용을 낮춘다.
어텐션
GQA (Grouped-Query Attention)
여러 쿼리 헤드가 적은 수의 키/값 헤드를 공유하는 어텐션. 메모리·속도를 아껴 큰 모델을 실용적으로 만든다. 백본은 헤드 32 : KV헤드 8.
생성
자기회귀 / top-k 샘플링
만든 결과를 다시 입력에 넣어 다음을 만드는 방식. top-k는 확률 상위 k개 후보 중에서만 뽑아 안정성과 다양성을 조절(기본 k=50, temperature=0.9).
최적화
KV 캐시 / bfloat16
KV 캐시 = 과거 어텐션 계산을 저장해 재사용(속도↑). bfloat16 = 16비트 부동소수로 메모리를 절반으로 줄이는 정밀도. 8B 추론의 필수 기법.
안전
SilentCipher 워터마킹
사람 귀엔 안 들리지만 기계는 검출 가능한 신호를 음성에 새기는 기술. "이 소리는 AI가 만들었다"는 추적·식별을 가능하게 한다. Miso는 기본 ON.
도구
torchtune / uv / Hugging Face Hub
torchtune = Llama 같은 LLM 블록을 쉽게 가져다 쓰는 라이브러리. uv = pip보다 빠른 패키지/환경 매니저. HF Hub = 모델 가중치를 내려받고 캐시하는 저장소.

11참고 링크

원문으로 더 깊이 들어가고 싶다면.