238 MB
16 files
Updated 1 day ago
Name
Size
checkpoints
data
src
.gitattributes125 Bytes
xet
.gitignore119 Bytes
xet
LICENSE10.2 kB
xet
README.md13.8 kB
xet
requirements.txt220 Bytes
xet
run_inference.py15.6 kB
xet
sample_audio.wav96 kB
xet
transcribe.py2.89 kB
xet
README.md

Notesoop-STT-Ko-v1

Language Speedup Audio Encoder VRAM Platform License

Download on the App Store  Get it on Google Play

Notesoop-STT-Ko-v1은 노트숲(Notesoop)에서 개발한 Apple Silicon(PyTorch MPS) 가속 한국어 온디바이스 음성인식(ASR) 모델입니다.

Google의 EmbeddingGemma-2 오디오 인코더를 기반으로 온디바이스 환경에 최적화된 경량 음향 리더와 언어 디코더를 결합하여 설계되었습니다. 약 1.2~1.5GB 수준의 낮은 메모리 점유율로 **실시간 대비 약 40배속(RTF 0.0251, 41분 분량 음성을 약 63초에 처리)**의 빠른 온디바이스 추론 성능을 제공합니다.

본 모델(Notesoop-STT-Ko-v1)은 올해 안에 노트숲(Notesoop) 앱에서도 만나보실 수 있습니다.


Background & Design Goals

노트숲은 **"학습의 비효율을 줄여, 사용자가 도구가 아닌 배움에 집중할 수 있는 경험을 만든다"**는 미션 아래 흩어진 학습 도구와 AI를 자연스럽게 연결하는 기술을 연구하고 있습니다.

실제 학습 환경에서는 수십 분에서 수 시간 분량의 강의 및 학습 음성을 다루게 됩니다. 이때 네트워크 상태에 의존하거나 긴 변환 시간을 기다려야 하고, 무거운 모델 때문에 기기 리소스가 잠식되어 정작 PDF 열람이나 필기 같은 본연의 학습 활동이 방해받는 것은 큰 비효율입니다. Notesoop-STT-Ko-v1은 기술적 복잡함은 모델 내부로 숨기고 사용자에게는 끊김 없는 학습 환경을 제공하기 위해 다음 세 가지 목표를 중심으로 설계되었습니다.

  • 실질적인 학습 효율 (Practicality & Speed): 긴 녹음 파일도 대기 시간 없이 즉시 복습과 정리에 활용할 수 있도록, 비자기회귀(Non-Autoregressive) 단일 패스 구조와 고속 병렬 처리 파이프라인을 적용했습니다.
  • 모바일 및 온디바이스 최적화 (Simplicity & Accessibility): 별도의 서버나 고사양 장비 없이 태블릿·스마트폰 등 제한된 연산 자원을 가진 모바일 디바이스에서도 충분한 추론 속도를 제공할 수 있도록, 음향 리더 모델을 온디바이스에 맞게 초경량화하고 메모리 점유율을 최소화했습니다.
  • 열린 기술 실험 (Open Ecosystem): 누구나 온디바이스 환경에서 한국어 음성인식 기술을 부담 없이 실험하고 더 나은 학습 경험을 만드는 데 활용할 수 있도록, 모델 가중치와 PyTorch MPS 고속 추론 파이프라인 전체를 Apache-2.0 라이선스로 공개합니다.

Model Specifications

항목 상세 사양
Audio Encoder google/embeddinggemma-2 (Audio Tower, 16kHz Mono, 128-Mel)
Acoustic Decoder Lightweight Korean Acoustic Reader
Vocabulary 25,000 한국어 형태소 및 음절 어휘집
Language Rescoring KenLM 3-Gram 한국어 언어 모델
Supported Backends PyTorch MPS (bfloat16), CUDA / CPU
Training Data AI Hub 한국어 강의 음성 데이터 (약 300GB)
License Apache-2.0

Overview

Notesoop-STT-Ko-v1은 Google의 embeddinggemma-2 오디오 인코더가 추출한 고밀도 음향 표현을 바탕으로, 온디바이스 환경에서 지연 없이 빠르게 동작할 수 있도록 최적화된 경량 음향 리더를 통해 한국어 음성을 텍스트로 고속 복원합니다.

  • Google EmbeddingGemma-2 오디오 인코더 기반: 사전 학습된 대규모 멀티모달 오디오 인코더의 풍부한 음향 특징을 활용하여 배경 소음과 다양한 음질 조건에서도 견고한 음향 표현을 포착합니다.
  • 초경량 온디바이스 리더: 메모리 대역폭이 제한된 모바일 및 랩톱 디바이스에서도 부담 없이 구동될 수 있도록 파라미터 크기와 메모리 사용량을 최소화했습니다.
  • Apple Silicon MPS 고속 가속: PyTorch MPS 환경에서 불필요한 형변환 오버헤드를 줄인 bfloat16 텐서 연산을 통해 실시간 대비 약 40배속의 빠른 추론 성능을 제공합니다.
  • GPU-CPU 비동기 파이프라이닝: GPU가 오디오 청크를 처리하는 동안 CPU 스레드에서 언어 모델 빔 서치와 텍스트 중복 제거를 병렬로 수행하여 체감 지연 시간을 극대화했습니다.

