실시간 음성 인식 기술은 음성 비서, 실시간 자막, 대화형 AI 시스템 등 다양한 분야에서 필수적인 기술로 자리잡았습니다. 그러나 전통적인 ASR(Automatic Speech Recognition) 시스템은 속도와 정확도 사이의 트레이드오프, 높은 계산 비용, 그리고 동시 처리 시 발생하는 지연 증가 등의 문제를 안고 있었습니다.
NVIDIA는 이러한 문제를 해결하기 위해 Nemotron Speech Streaming ASR 모델을 개발했습니다. 이 모델은 혁신적인 캐시 인식(cache-aware) 아키텍처를 통해 기존 시스템 대비 최대 3배 향상된 효율성을 달성하면서도 높은 정확도를 유지합니다. 본 글에서는 Nemotron Speech Streaming 모델의 이론적 배경, 아키텍처, 그리고 실제 사용 방법을 상세히 다루겠습니다.
1. 이론적 배경: 음성 인식의 진화
1.1 전통적인 스트리밍 ASR의 한계
기존의 스트리밍 ASR 시스템은 주로 버퍼링 추론(buffered inference) 방식을 사용했습니다. 이 방식은 슬라이딩 윈도우를 통해 오디오를 처리하며, 각 새로운 윈도우는 이전 윈도우와 중복됩니다. 이는 컨텍스트를 유지하기 위한 방법이지만, 본질적으로 비효율적입니다.
버퍼링 추론의 문제점:
• 중복 계산: 모델이 이미 처리한 오디오를 반복적으로 재처리하여 계산 자원을 낭비합니다
• 메모리 폭발: 동시 스트림 수가 증가하면 메모리 요구사항이 급격히 증가합니다
• 지연 시간 증가: 높은 동시성 환경에서 응답 시간이 예측 불가능하게 증가합니다
• 확장성 제약: 특정 부하를 넘어서면 성능이 급격히 저하되는 'scaling cliff' 현상이 발생합니다
1.2 종단 간(End-to-End) ASR 모델의 발전
전통적인 ASR 시스템은 음향 모델, 발음 모델, 언어 모델 등 여러 독립적인 구성 요소로 이루어져 있었습니다. 이러한 파이프라인 방식은 각 구성 요소를 별도로 훈련해야 하며, 한 구성 요소의 오류가 전체 시스템에 영향을 미칠 수 있었습니다.
종단 간 아키텍처는 이러한 복잡성을 해결합니다. 오디오 입력을 받아 텍스트 출력을 직접 생성하며, 모든 구성 요소가 하나의 목표를 향해 함께 훈련됩니다. 현대의 E2E ASR 접근법은 크게 세 가지로 분류됩니다:
• CTC (Connectionist Temporal Classification): 간단하지만 출력 간 독립성을 가정하여 언어 모델링이 제한적
• Attention Encoder-Decoder (AED): 높은 정확도를 제공하지만 스트리밍 애플리케이션에 적합하지 않음
• RNN Transducer (RNN-T): 스트리밍 지원과 언어 모델링을 모두 제공하는 균형잡힌 접근법
1.3 RNN-T (Recurrent Neural Network Transducer) 이해하기
RNN-T는 Alex Graves가 2012년 제안한 시퀀스-투-시퀀스 모델로, 음성 인식에 이상적인 특성을 가지고 있습니다. RNN-T는 세 개의 핵심 네트워크로 구성됩니다:
• 전사 네트워크(Transcription Network/Encoder): 음향 특징을 추출하는 인코더 역할. 오디오 입력을 처리하여 고수준 표현을 생성
• 예측 네트워크(Prediction Network): 언어 모델 역할. 이전에 출력된 토큰들을 기반으로 다음 토큰을 예측. 중요한 점은 이 네트워크가 오디오가 아닌 텍스트만 보기 때문에 대규모 텍스트 데이터로 사전 훈련이 가능
• 조인트 네트워크(Joint Network): 인코더와 디코더의 출력을 결합하여 최종 출력 확률을 계산
RNN-T의 핵심 장점:
• 단방향 인코더를 사용하면 온라인/스트리밍 방식으로 작동 가능
• CTC와 달리 출력 길이가 입력 길이보다 길어질 수 있음
• CTC의 프레임 독립성 가정을 극복하여 더 나은 언어 모델링 가능
• AED보다 스트리밍에 적합하며, 전체 입력 시퀀스를 기다릴 필요 없음
• 디코더 그래프가 필요 없어 컴팩트한 온디바이스 ASR에 이상적
2. Nemotron Speech Streaming 아키텍처
2.1 FastConformer: 효율적인 음성 인코더
Nemotron Speech 모델의 핵심은 FastConformer 아키텍처입니다. 원래의 Conformer 모델은 높은 정확도를 제공하지만 계산 비용이 매우 높았습니다. FastConformer는 네 가지 주요 개선사항을 통해 이 문제를 해결했습니다:
1) 효율적인 다운샘플링 모듈
기존 Conformer는 10ms → 40ms로 4배 다운샘플링을 수행했습니다. FastConformer는 깊이별 분리 가능 컨볼루션(depth-wise separable convolution)을 사용하여 10ms → 80ms로 8배 다운샘플링을 수행합니다. 이는 어텐션 레이어가 처리해야 할 시퀀스 길이를 절반으로 줄여 계산량과 메모리 사용량을 크게 감소시킵니다.
2) 최적화된 컨볼루션 커널
Conformer의 컨볼루션 모듈은 로컬 특징을 포착하는 데 효과적이지만, FastConformer는 커널 크기를 조정하여 효율성을 높였습니다.
3) 효율적인 서브샘플링 모듈
기존의 무거운 2D 컨볼루션 스택 대신, 경량화된 서브샘플링 구조를 사용합니다.
4) 선형 확장 가능 어텐션
전역 어텐션을 제한된 컨텍스트 어텐션으로 대체하고 글로벌 토큰을 추가하여, 최대 11시간의 긴 형식 음성을 처리할 수 있습니다. 이는 표준 어텐션의 O(T²) 복잡도를 선형 시간으로 감소시킵니다.
결과적으로 FastConformer는 원래 Conformer보다 2.8배 빠르면서도 동등하거나 더 나은 정확도를 달성합니다. 또한 핵심 아키텍처 변경 없이 10억 개 파라미터 규모까지 확장 가능합니다.
2.2 캐시 인식 스트리밍: 게임 체인저
Nemotron Speech의 가장 혁신적인 특징은 캐시 인식(cache-aware) 스트리밍 메커니즘입니다. 이는 2023년 IEEE 논문 "Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition"에서 제안된 접근법을 기반으로 합니다.
작동 원리:
버퍼링 추론과 달리, 캐시 인식 시스템은 모든 인코더 셀프 어텐션 레이어와 컨볼루션 레이어에 대한 내부 캐시를 유지합니다. 새로운 오디오가 도착하면, 모델은 이전 컨텍스트를 재계산하는 대신 이 캐시된 상태를 업데이트합니다.
각 오디오 프레임은 정확히 한 번만 처리되며, 중복이나 겹침이 없습니다. 각 청크는 완전히 비중복 방식으로 처리됩니다.
셀프 어텐션 캐싱:
어텐션 레이어에서 이전 청크의 키(K)와 값(V) 벡터를 캐시합니다. 새로운 청크가 들어오면, 캐시된 K, V를 현재 청크의 것과 연결하여 사용합니다. 이를 통해 과거 컨텍스트를 유지하면서도 재계산을 피합니다.
컨볼루션 캐싱:
컨볼루션 레이어는 로컬 패턴을 포착하기 위해 여러 프레임을 보아야 합니다. 캐시는 컨볼루션에 필요한 이전 프레임들을 저장하여, 각 새로운 청크가 올바른 컨텍스트로 처리되도록 합니다.
이 설계가 해결하는 두 가지 핵심 문제:
• 동일한 오디오를 재처리하는 낭비된 계산 제거
• 중복 처리로 인한 예측 불가능한 지연 제거
2.3 모델 사양
Nemotron-Speech-Streaming-En-0.6b의 구체적인 사양:
| 구성 요소 | 사양 |
| 인코더 | 캐시 인식 FastConformer (24 레이어) |
| 디코더 | RNN-T (Recurrent Neural Network Transducer) |
| 파라미터 수 | 600M (6억 개) |
| 다운샘플링 | 8x (10ms → 80ms) |
| 입력 형식 | 16kHz 모노 오디오 (최소 80ms) |
| 출력 | 영어 텍스트 (구두점 및 대문자 포함) |
| 학습 데이터 | 285,000시간 (Granary 데이터셋 포함) |
2.4 청크 크기와 지연-정확도 트레이드오프
Nemotron Speech의 핵심 혁신 중 하나는 런타임에 청크 크기를 동적으로 조정할 수 있다는 점입니다. 재훈련 없이 추론 시점에 지연-정확도 파레토 곡선에서 최적 지점을 선택할 수 있습니다.
청크 크기별 성능 비교:
| 청크 크기 | 설정 | 평균 WER | 사용 사례 |
| 1.12초 | [70, 13] | 7.16% | 배치 전사, 높은 정확도 |
| 0.56초 | [70, 6] | 7.22% | 균형잡힌 지연/정확도 |
| 0.16초 | [70, 1] | 7.84% | 저지연 음성 비서 |
| 0.08초 | [70, 0] | 8.53% | 초저지연 실시간 |
여기서 att_context_size = [왼쪽 컨텍스트, 오른쪽 컨텍스트]이며, 모두 80ms 프레임 단위로 측정됩니다. 왼쪽 컨텍스트 70은 고정되어 있으며, 오른쪽 컨텍스트를 조정하여 청크 크기를 변경합니다.
3. 실전 사용 가이드
3.1 환경 설정
먼저 필요한 라이브러리들을 설치합니다:
# 시스템 라이브러리 설치
apt-get update && apt-get install -y libsndfile1 ffmpeg
# Python 패키지 설치
pip install Cython packaging
pip install git+https://github.com/NVIDIA/NeMo.git@main#egg=nemo_toolkit[asr]
3.2 모델 로드 및 기본 사용
가장 간단한 사용 방법은 다음과 같습니다:
import nemo.collections.asr as nemo_asr
# 모델 로드
asr_model = nemo_asr.models.ASRModel.from_pretrained(
model_name="nvidia/nemotron-speech-streaming-en-0.6b"
)
# 오디오 파일 전사
transcripts = asr_model.transcribe(["path/to/audio.wav"])
print(transcripts[0])
3.3 고급 스트리밍 추론
캐시 인식 스트리밍을 활용하려면 NeMo의 전용 스크립트를 사용합니다:
cd NeMo
python examples/asr/asr_cache_aware_streaming/\
speech_to_text_cache_aware_streaming_infer.py \
model_path=nvidia/nemotron-speech-streaming-en-0.6b \
dataset_manifest=my_dataset.json \
batch_size=16 \
att_context_size="[70,13]" \ # 1.12초 청크
output_path=./results
3.4 파이프라인 기반 추론 (PnC 및 ITN 포함)
구두점/대문자 표기(PnC) 및 역텍스트 정규화(ITN)를 포함한 엔드투엔드 워크플로우:
from nemo.collections.asr.inference.factory.pipeline_builder import PipelineBuilder
from omegaconf import OmegaConf
# 설정 파일 로드
cfg_path = 'cache_aware_rnnt.yaml'
cfg = OmegaConf.load(cfg_path)
# 오디오 파일 경로
audios = ['/path/to/your/audio.wav']
# 파이프라인 구축 및 실행
pipeline = PipelineBuilder.build_pipeline(cfg)
output = pipeline.run(audios)
# 결과 출력
for entry in output:
print(entry['text'])
3.5 청크 크기 동적 조정
애플리케이션 요구사항에 따라 지연 시간을 조정하는 방법:
# 초저지연 (80ms) - 실시간 대화용
att_context_size="[70,0]"
# 저지연 (160ms) - 음성 비서용
att_context_size="[70,1]"
# 균형 (560ms) - 일반적인 실시간 애플리케이션
att_context_size="[70,6]"
# 높은 정확도 (1120ms) - 배치 전사용
att_context_size="[70,13]"
청크 크기 선택 가이드:
• 실시간 음성 에이전트, 대화형 AI: 80-160ms (WER 약간 증가하지만 응답성 최대화)
• 실시간 자막, 라이브 전사: 560ms (지연과 정확도의 균형)
• 배치 처리, 오프라인 전사: 1120ms (최고 정확도)
4. 성능 분석 및 벤치마크
4.1 정확도 벤치마크
Nemotron Speech는 HuggingFace OpenASR 리더보드의 8개 데이터셋에서 평가되었습니다. 1.12초 청크 크기(최고 정확도 설정)에서의 결과:
| 데이터셋 | 1.12s | 0.56s | 0.16s | 0.08s |
| AMI | 11.58% | 11.69% | 13.88% | 16.05% |
| LibriSpeech test-clean | 2.31% | 2.40% | 2.43% | 2.55% |
| LibriSpeech test-other | 4.75% | 4.97% | 5.33% | 5.79% |
| 평균 WER | 7.16% | 7.22% | 7.84% | 8.53% |
4.2 효율성 및 확장성
캐시 인식 아키텍처의 핵심 이점:
• 처리량 증가: 기존 버퍼링 방식 대비 최대 3배 향상된 효율성. 동일한 GPU 메모리 제약 내에서 더 많은 병렬 스트림 처리 가능
• 안정적인 지연 시간: 동시성이 3배 증가해도 거의 일정한 지연 시간 유지. 버퍼링 시스템의 급격한 성능 저하 현상 방지
• 선형 메모리 확장: 메모리 사용량이 예측 가능하게 증가하여 안정적인 배치 처리 가능
• 엔드투엔드 지연 감소: ASR 처리 시간과 중복 계산을 줄여 LLM 추론 및 TTS를 포함한 전체 음성 에이전트 파이프라인의 지연 최소화
4.3 실제 배포 사례
Daily와 Modal에서의 실제 워크로드 결과:
• 고동시성 환경: 수백 개의 동시 음성 스트림을 안정적으로 처리
• 저지연 응답: 100ms 미만의 응답 시간 달성
• 프로덕션 준비: 규모에 맞는 안정적인 성능 제공
5. 결론 및 향후 전망
NVIDIA Nemotron Speech Streaming ASR은 실시간 음성 인식의 패러다임을 변화시키는 혁신적인 모델입니다. 캐시 인식 아키텍처를 통해 속도와 정확도 사이의 전통적인 트레이드오프를 극복하고, FastConformer와 RNN-T의 결합으로 효율성과 성능을 동시에 달성했습니다.
핵심 성과:
• 기존 버퍼링 시스템 대비 3배 향상된 효율성
• 7.16%의 경쟁력 있는 평균 WER (1.12초 청크 크기)
• 재훈련 없는 런타임 지연 조정 (80ms~1120ms)
• 예측 가능한 선형 확장성과 안정적인 고동시성 처리
이 모델은 단순히 기술적 우수성을 보여주는 것을 넘어, 실제 프로덕션 환경에서 즉시 활용 가능한 실용적인 솔루션입니다. 음성 비서, 실시간 자막, 대화형 AI 시스템, 고객 서비스 봇 등 다양한 애플리케이션에서 바로 적용할 수 있습니다.
향후 발전 방향:
• 다국어 지원 확대 (현재는 영어만 지원)
• 더 작은 모델 크기로 엣지 디바이스 배포 강화
• 도메인 특화 파인튜닝 지원 확대
• 소음 환경 및 원거리 음성 인식 성능 개선
Nemotron Speech ASR은 음성 우선 AI의 새로운 기준을 세우며, 실시간 음성 인터랙션이 더 이상 속도와 정확도 사이의 타협을 요구하지 않는 미래를 열어가고 있습니다.
참고 문헌
[1] Rekesh, D., et al. (2023). "Fast Conformer with Linearly Scalable Attention for Efficient Speech Recognition." arXiv:2305.05084
[2] Kim, J., et al. (2023). "Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition." arXiv:2312.17279
[3] Rao, K., et al. (2018). "Exploring Architectures, Data and Units For Streaming End-to-End Speech Recognition with RNN-Transducer." arXiv:1801.00841
[4] Li, J., et al. (2019). "Improving RNN Transducer Modeling for End-to-End Speech Recognition." IEEE ASRU
[5] NVIDIA NeMo Framework Documentation. https://docs.nvidia.com/nemo-framework/
[6] HuggingFace Model Card: nvidia/nemotron-speech-streaming-en-0.6b. https://huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b
'AI > LLM' 카테고리의 다른 글
| Engram: LLM에 '기억의 서랍'을 달아주다 (1) | 2026.01.15 |
|---|---|
| 대규모 코드베이스를 정복하는 AI 코딩 에이전트: Confucius Code Agent 깊이 파헤치기 (0) | 2026.01.13 |
| Effective harnesses for long-running agents (0) | 2025.12.03 |
| Apollo-1: The Neuro-Symbolic Foundation Model that Solves Task-Oriented Conversational AI (2) | 2025.11.12 |
| LLM도 '브레인 롯(Brain Rot)'에 걸릴 수 있을까? (0) | 2025.10.20 |