Skip to content

Commit 541be27

Browse files
committed
chore: Notion 동기화 2026-07-15 15:00
1 parent 09babe7 commit 541be27

2 files changed

Lines changed: 33 additions & 21 deletions

File tree

‎blog/.notion-sync.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
},
2323
"399e15b4-0359-80bc-a362-f310d7425d86": {
2424
"file": "blog/2026-07-10-07-faster-whisper-한국어-음성인식-최적화-경험-공유.md",
25-
"last_edited": "2026-07-15T04:59:00.000Z",
26-
"content_hash": "0bfee0d22b37531e7e4981820c1904f4b5ec82820e434d82fed2967884ba46a7",
25+
"last_edited": "2026-07-15T05:28:00.000Z",
26+
"content_hash": "58556a57090f8e4bd73fbb86d24a733c2f01a77f505a32bc45a34fa7e252c4b5",
2727
"order": 4,
2828
"parent_id": null
2929
},

‎blog/2026-07-10-07-faster-whisper-한국어-음성인식-최적화-경험-공유.md‎

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,30 @@ last_update:
1212

1313
---
1414

15-
PoC 를 통해 환각이 적고 사용 가능한 것으로 faster-whisper-large-v3 선정을 하기로 하였다. (사용 가능률/환각 비율 측정)
15+
PoC 통해 모델 별 비교 및 성능 테스트 해보았다.
1616

1717
<!--truncate-->
1818

19-
간단히 요약하면
19+
그 과정에서 어떠한 최적화를 하였으며, 코드 수정을 어떤걸 하였나 기재하였다.
2020

21-
1. transcribe 실행 하여 Specch-to-Text 진행. segment 결과 추출
22-
2. for 루프 검사, 결과물 필터하여 모델 최적화
23-
24-
라고 할 수 있다.
2521

22+
- **최적화 1**   | 정확도 — raw/denoised 분리 (95.2% vs 93.4%)
23+
- **최적화 2**  | 환각 억제 — 공식 파라미터 3개 튜닝 (반복 환각, 검증한 기본값 표 포함) / VAD pre-filter · MIN_LOGPROB
24+
- **최적화 3**  | 언어 오분류 — LID 저신뢰→ko 강제 · dual transcribe · 한글 비율 게이트
2625

2726
---
2827

29-
밑에글 stt_service.py 내용으로 변경필요
30-
31-
목차
3228

3329
---
3430

35-
3. 문제 제기
36-
4.
31+
1. 문제 제기
32+
2.
3733

3834
---
3935

40-
### 1. transcribe
36+
### 1. **최적화 2**  
4137

42-
인자 튜닝을 할 지 부터 생각해보았다.
38+
파라미터 부터 보자
4339

4440
```python
4541
# poc-stt-bench/ib/audio/whisper/whisper_stt.py
@@ -67,13 +63,14 @@ def _do_transcribe(audio_np: np.ndarray, language: str) -> tuple[list, float]:
6763
return segs, sum(s.avg_logprob for s in segs) / len(segs)
6864
```
6965

70-
- 해당 파라미터 값 (beam_size, log_prob_threshold 등) 조회 결과, 패키지 함수 시그니처에 있는 것과 동일함을 확인 (→ 일부 다름 확인)
71-
- 시그니처란, 해당 오픈 소스에서 설정한 값을 의미
66+
| 파라미터 | 기본값 | 우리 값 | 역할 |
67+
| --- | --- | --- | --- |
68+
| `condition_on_previous_text` | `True` | `False` | 윈도우 간 반복 전파 차단 |
69+
| `repetition_penalty` | `1.0` | `1.2` | 반복 토큰 소프트 페널티 |
70+
| `no_repeat_ngram_size` | `0` | `3` | 3-gram 반복 하드 금지 |
7271

73-
- PoC 에서도 동일하게 진행
7472

75-
76-
### 2. 결과물 필터
73+
### 2. **최적화 3**
7774

7875
---
7976

@@ -98,7 +95,9 @@ def _do_transcribe(audio_np: np.ndarray, language: str) -> tuple[list, float]:
9895

9996
---
10097

101-
#### 2-2) # 게이트 2 — dual transcribe + MIN_DUAL_LOGPROB (-0.6)
98+
#### 2-2) # 게이트 2 — dual transcribe + MIN_DUAL_LOGPROB (-1.0)
99+
100+
세그먼트 평균 로그확률이 -1.0 (확률로 약 37%) 미만이면 버린다. 확신 없이 뱉은 환각의 catch-all.
102101

103102
```python
104103
# poc-stt-bench/ib/audio/whisper/whisper_stt.py
@@ -126,6 +125,10 @@ MIN_SEG_S = 0.2 # drop segments shorter than this. preserves short inte
126125

127126
#### 2-3) # 게이트 3- LID_TRUST_PROB
128127

128+
언어 감지 확률이 0.5 미만이면서 비-한국어로 나오면 한국어로 강제한다.
129+
prob 0.23 같은 값은 "ko/ja/zh 가 다 비슷하다 = 모델이 모른다" 는 뜻이고,
130+
한국어 메인 콘텐츠에서는 **한국어로 두는 것이 가장 안전한 가정** 이다.
131+
129132
```python
130133
# 게이트 3- LID_TRUST_PROB
131134
# Line 170
@@ -141,6 +144,10 @@ LID_TRUST_PROB = 0.5 # LID prob below this + non-main lang -> force MAIN_LAN
141144

142145
#### 2-4) # 게이트4 — MIN_LOGPROB (-1.0)
143146

147+
3초 미만 발화가 비-한국어로 감지되면, **한국어로도 · 감지 언어로도** 둘 다 전사한 뒤
148+
`avg_logprob` 이 높은 쪽을 채택한다. 양쪽 다 -0.6 미만이면 잡음으로 보고 버린다.
149+
1\\~2초짜리 한국어가 음향적으로 일본어/중국어로 오분류되는 것을 막는 장치다.
150+
144151
```python
145152
# 게이트 4 — dual transcribe + MIN_DUAL_LOGPROB (-0.6)
146153
# Line 176
@@ -176,6 +183,9 @@ MAIN_LANG = "ko"
176183

177184
#### 2-5) # 게이트 5 — 한글 char 비율 게이트 (30%)
178185

186+
한국어로 인식됐는데 결과 텍스트의 한글 비율이 30% 미만이면 버린다.
187+
Whisper 가 한국어 모드에서 가나·한자 토큰을 환각으로 출력하는 케이스를 정확히 잘라낸다.
188+
179189
```python
180190
# 게이트 5 — 한글 char 비율 게이트 (30%)
181191
# Line 211
@@ -190,6 +200,8 @@ KO_MIN_HANGUL_RATIO = 0.3 # if Hangul ratio of ko transcription is below this -
190200
continue
191201
```
192202

203+
> 이 다섯은 공식 문서에 없는, 한국어 콘텐츠를 보며 하나씩 만든 규칙이다.
204+
"어떤 환각을 봤고 → 어떤 게이트로 막았나" 가 이 프로젝트 최적화의 실체다.
193205

194206

195207
---

0 commit comments

Comments
 (0)