Data

Notesoop-STT-Ko-v1은 실제 학습 및 교육 현장의 음향·언어적 특성을 반영하기 위해 AI Hub의 약 300GB 분량 한국어 강의 음성 데이터로 학습되었습니다.

  • 실전 강의 도메인 특화: 약 300GB 규모의 방대한 실제 강의 음성을 학습에 활용하여, 정제된 낭독체뿐만 아니라 강의 현장의 발화 속도 변화, 설명조 어투, 학술·전공 용어, 장시간 연속 발화 환경에서도 안정적인 인식 성능을 제공합니다.
  • 형태소·음절 하이브리드 토크나이징: 한국어 교착어 특성에 맞춰 자주 쓰이는 표면 형태소(Surface Morpheme)와 음절 단위 Fallback을 결합한 25,000개 어휘 사전을 구축하여 미등록 어휘(OOV) 손실을 최소화했습니다.

Benchmark

Notesoop-STT-Ko-v1의 성능을 (1) 공인 표준 한국어 학술 벤치마크와 (2) 실제 대학 전공 강의 롱폼 음성 두 가지 환경에서 실측한 결과입니다. (Apple M1 Pro 16GB 기준)

1. 표준 한국어 STT 벤치마크 (Zeroth-Korean Test Set, 457개 문장)

한국어 음성인식 학술 평가의 공식 표준 데이터셋인 Bingsu/zeroth-korean 테스트 분할(총 457개 발화 문장, 1시간 11분 27초 분량)에 대한 전수 평가 결과입니다.

데이터셋 총 오디오 길이 전체 전사 시간 ⏱️ 체감 속도 ⚡ RTF 초당 처리량 (Throughput) 음절 오차율 (CER) 🎯 단어 오차율 (WER)
Zeroth-Korean Test (457문장) 1시간 11분 (4,287초) 2분 30초 (150.7초) 28.45배속 0.0352 3.03 문장/초 16.21% 45.40%
  • 초당 3문장 이상의 초고속 전사: 1시간 11분 분량의 방대한 오디오를 단 2분 30초 만에 완주하며, 낭독체 음성 환경에서 **16.21%의 준수한 음절 오차율(CER)**을 달성합니다.
  • 실제 전사 샘플 예시:
    • 정답 (REF): "한 잔의 커피가 소비자에게 전해지기 위해선 여러 차례의 공정을 거쳐야 한다"
    • 예측 (HYP): "한 잔의 커피가 소비자에게 전해지기 위해선 여러 차례의 공정을 거쳐야 한다" (CER: 0.00%)
    • 정답 (REF): "또한 박 전 대통령 측은 앞으로 검찰 수사와 관련해 수사 내용에 대한 입장뿐 아니라 변호인단의 활동 상황 등도 소상하게 공개한다는 방침이다"
    • 예측 (HYP): "또한 박 전 대통령 주변에 앞으로 검찰수사와 관련된 수사 내용에 대한 입장뿐 아니라 변호인단의 활동 상황 등도 소상하게 공개한다는 방식이다" (CER: 10.39%)

2. 실전 전공 강의 녹음 (41분 43초, Field Test)

대학 강의 환경(배경 잡음, 반향, 말더듬 등이 포함된 실제 41분 43초 녹음 음성)을 Apple M1 Pro (16GB RAM) 모델에서 직접 구동하며 글로벌 표준 ASR 모델들과 비교 측정한 실측 결과입니다.

