Skip to main content
공개 노트

NVIDIA Parakeet 음성인식(ASR) 정리

Views 212약 4분생성형 AI 활용
Summary

Parakeet이 무엇인가

Parakeet은 NVIDIA NeMo에서 공개한 음성인식(ASR) 모델 패밀리로, Suno.ai와 협업해 만들었다.1 공통적으로 FastConformer 계열 인코더를 쓰며, "정확도(WER)와 속도, 그리고 실사용 환경(잡음·침묵·음악 등)에서의 안정성"을 함께 노리는 라인업이라는 인상이 강하다.12

디코더와 모델 계열(CTC / RNNT / TDT)

Parakeet은 같은 FastConformer 인코더를 두고, 디코더(학습/디코딩 방식)가 다른 세 갈래로 나뉜다.2

CTC는 비-오토리그레시브(non-autoregressive) 성격이라 대량 배치 추론에서 속도 이점이 뚜렷하다. RNNT는 트랜스듀서 계열로 스트리밍이나 "안정적으로 말이 이어지는 상황"에 강한 편이라 범용 선택지로 자주 쓰인다.2 TDT는 Parakeet에서 "출력 품질(구두점/대문자)과 타임스탬프"까지 한 번에 다루는 방향으로 전개된 라인으로 이해하면 편하다.234

대표 체크포인트 예시는 아래처럼 잡아두면 된다.

nvidia/parakeet-rnnt-1.1b, nvidia/parakeet-ctc-1.1b12

nvidia/parakeet-tdt-0.6b-v2, nvidia/parakeet-tdt-0.6b-v334

핵심 특징(정확도, 강건성, 구두점/대문자, 타임스탬프, 장문, 속도)

Parakeet의 기본 메시지는 "SOTA급 WER"와 "비음성 구간(음악/침묵)에도 잘 버틴다"는 쪽에 놓여 있다.1 특히 실제 서비스 음원에는 말 사이 공백, 배경 음악, 침묵이 섞이기 쉬운데, 이런 구간에서 흔들리면 후처리 비용이 커진다. Parakeet은 이런 비용을 줄이는 방향의 모델 패밀리로 볼 수 있다.1

TDT v2/v3는 자동 구두점과 대문자 복원을 핵심 기능으로 전면에 내세운다.34 영어 전사에서 구두점/대문자가 없으면 "읽기 어려움"이 바로 품질로 체감되는데, 이걸 모델 출력 단계에서 해결해두면 자막/회의록 파이프라인이 단순해진다.34

타임스탬프는 문자/단어/세그먼트 단위까지 뽑을 수 있고, Parakeet은 CTC/RNNT/TDT 전 계열이 타임스탬프를 지원한다는 점이 실무적으로 편하다.5 세그먼트 타임스탬프는 특히 구두점 복원이 되는 모델일수록 문장 단위로 잘 끊겨 보여서, 자막 싱크나 하이라이트 생성 같은 후처리에 유리하다.5

장문 오디오 처리는 FastConformer의 제한 컨텍스트(로컬) 어텐션으로 전환해 길이를 늘리는 방식이 중심이다. 원래 어텐션은 길이가 늘수록 계산량이 급증하는데, Parakeet은 로컬 어텐션을 켜면 "한 번에 매우 긴 오디오"까지도 처리 가능하도록 설계되어 있다.1 다만 학습은 전역 어텐션 기반이라 로컬로 바꾸면 성능이 다소 떨어질 수 있다는 점은 전제하고 가야 한다.1

속도/지연은 계열별로 성격이 갈린다. 큰 틀에서 CTC가 추론 속도에서 유리하고(특히 배치), RNNT는 스트리밍/범용 안정성의 포지션, TDT는 "고속 + 결과물 완성도(구두점/대문자/타임스탬프)" 쪽으로 읽힌다.134

라이선스(CC-BY-4.0)

Parakeet 체크포인트는 CC-BY-4.0 라이선스로 배포되어 상업적 사용이 가능하다. 대신 '출처 표기(Attribution)'가 필요하다는 점이 핵심 의무다.134

빠른 시작(파이썬)

NeMo 설치부터 모델 로드, 전사까지는 흐름이 단순하다.135

pip install -U nemo_toolkit['asr']
import nemo.collections.asr as nemo_asr

asr_model = nemo_asr.models.ASRModel.from_pretrained(
    model_name="nvidia/parakeet-rnnt-1.1b"
)

out = asr_model.transcribe(["some_audio_file.wav"])
print(out[0].text)

타임스탬프가 필요하면 timestamps=True를 켠다. 기본으로 char/word/segment가 함께 나온다.35

out = asr_model.transcribe(["some_audio_file.wav"], timestamps=True)

word_ts = out[0].timestamp["word"]
segment_ts = out[0].timestamp["segment"]
char_ts = out[0].timestamp["char"]

장문 오디오 추론 팁(로컬 어텐션 전환, 청킹)

긴 파일에서 메모리/시간이 부담되면, FastConformer의 어텐션을 로컬(제한 컨텍스트)로 바꾸는 접근이 기본 옵션이다.13 컨텍스트 크기는 작업(자막/회의록/방송 등)에 따라 튜닝 포인트가 된다.

# local attention (예: 좌/우 컨텍스트 256)
asr_model.change_attention_model("rel_pos_local_attn", [256, 256])

입력이 아주 크면, 서브샘플링 모듈 쪽 청킹도 함께 고려한다.1

asr_model.change_subsampling_conv_chunking_factor(1)  # 1=자동 선택

이 조합은 "전역 어텐션으로 한 번에 못 넘기는 길이"를 다루기 위한 현실적인 타협이다. 로컬로 바꾸면 성능이 조금 내려갈 수 있다는 점을 감안하고, 대신 끝까지 처리 가능한 파이프라인을 확보하는 쪽에 의미가 있다.1

모델 선택 가이드(간단)

최고 처리량/저지연 + 다국어(유럽 25개 언어)까지 필요하면 parakeet-tdt-0.6b-v3가 첫 선택이다. 언어를 자동 감지해 별도 프롬프트 없이 전사하는 점도 운영에 편하다.3

영어에서 결과물 품질(구두점/대문자)과 타임스탬프를 깔끔하게 가져가고 싶으면 parakeet-tdt-0.6b-v2가 안정적이다.4

빠른 배치 추론이 목적이면 CTC 계열이 유리한 그림이 자주 나온다.12

스트리밍이나 오토리그레시브 기반의 "범용 안정성"을 원하면 RNNT를 기본값으로 두고 시작하면 된다.12

참고

1Pushing the Boundaries of Speech Recognition with NVIDIA NeMo Parakeet ASR Models

2Models -- NVIDIA NeMo Framework User Guide

3nvidia/parakeet-tdt-0.6b-v3 · Hugging Face

4nvidia/parakeet-tdt-0.6b-v2 · Hugging Face

5Automatic Speech Recognition (ASR) -- NVIDIA NeMo Framework User Guide

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기