로컬 음성 인식·합성
최종 업데이트
Fish Audio Drama 3 int4: 41.5GB를 22GB로 줄여 한 장에
4비트로 접어도 목소리는 그대로인지 봐요
Drama 3를 4비트로 접은 비공식 체크포인트1예요. 내려받는 크기가 41.5GB에서 22.1GB로 줄고, 공개된 측정에서 WER은 원본 FP82과 같은 수준이에요. 대신 요청당 지연이 8%쯤 늘어요.
41.5GB를 22GB로 줄인 체크포인트
Fish Audio Drama 3는 35B 가운데 3B만 계산하는 다화자 음성 합성3 모델이에요. 원본은 bf164 기준 41.5GB라 24GB 카드 한 장에는 들어가지 않아요. 이 체크포인트는 그 가중치를 4비트로 접어 22.1GB로 만든 비공식 양자화5본이에요.
무엇을 접었는지가 중요해요. 라우팅되는 전문가와 일부 어텐션6 투영만 int4로 내리고, 모든 토큰7이 거쳐 가는 공유 전문가와 소리를 만드는 오디오 디코더는 bf16으로 남겼어요. 그래서 이름에 W4A16 하이브리드가 붙어요.
라이선스는 Fish Audio 커뮤니티 라이선스예요. 상업적으로 쓰기 전에 조건을 직접 확인해야 해요.
| 구성 요소 | 정밀도 | 메모리에서 차지하는 몫 |
|---|---|---|
| 라우팅 전문가 | int4 | 가중치 대부분이 여기 있어요 |
| 일부 어텐션 투영 | int4 | 저장은 4비트, 계산은 16비트예요 |
| 공유 전문가 | bf16 | 모든 토큰이 거쳐 가요 |
| 오디오 디코더 | bf16 | 출력 파형을 직접 만들어요 |

가중치보다 서빙 메모리가 더 들어요
가중치가 20.8GB여도 서빙 메모리는 그보다 훨씬 커요. 24GB 카드를 고르면 실행 직전에 막혀요. A100 80GB에서 잰 기록을 보면 시작 시점에 이미 57.3GB를 쓰고, 다섯 번 생성하는 동안 피크가 57.9GB였어요.
나머지는 KV 캐시8와 엔진 몫이에요. 문장이 길고 화자가 많을수록 캐시가 커져서, 가중치만 보고 정한 여유는 금방 사라져요.
Ampere 이상이 필요해요. 4비트 커널이 GPTQ-Marlin을 쓰기 때문이에요. Turing 세대나 그 이전 카드에서는 이 경로가 열리지 않아요.

SGLang Omni로 원본과 같은 명령에 올려요
런타임9은 SGLang Omni예요. 저장소를 받아 파이썬 3.12 가상환경10을 만들고, 프리릴리스를 허용해 fishaudio 확장을 설치해요.
| 준비 항목 | 필요 조건 |
|---|---|
| GPU | Ampere(sm80) 이상 |
| 파이썬 | 3.12 가상환경 |
| 설치 | --prerelease=allow 필요 |
| 체크포인트 | 22.1GB 내려받기 |
체크포인트를 내려받은 뒤에는 원본과 같은 sgl-omni serve 명령을 써요. 양자화 정보를 체크포인트가 들고 있어서 로더를 따로 고치지 않아도 돼요.
git clone https://github.com/sgl-project/sglang-omni.git
cd sglang-omni
uv venv -p 3.12 .venv && . .venv/bin/activate
uv pip install --prerelease=allow -e ".[fishaudio]"
hf download akhaliq/drama-3-int4
sgl-omni serve \
--model-path akhaliq/drama-3-int4 \
--port 8000API11도 그대로예요. /v1/audio/speech에 input을 넣고, references로 참조 음성을 붙이고, [sighs]나 [laughs] 태그와 다화자 장면, previous_takes 편집까지 원본과 같게 동작해요.
curl -s localhost:8000/v1/audio/speech \
-H 'content-type: application/json' \
-d '{"input":"오늘 회의는 여기까지입니다. [sighs] 정리해 둘게요.",
"references":[{"audio":"ref.wav","text":"참조 음성 대본"}]}' \
--output out.wav공개된 측정에서 품질은 그대로예요
Seed-TTS English 1,088개 프롬프트12를 H200 한 대에서 concurrency 8, 비스트리밍으로 돌린 기록이에요. WER은 생성된 음성을 Qwen3-ASR-1.7B로 받아써서 쟀어요.
지연은 요청당 8%쯤 늘고 처리량13은 6.47에서 5.99로 줄었어요. 반면 WER은 1.63%로 원본보다 낮게 나왔어요.
이 차이를 품질 차이로 읽으면 안 돼요. 같은 FP8 체크포인트를 다시 돌렸을 때도 1.365초와 2.02%가 나왔거든요. 실행마다 흔들리는 폭이 두 체크포인트의 차이와 비슷해요.
좌우로 밀어 표 전체를 비교하세요.
| 체크포인트 | 가중치 | 지연 평균 | p95 | RTF | 초당 요청 | WER |
|---|---|---|---|---|---|---|
| 원본 FP8 | 37.0GB | 1.235초 | 1.902초 | 0.281 | 6.47 | 1.99% |
| int4 | 20.8GB | 1.334초 | 2.178초 | 0.320 | 5.99 | 1.63% |

