/ /

SNAP

Semantic Normalization via Attached Probes

고정된 사전학습 BERT 위에 경량 신경망 프로브(Probes)를 결합하여 한국어·영어·일본어의 문맥 의존적 발음 모호성을 실시간으로 해결하는 모듈형 프레임워크입니다.

정규화 개요 및 예시

01. 텍스트 전처리와 TTS 파이프라인 무결성

텍스트를 음성(Speech)으로 합성할 때 프론트엔드(TN/G2P) 단계의 오독은 다운스트림 음향 모델로 그대로 전파되어 최종 음성의 명료도를 훼손합니다. 오디오북이나 방송 더빙 제작 현장에서는 이를 보정하기 위해 대본을 사전 검수하기도 하지만, 즉각적인 반응이 필요한 실시간 대화형 AI(LLM-to-Speech) 환경에서는 음성 변환 전단계의 정확하고 빠른 자동 정규화가 중요합니다.

SNAP은 실시간 음성 스트리밍 파이프라인에 최적화된 경량 엔진입니다. '경량 신경망의 문맥 속성 판별'과 '결정론적 룰 엔진의 발음 제어'를 결합하여, 지연을 최소화하면서도 일관되고 신뢰할 수 있는 텍스트 전처리를 지원합니다.

02. Frozen BERT Probing을 통한 모호성 해소

SNAP은 대형 생성 모델 대신 고정된 소형 BERT 백본 위의 경량 Probing Head가 어휘·수사의 문맥적 속성만 판별하고, 실제 텍스트 치환과 한국어 표준 발음법 적용은 결정론적 룰 엔진이 수행합니다. 이를 통해 생성형 모델에서 발생하는 단어 왜곡이나 환각 위험을 억제하며 즉각적인 사전 수정이 가능합니다.

실제 문장 수준 변환 해결 예시

기존 G2P/MeCab 엔진에서 오독이 발생하는 문맥 모호성 문장에 대해 SNAP이 정확히 구별해 내는 비교 대조입니다.

문장: "여기서 3번 버스를 타고 3번 갈아타야 갈 수 있어."
❌ 기존 g2pk: "여기서 [세번] 버스를 타고 [세번] 가라타야..." (노선번호 '세번' 오독)
✓ SNAP: "여기서 [삼 번] 버스를 타고 [세 번] 가라타야..." (노선번호/횟수 정확히 구별)

위와 같은 예제들을 굳이 기존 방식대로 처리하려면, 수많은 어휘 사전과 예외 규칙을 지속적으로 확장해야만 합니다. 그러나 이는 규칙 수 폭증에 따른 엔진 복잡도가 기하급수적으로 증가하는 한계에 직면합니다. SNAP은 다양한 목적의 Neural Head들이 Frozen BERT 임베딩에서 문맥 구조를 1차 정제함으로써, 예외 규칙의 복잡도를 최소화하고 정교한 규칙 모듈 결합을 통해 안정적인 정규화를 수행합니다.

03. 실시간 인퍼런스 및 지연시간 최적화

SNAP은 Distilled Mini-BERT 백본과 고성능 C++17 Native 엔진(Zero-Allocation 1D Flat DP 음운 룰 및 Zero std::regex 네이티브 스캐너)을 결합하여, CPU 단일 스레드에서도 문장당 평균 1.85 ~ 2.68 ms (초당 370 ~ 538문장)의 극저지연 실시간 처리를 지원합니다. 또한 BERT 내장 음성 파이프라인 연동 시 사전 계산된 BERT Hidden State를 100% 캐싱·공유하여 추가 오버헤드를 제로화합니다.

구동 환경 문장 처리 지연시간 특징 및 적용 분야
BERT Hidden State 재활용 (임베디드 모드) +0.03 ms / 문장 BERT 내장 음성 파이프라인 연동 시 캐시 공유 (추가 지연시간 Zero 수렴)
SNAP C++ Native 엔진 — CPU (단일 스레드) 1.85 – 2.68 ms (370.8 FPS) C++17 Native DLL (snap_cpp.dll), Zero-Allocation 1D Flat DP 룰 엔진 (10단어 이하 1.85ms / 20단어 이하 2.57ms / 30단어 이하 3.32ms)
SNAP 클라우드 마이크로서비스 (FastAPI REST) ~20 ms / 요청 Google Cloud Run 완전관리형 서비스 (서울 리전: asia-northeast3), 공개 OpenAPI 엔드포인트 제공
대규모 동시 요청 배치(Batch) 처리 성능 (GPU)
동시 처리 방식 (Batch Size) 총 소요 시간 (전체 묶음) 문장당 평균 처리 지연시간
단건 순차 처리 (1개씩 32회) ~380 ms ~11.8 ms
배치 처리 (Batch 4: 4문장 동시) ~16 ms ~4.0 ms
배치 처리 (Batch 16: 16문장 동시) ~28 ms ~1.7 ms
배치 처리 (Batch 32: 32문장 동시) ~42 ms ~1.3 ms

