전체 벤치마크 표: Apple Silicon(M1–M5)에서의 Whisper 성능
| 칩 | Tiny | Base | Small | Medium | Large-v3 |
|---|---|---|---|---|---|
| — | 32× | 20× | 12× | 5× | — |
| — | 38× | 24× | 16× | 7× | — |
| — | 45× | 30× | 22× | 10× | — |
| — | 55× | 38× | 28× | 14× | — |
| — | 36× | 23× | 14× | 6× | — |
| — | 42× | 28× | 20× | 9× | — |
| — | 50× | 35× | 26× | 12× | — |
| — | 60× | 42× | 32× | 17× | — |
| — | 40× | 26× | 16× | 7× | — |
| — | 46× | 32× | 22× | 10× | — |
| — | 55× | 40× | 30× | 14× | — |
| — | 44× | 30× | 18× | 8× | — |
| — | 50× | 36× | 26× | 12× | — |
| — | 60× | 44× | 34× | 16× | — |
| — | 48× | 34× | 22× | 10× | — |
| — | 55× | 40× | 30× | 14× | — |
| — | 65× | 48× | 38× | 18× | — |
×N 실시간 = 1초 안에 N초 분량의 오디오를 전사함. Metal 가속을 사용한 whisper.cpp 벤치마크. M1 Pro 이상 모든 모델에서 large-v3를 실시간 이상의 속도로 실행할 수 있습니다.
Whisper 모델 크기 — 어떤 것을 선택해야 할까요?
| 모델 | 파라미터 | 디스크 크기 | RAM 사용량 | 영어 WER | 최적 용도 |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
WER(단어 오류율)은 영어 LibriSpeech 테스트 세트 기준입니다. Large-v3-turbo와 distil-large-v3는 대부분의 Mac에서 실시간 처리를 위한 최적의 균형을 제공합니다 — large-v3 품질의 4–6× 속도.
Metal vs Core ML vs Apple Neural Engine: 어떤 백엔드를 선택할까요?
Apple Silicon은 Whisper에 세 가지 가속 경로를 제공합니다. 각각 장단점이 있습니다.
Metal(whisper.cpp 경유) — 권장: Apple Metal GPU 프레임워크 사용, 모든 M 시리즈 칩과 호환, M5 Pro에서 large-v3 10–12× 실시간, make WHISPER_METAL=1로 설정. 최적 용도: 대부분의 사용자, 가장 간단한 설정, 검증된 성능.
Core ML(Apple Core ML 형식 경유) — 고급: Apple 머신러닝 프레임워크 사용, 일부 연산에서 Neural Engine(ANE) 활용 가능, 일부 워크로드에서 15–20% 빠름, 모델 변환 필요(10–15분 설정). 최적 용도: 최대 속도를 원하는 고급 사용자.
Apple Neural Engine(ANE) — 제한적 사용: 모든 M 시리즈 칩의 전용 AI 가속기, 직접 접근 불가(Core ML 경유 필요), 아키텍처 불일치로 Whisper가 ANE를 완전히 활용하지 못함, 소형 모델(tiny, base)에서 가장 효과적. 최적 용도: 배터리 구동 노트북에서의 Whisper tiny/base.
선택 기준: 초기 설정 → Metal(whisper.cpp). large-v3 최대 속도 → Metal(whisper.cpp). 배터리 구동 노트북, base 모델 → ANE 포함 Core ML. 프로덕션 서버 → Metal(검증됨, 안정적). 실시간 전사 → 스트리밍 모드의 Metal. Mac 인스턴스 클라우드 배포 → Metal(컨테이너화 가능).
- Metal(whisper.cpp): 더 빠름, 광범위한 호환성, 가장 간단한 설정
- Core ML: Neural Engine 최적화, 일부 워크로드에서 15–20% 속도 향상(변환 필요)
- Apple Neural Engine: 대형 모델에서는 이점 제한적, 노트북의 tiny/base에 최적
설정: Metal 가속 whisper.cpp
- 1의존성 설치
Why it matters: xcode-select --install (Xcode 도구) brew install ffmpeg (오디오 변환) - 2Metal 포함 whisper.cpp 복제 및 빌드
Why it matters: git clone https://github.com/ggerganov/whisper.cpp cd whisper.cpp make WHISPER_METAL=1 ./main -h | grep -i metal - 3모델 다운로드
Why it matters: bash ./models/download-ggml-model.sh small (466 MB, 실시간) bash ./models/download-ggml-model.sh large-v3 (3 GB, 최고 품질) bash ./models/download-ggml-model.sh large-v3-turbo (1.6 GB, 균형) - 4오디오 파일 전사
Why it matters: ./main -m models/ggml-large-v3.bin -f /path/to/audio.wav ./main -m models/ggml-large-v3.bin -f audio.wav -oj (JSON) ./main -m models/ggml-large-v3.bin -f audio.wav -l en (언어 지정) - 5비WAV 오디오 먼저 변환
Why it matters: ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav ./main -m models/ggml-large-v3.bin -f output.wav
실시간 스트리밍 전사(라이브 마이크)
마이크에서 실시간 전사 — 음성 어시스턴트, 회의 전사, 접근성 도구용.
옵션 1: whisper.cpp 스트림 모드
./stream -m models/ggml-small.bin --step 500 --length 5000
# --step 500: 500ms마다 처리
# --length 5000: 최근 5초 컨텍스트 유지
옵션 2: faster-whisper를 사용한 Python(아래 코드 블록 참조)
M5 Pro에서의 지연: small 모델 ~200ms, large-v3-turbo ~400–600ms, large-v3 ~800ms–1.2s 실시간 지연.
import sounddevice as sd
import numpy as np
from faster_whisper import WhisperModel
model = WhisperModel("large-v3-turbo", device="cpu", compute_type="int8")
buffer = []
chunk_duration = 3
sample_rate = 16000
def callback(indata, frames, time, status):
buffer.append(indata.copy())
if len(buffer) * 1024 / sample_rate >= chunk_duration:
audio = np.concatenate(buffer).flatten().astype(np.float32)
segments, _ = model.transcribe(audio, beam_size=5)
for segment in segments:
print(segment.text)
buffer.clear()
with sd.InputStream(callback=callback, channels=1, samplerate=sample_rate):
print("Listening... (Ctrl+C to stop)")
while True:
sd.sleep(1000)음성 어시스턴트 파이프라인: Whisper + Ollama + Piper TTS
Apple Silicon에서 완전히 로컬로 실행되는 음성 어시스턴트의 전체 코드입니다.
import sounddevice as sd
import numpy as np
import requests
import subprocess
from faster_whisper import WhisperModel
WHISPER_MODEL = "large-v3-turbo"
OLLAMA_URL = "http://localhost:11434/api/chat"
LLM_MODEL = "llama3.1:8b"
SAMPLE_RATE = 16000
whisper = WhisperModel(WHISPER_MODEL, device="cpu", compute_type="int8")
def record_audio(duration=5):
print("Listening...")
audio = sd.rec(int(duration * SAMPLE_RATE),
samplerate=SAMPLE_RATE,
channels=1,
dtype=np.float32)
sd.wait()
return audio.flatten()
def transcribe(audio):
segments, _ = whisper.transcribe(audio, beam_size=5)
return " ".join([seg.text for seg in segments])
def llm_respond(user_text):
response = requests.post(OLLAMA_URL, json={
"model": LLM_MODEL,
"messages": [{"role": "user", "content": user_text}],
"stream": False
})
return response.json()["message"]["content"]
def speak(text):
subprocess.run(
["piper", "--model", "en_US-amy-medium.onnx"],
input=text.encode(),
check=True
)
while True:
audio = record_audio(duration=5)
user_text = transcribe(audio)
print(f"You: {user_text}")
if not user_text.strip():
continue
response = llm_respond(user_text)
print(f"AI: {response}")
speak(response)Mac 모델별 최적 Whisper 설정
| Mac 구성 | 권장 모델 | 실시간 배율 | 사용 사례 |
|---|---|---|---|
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
실시간 음성 어시스턴트용: 최저 지연을 위해 small 또는 large-v3-turbo를 사용하십시오. 회의/팟캐스트 전사용: 최고 정확도를 위해 large-v3를 사용하십시오(1–2초 지연 허용 가능).
로컬 Whisper vs 클라우드 음성 인식 서비스
| 지표 | Whisper 로컬(M5 Pro) | Google Speech-to-Text | OpenAI Whisper API | AssemblyAI |
|---|---|---|---|---|
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
월 비용(하루 8시간): Whisper 로컬 $0, Google $345, OpenAI $86, AssemblyAI $156. 개인정보에 민감한 작업(의료, 법률, 저널리즘)의 경우 로컬 Whisper가 유일한 선택입니다. 대량 전사(클라우드 월 $100 이상)의 경우 로컬 Mac이 12개월 내에 비용을 회수합니다.
Whisper는 클라우드 API보다 빠릅니까?
M5 Pro에서 로컬 실행: 10× 실시간(지연 100ms). 클라우드 API: 네트워크로 인한 100–500ms 지연. 로컬이 더 빠르고 무료입니다.
Whisper는 여러 화자를 처리할 수 있습니까?
예, 타임스탬프로 화자를 분리합니다. 화자 신원을 확인하려면 후처리 또는 화자 분리(diarization) 도구를 사용하십시오.
언어 지원은 어떻게 됩니까?
자동 감지를 포함한 99개 언어를 지원합니다. 언어마다 정확도가 다릅니다 — 영어는 2.5% WER, 기타 언어는 5–15% WER입니다.
속도 대비 품질 비율이 가장 좋은 Whisper 모델은 무엇입니까?
Large-v3-turbo 또는 distil-large-v3입니다. 두 모델 모두 large-v3 정확도의 약 95%를 4–6× 속도로 달성합니다. 대부분의 실시간 사용 사례에 권장됩니다.
Whisper는 억양이 강한 영어나 비원어민 화자를 처리할 수 있습니까?
예, 다만 WER이 상승합니다. 영어 원어민: 약 2.5%. 강한 억양/비원어민: 5–12%. Large-v3는 소형 모델보다 억양을 더 잘 처리합니다.
Whisper는 팟캐스트 및 음악 전사에 적합합니까?
팟캐스트: 예, 음성 콘텐츠에 탁월합니다. 가사가 있는 음악: 부적합 — Whisper는 음성용으로 학습되었습니다. 음악에는 전문 모델을 사용하십시오.
기술 용어에 대한 Whisper의 정확도는 어떻습니까?
가변적입니다. 일반적인 기술 용어: 양호. 고도로 전문화된 용어: 잘못 전사될 수 있습니다. 정확도를 높이려면 --prompt 플래그에 예상 어휘를 지정하십시오.
한 Mac에서 여러 Whisper 인스턴스를 실행할 수 있습니까?
예, 메모리에 따라 제한됩니다. M5 Pro 36GB: large-v3 인스턴스 2개 동시 실행 가능. M5 Max 128GB: 4–6개의 인스턴스 또는 LLM/TTS와 함께 하나의 인스턴스.
