한국어 STT 오픈소스 2026 — Whisper 구현체 비교와 로컬 회의록 파이프라인
Whisper로 한국어 음성을 로컬 전사하는 방법을 정리했습니다. mlx-whisper·faster-whisper·원본 구현 중 하드웨어에 맞는 선택, 설치부터 첫 전사까지의 명령, ffmpeg 전처리와 --language ko가 필요한 이유, 속도가 부족할 때 정확도를 덜 잃고 내리는 순서를 다룹니다.
"회의록 AI, 아직도 유료로 쓰고 계신가요?" 이 질문이 뷰 15,000개를 기록한 이유가 있습니다. 한국 개발자·기업 담당자 중 많은 분들이 유료 회의록 AI에서 한국어 전사 품질 문제를 겪고 있습니다. TreeSoop은 Whisper 기반 로컬 파이프라인을 github.com/treesoop/whisper_transcription에 공개했습니다.
유료 회의록 AI의 한국어 전사 문제
팀에서 Notta를 월 결제해 사용해봤습니다. 편의성은 좋았지만, 한국어 전사에서 두 가지 문제가 반복됐습니다.
첫째, 발음이 조금만 어려워도 틀립니다. 기술 용어, 전문 용어, 고유명사가 많은 회의는 전사본의 절반 이상을 수동으로 고쳐야 했습니다.
둘째, 문장이 매끄럽지 않습니다. 자연스러운 한국어 문장 경계를 못 잡아서, 긴 독백 같은 출력이 나옵니다. 회의록으로 쓰려면 재작성 수준의 편집이 필요했습니다.
결국 수정 시간이 전사 시간보다 길어졌습니다. 이럴 거면 차라리 로컬 Whisper가 낫겠다 싶어 파이프라인을 구성해봤습니다.
Whisper 로컬 파이프라인 구성
음성 파일 → ffmpeg 전처리 → Whisper (large-v3) → 후처리 (문장 경계) → 마크다운핵심 선택은 세 가지입니다.
1. Whisper 모델 large-v3
large-v3가 한국어 전사에서 가장 안정적이었습니다. base, small, medium도 테스트했지만, 특히 전문 용어·명사 인식에서 large-v3의 차이가 컸습니다. 맥 실리콘 M1 Pro 이상이면 실시간보다 빠른 속도로 돌아갑니다.
2. ffmpeg 전처리로 노이즈 감소
원본 음성을 바로 Whisper에 넣지 않고, ffmpeg로 샘플레이트 16kHz로 맞추고 간단한 노이즈 필터를 적용합니다. 이것만 해도 정확도가 눈에 띄게 올라갔습니다.
3. 후처리로 문장 경계 재구성
Whisper 기본 출력은 긴 독백 형태가 많습니다. 후처리 단계에서 쉼표·접속사·시간 표시를 기준으로 문장을 다시 끊고, 화자 구분이 가능한 경우 화자 레이블도 붙입니다.
한국어 STT, 어떤 구현체를 고를 것인가
Whisper는 모델 이름이자 여러 구현체의 총칭이다. 같은 모델 가중치라도 어떤 런타임으로 돌리느냐에 따라 속도와 메모리가 달라진다. 한국어 작업에서 실제로 갈리는 선택지는 셋이다.
| 구현체 | 무엇인가 | 유리한 환경 | 비고 |
|---|---|---|---|
| openai-whisper | 원본 PyTorch 구현 | 어디서나 동작, 기준점 | 가장 느리다 |
| faster-whisper | CTranslate2 재구현 | NVIDIA GPU 서버 | 원본 대비 수 배 빠르고 메모리도 적게 쓴다 |
| mlx-whisper | Apple Silicon 전용 | M 시리즈 맥 로컬 | 통합 메모리를 그대로 쓴다 |
선택 기준은 하드웨어다. 서버에 NVIDIA GPU가 있으면 faster-whisper, 맥에서 로컬로 돌리면 mlx-whisper, 그 외에는 원본이다. 정확도는 같은 모델 크기라면 구현체와 무관하다 — 바뀌는 것은 속도와 메모리다.
이 파이프라인은 macOS 로컬 기준이라 mlx-whisper 0.4.3 / mlx 0.29.3으로 구성했다.
모델 크기는 어디까지 올려야 하나
한국어는 영어보다 큰 모델에서 이득이 크다. tiny·base는 실무에 쓰기 어렵고, 회의록처럼 고유명사와 숫자가 섞이면 large 계열이 필요하다. 다만 크기를 키우면 처리 시간이 그만큼 늘어난다.
실무에서는 large-v3를 기본으로 두고, 속도가 문제가 될 때만 내리는 순서가 안전하다. 반대로 작은 모델로 시작하면 어디까지가 모델 한계이고 어디부터가 전처리 문제인지 구분이 안 된다.
화자 분리가 필요하면 별도 도구를 붙인다
Whisper 계열은 누가 말했는지를 구분하지 않는다. 회의록에서 발언자가 필요하면 화자 분리(diarization)를 따로 얹어야 한다. 전사와 화자 분리를 한 번에 처리하는 도구를 쓰거나, Whisper 출력에 별도 diarization 결과를 정렬해 합치는 방식이 있다.
회의록 용도라면 이 단계까지 포함해서 설계해야 실무에 쓸 수 있다. 구축 방법은 화자 분리 가이드에 따로 정리했다. 전사만 끝내면 "누가 무엇을 말했는지 모르는 긴 텍스트"가 남는다.
실제로 돌려보기 — 설치부터 첫 전사까지
구현체마다 설치가 다르다. 자기 하드웨어에 맞는 것 하나만 고르면 된다.
맥(Apple Silicon)
pip install mlx-whisper
mlx_whisper audio.m4a --model mlx-community/whisper-large-v3-mlx --language koM 시리즈 맥의 통합 메모리를 그대로 쓰므로 별도 GPU 설정이 없다. 모델은 첫 실행 때 내려받는다.
NVIDIA GPU 서버
pip install faster-whisperfrom faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
segments, info = model.transcribe("audio.m4a", language="ko")
for s in segments:
print(f"[{s.start:.1f}s] {s.text}")compute_type이 속도와 메모리를 가른다. float16이 기본이고, VRAM이 빠듯하면 int8로 내린다. 정확도 손실은 한국어 회의 음성 기준으로 크지 않다.
그 외 환경
pip install -U openai-whisper
whisper audio.m4a --model large-v3 --language ko원본 구현이라 어디서나 돌아가지만 가장 느리다. 기준점을 잡거나 한 번만 돌릴 때 쓴다.
전처리를 먼저 넣는다
어느 구현체든 앞단에 이걸 붙이면 정확도가 올라간다.
ffmpeg -i input.m4a -ar 16000 -ac 1 -c:a pcm_s16le output.wavWhisper 계열은 16kHz 모노를 기대한다. 다른 샘플레이트를 넣으면 내부에서 변환하는데, 명시적으로 맞춰 주는 편이 결과가 안정적이다. 스테레오 회의 녹음을 모노로 합치는 것도 여기서 한다.
--language ko를 반드시 준다
언어를 지정하지 않으면 Whisper가 앞부분 몇 초로 언어를 추측한다. 회의 시작이 인사말이거나 영어 단어가 섞이면 영어로 오판하고 전체를 영어로 전사하는 일이 생긴다. 한국어 회의라면 옵션으로 못 박는다.
속도가 부족할 때 내리는 순서
전사가 느리면 모델부터 줄이기 쉬운데, 순서를 바꾸면 정확도를 덜 잃는다.
| 순서 | 조정 | 정확도 영향 |
|---|---|---|
| 1 | compute_type을 int8로 | 작다 |
| 2 | 긴 음성을 나눠 병렬 처리 | 없다 |
| 3 | beam_size를 낮춘다 | 중간 |
| 4 | 모델을 medium으로 | 크다 |
모델 크기를 낮추는 것이 마지막이다. 한국어는 큰 모델에서 얻는 이득이 영어보다 커서, 여기를 먼저 건드리면 고유명사와 숫자가 무너진다.
2번이 의외로 효과가 크다. 두 시간짜리 녹음을 통째로 넣으면 한 번에 처리되는데, 30분씩 넷으로 잘라 병렬로 돌리면 벽시계 시간이 크게 준다. 자를 때는 무음 구간을 기준으로 삼아야 문장이 중간에 끊기지 않는다.
결과 비교
동일한 30분 한국어 회의 음성으로 테스트한 결과를 정리하면 이렇습니다.
| 지표 | 유료 서비스 | Whisper 로컬 |
|---|---|---|
| 전문 용어 인식 | 낮음 | 높음 |
| 문장 가독성 | 수정 필요 | 대부분 그대로 사용 |
| 비용 | 월 구독료 | 0원 |
| 보안 | 클라우드 전송 | 로컬 처리 |
| 맥 M1 Pro 처리 시간 | 수 분 | 실시간보다 빠름 |
VibeVoice는 왜 안 썼나
VibeVoice도 후보였습니다. 다만 로컬 환경에서 안정적으로 돌아가지 않았습니다. 맥 실리콘 호환성이 아직 불완전한 부분이 있어, 이번 버전에서는 제외했습니다. 안정화되면 추가 검토 예정입니다.
로컬 실행의 실무적 장점
로컬 실행이라 비용 부담이 없고, 보안 걱정 없이 쓸 수 있다는 점이 크다. 특히 다음 케이스에 적합합니다.
- 고객 미팅 녹취: 외부 전송 금지 규정이 있는 경우
- 법무·의료 회의: 개인정보 민감도 높은 내용
- 사내 전략 회의: 기업 기밀 포함 회의록
- 연구·개발 미팅: IP(지식재산) 관련 대화
이 네 가지는 취향 문제가 아니라 규정 문제인 경우가 많다. 회의 음성에는 참석자 이름·소속·연락처가 그대로 들어가고, 의료나 인사 회의라면 민감정보까지 섞인다. 외부 SaaS에 올리는 순간 개인정보 처리 위탁이 되고, 공공기관이나 금융권이라면 위탁 계약과 보안 심사가 따라온다.
로컬 처리는 그 절차 자체를 없앤다. 음성이 장비 밖으로 나가지 않으므로 위탁이 성립하지 않는다. 도입 전에 확인할 항목은 AI 도입 데이터 거버넌스·개인정보 체크리스트에 정리했다.
비용은 언제 역전되나
유료 서비스는 분 단위나 월 구독으로 과금한다. 로컬은 도구 값이 0원이고 전기와 장비 시간만 든다. 다만 구축 시간과 장비가 초기 비용이므로, 사용량이 적으면 유료가 싸다.
| 상황 | 유리한 쪽 |
|---|---|
| 월 몇 건, 보안 제약 없음 | 유료 서비스 |
| 매주 정기 회의 여러 건 | 로컬 |
| 외부 전송이 규정상 불가 | 로컬 (선택지가 없다) |
| 도메인 용어가 많다 | 로컬 (용어 사전을 붙일 수 있다) |
마지막 줄이 실무에서 자주 갈리는 지점이다. 유료 서비스는 우리 회사 제품명이나 내부 약어를 모른다. 로컬이면 전처리·후처리에 용어 사전을 넣어 반복되는 오인식을 줄일 수 있다.
Whisper 회의록 파이프라인이란
Whisper 회의록 파이프라인은 OpenAI Whisper(large-v3)를 맥 실리콘 로컬 환경에서 구동해 한국어 음성을 회의록으로 변환하는 오픈소스 프로젝트입니다. TreeSoop이 2026년 4월 github.com/treesoop/whisper_transcription에 공개했으며, ffmpeg 전처리와 문장 경계 후처리까지 포함된 완성형 파이프라인을 제공합니다. 유료 서비스 대비 한국어 전문 용어 인식 정확도가 높고, 클라우드 전송 없이 로컬에서 전체 처리돼 보안 걱정과 비용 부담이 동시에 해결됩니다. 맥 실리콘 M1 Pro 이상에서 실시간보다 빠른 속도로 동작하며, 고객 미팅·법무·의료·사내 전략 회의 등 외부 전송을 꺼리는 음성 자료에 특히 적합합니다. MIT 라이선스로 상업적 사용과 수정·재배포가 자유롭습니다.
TreeSoop의 한국어 STT 경험
이 프로젝트는 TreeSoop의 자체 제품 Asimula와 같은 문제 영역을 다룹니다. Asimula는 도메인 특화 한국어 STT 솔루션으로, 의료·법률 같은 특정 도메인에서 상용 서비스보다 월등히 정확합니다. Asimula에 투자하기 전에 기본 성능부터 확인하고 싶다면 이 오픈소스 파이프라인이 좋은 출발점입니다.
관련 TreeSoop 서비스
Whisper 파이프라인 같은 음성 AI 작업은 NLP / LLM 파인튜닝, 시그널 프로세싱 서비스로 확장됩니다. 도메인 특화 STT, 실시간 음성 분석, 음성 기반 RAG 등이 필요하시면 문의해보세요.
전사 결과를 로컬 LLM으로 요약하려면 Ollama 로컬 LLM 가이드를 참고하면 된다. 음성도 텍스트도 밖으로 내보내지 않는 구성이 된다.
자주 묻는 질문
Q: 인텔 맥에서도 동작하나요?
A: 맥 실리콘(M1 이상) 기준으로 최적화되어 있습니다. 인텔 맥에서도 동작은 하지만 속도가 크게 떨어집니다.
Q: Windows/Linux 지원은?
A: Whisper 자체는 크로스 플랫폼입니다. 이 저장소의 스크립트는 맥 기준으로 짜여있지만, 조정하면 다른 OS에서도 돌아갑니다.
Q: 실시간 전사(스트리밍) 가능한가요?
A: 현재 버전은 배치 전사입니다. 실시간 스트리밍은 로드맵에 있습니다. 실시간이 필요하면 음성을 짧은 구간으로 잘라 연속 처리하는 구성이 현실적인 대안입니다. 다만 구간 경계에서 단어가 잘리므로 겹치는 구간을 두고 병합하는 처리가 추가로 필요합니다.
Q: 화자 분리(diarization)는 어떻게 되나요?
A: 기본 파이프라인은 화자 분리를 포함하지 않습니다. pyannote 같은 별도 라이브러리 결합이 필요합니다. 회의록 용도라면 이 단계까지 설계에 넣어야 실무에 쓸 수 있습니다.
Q: faster-whisper와 mlx-whisper 중 뭘 써야 하나요?
A: 하드웨어가 정합니다. NVIDIA GPU가 있으면 faster-whisper, 맥 실리콘이면 mlx-whisper입니다. 같은 모델 크기라면 정확도는 같고 속도와 메모리만 달라집니다.
Q: 전사 결과에 오탈자가 많습니다.
A: 순서대로 확인합니다. --language ko를 줬는지, 16kHz 모노로 전처리했는지, 모델이 large-v3인지입니다. 이 셋을 맞춰도 고유명사가 계속 틀리면 후처리에 용어 사전을 붙이는 단계입니다.
Q: GPU 없는 맥에서 돌아가나요?
A: 맥 실리콘은 내장 GPU와 Neural Engine을 활용합니다. 별도 외장 GPU 없이 M1 Pro 이상이면 large-v3도 실시간보다 빠르게 돌아갑니다.
글쓴이: 남대현 | TreeSoop CEO, POSTECH 컴퓨터공학 AI/MR/HCI 석사
도메인 특화 한국어 음성 AI나 AX 프로젝트가 필요하시면 AI-Native 개발사 트리숲이나 카카오톡으로 문의하세요.