SNAP 기반 기술

SNAP 모듈형 신경망 Head 아키텍처

9개 언어별 프로브 및 규칙

SNAP은 언어별 형태론적 복잡성에 맞춰 고정된 BERT 모델 상단에 신경망 프로브(Probes) 및 규칙 모듈을 선택적으로 결합합니다.

🇰🇷 한국어: 2-Layer 음운 엔진 & 4개 신경망 Head 국립국어원 2025 베이스라인 전수 검증

• 2-Layer 음운 엔진 (POS-First): 국립국어원 표준 발음법 30개 항 전수 지원. Zero-Allocation C++ 1차원 Flat DP Viterbi 룰 엔진(370+ FPS) 탑재. 접속조사 '과'([과]) vs 학과 명사 어근('문과'[문꽈]), 관형격 조사 '의'([에]) vs 명사 어간('의의'[의이]) 정밀 분별 및 현실 외래어 발음 지원.

• 신경망 Probing Heads: 형태소 Head (158개 복합 품사 태그, 국립국어원 NIKL_MP 2025 평가셋 93.98%), 동음이의어 Head (9대 다빈도 독립 서브헤드 97.25%, 안다/열병/감기 100%), 수사 단위 Head (8대 핵심 단위 99.11%), 기호/서식 분류 Head (8대 서식 클래스 98.21%).

• 스타일 변환 옵션 & 회귀 검증 체계: 대화체 어미 변환(speech_style: haeyo(해요)/banmal(반말)/hapsio(하십시오)), 발음 스타일(pronunciation_style: modern_standard/strict_standard/colloquial), 단위 표기(unit_style) 옵션 지원 및 1만 건 골든 베이스라인 자동 회귀 검증 체계.

핵심 기술 스택 & 사양

지원 구동 환경
Windows Linux macOS (x86_64 / arm64)
아키텍처 백본 고정된 사전학습 BERT (Base 12L / Truncated 6L / Distilled Mini 4L & 3L) + 경량 신경망 프로브(Probes)
런타임 & SDK
C++17 (370+ FPS) 1D Flat DP Engine Python 3.8+ (PyPI) (100% C++/Python 결과 동치성)
최적화 및 성능 INT8 양자화 (~120MB 메모리 점유) / 단일 CPU 스레드 1.85~2.68ms (370.8~538.8 FPS)
배포 모드 임베디드 모드 (캐시 공유, +0.03ms) / 단독 파이프라인 모드
언어별 Neural Head 🇰🇷 한국어 (4개 Head: 158cls 형태소, 9대 동음이의어 서브헤드, 8대 수사 단위, 8대 기호 서식 + 3개 룰) / 🇯🇵 일본어 (3 Head MeCab-Free) / 🇺🇸 영어 (2 Head)

역정규화 개요 및 예시

01. 역정규화 (Inverse Text Normalization)

음성 인식(STT) 결과물은 일반적인 서식 형태의 문서와는 표기 방식에 큰 차이가 존재하며, 이러한 격차를 정교하게 줄여주는 단계가 역정규화(ITN)입니다. 특히 사람이 읽기 쉬운 표준 수치 표기는 문서의 용도와 문맥, 의미에 따라 유연하게 변환되어야 고품질의 텍스트 결과를 완성할 수 있습니다. 최근 STT 기술의 발전으로 이러한 차이는 점점 줄어들고 있으나, 결정적으로 의료·국방·연구소·금융 등 특정 도메인에서는 규정된 전문 표기법에 부합하는 맞춤형 역정규화 변환이 필수적입니다.

언어별 역정규화(ITN) 변환 해결 예시

🇰🇷 Korean Release / Multilingual Roadmap

기존 규칙 기반 ITN 엔진에서 수치 파싱 오류가 발생하는 발화 문장에 대해 SNAP-ITN이 정확하게 역정규화하는 예시 대조입니다. (현재 한국어를 정식 지원하며, 일/영어는 다국어 확장 로드맵 진행 중입니다).

