🗣️ pronunciation.apis.how
pronunciation.apis.how 는 multi-saas-kit 에서 제공하는 발음 평가 + 세션 종합 평가 managed 예시 도메인 입니다.
이 서비스는 "한 번의 발화 평가"와 "여러 발화가 누적된 세션 종합 리포트"를 하나의 도메인에서 Layer 2 / Layer 3 두 가지 수준으로 제공합니다.
핵심 구조
Browser / App / Server
│
│ Pronunciation API Token
▼
pronunciation.apis.how
│
├─ token introspection ← apis.how
├─ Layer 2 (발화 1개씩)
│ /v1/assess/script
│ /v1/assess/unscripted
│ /v1/assess/stream (WebSocket)
│
└─ Layer 3 (세션 전체 종합)
/v1/assessment/session/report
│
└─ utterance 결과 배열 → 집계 + LLM 내러티브
외부 사용자는 Pronunciation API Token 으로 pronunciation.apis.how 를 호출하고, 내부 pronunciation-service 는 Azure Speech / SpeechAce / LiteLLM 을 대리 호출합니다.
Layer 2 — 단일 발화 평가
| Method | Path | 설명 |
|---|---|---|
| POST | /v1/assess/script | reference text + audio → 발음 점수 + 한국어 피드백 |
| POST | /v1/assess/unscripted | topic prompt + audio → STT + LLM Grammar/Vocab/Content 분석 |
| GET (WS) | /v1/assess/stream | scripted/unscripted 실시간 스트리밍 평가 |
응답의 공통 필드: scores.{overall, accuracy, fluency, completeness, prosody}, word_scores[], recognized_text, reference_text, 선택적으로 summary (deterministic Tier 1) / feedback (LLM Tier 2).
프리셋 4종 (utterance-level): gentle_coach, strict_teacher, exam_evaluator, unscripted_analyst.
Layer 3 — 세션 종합 평가 (v0.15.0+)
| Method | Path | 설명 |
|---|---|---|
| POST | /v1/assessment/session/report | utterance 결과 배열을 집계하여 세션 종합 리포트 반환 |
특징
- Stateless — 서버에 세션 데이터 저장 없음. 클라이언트가 Layer 2 결과를 배열로 전달.
- Deterministic 항상 — 평균/최소/최대/표준편차/반복 약점 단어·음소/모드별 분포 집계는 LLM 없이 항상 반환.
- LLM 선택 —
feedback_options.enabled=true일 때만 LLM 호출, 실패해도 200 OK +narrative=null(Graceful degradation). - 프리셋 3종 (session-level):
session_general— 범용 종합 (SUMMARY / STRENGTHS / IMPROVEMENTS / PRIORITIES)session_exam_band— IELTS/TOEFL 밴드 추정 (BAND + 3 섹션)session_tutor_report— 학원/튜터 리포트 (학부모 친화 톤)
요청 예시
curl -X POST https://pronunciation.apis.how/v1/assessment/session/report \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess_20260424_001",
"learner_context": {"native_language": "ko-KR", "goal": "IELTS 7.0"},
"utterances": [
{"turn": 1, "mode": "scripted", "scores": {"overall": 85, "accuracy": 88}},
{"turn": 2, "mode": "unscripted", "topic_prompt": "Describe your hometown", "scores": {"overall": 78}}
],
"rubric": "session_exam_band",
"feedback_options": {"enabled": true, "language": "ko-KR", "style": "detailed"}
}'
응답에는 aggregated_scores, weak_patterns, per_mode, (선택) narrative 필드가 포함됩니다.
어떤 토큰을 써야 하나
- 외부 호출자
Pronunciation API Token(apis.how 에서 발급)
- 내부 서비스
OPENAI_API_KEY/LITELLM_API_KEY— pronunciation-service 가 LLM 피드백 호출 시 사용AZURE_SPEECH_KEY— Azure Pronunciation Assessment 호출
필요한 abilities
토큰 생성 시 다음 중 필요한 것만 선택합니다.
| Ability | 필요 엔드포인트 |
|---|---|
pronunciation:assess:script | /v1/assess/script, /v1/assess/stream?mode=scripted |
pronunciation:assess:free | /v1/assess/unscripted, /v1/assess/stream?mode=unscripted |
pronunciation:stream | /v1/assess/stream (WebSocket) |
pronunciation:premium | SpeechAce premium 프로필 (Phase D10) |
pronunciation:* | 와일드카드 — 모든 pronunciation 액션 |
assessment:session:report | /v1/assessment/session/report (Layer 3, v0.15.0+) |
assessment:* | 와일드카드 — 모든 assessment 액션 |
Platform > Pronunciation API > API Tokens 에서 토큰 편집 시 체크박스로 선택.
Settings 페이지
Platform > Pronunciation API > Settings 에서 다음을 관리합니다.
- Global System Prompt (Layer 1 / 전역) — 모든 LLM 피드백 프리셋에 공통 주입되는 플랫폼 전역 프롬프트. 비워두면 skip.
- Feedback Config 오버라이드 — 기본 preset/style/language, brand_voice, model_override (Layer 2, 테넌트 수준).
- LLM 모델 기본값 — 실시간 대화/피드백에 사용할 기본 모델.
변경 사항은 introspection 캐시 TTL (기본 60초) 이후 반영됩니다.
Design 페이지
Platform > Pronunciation API > Design 에서 엔드포인트 / 프로필 / 프리셋 / abilities / integration 모드 일람을 확인할 수 있습니다.