Skip to main content

Command Palette

Search for a command to run...

STT 모델 실제 성능 비교: 한국어 회의 녹음 35분, 7개 모델 테스트

Updated
14 min read

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 모델을 고를 때는 모델 크기보다 실제 입력 데이터, 런타임, 타임스탬프 품질, 기술 용어 인식률을 함께 봐야 한다.

More from this blog

내 문서를 읽는 작은 에이전트를 다시 만들며

내 사이트 dongjun.win에 붙어 있던 작은 AI 어시스턴트를 최근에 다시 손봤다. 방문자가 AI 어시스턴트 페이지에서 질문을 던지면, 내 이력서와 프로젝트 문서, 강점 진단, 리더십 리포트, 버크만(Birkman) 리포트를 바탕으로 답하는 기능이다. 겉으로는 단순하다. "최근 프로젝트는?", "어떤 기술을 쓰나요?", "일하는 방식은 어떤가요?" 같

May 27, 202610 min read

내 실생활에 AI 더하기 (1) — 사진, 영상 하이라이트 만들기

폰 사진 앱을 켜다가 여행 영상 폴더 앞에서 매번 멈춘다. 문제는 "안 본다"가 아니라 "안 보게 된다"였다. 분명히 좋아서 찍었는데, 시간이 지나니 불필요한 컷이 너무 많아서 다시 들어가기가 부담스러운 폴더가 된다. 핵심 장면만 추린 2~3분짜리 메모리 필름이 있다면 한 번에 그 시간을 다시 만날 수 있을 것 같았다. 업무에서는 AI를 매일 많이 쓴다.

May 13, 202611 min read3

법률 AI 검색 실험기 (12) — Lane-based Retrieval 설계와 전체 회고

법률 QA 검색기를 만들면서 거쳐 온 설계 여정의 마지막 이야기다. 벡터 검색의 한계를 마주한 순간부터, 임베딩 선택, selector, rewriter, graph, source-router, 그리고 lane-based retrieval까지. 이 글에서는 최종 단계인 lane 구조 설계를 정리하고, 시리즈 전체를 돌아본다. 검색기 운영 설계의 최종 단계 query-prep 단계를 마무리하면서 자연스럽게 다음 질문이 떠올랐다. prerewri...

May 11, 20266 min read7

법률 AI 검색 실험기 (11) — 오답 분석: 법률 RAG는 왜 자신 있게 틀리는가

틀린 답 하나가 열어준 토끼굴 "중소기업 특별세액감면이 최저한세 적용 대상인가요?" 단순해 보이는 질문이었다. 법령 QA 시스템은 자신 있게 답했다. "조세특례제한법 제132조가 해당 감면 조문을 열거하므로, 최저한세 적용 대상입니다." 조문 번호도 있고, 논리 구조도 있고, 결론도 명확했다. 문제는 하나뿐이었다. 틀렸다는 것. 실제로 제132조의 열거 조문과 해당 감면 조문의 관계를 확인하면, 시스템이 내린 결론과 실제 적용이 달랐다. 세무 ...

May 5, 20264 min read14
D

Dongjun's Blog

28 posts