다른 양자화와 견주면
같은 8개 프롬프트를 A100에서 돌린 비교도 공개돼 있어요. 32GB 카드를 겨냥한 int8 dense 양자화와 나란히 놨어요.
긴 문단에서 상대 체크포인트는 문장을 지어내며 WER 0.667이 나왔고, 이쪽은 0.028이었어요. 화자 유사도는 0.846으로 같았어요.
좌우로 밀어 표 전체를 비교하세요.
| 체크포인트 | 평균 WER | 중국어 제외 | 화자 유사도 |
|---|---|---|---|
| int4 hybrid (22.1GB) | 0.197 | 0.082 | 0.846 |
| int8 dense (24.5GB) | 0.259 | 0.154 | 0.846 |
중국어 프롬프트는 둘 다 1.0인데 전사 내용은 거의 같았어요. 띄어쓰기 없는 중국어를 나누는 과정에서 생긴 측정 문제라 모델 차이로 보면 안 돼요.
이 표와 위의 Seed-TTS 표를 나란히 놓고 비교하면 안 돼요. 데이터셋도 전사 모델도 달라요.
언제 이걸 고르고 언제 원본을 고르나
메모리가 먼저면 int4예요. 가중치가 22GB라 24GB나 32GB 카드에서 선택지가 생겨요.
지연이 먼저면 원본 FP8이에요. 요청당 8% 차이는 실시간 대화처럼 촘촘한 자리에서 체감돼요.
둘 다 프리릴리스 위에 있어요. sglang-omni는 버전이 빠르게 바뀌어서 설치 명령과 지원 GPU14가 릴리스마다 달라질 수 있어요. 운영에 넣기 전에 같은 문장으로 한 번 들어 보고 정하세요.
용어 각주
체크포인트 — 학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.
본문으로 돌아가기FP8 — 값 하나를 8비트로 표현하는 부동소수점 수치 형식입니다.
본문으로 돌아가기음성 합성 — 텍스트를 발음과 운율을 가진 음성 신호로 변환하는 기술입니다.
본문으로 돌아가기BF16 — 모델 수치를 저장하고 계산하는 16비트 부동소수점 형식입니다. FP32와 같은 폭의 지수부를 써 넓은 값 범위를 표현합니다.
본문으로 돌아가기양자화 — 모델의 가중치나 계산값을 더 적은 비트로 표현해 저장 공간과 메모리 사용량을 줄이는 방법입니다. 표현 단계가 거칠어져 정확도에도 영향을 줄 수 있습니다.
본문으로 돌아가기어텐션 — 입력 토큰 사이의 관련도를 계산해 각 위치의 정보를 현재 표현에 반영하는 신경망 연산입니다.
본문으로 돌아가기토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.
본문으로 돌아가기KV 캐시 — 어텐션에서 이전 토큰의 키·값을 저장해 다음 토큰 생성 때 재사용하는 메모리입니다. 문맥 길이와 배치 크기에 따라 용량이 달라집니다.
본문으로 돌아가기런타임 — 프로그램이 실행될 때 필요한 기능을 제공하는 소프트웨어 환경입니다. 로컬 AI에서는 모델을 실행하는 엔진을 가리키기도 합니다.
본문으로 돌아가기Python 가상환경 — 프로젝트별로 Python 패키지를 분리해 설치하는 공간입니다. 패키지 버전 충돌을 줄이는 데 쓰입니다.
본문으로 돌아가기API — 프로그램의 기능을 다른 코드에서 호출하기 위한 약속된 인터페이스입니다.
본문으로 돌아가기프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.
본문으로 돌아가기처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.
본문으로 돌아가기GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.
본문으로 돌아가기
자주 묻는 질문
- 이 글에서 가장 먼저 확인할 것은 무엇인가요?
- Drama 3를 4비트로 접은 비공식 체크포인트예요. 내려받는 크기가 41.5GB에서 22.1GB로 줄고, 공개된 측정에서 WER은 원본 FP8과 같은 수준이에요. 대신 요청당 지연이 8%쯤 늘어요.
- 필요한 메모리는 어느 정도인가요?
- 가중치가 20.8GB여도 서빙 메모리는 그보다 훨씬 커요. 24GB 카드를 고르면 실행 직전에 막혀요. A100 80GB에서 잰 기록을 보면 시작 시점에 이미 57.3GB를 쓰고, 다섯 번 생성하는 동안 피크가 57.9GB였어요.
- 조건과 출처는 어디서 확인하나요?
- 라이선스는 Fish Audio 커뮤니티 라이선스예요. 상업적으로 쓰기 전에 조건을 직접 확인해야 해요.