STT 발화 텍스트: "오전 열두시 삼십분 삼천오백원에 결제했습니다"
❌ 기존 ITN: "오전 12시 30분 3000500원에 결제했습니다" (수사 단위 파싱 실패로 '3000500원' 수치 오독 오류)
✓ SNAP-ITN: "AM 12:30 3,500원에 결제했습니다" (시각/금액 포맷의 정밀한 역정규화 및 수치 파싱 오류 억제)

02. 도메인별 맞춤 표기 커스터마이징

역정규화는 문서를 일반적인 표준 표기 방식으로 변환하는 것도 가능하지만, 도메인의 필요에 따라 원하는 설정을 지정해 두면 금액 표기법, 단위 표기법, 시간 표기법 등 다양한 변환 규칙을 유연하게 커스터마이즈할 수 있습니다.

💳 금융·결제 도메인 (Currency Notation) currency_style: ISO_CODE

• 발화 입력: "삼천오백원 결제 / 십오만달러 송금"

• 표준 기본 변환: "3,500원 / $150,000"

• ⚙️ 커스텀 설정 변환: "3,500 KRW / 150,000 USD"

⏰ 시각·날짜 표기 (Time & Date Format) time_24h: true, date: YYYY.MM.DD

• 발화 입력: "오후 세시 삼십분 / 이천이십육년 칠월 이십칠일"

• 표준 기본 변환: "PM 3:30 / 2026-07-27"

• ⚙️ 커스텀 설정 변환: "15:30 / 2026. 07. 27."

🏥 의료·과학 규격 단위 (Medical & Unit Standard) unit_spacing: spaced, symbol: ISO

• 발화 입력: "백오십 밀리그램 투여 / 체온 삼십칠도 오분"

• 표준 기본 변환: "150mg / 37.5℃"

• ⚙️ 커스텀 설정 변환: "150 mg / 37.5 deg C"

🎖️ 국방·전술 숫자 규격 (Military Call-Signs) tactical_notation: true

• 발화 입력: "공오삼공 시 일공오 밀리 포병대대 이동"

• 표준 기본 변환: "05:30시 105mm 포병대대 이동"

• ⚙️ 커스텀 설정 변환: "0530H 105mm 포병대대 이동"

SNAP_ITN 기반 기술

SNAP-ITN Hybrid Neural-Rule Architecture

🇰🇷 Korean Release / Multilingual Roadmap

핵심 SNAP 엔진은 3개국어(한국어·영어·일본어) 정규화를 체계적으로 지원하며, 역정규화 엔진인 SNAP-ITN은 현재 한국어를 선행 정식 지원하고 일/영어 확장을 진행 중입니다.

1. Semantic ITN Head

날짜, 시각, 금액, 수사(한자어 vs 고유어), 전번, 기호 등 수치 세부 범주를 문맥에 따라 정밀 분류합니다.

2. Trust Layer (의미 보존성 검증 및 롤백 쉴드)

신경망 인퍼런스 확률, N-gram Perplexity, 그리고 변환 전후 BERT Hidden Representation의 코사인 유사도를 실시간으로 검증(Semantic Preservation Verification)합니다. 불확실성이나 의미 발산이 검출되면 원본 음성 텍스트로 안전하게 롤백하여 수치 변환의 데이터 무결성을 유지합니다.

3. 성능 벤치마크

34,281 문장 대용량 코퍼스 및 300건의 고난도 벤치마크 테스트에서 99.96% Effective Pass Rate 달성 (CPU 10ms / GPU CUDA 0.23ms 초저지연).

응용 예시 및 데모

실시간 텍스트 정규화 데모

Hugging Face Space

Hugging Face Spaces 환경에서 SNAP Native C++ 엔진 기반의 텍스트 정규화(TN) 및 G2P 추론을 직접 테스트할 수 있는 대화형 데모입니다. 한국어, 영어, 일본어의 발음 변환 및 SSML 출력을 지원합니다.

SNAP과 TTS 연동 데모

SNAP Frontend를 Microsoft Edge-TTS 클라우드 뉴럴 보이스와 결합하여 한국어 문맥 발음 오류를 실시간으로 해결하고 자연스러운 고품질 음성을 생성하는 라이브 데모입니다. 대표 데모인 Edge-TTS 연동을 비롯하여 경량 온디바이스 및 확산 모델을 테스트할 수 있습니다.

TTS 클라우드 연동 데모 (SNAP × Edge-TTS) SNAP-Edge-TTS 연동 테스트 ↗

