API 비용 0원, 내 Mac에서 영상 자막(SRT) 만들기 — faster-whisper 6단계 가이드
이 글과 연결된 글 보기
드래그로 이동 · 휠/두 손가락으로 확대 · 방향키로 글 선택 · 0으로 맞춤. 실선: 본문 링크, 점선: 시리즈·주제의 대표 연결.표시된 글 21편 목록
Mac 터미널에 명령 몇 줄을 입력하면, 영상 파일을 외부 서버에 올리지 않고 내 컴퓨터 안에서 SRT 자막 파일로 바꿀 수 있습니다. API 키도 결제도 필요 없습니다. 이 글의 명령은 모두 2026년 10월 Apple Silicon Mac에서 직접 실행해 결과까지 확인했습니다.

이 글은 이런 분께 필요합니다
- 영상 자막을 자주 만드는데 API 비용이나 유료 자막 서비스 요금이 부담되는 분
- 강의·회의 녹화처럼 외부 서비스에 올리기 꺼려지는 영상을 자막으로 바꾸고 싶은 분
- 터미널 창에 명령어를 복사해 붙여넣을 수 있는 분 (코드를 짤 줄 몰라도 됩니다)
AI 코딩 도구에 "자막 따줘"라고 맡기는 방식이 더 편하다면 1편: Codex에 영상 넣고 "자막 따줘" 한마디를 보세요. 1편은 OpenAI API를 쓰기 때문에 사용량만큼 비용이 나가고 음성이 OpenAI로 전송됩니다. 이 글은 그 대신 내 컴퓨터가 직접 일하는 방식입니다.
먼저 용어 두 개만 짚고 가겠습니다
- Whisper: OpenAI가 공개한 음성 인식 모델입니다. 모델 파일을 내려받으면 API 없이 내 컴퓨터에서도 돌릴 수 있습니다.
- faster-whisper: Whisper를 더 빠르고 가볍게 돌려주는 무료 프로그램입니다. 이 글에서는 이걸 설치해 씁니다.
- SRT: 자막 파일 형식입니다. "몇 초부터 몇 초까지 이 문장"이 줄줄이 적힌 텍스트 파일이라, 프리미어·캡컷·다빈치 리졸브·유튜브에 그대로 올릴 수 있습니다.
준비물
| 항목 | 조건 | 이 글에서 확인한 환경 |
|---|---|---|
| 컴퓨터 | Apple Silicon Mac (M1 이후) | M3 MacBook, RAM 16GB |
| Python | 3.10 이상 | Python 3.13 |
| 저장공간 | 1GB 이상 여유 | 모델 약 480MB + 프로그램 약 220MB |
| 인터넷 | 처음 설치하고 모델을 받을 때만 필요 |
ffmpeg 같은 영상 변환 프로그램은 따로 설치하지 않아도 됩니다. faster-whisper가 mp4 파일에서 소리를 직접 읽어냅니다. Windows와 NVIDIA 그래픽카드 환경은 이 글에서 직접 확인하지 못해 다루지 않습니다.
Step 1. 터미널을 열고 Python 버전을 확인합니다
Command + Space를 눌러 Spotlight를 열고터미널을 입력해 엽니다.- 아래 명령을 붙여넣고 Enter를 누릅니다.
python3 --version
Python 3.10 이상(3.11, 3.12, 3.13 등)이 나오면 다음 단계로 갑니다. 숫자가 3.9 이하이거나 command not found가 나오면 python.org 다운로드 페이지에서 최신 macOS 설치 파일을 받아 설치한 뒤, 터미널을 껐다 켜서 다시 확인합니다.
Step 2. 작업 폴더와 가상환경을 만듭니다
가상환경은 이 작업에 필요한 프로그램만 따로 담아두는 상자입니다. 컴퓨터의 다른 Python 프로그램과 섞이지 않아서, 나중에 지우고 싶으면 폴더째 삭제하면 끝납니다.
mkdir -p ~/Desktop/local-subtitles
cd ~/Desktop/local-subtitles
python3 -m venv .venv
source .venv/bin/activate
마지막 줄을 실행하면 터미널 앞부분에 (.venv)가 붙습니다. 이 표시가 있어야 다음 단계의 설치가 이 상자 안에 들어갑니다. 터미널을 새로 열었을 때는 cd ~/Desktop/local-subtitles와 source .venv/bin/activate를 다시 입력합니다.
Step 3. faster-whisper를 설치합니다
pip install faster-whisper "av<19"
설치가 끝났는지는 아래 명령으로 확인합니다.
pip show faster-whisper av
Version: 1.2.1(faster-whisper)과 Version: 18.1.0(av)처럼 두 개의 버전이 나오면 됩니다.
"av<19"를 붙이는 이유가 있습니다. av는 영상에서 소리를 꺼내는 부품인데, 2026년 10월 확인 기준으로 pip install faster-whisper만 입력하면 최신 av 19가 같이 깔립니다. 그런데 faster-whisper 1.2.1은 av 19와 맞지 않아서 실행하는 순간 TypeError: open() got an unexpected keyword argument 'metadata_errors' 오류가 납니다. av를 18 버전으로 고정하면 정상 작동합니다. 나중에 faster-whisper가 업데이트되면 이 고정이 필요 없어질 수 있습니다.
Step 4. 자막을 만드는 스크립트 파일을 만듭니다
아래 블록은 "영상 파일을 받아서 같은 이름의 .srt 파일로 저장"하는 스크립트 make_srt.py를 작업 폴더에 만들어 줍니다. 첫 줄 cat >부터 마지막 줄 EOF까지 전체를 한 번에 복사해 터미널에 붙여넣고 Enter를 누르면 됩니다. 코드를 고칠 필요는 없습니다.
cat > make_srt.py <<'EOF'
import argparse
from pathlib import Path
from faster_whisper import WhisperModel
def to_srt_time(seconds: float) -> str:
ms = int(round(seconds * 1000))
h, ms = divmod(ms, 3_600_000)
m, ms = divmod(ms, 60_000)
s, ms = divmod(ms, 1000)
return f"{h:02}:{m:02}:{s:02},{ms:03}"
parser = argparse.ArgumentParser(description="영상·음성 파일을 SRT 자막으로 만듭니다.")
parser.add_argument("file", help="자막을 만들 영상 또는 음성 파일")
parser.add_argument("--model", default="small", help="tiny, base, small, medium, large-v3")
parser.add_argument("--device", default="cpu", help="cpu 또는 cuda")
parser.add_argument("--compute-type", default="int8", help="cpu는 int8, cuda는 float16")
parser.add_argument("--language", default="ko")
args = parser.parse_args()
model = WhisperModel(args.model, device=args.device, compute_type=args.compute_type)
segments, info = model.transcribe(args.file, language=args.language, vad_filter=True)
out_path = Path(args.file).with_suffix(".srt")
with open(out_path, "w", encoding="utf-8") as f:
for i, seg in enumerate(segments, start=1):
f.write(f"{i}\n{to_srt_time(seg.start)} --> {to_srt_time(seg.end)}\n{seg.text.strip()}\n\n")
print(f"[{to_srt_time(seg.start)}] {seg.text.strip()}")
print(f"완료: {out_path}")
EOF
제대로 만들어졌는지는 아래 명령으로 확인합니다. 사용법 안내가 나오면 성공입니다.
python make_srt.py --help
usage: make_srt.py [-h] [--model MODEL] [--device DEVICE]
[--compute-type COMPUTE_TYPE] [--language LANGUAGE]
file
영상·음성 파일을 SRT 자막으로 만듭니다.
Step 5. 영상을 넣고 실행합니다
- 자막을 만들 영상(예:
my-video.mp4)을 Finder에서 바탕화면의local-subtitles폴더로 옮깁니다. 파일 이름에 띄어쓰기가 없으면 입력이 편합니다. - 터미널에 아래 명령을 입력합니다.
python make_srt.py my-video.mp4
처음 한 번은 음성 인식 모델(small, 약 480MB)을 내려받느라 몇 분 걸립니다. 모델은 ~/.cache/huggingface 폴더에 저장되고, 두 번째부터는 다시 받지 않습니다.
실행되는 동안 인식한 문장이 화면에 한 줄씩 나옵니다. 25초짜리 한국어 테스트 영상으로 실제 실행한 결과입니다.
[00:00:00,000] 안녕하세요 데이터 팝콘입니다.
[00:00:04,040] 오늘은 내 컴퓨터에서 무료로 영상 자막을 만드는 방법을 알아보겠습니다.
[00:00:11,400] 음성 파일을 인터넷에 올리지 않아도 자막 파일이 만들어집니다.
[00:00:18,040] 먼저 파일 선, 가상환경을 만들고 패키지를 설치합니다.
완료: my-video.srt
모델을 이미 받아둔 상태에서 M3 MacBook으로 이 25초 영상을 처리하는 데 약 21초가 걸렸습니다. 영상 길이와 컴퓨터에 따라 시간이 달라지니, 긴 영상은 먼저 1~2분짜리로 시험해 보길 권합니다.
옵션 바꾸기
| 하고 싶은 것 | 명령 |
|---|---|
| 기본값으로 실행 (한국어, small 모델) | python make_srt.py my-video.mp4 |
| 영어 영상 | python make_srt.py my-video.mp4 --language en |
| 영상 대신 음성 파일(mp3) | python make_srt.py my-audio.mp3 |
모델 크기는 --model 뒤에 이름을 붙여 바꿉니다(예: --model medium). 모델은 tiny, base, small, medium, large-v3 순서로 커집니다. 클수록 정확해질 가능성이 높지만, 내려받을 파일과 처리 시간도 함께 늘어납니다. 이 글에서 실제로 돌려본 모델은 small이므로, 처음에는 small로 끝까지 해본 뒤 결과가 아쉬울 때만 키우길 권합니다.
Step 6. SRT 파일을 열어 틀린 글자를 고칩니다
폴더에 영상과 같은 이름의 my-video.srt가 생깁니다. 텍스트 편집기로 열면 이렇게 생겼습니다.
1
00:00:00,000 --> 00:00:04,040
안녕하세요 데이터 팝콘입니다.
2
00:00:04,040 --> 00:00:11,400
오늘은 내 컴퓨터에서 무료로 영상 자막을 만드는 방법을 알아보겠습니다.
받아쓰기는 완벽하지 않습니다. 위 테스트에서도 "파이썬 가상환경"이 "파일 선, 가상환경"으로 잘못 나왔습니다. 특히 다음 세 가지는 꼭 눈으로 확인합니다.
- 제품명·사람 이름·전문 용어 (위의 "파이썬"처럼 가장 자주 틀립니다)
- 회사명 띄어쓰기 ("데이터팝콘"이 "데이터 팝콘"으로 나왔습니다)
- 숫자와 단위
시간 줄(-->가 있는 줄)은 건드리지 말고 문장 줄만 고친 뒤 저장합니다. 고친 SRT를 편집툴로 가져가는 방법은 1편의 "편집툴로 생성된 자막(SRT) 가져가기"에 정리돼 있습니다.
오류가 나면 여기부터 확인하세요
| 오류 메시지 | 원인 | 해결 |
|---|---|---|
TypeError: open() got an unexpected keyword argument 'metadata_errors' | av 19가 설치돼 faster-whisper 1.2.1과 맞지 않음 | pip install "av<19"를 실행한 뒤 다시 실행합니다 |
ModuleNotFoundError: No module named 'faster_whisper' | 가상환경이 꺼진 상태에서 실행함 (앞에 (.venv) 표시가 없음) | cd ~/Desktop/local-subtitles 후 source .venv/bin/activate를 실행합니다 |
No such file or directory: 'my-video.mp4' | 영상이 작업 폴더에 없거나 파일 이름이 다름 | Finder에서 파일 이름과 위치를 확인합니다. 이름에 띄어쓰기가 있으면 "내 영상.mp4"처럼 따옴표로 감쌉니다 |
command not found: python3 | Mac에 Python이 설치돼 있지 않음 | Step 1의 python.org 링크에서 설치합니다 |
| 첫 실행이 오래 멈춘 것처럼 보임 | 모델(약 480MB)을 내려받는 중 | 인터넷 연결을 확인하고 기다립니다. 두 번째 실행부터는 바로 시작합니다 |
정리
Python 확인 → 가상환경 만들기 → pip install faster-whisper "av<19" → 스크립트 붙여넣기 → python make_srt.py 영상파일 → SRT 검수, 이 여섯 단계면 내 Mac에서 비용 없이 자막 파일이 나옵니다. 처음 한 번만 설치하면 그다음부터는 영상을 폴더에 넣고 Step 5의 명령 한 줄만 입력하면 됩니다. 대신 처리 시간은 내 컴퓨터 성능만큼 걸리고, 받아쓰기 결과는 사람이 한 번 검수해야 한다는 점은 API 방식과 같습니다.
