로컬 음성 인식·합성

최종 업데이트

Nemotron 3.5 Transcribe로 1시간 회의를 한 번에 전사하기

30B-A4B 음성 LLM, 화자와 시각까지 붙여요

Nemotron 3.5 Transcribe는 NVIDIA가 10월 28일 공개한 음성 LLM1이에요. 40개 언어를 다루고 65,536 토큰2 문맥에 1시간 녹음을 넣어요. 화자 태그와 단어 타임스탬프를 한 번에 뽑고, 한국어는 FLEURS CER 2.78%로 보고됐어요. 다만 BF163이 67.5GB라 24GB GPU4에서는 19.68GB 4비트 파일을 써야 해요.

실행 조건과 핵심 내용
  • 1시간 녹음을 한 번에 넣고 화자 태그와 단어 타임스탬프를 받아요.
  • 한국어는 FLEURS CER 2.78%로 보고됐어요.
  • BF16 67.5GB, 24GB GPU는 19.68GB 4비트를 써요.
  • 실시간이 아니라 파일을 넣고 기다리는 방식이에요.

무엇을 넣고 무엇을 받나요?

Nemotron 3.5 Transcribe는 음성 인코더와 화자 인코더를 Nemotron 3.5 Lightning 30B-A3B에 붙인 음성 LLM이에요. 활성 파라미터는 4.3B고, 입력은 음성과 텍스트, 출력은 전사문이에요.

문맥은 65,536 토큰이고 녹음은 1시간까지 들어가요. 회의나 통화를 잘라 넣지 않아도 되니, 문장이 중간에 끊기지 않아요.

전사 방식은 지시문으로 정해요. 말한 그대로 받아쓰기, 말버릇을 지운 읽기용, 고유명사 목록을 주는 문맥 전사, 화자 태그, 다른 언어로 번역까지 한 모델에서 처리해요.

네 개의 빈 의자에 둘러싸인 원목 회의 테이블과 중앙 마이크
한 시간짜리 회의를 잘라 넣지 않고 한 번에 넘기면, 문장이 중간에 끊기지 않아요.

실시간 0.6B와 뭐가 다른가

이름이 비슷한 Nemotron 3.5 ASR5 스트리밍 0.6B는 마이크 앞에서 바로 받아쓰는 모델이에요. Transcribe는 파일을 넣고 기다리는 오프라인 모델이라 쓰는 자리가 갈려요.

회의 중에 자막이 필요하면 스트리밍 모델을 쓰고, 이 모델은 권장하지 않아요. 끝난 뒤 화자별로 정리할 때 Transcribe가 맞아요.

둘을 같이 쓰는 구성도 돼요. 회의 중에는 스트리밍으로 자막을 띄우고, 끝난 뒤 Transcribe로 화자와 시각을 붙여 다시 뽑아요.

같은 이름, 다른 쓰임
항목스트리밍 0.6BTranscribe 30B-A4B
파라미터0.6B30B-A4B, 활성 4.3B
문맥짧은 청크65,536 토큰, 1시간
화자 구분단독으로는 없음지시문으로 화자 태그
한국어ko-KR 로케일FLEURS CER 2.78%
실행NeMo-Speech.cppvLLM, Transformers, GGUF

메모리부터 계산해요

BF16 가중치는 67.5GB라 메모리가 80GB급이어야 해요. 공식 예시가 H100 한 장을 전제로 하는 이유가 여기 있어요.

24GB GPU나 맥에서는 4비트 GGUF6를 써요. 19.68GB 디코더에 1.67GB 인코더를 더해 21.4GB 남짓이고, 16GB GPU는 13.57GB 파일로 내려가요. 이때 피크 GPU 메모리는 15.6GiB였어요.

인코더 파일은 어떤 디코더를 골라도 필요해요. 디코더가 인코더 파일 이름을 찾으니 이름을 바꾸지 마세요.

받을 파일과 맞는 장비
파일크기맞는 장비
AD-IQ4_NL19.68GB24GB GPU와 맥 기본
AD-IQ4_NL_L22.55GB32GB에서 여유를 두고
AD-Q2_0_L15.55GB24GB 맥
AD-Q2_0_M13.57GB16GB GPU
AD-NVFP419.68GBRTX 50, DGX Spark
Q8_035.00GB48GB 이상
작업대 위에 단일 데이터센터 가속기 카드가 놓여 있고, 옆에 확대경과 메모장이 있습니다.
BF16은 67.5GB예요. 24GB 카드에서는 4비트로 내려가고, 그만큼 일부 언어의 오차가 늘어요.

NeMo-Speech.cpp로 돌려요

CMake 3.26과 SentencePiece 0.2.0 이상이 필요해요. 엔비디아는 cuda-server, 애플 실리콘은 metal-server 프리셋으로 빌드해요.

빌드와 전사
git clone https://github.com/NVIDIA/NeMo-Speech.cpp && cd NeMo-Speech.cpp
git submodule update --init --depth 1 llama.cpp third_party/cpp-httplib

# NVIDIA
scripts/configure.sh cuda-server && cmake --build --preset cuda-server
# Apple silicon
scripts/configure.sh metal-server && cmake --build --preset metal-server

