Whisper 음성 텍스트 변환 — Python으로 회의록 자동 생성하는 법

Whisper 음성 텍스트 변환은 OpenAI가 공개한 오픈소스 음성인식(STT) 모델을 활용하는 기술입니다. 회의 녹음, 강의, 팟캐스트 — 어떤 오디오 파일이든 텍스트로 바꿀 수 있고, 한국어를 포함한 98개 이상의 언어를 지원합니다. 무엇보다 무료이고 로컬에서 돌릴 수 있어서 민감한 음성 데이터도 외부 서버에 보내지 않고 처리할 수 있습니다.
이 글에서는 Whisper를 설치하고, CLI와 Python 스크립트로 음성을 텍스트로 변환하는 방법을 처음부터 끝까지 정리합니다.
Whisper란?
Whisper는 OpenAI가 68만 시간의 다국어 오디오 데이터로 학습한 음성인식 모델입니다. 특징은 다음과 같습니다:
| 항목 | 내용 |
|---|---|
| 개발사 | OpenAI |
| 라이선스 | MIT (무료, 상업적 사용 가능) |
| 지원 언어 | 98개+ (한국어 포함) |
| 실행 환경 | 로컬 PC (GPU 권장, CPU도 가능) |
| 지원 포맷 | mp3, mp4, wav, flac, ogg, webm 등 |
| 출력 형식 | txt, srt(자막), vtt, json, tsv |
Whisper 음성 텍스트 변환 환경 설정
사전 준비
# Python 3.8~3.11 필요 (3.12 이상은 호환성 문제 가능)
python --version
# FFmpeg 설치 (오디오 처리에 필수)
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
# Windows — https://ffmpeg.org/download.html 에서 다운로드 후 PATH에 추가
Whisper 설치
# 기본 설치
pip install openai-whisper
# 또는 최신 버전 (GitHub에서 직접)
pip install git+https://github.com/openai/whisper.git
faster-whisper 설치 (더 빠른 대안)
원본 Whisper보다 최대 4배 빠르고 메모리를 절반만 사용하는 CTranslate2 기반 구현입니다. 실무에서는 이쪽을 더 많이 씁니다.
pip install faster-whisper
CLI로 바로 변환하기
설치가 끝나면 명령어 한 줄로 음성 파일을 텍스트로 변환할 수 있습니다:
# 기본 변환 (turbo 모델 사용)
whisper audio.mp3
# 한국어 지정 + medium 모델 (한국어는 medium 이상 권장)
whisper meeting.mp3 --language Korean --model medium
# 출력 형식 지정 (자막 파일 생성)
whisper lecture.mp3 --language Korean --model medium --output_format srt
# 텍스트만 출력
whisper interview.wav --language Korean --model medium --output_format txt
# 힌트 프롬프트 제공 (고유명사 인식률 향상)
whisper meeting.mp3 --language Korean --model medium \
--initial_prompt "이 회의에서는 OpenStack, Kubernetes, Terraform에 대해 논의합니다."
실행하면 같은 디렉토리에 .txt, .srt, .json 등의 파일이 자동 생성됩니다.
모델 선택 가이드
| 모델 | 크기 | 필요 VRAM | 한국어 품질 | 속도 |
|---|---|---|---|---|
| tiny | 39M | ~1GB | 낮음 | 매우 빠름 |
| base | 74M | ~1GB | 보통 | 빠름 |
| small | 244M | ~2GB | 양호 | 보통 |
| medium | 769M | ~5GB | 좋음 | 느림 |
| large-v3 | 1550M | ~10GB | 매우 좋음 | 매우 느림 |
| turbo | 809M | ~6GB | 좋음 | large 대비 빠름 |
한국어 추천: GPU가 있으면 medium 이상, CPU만 있으면 small. turbo는 속도와 정확도의 균형이 좋습니다.
Python 스크립트로 Whisper 음성 텍스트 변환하기
기본 스크립트
import whisper
# 모델 로드
model = whisper.load_model("medium")
# 오디오 파일 변환
result = model.transcribe("meeting.mp3", language="ko")
# 결과 출력
print(result["text"])
자막 파일(SRT) 생성 스크립트
import whisper
model = whisper.load_model("medium")
result = model.transcribe("lecture.mp3", language="ko")
# SRT 형식으로 저장
with open("lecture.srt", "w", encoding="utf-8") as f:
for i, segment in enumerate(result["segments"], 1):
start = segment["start"]
end = segment["end"]
# 시간 포맷 변환
def format_time(seconds):
h = int(seconds // 3600)
m = int((seconds % 3600) // 60)
s = int(seconds % 60)
ms = int((seconds % 1) * 1000)
return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"
f.write(f"{i}\n")
f.write(f"{format_time(start)} --> {format_time(end)}\n")
f.write(f"{segment['text'].strip()}\n\n")
print("lecture.srt 생성 완료!")
faster-whisper 사용 (실무 권장)
from faster_whisper import WhisperModel
# GPU 사용: device="cuda", CPU 사용: device="cpu"
model = WhisperModel("medium", device="cpu", compute_type="int8")
segments, info = model.transcribe("meeting.mp3", language="ko")
print(f"감지된 언어: {info.language} (확률: {info.language_probability:.2f})")
for segment in segments:
print(f"[{segment.start:.1f}s -> {segment.end:.1f}s] {segment.text}")
Whisper 음성 텍스트 변환 정확도 높이는 팁
1. –initial_prompt로 고유명사 힌트 제공
result = model.transcribe(
"meeting.mp3",
language="ko",
initial_prompt="참석자: 김팀장, 박과장. 주제: Q1 매출 리뷰, KPI 달성률"
)
2. 오디오 전처리 — 녹음 품질이 나쁘면 FFmpeg로 노이즈를 줄여주면 인식률이 올라갑니다:
# 노이즈 제거 + 볼륨 정규화
ffmpeg -i noisy_audio.mp3 -af "highpass=f=200, lowpass=f=3000, volume=2" clean_audio.mp3
3. 긴 파일은 분할 처리 — 2시간 이상의 파일은 메모리 문제가 생길 수 있으므로, 30분 단위로 잘라서 처리하는 것이 안정적입니다.
실전 활용 사례
회의록 자동 생성, 유튜브 영상 자막 생성, 팟캐스트 텍스트 아카이빙, 강의 녹음 정리 등 다양한 곳에서 Whisper 음성 텍스트 변환이 활용됩니다. 특히 로컬에서 돌릴 수 있다는 점 때문에, 의료·법률·금융 등 민감 데이터를 다루는 환경에서도 안심하고 사용할 수 있습니다.
더 자세한 정보는 Whisper 공식 GitHub와 faster-whisper GitHub에서 확인할 수 있습니다.