Metadata-Version: 2.4
Name: hunmin
Version: 3.1.0
Summary: 외국어를 한글로 — 14개 언어를 한국어 한글 발음 표기로 변환. Universal phonetic Hangul transcription for 14 languages with NIKL conventions, CMU dictionary, and Old Hangul precision.
Author: Hunmin Project
License: MIT
Project-URL: Homepage, https://github.com/meshpop/hunmin
Project-URL: Documentation, https://github.com/meshpop/hunmin#readme
Project-URL: Repository, https://github.com/meshpop/hunmin
Project-URL: Issues, https://github.com/meshpop/hunmin/issues
Project-URL: Changelog, https://github.com/meshpop/hunmin#-변경-이력-changelog
Keywords: hangul,korean,transcription,phonetic,pronunciation,g2p,linguistics,loanword,외래어,한글,발음,transliteration,cjk,japanese,chinese,ipa
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: Linguistic
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Education :: Computer Aided Instruction (CAI)
Classifier: Natural Language :: Korean
Classifier: Natural Language :: Japanese
Classifier: Natural Language :: Chinese (Simplified)
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Italian
Classifier: Natural Language :: Spanish
Classifier: Natural Language :: Russian
Classifier: Natural Language :: Portuguese
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: Polish
Classifier: Natural Language :: Turkish
Classifier: Natural Language :: Indonesian
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: cjk
Requires-Dist: pykakasi>=2.2; extra == "cjk"
Requires-Dist: pypinyin>=0.50; extra == "cjk"
Requires-Dist: hanja>=0.13; extra == "cjk"
Provides-Extra: ml
Requires-Dist: g2p-en>=2.1; extra == "ml"
Provides-Extra: universal
Requires-Dist: epitran>=1.20; extra == "universal"
Provides-Extra: demo
Requires-Dist: gradio>=4.0; extra == "demo"
Provides-Extra: all
Requires-Dist: pykakasi>=2.2; extra == "all"
Requires-Dist: pypinyin>=0.50; extra == "all"
Requires-Dist: hanja>=0.13; extra == "all"
Requires-Dist: g2p-en>=2.1; extra == "all"
Requires-Dist: gradio>=4.0; extra == "all"
Dynamic: license-file

# 🎼 Hunmin

