STT 모델 실제 성능 비교: 한국어 회의 녹음 35분, 7개 모델 테스트
2026년 2월, 한국어 개발 회의 녹음 하나를 가지고 로컬 STT(Speech-to-Text) 모델 7개를 비교했다.
테스트 오디오는 약 35분 45초 길이의 2인 개발 회의 녹음이다. 정제된 벤치마크 데이터셋이 아니라 실제 회의 녹음이었다. 발화는 비격식 대화체였고, 중간중간 Claude, TDD, CRUD, agent.md, Cursor, Codex, vector DB 같은 개발 용어가 섞여 있었다.
이 글은 최신 STT 모델 순위가 아니다. 당시 내 환경에서 실제 회의록 자동화에 어떤 모델이 쓸 만한지 확인한 실험 기록이다. 단일 오디오 기준이므로 모든 상황에 일반화할 수는 없지만, 실제 한국어 회의 녹음에서 모델별 차이가 꽤 뚜렷하게 드러났다.
테스트 조건
| 항목 | 내용 |
|---|---|
| 테스트 시점 | 2026년 2월 |
| 실행 환경 | macOS, Apple Silicon |
| 테스트 오디오 | 한국어 개발자 회의 녹음 |
| 오디오 길이 | 약 35분 45초 |
| 화자 | 2명 |
| 발화 특성 | 비격식 회의체, 개발 기술 용어 다수 포함 |
| 비교 대상 | STT 모델 7개 |
| 평가 기준 | 속도, 정확도, 핵심 용어 인식, 환각, 타임스탬프, 안정성 |
테스트한 모델은 아래와 같다.
| 모델 | 프레임워크 | 특징 |
|---|---|---|
| SenseVoice-Small | Python, FunASR | 알리바바 다국어 모델 |
| Whisper Small | Python, faster-whisper | OpenAI Whisper 경량 모델, 244M |
| Whisper Turbo | Python, faster-whisper | Large-v3 기반 경량 최적화 변형 |
| Whisper Medium | Python, faster-whisper | OpenAI Whisper 중형 모델, 769M |
| Whisper Large-v3 | Python, faster-whisper | OpenAI Whisper 대형 모델, 1.55B |
| CoreML Large-v3 Turbo FP16 | Swift, WhisperKit | Apple Neural Engine 최적화 |
| CoreML Large-v3 Turbo 4-bit | Swift, WhisperKit | 632MB 양자화 경량 모델 |
한눈에 보는 결과
결론부터 보면, 가장 좋은 모델은 CoreML Large-v3 Turbo FP16이었다. 속도만 보면 Whisper Small과 CoreML 4-bit이 빨랐지만, 회의록에 필요한 정확도와 타임스탬프까지 고려하면 CoreML FP16이 가장 안정적이었다.
| 순위 | 모델 | 종합 점수 | 한줄 평가 |
|---|---|---|---|
| 1 | CoreML Large-v3 Turbo FP16 | 4.5/5 | 정확도, 용어 인식, 타임스탬프, 안정성 모두 최상위 |
| 2 | Whisper Medium | 4.0/5 | Python 환경에서 가장 안정적인 선택 |
| 2 | CoreML Large-v3 Turbo 4-bit | 4.0/5 | 빠른 처리와 준수한 품질의 균형 |
| 4 | Whisper Small | 3.3/5 | 가장 빠르지만 기술 용어 오류가 많음 |
| 5 | Whisper Turbo | 3.1/5 | 속도는 괜찮지만 용어 인식과 안정성이 기대 이하 |
| 6 | Whisper Large-v3 | 2.1/5 | 큰 모델이지만 환각과 타임스탬프 문제가 큼 |
| 6 | SenseVoice-Small | 2.1/5 | 한국어 긴 회의 녹음에는 부적합 |
속도 비교
속도는 모델 로드 시간, 추론 시간, 총 소요 시간을 나눠서 봤다. RTF는 Real-Time Factor로, 추론 시간 ÷ 오디오 길이다. 1.0x보다 낮으면 실시간보다 빠르게 처리한 것이다.
| 모델 | 모델 로드 | 추론 시간 | 총 소요 시간 | RTF |
|---|---|---|---|---|
| SenseVoice-Small | 8.1초 | 3분 20.8초 | 3분 28.9초 | - |
| Whisper Small | 56.9초 | 2분 31.4초 | 3분 28.3초 | 0.07x |
| Whisper Turbo | 3분 54.9초 | 6분 48.0초 | 10분 42.9초 | 0.19x |
| Whisper Medium | 3분 24.6초 | 7분 46.0초 | 11분 10.6초 | 0.22x |
| Whisper Large-v3 | 17분 53.8초 | 32분 46.7초 | 50분 40.5초 | 0.92x |
| CoreML Large-v3 Turbo FP16 | 10.8초 | 10분 46.3초 | 10분 57.1초 | 0.30x |
| CoreML Large-v3 Turbo 4-bit | 5.6초 | 4분 47.0초 | 4분 52.6초 | 0.13x |
총 소요 시간 기준으로 보면 Whisper Small과 SenseVoice-Small이 약 3분 28초로 가장 빨랐다. 하지만 이 둘은 정확도에서 크게 밀렸다.
실무적으로 가장 눈에 띈 모델은 CoreML 4-bit이었다. 35분 45초 오디오를 약 4분 53초에 처리했고, 모델 로드도 5.6초로 가장 빨랐다. 회의 내용을 빠르게 훑기 위한 초안 생성 용도로는 가장 효율적인 모델이었다.
반대로 Whisper Large-v3는 로드에만 17분 53.8초, 추론에 32분 46.7초가 걸렸다. 총 소요 시간은 50분 40.5초였다. 35분짜리 오디오를 처리하는 데 50분이 걸렸으므로, 이번 환경에서는 실무용으로 쓰기 어려웠다.
핵심 용어 인식 비교
회의록에서 중요한 것은 문장이 자연스러운지만이 아니다. 개발 회의에서는 특정 용어를 정확히 받아 적는 것이 중요하다. 예를 들어 TDD를 PDD로 적거나, CRUD를 CR 요기로 적으면 나중에 검색과 요약 단계에서 문제가 생긴다.
아래 표는 원본 결과 파일에서 핵심 기술 용어를 직접 대조한 결과다. ✅는 정확, ⚠️는 부분 오류, ❌는 오인식을 뜻한다.
| 원본 용어 | SenseVoice | W-Small | W-Turbo | W-Medium | W-Large-v3 | CoreML FP16 | CoreML 4-bit |
|---|---|---|---|---|---|---|---|
| 클로드 (Claude) | ✅ 클로드 | ❌ 클로드 안 드시겠 | ❌ 클로즈 | ✅ 클로드 | ❌ code | ✅ 클로드 | ❌ 클로즈 |
| TDD | ❌ 필리비 | ❌ PDV | ❌ pdd | ✅ TDD | ✅ TDD | ✅ TDD | ❌ PDD |
| CRUD | ❌ 시알요디 | ❌ CR 요기 | ❌ cr-od | ✅ CRUD | ⚠️ crd | ✅ CRUD | ⚠️ CR,UD |
| agent.md | ❌ 에전트 | ❌ 에전템디 | ✅ agent.md | ✅ Agent.md | ✅ agent.md | ✅ agent.md | ✅ Agent.md |
| 커서 (Cursor) | ✅ 커서 | ✅ 커서 | ✅ 커서 | ✅ 커서 | ✅ 커서 | ✅ 커서 | ⚠️ 커서/컷 |
| 커서 룰스 | ⚠️ 커서롤수 | ⚠️ 커서 루스 | ⚠️ 커서 루스 | ⚠️ 커서 롤소 | ⚠️ 커서 룰수 | ⚠️ 커서 룰 수 | ⚠️ 커서 루스 |
| 오픈클로 (OpenClaw) | ✅ 오픈클로 | ⚠️ 오픈 클로 | ✅ OpenClaw | ✅ 오픈클로 | ✅ 오픈클로 | ✅ 오픈클로 | ✅ 오픈클로 |
| 해피코더 | ⚠️ 해피 | ⚠️ 해피 | ⚠️ 해피 | ⚠️ 해피 코더 | ✅ 해피코더 | ✅ 해피코더 | ⚠️ 해피 코더 |
| 코덱스 (Codex) | ✅ 코덱스 | ✅ 코덱스 | ✅ 코덱스 | ✅ 코덱스 | ✅ 코덱스 | ✅ 코덱스 | ✅ 코덱스 |
| 벡터 DB | ❌ 벡터디이 | ⚠️ 백터디비 | ✅ 벡터 DB | ✅ vectorDB | ✅ 벡터 DB | ✅ 벡터 DB | ⚠️ 벡터디비 |
| 노션 (Notion) | ✅ 노션 | ✅ 노션 | ✅ 노션 | ✅ 노션 | ✅ notion | ✅ notion | ✅ 노션 |
| 옵시디언 (Obsidian) | ⚠️ 옵시디안 | ✅ 옵시디언 | ✅ 옵시디언 | ✅ 옵시디언 | ✅ obsidian | ✅ obsidian | ✅ obsidian |
| 텔레그램 | ⚠️ 텔레그룸 | ✅ 텔레그램 | ✅ 텔레그램 | ✅ 텔레그램 | ✅ 텔레그램 | ✅ 텔레그램 | ✅ 텔레그램 |
| 젠마 (Gemma) | ✅ 젠마 | ✅ 젠마 | ✅ 젠마 | ✅ 젠마 | ✅ 젠마 | ✅ 젠마 | ✅ 젠마 |
점수로 환산하면 다음과 같다. 정확 인식은 1점, 부분 오류는 0.5점, 오인식은 0점으로 계산했다.
| 모델 | 정확 | 부분 오류 | 오인식 | 용어 인식 점수 |
|---|---|---|---|---|
| CoreML Large-v3 Turbo FP16 | 11 | 2 | 0 | 92% |
| Whisper Medium | 10 | 3 | 0 | 88% |
| Whisper Large-v3 | 9 | 2 | 2 | 77% |
| Whisper Turbo | 8 | 2 | 3 | 69% |
| CoreML Large-v3 Turbo 4-bit | 7 | 4 | 2 | 69% |
| Whisper Small | 7 | 2 | 4 | 62% |
| SenseVoice-Small | 4 | 4 | 5 | 46% |
CoreML FP16과 Whisper Medium이 확실히 좋았다. 특히 CoreML FP16은 TDD, CRUD, Claude, agent.md를 모두 정확히 인식한 유일한 모델이었다.
Whisper Turbo는 이름만 보면 기대가 컸지만, 이번 테스트에서는 TDD를 pdd로, CRUD를 cr-od로, Claude를 클로즈로 인식했다. 문장 흐름은 어느 정도 자연스러웠지만 핵심 용어 인식에서는 Medium보다 낮았다.
동일 구간 문장 비교
동일한 발화 구간을 비교하면 모델별 차이가 더 잘 보인다. 원본 발화는 대략 다음과 같은 내용이었다.
URL을 호출해서 컨트롤러를 실행하는 방식으로 TDD를 만들었어
| 모델 | 변환 결과 | 평가 |
|---|---|---|
| CoreML Large-v3 Turbo FP16 | URL을 호출해서 컨트롤러를 실행하는 방식으로 TDD를 만들었어 | ✅ 정확 |
| Whisper Medium | URL을 호출해서 컨트롤러를 실행하는 방식으로 TDD를 만들었어 | ✅ 정확 |
| Whisper Large-v3 | url을 호출해서 컨트롤러를 실행하는 방식으로 TDD를 만들었어 | ✅ 정확 |
| Whisper Turbo | url을 호출해서 컨트롤러를 실행하는 방식으로 pdd를 만들었어 | ❌ TDD 오류 |
| CoreML 4-bit | URL을 호출해서 컨트럴러를 실햌하는 방식으로 PDD를 만들었어 | ⚠️ 양자화 오타 |
| Whisper Small | URL을 호출해서 컨트롤러를 실행하는 방식으로 PDV를 만들었어 | ❌ TDD 오류 |
| SenseVoice-Small | 유아를 호해서 컨트롤를 실행하는 방식으로든지 필리비를 만들었어 | ❌ 심각한 오류 |
이 구간만 보면 CoreML FP16과 Whisper Medium이 가장 안정적이었다. CoreML 4-bit은 전체 맥락은 유지했지만 양자화로 인한 오타가 눈에 띄었다. Whisper Small은 문장은 자연스럽게 만들었지만 핵심 용어를 틀렸다.
환각 및 결함 비교
정확도보다 더 위험한 문제는 환각이었다. 회의록에서 없는 말을 만들어내면 후속 요약이나 의사결정 기록까지 오염될 수 있다.
| 모델 | 환각/결함 유형 | 심각도 | 내용 |
|---|---|---|---|
| Whisper Large-v3 | 외국어 무작위 삽입 | 심각 | 한국어 문장 중간에 영어, 태국어, 아랍어, 타밀어 등이 섞임 |
| Whisper Turbo | 마지막 구간 반복 | 중간 | 녹음 끝부분에서 "고마워요"를 여러 번 반복 |
| Whisper Medium | 세그먼트 반복 | 경미 | 6분 17초 부근 일부 세그먼트 중복 |
| SenseVoice-Small | 중국어 문자 혼입 | 중간 | 한국어 텍스트에 중국어 문자가 섞임 |
| CoreML FP16 | 공백 구간 | 중간 | 20분 10초 부근 약 30초 누락 |
| CoreML 4-bit | 빈 세그먼트, 양자화 오타 | 중간 | 일부 빈 세그먼트와 "컨트럴러", "실햌" 같은 오타 |
| Whisper Small | 오인식 | 낮음 | 환각은 없었지만 기술 용어 오인식이 많음 |
Whisper Large-v3의 환각은 특히 심각했다. 한국어 회의 녹음 중간에 여러 언어가 무작위로 섞였고, 해당 구간은 회의록으로 사용할 수 없었다. 또한 전체 텍스트가 하나의 블록으로 출력되어 타임스탬프 기반으로 문제 구간을 찾기도 어려웠다.
CoreML FP16도 완벽하지는 않았다. 약 30초 누락 구간이 있었다. 다만 없는 내용을 생성하는 환각은 발견되지 않았고, 타임스탬프 품질이 좋아서 후처리 가능성이 높았다.
타임스탬프 품질 비교
회의록 자동화에서는 타임스탬프도 중요하다. 텍스트만 있으면 전체 요약은 가능하지만, 특정 발화가 나온 구간으로 돌아가기는 어렵다.
| 모델 | 세그먼트 수 | 세그먼트 크기 | 정밀도 | 평가 |
|---|---|---|---|---|
| CoreML Large-v3 Turbo FP16 | 약 563 | 2~8초 | 밀리초 | 매우 우수 |
| Whisper Medium | 약 493 | 2~6초 | 초 | 우수 |
| CoreML Large-v3 Turbo 4-bit | 약 524 | 2~10초 | 밀리초 | 양호 |
| Whisper Turbo | 약 1,481 | 약 1초 | 초 | 과분할 |
| Whisper Small | 약 977 | 약 2초 | 초 | 과분할 |
| Whisper Large-v3 | 1 | 전체 블록 | 없음 | 사용 불가 |
| SenseVoice-Small | 1 | 전체 블록 | 없음 | 사용 불가 |
타임스탬프는 CoreML FP16이 가장 좋았다. 2~8초 단위로 자연스럽게 나뉘었고, 밀리초 단위 정밀도를 제공했다.
Whisper Medium도 충분히 좋았다. 초 단위 정밀도이긴 하지만 문장 경계에 맞춘 2~6초 세그먼트라 회의록 용도로 사용하기 좋았다.
반면 Whisper Turbo와 Whisper Small은 세그먼트가 너무 잘게 쪼개졌다. 한 문장이 여러 조각으로 나뉘어서 후처리가 필요했다. Whisper Large-v3와 SenseVoice-Small은 사실상 타임스탬프를 사용할 수 없었다.
종합 점수
속도, 정확도, 용어 인식, 타임스탬프, 안정성을 5점 만점으로 평가했다.
| 모델 | 속도 | 정확도 | 용어 인식 | 타임스탬프 | 안정성 | 종합 |
|---|---|---|---|---|---|---|
| CoreML Large-v3 Turbo FP16 | 3.0 | 5.0 | 5.0 | 5.0 | 4.5 | 4.5 |
| Whisper Medium | 3.0 | 4.5 | 4.5 | 4.0 | 4.0 | 4.0 |
| CoreML Large-v3 Turbo 4-bit | 5.0 | 3.5 | 3.5 | 4.0 | 4.0 | 4.0 |
| Whisper Turbo | 3.0 | 3.5 | 3.0 | 3.0 | 3.0 | 3.1 |
| Whisper Small | 5.0 | 2.0 | 2.5 | 3.0 | 4.0 | 3.3 |
| Whisper Large-v3 | 1.0 | 3.5 | 3.5 | 1.0 | 1.5 | 2.1 |
| SenseVoice-Small | 5.0 | 1.0 | 1.5 | 1.0 | 2.0 | 2.1 |
여기서 중요한 점은 속도 점수만으로 최종 순위가 정해지지 않았다는 것이다. Whisper Small과 SenseVoice-Small은 빠르지만 정확도가 낮았다. CoreML 4-bit도 빠르고 쓸 만했지만, 기술 용어 정확도에서는 FP16과 Medium보다 낮았다.
회의록 자동화에서는 "빠르게 대충 알아듣는 모델"보다 "중요한 용어를 틀리지 않고, 타임스탬프가 안정적인 모델"이 더 가치 있었다.
상황별 추천
| 상황 | 추천 모델 | 이유 |
|---|---|---|
| 최고 품질 회의록 작성 | CoreML Large-v3 Turbo FP16 | 용어 인식, 타임스탬프, 안정성이 가장 좋음 |
| 빠른 초안 생성 | CoreML Large-v3 Turbo 4-bit | 5분 이내 처리, 모델 로드도 빠름 |
| 대량 반복 처리 | CoreML Large-v3 Turbo 4-bit | 속도와 용량 측면에서 효율적 |
| Windows/Linux/서버 환경 | Whisper Medium | Python 기반으로 범용성이 높고 품질이 안정적 |
| 품질 타협 가능한 빠른 검색 인덱싱 | Whisper Small | 가장 빠르지만 기술 용어 오류 감수 필요 |
| 이번 테스트 기준 피하고 싶은 선택 | Whisper Large-v3 | 느리고, 환각이 심하고, 타임스탬프가 없음 |
| 한국어 긴 회의 녹음 | SenseVoice-Small 비추천 | 단어 분절 오류와 중국어 문자 혼입 발생 |
Apple Silicon Mac을 쓴다면 CoreML 계열을 먼저 보는 것이 좋았다. 최고 품질이 필요하면 CoreML FP16, 빠른 초안이 필요하면 CoreML 4-bit이 현실적인 선택이었다.
Apple Silicon이 아닌 환경에서는 Whisper Medium이 가장 무난했다. 속도는 CoreML 4-bit보다 느리지만, 용어 인식과 문장 품질이 안정적이었다.
핵심 인사이트
이번 실험에서 가장 크게 배운 것은 세 가지다.
첫째, 모델 크기가 실제 품질을 보장하지 않았다. 가장 큰 Whisper Large-v3는 이번 환경에서 심각한 환각과 타임스탬프 문제를 보였다.
둘째, 런타임 구현의 차이가 컸다. 같은 Large-v3 Turbo 계열이라도 Python faster-whisper에서 돌린 Whisper Turbo와 Swift WhisperKit 기반 CoreML 모델의 결과는 달랐다. 특히 CoreML FP16은 용어 인식, 타임스탬프, 안정성에서 가장 좋은 결과를 냈다.
셋째, 한국어 개발 회의에서는 일반 문장 품질보다 기술 용어 인식이 중요했다. TDD, CRUD, Claude, agent.md 같은 용어가 틀리면 회의록 검색과 요약 품질이 바로 떨어진다.
실무 적용에서 추가로 확인한 점
이 비교 이후 실제 녹음 앱에서는 CoreML Large-v3 Turbo를 사용했다. 다만 모델 선택만으로 문제가 끝나지는 않았다.
처음에는 mic.wav와 speaker.wav를 따로 전사하는 방식도 중요하게 봤다. 내 음성과 상대 음성을 나눠 기록할 수 있으니 회의록 UI에서는 장점이 있었다. 그런데 speaker 트랙에 긴 선행 무음이 있으면 hallucination이나 timestamp 오류가 발생하는 경우가 있었다. 모델은 같아도 입력 오디오 구성이 달라지면 결과 품질이 달라졌다.
그래서 앱에서는 전사 방식을 전체 대화 전사(merged)와 화자 구분 전사(separated)로 나눴고, 기본값은 merged 오디오 전사로 두었다. 회의 내용 요약과 기록이 목적이면 merged가 더 단순하고 안정적이고, 누가 말했는지 구분해야 할 때만 separated를 쓰는 구조다.
중요한 것은 merged 전사 결과에서 mic 결과를 빼서 speaker만 복원하는 방식은 채택하지 않았다는 점이다. 동시 발화가 있으면 분리가 어렵고, Whisper가 같은 발화를 두 파일에서 항상 같은 텍스트로 전사한다는 보장도 없었다.
결국 실무에서 STT 품질은 모델만의 문제가 아니었다. 어떤 오디오를 넣는지, 무음을 어떻게 다루는지, timestamp를 얼마나 신뢰할 수 있는지가 함께 중요했다.
최종 결론
이번 한국어 회의 녹음 35분 테스트 기준 최종 선택은 다음과 같다.
| 목적 | 최종 선택 |
|---|---|
| 가장 좋은 품질 | CoreML Large-v3 Turbo FP16 |
| 가장 좋은 속도와 품질 균형 | CoreML Large-v3 Turbo 4-bit |
| 크로스 플랫폼 대안 | Whisper Medium |
| 빠른 초안 확인 | Whisper Small |
개인적으로 회의록 자동화 파이프라인을 만든다면, 먼저 CoreML 4-bit으로 빠르게 초안을 만들고, 중요한 구간이나 오류가 의심되는 구간만 CoreML FP16으로 다시 처리하는 방식이 가장 현실적이라고 봤다.
이 실험은 단일 오디오 기준이기 때문에 절대적인 결론은 아니다. 하지만 실제 한국어 개발 회의 녹음에서는 "큰 모델을 쓰면 무조건 좋아진다"는 가정이 맞지 않았다. STT 모델을 고를 때는 모델 크기보다 실제 입력 데이터, 런타임, 타임스탬프 품질, 기술 용어 인식률을 함께 봐야 한다.