Model Backend / Device Processing Time Speedup RTF CER (%) 🎯 WER (%) Host RAM GPU Memory (VRAM) 🖥️
Notesoop-STT-Ko-v1 PyTorch MPS (bf16) 1분 2초 (62.7s) 39.9x 0.0251 22.46 39.25 1,076 MB 1,537 MB
Whisper-medium MPS 4분 11초 (251.5s) 10.0x 0.1005 26.68 45.82 1,050 MB 3,467 MB
Whisper-large-v3 MPS 11분 45초 (704.9s) 3.6x 0.2816 25.55 42.10 1,243 MB 6,325 MB
  • Whisper-large-v3 대비 11.2배 고속 & 더 우수한 정확도: Whisper-large-v3(11분 45초, CER 25.55%) 대비 **약 11.2배 빠른 속도(1분 2초)**와 **더 낮은 음절 오차율(CER 22.46%, 3.09%p 향상)**을 동시에 제공합니다.
  • 1/4 수준의 경량 VRAM (1.2~1.5GB): Whisper-large-v3(6.3GB)의 1/4도 안 되는 가벼운 메모리 점유율 덕분에, 기본형 맥북 에어/프로(8GB/16GB)에서도 발열과 팬 소음 없이 다른 학습 앱과 동시에 쾌적하게 구동됩니다.
  • 비자기회귀(Non-Autoregressive) 구조의 강점: 문장을 한 토큰씩 순차 생성하는 Whisper와 달리, 비자기회귀 구조로 오디오 전체 음향 특징을 단일 패스($O(T)$)로 병렬 처리하여 장시간 음성에서도 처리 속도가 기하급수적으로 빨라집니다.

Quickstart

1. Installation

macOS (Apple Silicon M1 이상 권장) 및 Python 3.10+ 환경을 권장합니다. 오디오 디코딩을 위해 시스템에 ffmpeg가 설치되어 있어야 합니다(brew install ffmpeg).

git clone https://huggingface.co/Phsoft-ai/Notesoop-STT-Ko-v1
cd Notesoop-STT-Ko-v1

# 의존성 패키지 설치
pip install -r requirements.txt

# KenLM 3-Gram 디코더 설치
pip install https://github.com/kpu/kenlm/archive/master.zip

2. CLI Usage

transcribe.py를 통해 단일 명령어로 오디오 파일을 전사할 수 있습니다. (.wav, .m4a, .mp3, .flac 지원)

# 기본 실행 (PyTorch MPS 백엔드, batch_size=4)
python transcribe.py sample_audio.wav

# 장시간 강의 오디오 전사 및 결과 파일 저장
python transcribe.py my_lecture.m4a --batch-size 4 --chunk-sec 16.0 --output transcript.txt

# KenLM 빔 서치 비활성화 (Greedy CTC 디코딩)
python transcribe.py sample_audio.wav --no-kenlm

3. Python API

from run_inference import EmbeddingGemmaSTT

stt = EmbeddingGemmaSTT(
    device="mps",
    use_kenlm=True,
    lm_alpha=0.12,
    lm_beta=0.40,
)

transcript, rtf = stt.transcribe(
    "sample_audio.wav",
    chunk_sec=16.0,
    overlap_sec=1.0,
    batch_size=4,
)

print(f"RTF: {rtf:.4f} ({1/rtf:.1f}x real-time)")
print(transcript)

Repository Structure

Notesoop-STT-Ko-v1/
├── README.md                        # Model Card 및 사용 안내
├── checkpoints/
│   └── best_reader_inference.pt     # 음향 리더 모델 가중치 (137MB)
├── data/
│   └── vocab/
│       ├── vocab_25k.json           # 25,000 한국어 형태소/음절 어휘 사전
│       ├── vector_bank_25k.pt       # 어휘 매칭 벡터 뱅크
│       └── korean_lm.bin            # KenLM 3-Gram 한국어 언어 모델 (82.7MB)
├── src/
│   ├── model.py                     # 음향 리더 모델 구현
│   ├── dataset.py                   # 한국어 형태소 토크나이저 및 정규화
│   ├── decoder.py                   # KenLM 빔 서치 디코더 래퍼
│   └── step2_extract_features.py    # EmbeddingGemma-2 오디오 특징 추출기
├── run_inference.py                 # 추론 파이프라인 및 Python API
├── transcribe.py                    # CLI 실행 스크립트
└── sample_audio.wav                 # 테스트용 샘플 오디오

License & Citation

본 모델과 코드는 Apache License 2.0 하에 공개되어 연구 및 상업적 용도로 자유롭게 활용할 수 있습니다.

@misc{notesoop2026sttkov1,
  author = {Notesoop AI Team},
  title = {Notesoop-STT-Ko-v1: Lightweight Korean On-Device Speech Recognition},
  year = {2026},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Phsoft-ai/Notesoop-STT-Ko-v1}},
  note = {Apple Silicon MPS Accelerated Korean ASR}
}

Notesoop (노트숲) — 학습의 비효율을 줄여, 도구가 아닌 배움에 집중할 수 있는 경험을 만듭니다.
음성 기록과 PDF 필기 연동, 핵심 정리, 복습 문제 생성까지 하나로 연결된 학습 환경을 노트숲 앱에서 만나보세요.

Total size
238 MB
Files
16
Last updated
Nov 2
Pre-warmed CDN
US EU US EU

Contributors