SNAP Cloud REST API와 Microsoft Edge-TTS를 실시간 연동한 공식 연동 테스트 데모입니다. 일반 텍스트 원문만으로는 한계가 있는 문맥별 수사·단위 변별(예: 3번 버스[삼 번] vs 3번 갈아타기[세 번]), 동철이음어(동음이의어) 구분, 고유명사 및 사용자 정의 사전(custom_dict), 자연스러운 자동 운율 끊어읽기를 SNAP이 정밀하게 전처리하여 최상의 완성도 높은 한국어 음성을 실시간으로 합성하는 과정을 직접 테스트할 수 있습니다.

Real-Time Cloud API Contextual Numerals Heteronym Disambiguation Custom Dictionary
기타 오픈소스 TTS 연동 데모 (온디바이스 & 확산 모델)
Piper VITS Piper Demo ↗

초경량 온디바이스 VITS TTS. 기존 espeak-ng의 발음 한계를 극복하고 22개 화자 스타일을 지원합니다.

F5-TTS Diffusion F5-TTS Demo ↗

Flow Matching 확산 모델. 16개 프리셋 화자 및 참조 음성 기반 Zero-Shot 보이스 클로닝을 지원합니다.

TTS 음성 합성 통합 (SNAP Frontend & 신경망 음성 모델)

SNAP G2P × Neural TTS

SNAP G2P 엔진과 최신 신경망 음성 합성 모델(Edge-TTS, VITS, Flow Matching 등)을 결합하여, 더욱 정확하고 자연스러운 발음을 구사하는 고음질 TTS로 업그레이드시킵니다.

CASE 01: 버스 노선 vs 환승 횟수 화자: 30대 여성

"고가도로를 지나는 3번 버스를 타고 3번 갈아타야 갈 수 있어요."

• 3번 버스 ➔ [삼 번 버스] (노선) • 3번 갈아타야 ➔ [세 번] (횟수)
CASE 02: 날짜 / 인원 / 노선 / 출구 번호 화자: 40대 남성

"2024년 3월 15일에 3명의 동료와 2번 버스를 타고 3번 출구로 나갔습니다."

• 3월 15일 ➔ [삼 월 시보 일] • 3명 ➔ [세 명] • 2번 ➔ [이 번] • 3번 출구 ➔ [삼 번]
CASE 03: 소수점 비율 / 횟수 / 순위 화자: 20대 여성

"AI 모델의 성능이 99.8% 달성되어 3회 연속 1위를 기록했습니다."

• 99.8% ➔ [구십구 점 팔 퍼센트] • 3회 ➔ [삼 회] • 1위 ➔ [일 위]
성능 및 연산 효율성 평가 (Minimal-Overhead Architecture) ONNX INT8 / BERT Cache

위 예제는 SNAP Frontend와 신경망 음성 합성 모델(Edge-TTS, BERT-VITS2 등)을 결합하여 제작되었습니다. BERT 백본을 사용하는 모델에서는 Hidden Layer 값을 1회 연산 후 캐싱(Cache)하여 음성 디코더 및 SNAP 신경망 Head들에 공유함으로써, 추가 재계산 없이 최소한의 오버헤드로 문맥과 의미에 따른 정교한 발음을 실시간 합성합니다. 일반 경량 TTS 모델과 결합하더라도 ONNX INT8 양자화를 적용하여 실시간(Real-time) 처리가 원활하며, 상단 데모 섹션에서 Edge-TTS, Piper VITS, F5-TTS와의 연동 라이브 데모를 직접 체험해 보실 수 있습니다.

AI Video Dubbing (SNAP + 더빙 workflow)

SNAP + Dubbing Workflow

SNAP 엔진을 다국어 영상의 한국어 더빙 정규화 파이프라인에 적용한 예시입니다.

원본 영상 (Developer Keynote)
SNAP 한국어 더빙 영상

Inverse Text Normalization (SNAP-ITN Core Features)

한국어 엔진 우선 적용 Enterprise STT Post-Processor

SNAP-ITN 엔진은 STT(음성 인식) 결과를 각 산업 도메인 특성에 맞게 가독성 높은 표기법으로 후처리 변환하는 핵심 포스트 프로세서입니다. 단순 수치 변환을 넘어 금융·의료·방송·모빌리티·법률 등 도메인별 맞춤 포맷(날짜·시간·통화·주소), 추임새 정제, 자막 띄어쓰기, 개인정보 비식별화, Trust Layer 롤백 쉴드까지 통합 제공합니다.