hf download AtomicChat/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-GGUF --local-dir models \
  --include "*Encoder-F16.gguf" --include "*AD-IQ4_NL.gguf"

build/cuda-server/bin/nemo-speech transcribe meeting.wav --json \
  --model models/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B-AD-IQ4_NL.gguf

JSON에는 단어마다 시각이 붙어요. 자막이 필요하면 --format srt로 바로 뽑아요.

맥에서는 build/metal-server/bin/nemo-speech를 써요. 바이너리 경로만 다르고 옵션은 같아요.

화자와 시각을 뽑아요

화자 태그를 원하면 지시문에 Put speaker tags on the transcription. 문장을 넣어요. Transformers 경로에서는 apply_transcription_request에 지시문을 넘겨요.

단어 시각은 return_word_timestamp_logits를 켜고 align_word_timestamps로 정렬해요. 발화 구간마다 시작과 끝이 붙고, 화자 정보도 같이 나와요.

화자 라벨은 같은 녹음 안에서 목소리를 구분하는 표시예요. 실제 인물이 누구인지는 알려주지 않아요.

세 가지 색의 음성 파형을 띄운 노트북과 색깔별 노트
화자 라벨은 목소리를 구분하는 표시예요. 누가 말했는지는 내가 이름을 붙여야 해요.

숫자를 읽는 법

영어 Open ASR 리더보드 9개 세트 평균 WER은 4.71%, 다국어는 4.62%예요.

겹치는 발화가 있는 회의 데이터에서는 평균 cpWER이 15.80이에요. 다음 공개 조합인 DiCoW v3.3과 DiariZen이 16.83이라, 전용 조합보다 낮아요.

한국어 2.78%는 원본 BF16 기준이에요. 4비트 파일에서 한국어가 얼마나 달라지는지는 공개된 비교표에 없어서, 내 녹음으로 한 번 대조해야 해요.

모델 카드에 공개된 비교
측정 지표결과다음 공개 결과
회의 cpWER (AMI 등)15.80DiCoW v3.3+DiariZen 16.83
Preference-ASR WER (기본)7.56Canary-Qwen 8.16
Preference-ASR WER (지시)6.16Canary-Qwen 8.36
영어 Open ASR 평균 WER4.71—
다국어 Open ASR 평균 WER4.62—
FLEURS 한국어 CER2.78—

무엇에 약한가

실시간 스트리밍은 하지 않아요. 모델 카드도 오프라인 모델이라고 적고, 내부 청킹이 스트리밍을 뜻하지 않는다고 못 박아요.

16GB GPU용 13.57GB 파일은 중국어 CER이 1.5점 올라가요. 크기를 줄일수록 다른 언어도 손해를 볼 수 있어요.

공식 지원은 리눅스와 윈도이고, 맥은 GGUF와 Metal7 조합으로만 돌아가요. 라이선스는 OpenMDW-1.1이라 상업적 사용 조건을 직접 확인해야 해요.

용어 각주

  1. 대규모 언어 모델 — 대규모 텍스트 데이터에서 언어 패턴을 학습해 문맥에 맞는 텍스트를 처리하고 생성하는 모델입니다.

    본문으로 돌아가기
  2. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기
  3. BF16 — 모델 수치를 저장하고 계산하는 16비트 부동소수점 형식입니다. FP32와 같은 폭의 지수부를 써 넓은 값 범위를 표현합니다.

    본문으로 돌아가기
  4. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  5. 자동 음성 인식 — 음성에서 발화를 인식해 텍스트로 변환하는 기술입니다.

    본문으로 돌아가기
  6. GGUF — 모델 정보를 담는 파일 형식으로 llama.cpp 계열 도구에서 널리 사용됩니다.

    본문으로 돌아가기
  7. Metal — Apple 기기에서 그래픽과 GPU 병렬 계산을 실행하는 저수준 기술입니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
Nemotron 3.5 Transcribe는 NVIDIA가 10월 28일 공개한 음성 LLM이에요. 40개 언어를 다루고 65,536 토큰 문맥에 1시간 녹음을 넣어요. 화자 태그와 단어 타임스탬프를 한 번에 뽑고, 한국어는 FLEURS CER 2.78%로 보고됐어요. 다만 BF16이 67.5GB라 24GB GPU에서는 19.68GB 4비트 파일을 써야 해요.
필요한 메모리는 어느 정도인가요?
BF16 가중치는 67.5GB라 메모리가 80GB급이어야 해요. 공식 예시가 H100 한 장을 전제로 하는 이유가 여기 있어요.
선택하지 않는 편이 좋은 경우는 언제인가요?
회의 중에 자막이 필요하면 스트리밍 모델을 쓰고, 이 모델은 권장하지 않아요. 끝난 뒤 화자별로 정리할 때 Transcribe가 맞아요.
조건과 출처는 어디서 확인하나요?
공식 지원은 리눅스와 윈도이고, 맥은 GGUF와 Metal 조합으로만 돌아가요. 라이선스는 OpenMDW-1.1이라 상업적 사용 조건을 직접 확인해야 해요.