"모델이 한국어를 못한 게 아니었어. 아무도 그 오디오가 한국어라고 말 안 해줬어."
버그 신고
초기 Firekeeper 엔 치명적 증상이 있었어: 한국어 받아쓰기가 쓰레기로 나왔어 — 말한 거랑 아무 상관없는 영어스러운 단어 샐러드. 영어 받아쓰기는 멀쩡했어. 뻔한 결론 — 'WhisperKit 이 한국어를 못해' — 는 완전히 틀렸고, 그걸 쫓았으면 며칠 날렸을 거야. 진짜 원인은 디코딩 옵션에 묻힌 기본값 하나였어.
기본값이 실제로 하는 일
WhisperKit 기본 DecodingOptions 는 usePrefillPrompt: true, language: nil, detectLanguage: false 야. 셋을 같이 읽으면 함정이 명백해: 프리필 켜짐, 언어 안 정함, 감지 꺼짐 — 그래서 디코더가 영어 언어 토큰을 프리필하고 다시는 재고 안 해. 모든 발화가 영어로 강제 디코딩돼. 한국어를 먹이면 한국어 소리를 영어 단어로 들으려고 최선을 다해. 출력은 한국어 전사 실패가 아냐; 애초에 영어가 아니었던 오디오의 완벽한 영어 전사야.
usePrefillPrompt: true + language: nil + detectLanguage: false
| | |
v v v
언어를 프리필함 너가 안 골랐음 자동 감지도 안 함
\_____________________|________________________/
v
영어 토큰으로 기본값 -> 한국어가 영어로 디코딩됨
해법은 의도 한 줄
WhisperKit 한테 항상 언어를 말해줘야 해, 두 방법 중 하나로: 알 때 language 를 명시("ko" 또는 "en")하거나, 오디오에서 추론하길 원하면 detectLanguage: true 를 둬. 조용한 기본값을 절대 배포하지 마. Firekeeper 는 이걸 설정의 언어 모드로 노출해 — Auto, 한국어, English — 그리고 Auto 는 '라이브러리가 내키는 대로' 가 아니라 오디오 언어 감지로 매핑돼.