SNAP-ITN 엔진 주요 도메인별 적용 분야
• 금융 & AICC (콜센터)
계좌·주민번호 마스킹, 천단위 금액 콤마, 통화 표기, 거래 일시 자동 정제
• 의료 & EMR (의료 음성)
진료 녹취 차팅, 혈압·혈당 수치, 약물 용량(mg/ml), 검사 치수 무결성 정제
• 방송 & OTT (영상 자막)
자막 전용 가독성 띄어쓰기(Broadcast Mode), 습관적 추임새('어, 음') 완전 정제
• 모빌리티 & 음성 AI
도로명 주소(123번길), 네비게이션 목적지, 버스/지하철 노선 수치 시각화
• 법률 & 공공 녹취 / 감사 (Compliance)
법정 증언 녹취록 작성, 숫자 할루시네이션 방지(Trust Layer 수치 롤백) 및 법률 용어 원문 보존
01 01. 사용자 지정 포맷 (Custom Format) date_format="dot", currency="comma", time="colon_24h"
STT 발화: "이천이십육년 칠월 이십구일 오전 아홉시 삼십분 계좌로 오백오십만원 송금"
➔ ITN 변환: 2026.07.29. 09:30 계좌로 5,500,000원 송금
• 지원 포맷 선택 폭:
- 날짜: 한국어 (2026년 7월 29일), 점 구분 (2026.07.29.), ISO (2026-07-29), 슬래시 (2026/07/29)
- 시간: 12시간제 (오전 9:30), 24시간제 (09:30), 초 단위 포함 (09:30:00)
- 화폐/금액: 천단위 콤마 (5,500,000원), 한글 단위 (550만원), 통화 기호 ($5,000, ₩5,500,000)
- 전화번호/단위: 하이픈 구분 (010-1234-5678), 공백 분할 (010 1234 5678), 단위 기호 결합
02 02. 추임새 / 간성어 정제 (Disfluency Removal) disfluency_mode="remove"
STT 발화: "어 그 총 매출액이 십오억 삼천만원을 달성해서 음 발표합니다"
➔ ITN 변환: 총매출액이 15억 3,000만원을 달성해서 발표합니다

구어체 발화 시 습관적으로 발생하는 '어', '음', '그...', '저...' 등의 유효하지 않은 추임새(Disfluency) 및 간성어를 자연어 엔진이 실시간 감지하여 깔끔하게 정제합니다. (설정 모드: 원형 보존 / 단순화 / 완전 제거)

03 03. 띄어쓰기 & 자막 교정 (Smart Spacing) spacing_mode="broadcast"
STT 발화: "서울 특별시 강남구 테헤란로 백이십삼번길 에위치한 건물 입니다"
➔ ITN 변환: 서울특별시 강남구 테헤란로 123번길에 위치한 건물입니다
• 띄어쓰기 규격 선택 폭:
- Standard Mode: 국립국어원 표준 띄어쓰기 규칙 적용
- Broadcast Mode: 방송 및 OTT 영상 자막 시청 환경에 최적화된 가독성 규격
- Tight Mode: 모바일 UI 및 좁은 화면을 위한 공간 절약형 밀착 띄어쓰기
04 04. 개인정보 비식별화 (PII Masking) pii_masking=True
STT 발화: "김철수 고객님 주민번호 구오공일공일 일육칠팔구공일 연락처 공일공 일이삼사 오육칠팔"
➔ ITN 변환: 김철수 고객님 주민번호 950101-1****** (연락처: 010-****-5678)

주민등록번호, 전화번호, 계좌번호 등 개인식별정보(PII) 패턴을 자동 감지하여 데이터 저장 전 안전하게 마스킹 처리합니다.

05 05. Trust Layer 수치 롤백 쉴드 (Trust Layer & Rollback Shield) confidence_threshold=0.85, preserve_ambiguous=True

변환 전후 텍스트의 BERT Hidden Representation 코사인 유사도 및 인퍼런스 확률 분포를 실시간으로 비교 검증(Semantic Preservation Verification)합니다. 변환 과정에서 원래 의미가 다르게 왜곡되거나 수치 할루시네이션(Hallucination) 위험이 감지될 경우, 변환을 즉시 차단하고 안전하게 원문 텍스트로 롤백하여 데이터 무결성을 보증합니다.

문서 및 저장소

SNAP 및 SNAP-ITN 엔진의 공식 C++ 런타임 바이너리 및 GitHub 저장소입니다.

SNAP 한국어 기술 백서 (Technical White Paper v2.0) September 2026
SNAP v2.0: Distilled Mini BERT Backbone, Zero-Allocation C++ 1D Flat DP & High-Speed Multilingual G2P
git snap_voice
SNAP Voice Frontend, Edge-TTS, Piper, F5-TTS Integration & Docs
GitHub →
git snap_itn 공개 예정
SNAP-ITN C++ Standalone Engine & Models (Korean Release / Multilingual Roadmap)
Coming Soon

About Us

연락처

Email