[![PyPI](https://img.shields.io/pypi/v/hunmin)](https://pypi.org/project/hunmin/)
[![Python](https://img.shields.io/pypi/pyversions/hunmin)](https://pypi.org/project/hunmin/)
[![License](https://img.shields.io/pypi/l/hunmin)](https://github.com/meshpop/hunmin/blob/main/LICENSE)
[![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/foolsai/hunmin)

> **외국어를 한글로 — 아이도 읽을 수 있는 발음 악보**
> *Convert any language into a readable phonetic Hangul score.*

**[🎼 온라인 데모 사용해보기](https://huggingface.co/spaces/foolsai/hunmin)**

```python
from hunmin import transcribe

transcribe("student",  "en")              # 스튜던트
transcribe("hello",    "en")              # 헬로
transcribe("中国",      "zh")              # 중궈
transcribe("東京",      "ja")              # 도쿄
transcribe("こんにちは",   "ja")              # 곤니치와
transcribe("familia",  "es", level=3)     # ㆄ아밀리아  (옛한글 ㆄ = /f/)
transcribe("Москва",   "ru", level=4)     # ㅁㅗㅅㅋㅸㅏ  (UHPS jamo)
transcribe("LSTM",     "en")              # 엘에스티엠 (약어 자동 인식)
transcribe("firebase", "en")              # 파이어베이스 (합성어 분해)
transcribe("button",   "en")              # 버튼 (syllabic schwa)
```

**14개 핵심 언어** NIKL 외래어 표기 (`pip install hunmin`).
**+ ~120 ISO 코드** universal 모드 (`hunmin[universal]`, IPA 자동 추출).
**+ IPA 직접 입력** (`lang='ipa'`) — IPA로 표기 가능한 어떤 언어든.

영어 **98.5%** (265단어 NIKL 벤치), 다국어 **100%** (116단어), 일본 도/현 **92%** (71단어).
Universal/IPA 모드는 "rough but mostly right" — 정확도 보장 X.

---

## ✨ 왜 Hunmin인가?

* **한글은 원래 발음 악보였습니다.** 1443년 세종이 그렇게 설계했습니다.
* **읽으면 그 언어가 됩니다.** 어린이가 읽어도 외국인이 알아듣는 발음.
* **옛한글 부활.** 한국어가 잃은 소리들 — ㆄ (/f/), ㅸ (/v/), ㅿ (/z/) — 다시 사용.
* **하나의 API, 14개 언어.** 같은 호출, 결정적 출력.
* **블랙박스 없음.** 100% 룰 기반 (default). ML 모델은 연구용 옵션.

---

## 📦 설치

```bash
pip install hunmin              # 11개 Latin/Cyrillic NIKL (en/es/fr/de/it/ru/pt/nl/pl/tr/id)
pip install hunmin[cjk]         # + ja/zh/ko (한자 처리; pykakasi/pypinyin/hanja 필요)
pip install hunmin[universal]   # + ~120 ISO 코드 (epitran 기반 IPA 자동 추출)
pip install hunmin[ml]          # + g2p-en (영어 unknown 단어 신경망 G2P)
pip install hunmin[demo]        # + Gradio 웹 데모
pip install hunmin[all]         # 모두
```

> **주의**:
> - 기본 `pip install hunmin`은 14개 중 **11개만** 동작 (ja/zh/ko는 `[cjk]` 필요).
> - Universal 모드의 ~120개 ISO 코드는 모두 epitran 매핑 검증됨, 다만 출력 정확도는 언어별 차이.
> - `lang='ipa'`는 epitran 없이도 동작 (의존성 X).

---

## 🚀 빠른 시작

### Python

```python
from hunmin import transcribe

# 기본 — 아이용 한글
transcribe("student", "en")           # 스튜던트
transcribe("hello",   "en")           # 헬로
transcribe("Paris",   "fr")           # 파리
transcribe("中国",     "zh")           # 중궈
transcribe("東京",     "ja")           # 도쿄
transcribe("こんにちは",   "ja")           # 곤니치와

# 영어 고급 — CMU 사전 + phonics + 합성어 + 약어 자동
transcribe("anthropic","en")          # 앤스라픽 (CMU 미수록 → phonics)
transcribe("typescript","en")         # 타이프스크립트 (합성어 분해)
transcribe("USA",      "en")          # 유에스에이 (대문자 약어 letter-by-letter)
transcribe("LSTM",     "en")          # 엘에스티엠 (모음 없는 토큰)
transcribe("button",   "en")          # 버튼 (syllabic schwa)

# 일본어 — NIKL 외래어 표기법 적용
transcribe("大阪",      "ja")          # 오사카
transcribe("京都府",     "ja")          # 교토부 (행정 접미사 한자 음독)
transcribe("鹿児島県",   "ja")          # 가코시마현
transcribe("ラーメン",    "ja")          # 라멘 (장음 드롭)
transcribe("カラオケ",    "ja")          # 가라오케 (어두 연음화)

# Level 3 — 옛한글 정밀 (한국어에 없는 소리 표기)
transcribe("vine",    "en", level=3)  # ㅸ아인  (ㅸ = /v/)
transcribe("zoo",     "en", level=3)  # ㅿ우    (ㅿ = /z/)
transcribe("father",  "en", level=3)  # ㆄ아더  (ㆄ = /f/)

# Level 4 — UHPS jamo 시퀀스 (ML / 연구용)
transcribe("student", "en", level=4)  # ㅅㅌㅠㄷㅓㄴㅌ
transcribe("中国",     "zh", level=4)  # ㅈㅜㅇㄱㅜㅓ
```

### CLI

```bash
$ hunmin --text "student" --lang en
스튜던트

$ hunmin --text "中国" --lang zh --level 4
ㅈㅜㅇㄱㅜㅓ

$ hunmin --web                        # Gradio 웹 UI 띄우기 (hunmin[demo] 필요)

$ hunmin --demo
lang  text                  L1 (아이용)     L3 (옛한글)     L4 (jamo)
=================================================================
en    student              스튜던트         스튜던트         ㅅㅌㅜㄷㅓㄴㅌ
en    father               파더            ㆄ아덜            ㆄㅏㄷㅓㄹ
es    familia              파밀리아         ㆄ아밀리아        ㆄㅏㅁㅣㄹㅣㅏ
ru    Москва               모스크바         모스크ㅸ아        ㅁㅗㅅㅋㅸㅏ
zh    中国                  중구어           중구어            ㅈㅜㅇㄱㅜㅓ
ja    東京                  토우쿄우         토우쿄우          ㅌㅗㅜㅋㅛㅜ
ko    大韓民國              대한민국         대한민국          ㄷㅐㅎㅏㄴㅁㅣㄴㄱㅜㄱ
...
```

---

## 🌐 지원 언어 (14개) — NIKL 외래어 표기 벤치마크

| 코드 | 언어 | 방식 | 벤치 정확도 |
|---|---|---|---|
| `en` | 영어 | CMU(135K) + phonics + 합성어 + 약어 + 형태소 + NIKL 표기 | **98.5%** (265 단어) |
| `es` | 스페인어 | 글자 룰 + NIKL 표기 | **100%** (20 단어) |
| `fr` | 프랑스어 | 글자 룰 + NIKL 표기 | **100%** (20 단어) |
| `de` | 독일어 | 글자 룰 + NIKL 표기 | **100%** (16 단어) |
| `it` | 이탈리아어 | 글자 룰 + NIKL 표기 | **100%** (18 단어) |
| `ru` | 러시아어 (Cyrillic) | 글자 룰 + NIKL 표기 | **100%** (12 단어) |
| `pt` | 포르투갈어 | 글자 룰 + NIKL 표기 | **100%** (9 단어) |
| `nl` | 네덜란드어 | 글자 룰 + NIKL 표기 | **100%** (6 단어) |
| `pl` | 폴란드어 | 글자 룰 + NIKL 표기 | **100%** (4 단어) |
| `tr` | 터키어 | 글자 룰 + NIKL 표기 | **100%** (6 단어) |
| `id` | 인도네시아어 | 글자 룰 + NIKL 표기 | **100%** (5 단어) |
| `ja` | 일본어 | pykakasi + NIKL 룰 (어두 연음/장음 드롭/접미사 한자 음독) | **92%** (도/현 71단어) |
| `zh` | 중국어 (북경어) | pypinyin + NIKL 표기 일람표 | **100%** (NIKL 표기 13단어) |
| `ko` | 한국어 (한글+한자) | hanja 사전 + native | 결정적 |

---

## 🎚️ Level 1–4

| Level | 용도 | 예시: `student` |
|---|---|---|
| **1** | 어린이/일반 한글 | 스튜던트 |
| **2** | 자연스러운 발음 (연음 — 향후) | 스튜던트 |
| **3** | 정밀 (옛한글 ㆄ ㅸ ㅿ 사용) | (해당 음 없음) |
| **4** | UHPS 자모 시퀀스 (ML/오디오 연구) | ㅅㅌㅜㄷㅓㄴㅌ |

옛한글 예: `father` Level 1: 파더 vs Level 3: ㆄ아덜.
ㆄ가 /f/임을 명시 — /p/와 구별.

---

## 🧠 작동 원리

```
                ┌─────────────────────────┐
input + lang → │       Hunmin 라우터     │
                └──┬──────────────────┬───┘
                   ↓                  ↓
        Latin / Cyrillic       표의문자 (CJK)
        (en, es, it, de,       (ja, zh, ko)
         ru, fr, pt, nl,
         pl, tr, id)
                   ↓                  ↓
        언어별 룰 모듈            결정적 사전
        (글자 → 음소              (pykakasi /
         → 한글 / 자모)            pypinyin /
                                  hanja)
                   ↓                  ↓
                   └──── 출력 ────────┘
                  (한글 / 자모 / 분리)
```

**왜 하이브리드?** 표의문자(한자, 漢字)는 글자 자체에 발음 정보가 없습니다 — 사전 lookup이 정답.
표음문자(Latin, Cyrillic)는 글자→발음 규칙이 있습니다 — 알고리즘적 변환 가능.

### 영어 파이프라인 (4단계 fallback)

```
input word
   │
   ├─→ NIKL 외래어 표기 override?     ── yes ─→ 직접 매핑 (hello → 헬로)
   │
   ├─→ 약어? (대문자 또는 모음없음)    ── yes ─→ letter-by-letter (LSTM → 엘에스티엠)
   │
   ├─→ CMU 사전 (135K)                ── yes ─→ ARPABET → 한글 파이프라인
   │
   ├─→ 합성어 분해 (greedy split)     ── yes ─→ 부분 lookup 후 합침 (firebase → fire+base)
   │
   └─→ Phonics fallback (마지막)              → letter cluster pattern 매칭
```

ARPABET → 한글 파이프라인 내부:
- Letter alignment (CMU phs ↔ spelling letters)
- ER+'or' → AO+R 분리 (history → 히스토리)
- AA+'o' → ㅗ default (rock → 록, top → 톱)
- Yod 삽입 (T/D/N + UW → 튜/듀/뉴: student → 스튜던트)
- Postvocalic R drop (car → 카, hard → 하드)
- SH 팔라탈화 (shoe → 슈, shop → 숍)
- L 중복 (모음 사이 또는 어두 cluster: hello → 헬로, blue → 블루)
- K/T/P 받침 (짧은 모음 뒤만: back → 백, boat → 보트)
- 진짜 모음만 받침 허용 (ㅡ 충전모음 차단)

---

## 🔬 ML / 연구용

패턴 학습이 필요하면 Level 4 (자모 모드) 출력이 ML 파이프라인에 바로 들어갑니다.

```python
hunmin.transcribe("hello", "en", level=4)  # ㅎㅔㄹㅗㅜ
```

작은 transformer (~1.4M 파라미터) 한 개로 326K (text, jamo) 페어 학습하면
**테스트셋 97% exact / 99% char 정확도** 도달. (`docs/RESEARCH.md`).

---

## 📜 UHPS — Universal Hangul Phoneme Set (자모 45개)

| | 자음 (24) | 모음 (21) |
|---|---|---|
| 현대 | ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ | ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ |
| 옛한글 | **ㆄ** /f/ · **ㅸ** /v/ · **ㅿ** /z/ · **ㆁ** /ŋ/ · **ㆆ** /ʔ/ | — |

같은 IPA → 모든 언어에서 같은 자모. *정확도보다 일관성* — ML 안정성을 위한 설계.

---

## 🏛️ 비전

> 어린이도 며칠 안에 익혀서 모든 소리를 적을 수 있게 하라.
> *Even a child should learn it in days, and use it to write any sound.*
> — 訓民正音 解例本, 1446

세종대왕이 의도했던 **"보편적 음성 표기 체계로서의 한글"** 부활.

---

## 🔖 강세 표기 컨벤션

UHPS-full(level=5)에서 강세 마크는 **점 직전 음절이 강세**:

```
허로·우  → '로' 강세 (옛 훈민정음 방점 방식)
```

이는 IPA의 `ˈ`(다음 음절 강세)와 반대 — 한국 전통 방점(傍點) 컨벤션을 따름.

## 📈 변경 이력 (CHANGELOG)

* **v3.1.0** (2026.04) — Tone renderer 정식화 (UHPS_SPEC §5)
  * 5-way tone category: H (high), R (rising), D (dipping), F (falling), L (low)
  * **Mandarin 4성 distinct 보장** — 이전엔 1=4=H, 2=3=R로 머지되던 것 → 4개 모두 분리
  * 새 tone_style: **`arrow`** (¯ ↗ ↘↗ ↘ ↓), **`numeric`** (¹ ² ³ ⁴ ₁)
  * Vietnamese 6 tones — NFD 분해로 결합 마크(́ ̀ ̉ ̣) 인식
    * á(sắc)→H, à(huyền)→L, ả(hỏi)→D, ạ(nặng)→F
  * IPA tone bar pattern 매칭: `˨˩˦` → D (long-first 우선)
  * 검증: `ma˨˩˦` → arrow `마↘↗` / numeric `마³` / panjeom `마〯〮`
* **v3.0.1** (2026.04) — UHPS-code vs HUNMIN-readable 명시 + 6-view API
  * UHPS_SPEC §1.0: "UHPS는 코드, HUNMIN은 사람 읽기" 핵심 구분 박음
  * 한글 완성형 본질적 제약 명시 (ㅂ+ㆎ는 영구히 분리 표시)
  * `views(text, lang, meaning=...)` API 추가 — 6-view dict 반환
    * keys: text, lang, ipa, uhps_core, uhps_full, hunmin, meaning
    * UHPS-code는 강제로 epitran/IPA 경로로 라우팅 (옛한글/방점 보존)
  * CLI: `--views` 플래그 + `--meaning` 옵션
* **v3.0.0** (2026.04) — Spec freeze + ML token layer
  * `docs/UHPS_SPEC.md` — 정식 spec 문서. IPA → UHPS 매핑이 코드 밖에서 동결됨
  * **Token-layer API 노출** — `transcribe(..., return_tokens=True)` (UHPS_SPEC §6)
    * 추상 토큰 시퀀스 `[(KIND, value, ...), ...]` 반환
    * KIND: C / OLD / V / V_NASAL / V_R / SV_MARKER / SUPRA / SPACE / PUNCT
    * 임의 언어 → 동일 음소 공간 투영 (ML 학습용)
  * **CLI**: `--tokens` + `--format text/json/jsonl` 추가
  * `'en'` ISO 코드를 universal map에 추가 (`return_tokens=True` 시 epitran 경로)
  * Tone system v3.0 정책: prosodic layer로 보존만, 본 자모와 머지 안 함. 정식 renderer는 v3.1
* **v2.4.4** (2026.04) — affricate digraph 보강
  * `tɕ`/`dʑ` (alveolo-palatal, 베트남어 ch / 만다린 j·q) → ㅊ/ㅈ로 정규화
  * `tʂ`/`dʐ` 및 `ʈʂ`/`ɖʐ` (retroflex, 만다린 zh·ch / 폴란드어 cz) → ㅊ/ㅈ
  * tie bar (U+0361) 유무 모두 인식: `t͡ɕ`, `d͡ʑ`, `ʈ͡ʂ`, `ɖ͡ʐ`, `t͡s`, `d͡z`
  * 예: 베트남어 `xin chào` `/sin tɕaːw/` → `신 차ː으` (이전: `신 트사으`)
* **v2.4.3** (2026.04) — 강세 attach bug fix
  * 강세는 자음(ㆄㅸㅿ 등)이 아닌 **모음**에만 attach
  * default tone_style을 `middledot` (·)로 — 한글 시각 호환
  * 폰트 호환 fallback (safe_fonts 기본 True): ᄛ→ㄹ, ᄾ→ㅅ, ᄶ→ㅈ
* **v2.4** (2026.04) — UHPS-core / UHPS-full 분리
  * `level=3` (UHPS-core): 자음/모음 1:1 (옛한글 13개 추가 jamo)
  * `level=5` (UHPS-full): + 장단/성조/강세/방점 모두 보존
    * 거성 (high stress) → 〮 (U+302E)
    * 상성 (rising tone) → 〯 (U+302F)
    * 장음 → ː
  * 예: `niːd` → core `닏`, full `니ː드`
* **v2.3** (2026.04) — API 정리 + 톤 다운
  * `supported_languages('hardcoded'|'universal'|'all')` 계층화
  * Universal 121 epitran code 모두 smoke test 통과 검증
  * README 정확화 (`lang='ipa'`는 IPA로 표기 가능한 모든 언어 지원으로 표현)
* **v2.2** (2026.04) — UHPS v2 + IPA 직접 입력 모드
  * 옛한글 + 한글자모확장으로 IPA → 한글 1:1 매핑
  * `lang='ipa'`로 IPA 문자열 직접 입력 (의존성 0)
  * /θ/→ㅼ, /ð/→ㅽ, /ʃ/→ᄾ, /ʒ/→ᄶ, /x/→ㆅ, /ʁ/→ᄛ, /ɲ/→ㅥ, /ɑ/→ㆍ, /ɔ/→ㆎ
* **v2.1** (2026.04) — Universal IPA transcriber via epitran
  * **100+ 언어 추가**: 132 ISO 코드 → 121 unique epitran 매핑
  * 카탈루냐/웨일스/아일랜드/바스크/몰타/그리스 등 유럽 추가 언어
  * 베트남/태국/힌디/타밀/텔루구/말라얄람/벵골/펀자비 등 아시아
  * 아랍/페르시아/우르두/암하라/티그리야 등 셈/에티오피아
  * 줄루/요루바/이그보/스와힐리/르완다/하우사 등 아프리카
  * 카자흐/키르기스/우즈벡/위구르/투르크멘 등 튀르크
  * 광둥어/민난어/우어/객가어 등 중국 방언
  * 마오리/케추아/하이티 크리올 등 토착어
  * 설치: `pip install hunmin[universal]` (epitran 옵션)
* **v1.10** (2026.04) — CJK NIKL 외래어 표기법 본격 적용
  * **일본어**: 어두 t/k/p → ㄷ/ㄱ/ㅂ (도쿄, 교토, 고베, 가라오케)
  * **일본어**: 장음 드롭 (ou/oo/uu/aa/ii/ee → 단모음). 토우쿄우 → 도쿄
  * **일본어**: 행정 접미사 한자 음독 (県→현, 府→부, 区→구)
  * **일본어**: tsu → 쓰 (NIKL 표준), 인명 名 첫자 어두 연음화
  * **일본어**: 자주 쓰이는 표현 직접 매핑 (こんにちは→곤니치와, 東京都→도쿄도)
  * **중국어**: NIKL pinyin → 한글 표 410 음절 재작성 (uo→ㅝ, sh-→상/성, xue→쉐, you→유)
  * 中国 → 중궈, 上海 → 상하이, 习近平 → 시진핑 (이전 중구어/샹하이는 깨진 출력)
* **v1.8** (2026.04) — 다국어 폴리싱 + 데모 + Syllabic schwa
  * **영어 syllabic /n/, /m/, /l/** — button → 버튼, bottle → 보틀, table → 테이블, rhythm → 리듬
  * **다른 10개 언어 NIKL override** — 100% 다국어 벤치 (116 단어, fr/de/it/es/ru/pt/nl/pl/tr/id)
  * **Gradio 웹 데모** — `hunmin --web` 또는 `pip install hunmin[demo]`
  * **README 정비** — CHANGELOG, 배지, 다국어 벤치 결과
* **v1.6** — ML fallback (옵션) + 형태소 분해
  * 형태소 fallback — reproducible → re+produce+ible, preprocessing → pre+processing
  * `pip install hunmin[ml]` → g2p-en 신경망 G2P 활성화 (옵션)
* **v1.5** — 다국어 폴리싱 (fr/it/de/es/ru/pt/nl/pl/tr/id NIKL 표기)
* **v1.4** — Override 사전 150 → 515 단어 확장
* **v1.3** — 영어 파이프라인 대폭 강화 (97.3% NIKL 벤치)
  * 풀 CMU 사전 번들 (135K)
  * Phonics fallback / 합성어 분해 / 약어 letter-by-letter
  * Letter alignment 기반 spelling-aware 모음 (history → 히스토리)
  * Yod 삽입 (student → 스튜던트), SH 팔라탈화 (sugar → 슈거)
* **v1.0** — 14개 언어, 하이브리드 파이프라인, UHPS freeze.

---

## 📝 라이선스

MIT.

---

## 🙏 사용 도구

* `pykakasi` — 일본어 가나 변환
* `pypinyin` — 중국어 병음
* `hanja` — 한국어 한자음
* CMU Pronouncing Dictionary — 영어 G2P
* hermitdave/FrequencyWords — corpus seed (OpenSubtitles)
