- 음성은 요구사항이 모델보다 먼저 정해집니다
- STT: 다국어가 필요한 경우
- STT: 영어에서 속도와 길이가 필요한 경우
- 실시간이라는 말을 정확히 쪼개기
- 화자 분리는 별도의 모델입니다
- TTS: 목소리를 어디서 가져오는가
- 음성 모델의 경고는 장식이 아닙니다
- 코드 예시
- 고를 때의 순서
- 직접 해보기
- 시리즈 안내
- 참고 자료
모델 정보는 2026-08-12에 Hugging Face 페이지에서 직접 확인했습니다. 모델 카드와 라이선스는 바뀔 수 있으니 사용 전 원본을 다시 확인하세요.
음성은 요구사항이 모델보다 먼저 정해집니다
텍스트 모델은 일단 붙여 보고 품질을 비교할 수 있지만 음성은 그렇게 되지 않습니다. 어떤 언어를 받는지, 오디오가 얼마나 긴지, 결과가 몇 초 안에 나와야 하는지, 화자를 구분해야 하는지가 먼저 정해지고 나면 후보가 대부분 저절로 걸러집니다.
그래서 이 글은 모델을 나열하기 전에 그 네 가지 축부터 정리합니다. 카드가 제공하는 값 대부분이 이 축에 직접 대응하기 때문입니다.
STT: 다국어가 필요한 경우
| 저장소 | license | 크기 | 언어 | 카드에 적힌 제약 |
|---|---|---|---|---|
openai/whisper-large-v3 | apache-2.0 | 1550M | 99개 언어 | 30초 수용 영역, 긴 오디오는 순차 또는 청크 알고리즘 필요 |
openai/whisper-large-v3-turbo | mit | 809M | 99개 언어 | 디코딩 층이 32에서 4로 감소, 기본 상태로 실시간 전사용은 아님 |
nvidia/canary-1b-flash | cc-by-4.0 | 883M | 영어, 독일어, 프랑스어, 스페인어 | 40초 미만 오디오를 대상으로 설계, 타임스탬프는 실험적 기능 |
두 Whisper 변형의 라이선스 표기가 서로 다르다는 점을 놓치기 쉽습니다. openai/whisper-large-v3은 apache-2.0, openai/whisper-large-v3-turbo는 mit으로 표기됩니다. 같은 계열이라고 같은 조건이 아닙니다.
openai/whisper-large-v3-turbo 카드는 훨씬 빠른 대신 품질이 약간 떨어진다고 직접 적습니다. 어느 쪽을 고를지는 오탈자 하나가 어떤 비용을 만드는지에 달려 있습니다. 자막 초안이라면 속도가, 의료 기록이나 법적 근거라면 정확도가 우선입니다.
nvidia/canary-1b-flash는 영어와 독일어·프랑스어·스페인어 사이의 번역을 양방향으로 지원한다고 적습니다. 다만 40초 미만 오디오를 대상으로 설계되었고, 특수문자를 처리하지 않으며 역정규화가 필요할 수 있다고 카드가 밝힙니다.
STT: 영어에서 속도와 길이가 필요한 경우
nvidia/parakeet-tdt-0.6b-v2는 cc-by-4.0에 6억 파라미터이고, FastConformer 인코더와 TDT 디코더 구조라고 적혀 있습니다. 이 모델의 실무적 강점은 카드가 명시한 두 가지입니다. 한 번에 최대 24분 길이의 오디오 구간을 전사할 수 있고, 문자·단어·구간 단위 타임스탬프를 지원한다는 점입니다.
대신 언어는 영어 하나입니다. 그리고 NVIDIA NeMo 설치가 필요하다고 카드가 적습니다. 파이프라인이 transformers만으로 구성되어 있다면 런타임 하나를 더 들이는 결정이 됩니다. 카드는 전사가 100퍼센트 정확하지는 않으며 언어와 입력 오디오 특성에 따라 정확도가 달라진다고도 밝힙니다.
실시간이라는 말을 정확히 쪼개기
실시간이 필요하다는 요구는 대개 세 가지 중 하나입니다. 발화가 끝나기 전에 중간 결과가 보여야 하거나, 발화가 끝난 뒤 1초 안에 최종 결과가 나와야 하거나, 회의가 끝난 뒤 몇 분 안에 전체 결과가 나오면 되는 경우입니다.
Whisper 계열은 세 번째에 가장 잘 맞습니다. openai/whisper-large-v3 카드는 30초 수용 영역을 명시하고 긴 오디오에는 순차 또는 청크 알고리즘이 필요하다고 적으며, openai/whisper-large-v3-turbo 카드는 기본 상태로 실시간 전사를 위해 설계된 것은 아니라고 직접 적습니다. 첫 번째 요구가 진짜라면 모델 선택보다 스트리밍 구조 설계가 먼저입니다.
배포 형식도 지연에 영향을 줍니다. Systran/faster-whisper-large-v3은 openai/whisper-large-v3을 ct2-transformers-converter로 CTranslate2 형식으로 변환한 저장소이고, 가중치는 FP16으로 저장되어 있으며 CTranslate2의 compute_type 옵션으로 바꿀 수 있다고 적혀 있습니다. 같은 모델이라도 런타임이 다르면 지연 특성이 달라진다는 뜻입니다.
화자 분리는 별도의 모델입니다
회의록을 만든다면 받아쓰기만으로는 절반입니다. 누가 말했는지를 나누는 것은 다른 모델의 일입니다.
pyannote/speaker-diarization-3.1은 mit으로 표기되고, 16kHz 모노를 전제로 하며 스테레오나 다채널은 평균을 내어 자동으로 모노로 합치고 다른 샘플링 레이트는 자동으로 16kHz로 재변환한다고 적혀 있습니다. 화자 수는 num_speakers, min_speakers, max_speakers 옵션으로 조절할 수 있습니다.
이 저장소는 접근 조건에 동의하고 연락처를 공유해야 파일을 받을 수 있습니다. 자동 배포 파이프라인을 짜기 전에 확인해야 하는 항목입니다.
TTS: 목소리를 어디서 가져오는가
| 저장소 | license | 크기 | 언어 | 카드에 적힌 특징 |
|---|---|---|---|---|
hexgrad/Kokoro-82M | apache-2.0 | 82M | 8개 언어, 54개 음성 | StyleTTS 2 구조에 ISTFTNet 보코더, 디코더만 공개 |
coqui/XTTS-v2 | coqui-public-model-license | 명시되어 있지 않음 | 17개 언어, 한국어 포함 | 6초 오디오로 음성 복제, 교차 언어 복제 |
SWivid/F5-TTS | cc-by-nc-4.0 | 명시되어 있지 않음 | 페이지에 명시되어 있지 않음 | 학습 데이터로 Emilia 데이터셋을 표기 |
microsoft/speecht5_tts | mit | 명시되어 있지 않음 | 페이지에 명시되어 있지 않음 | 화자 x-vector 임베딩과 별도 보코더 필요 |
TTS를 고를 때 첫 질문은 목소리를 어디서 가져오느냐입니다. hexgrad/Kokoro-82M처럼 미리 준비된 음성 목록에서 고르는 방식이라면 결정이 단순합니다. coqui/XTTS-v2처럼 6초짜리 참조 오디오로 복제하는 방식이라면, 그 6초를 어떻게 확보했고 그 화자가 동의했는지가 기술 문제보다 먼저 걸립니다.
microsoft/speecht5_tts는 구조 자체가 조립식입니다. 카드가 화자 x-vector 임베딩을 넣어야 하고 microsoft/speecht5_hifigan 보코더를 함께 불러와야 한다고 적습니다. 저장소 하나를 붙이면 끝나는 형태가 아니라는 뜻이고, 지원 언어를 포함해 편향·위험·한계·평가 데이터 항목이 카드에서 More Information Needed로 남아 있습니다.
SWivid/F5-TTS는 페이지에 지원 언어와 기능 설명이 명시되어 있지 않습니다. 이 글은 그 빈칸을 기억으로 채우지 않았습니다. 실제로 쓰려면 연결된 코드 저장소와 논문을 직접 확인해야 합니다.
음성 모델의 경고는 장식이 아닙니다
음성은 다른 어떤 모달리티보다 카드의 경고가 곧 설계 제약이 되는 영역입니다.
openai/whisper-large-v3 카드는 예측에 실제로 말해지지 않은 문장이 포함될 수 있다고 명시하고, 반복적인 텍스트를 생성하는 경향과 언어별로 성능이 고르지 않다는 점을 함께 적습니다. 같은 카드는 동의 없이 녹음된 음성을 전사하지 말라고 하고, 의사결정 같은 고위험 영역에 배치하지 말라고 씁니다. openai/whisper-large-v3-turbo 카드도 억양과 방언에 따라 성능이 달라진다는 점을 덧붙입니다.
이 문장들은 그대로 요구사항이 됩니다. 환각 가능성이 명시된 모델의 출력을 사람 검토 없이 확정 기록으로 삼으면 안 되고, 녹취 동의 절차가 없는 서비스는 모델 선택 이전에 설계가 잘못된 것입니다. hexgrad/Kokoro-82M 카드가 허용된 비저작권 오디오만으로 학습했다고 밝히고 이 모델을 사칭하는 가짜 사이트를 경고하는 것도 같은 맥락입니다.
코드 예시
# 예시: 긴 오디오를 청크 방식으로 전사합니다
from transformers import pipeline
asr = pipeline(
"automatic-speech-recognition",
model="openai/whisper-large-v3-turbo",
chunk_length_s=30,
return_timestamps=True,
)
result = asr("meeting.wav", generate_kwargs={"language": "korean"})
for chunk in result["chunks"][:3]:
print(chunk["timestamp"], chunk["text"])
화자 분리는 별도 파이프라인으로 붙여 결과를 시간축에서 합칩니다.
# 예시: 화자 구간을 얻어 전사 결과와 시간축에서 맞춥니다
from pyannote.audio import Pipeline
diarizer = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.1",
use_auth_token="hf_...",
)
for turn, _, speaker in diarizer("meeting.wav").itertracks(yield_label=True):
print(f"{turn.start:.1f}-{turn.end:.1f}", speaker)
고를 때의 순서
- 대상 언어를 확정합니다. 영어 단일이면 후보가 크게 달라집니다.
- 오디오 길이 분포를 봅니다. 카드에 적힌 수용 영역과 권장 길이를 넘는지 확인합니다.
- 실시간 요구를 세 가지 중 어느 것인지로 다시 씁니다.
- 화자 분리가 필요하면 별도 모델과 게이트 조건을 함께 계획합니다.
- 음성 복제를 쓴다면 동의와 권리 확인 절차를 기술 결정보다 앞에 둡니다.
- 카드의 환각·편향 경고를 그대로 사람 검토 절차 요구사항으로 옮겨 적습니다.
직접 해보기
- 브라우저 AI 실험실 — 작은 음성 모델을 브라우저에서 돌려 지연을 체감합니다.
- AI 벤치마크 모음 — 음성 인식 평가 지표가 무엇을 재는지 확인합니다.
- LLM GPU 메모리(VRAM) 계산기 — 음성 모델과 언어 모델을 같은 장비에 함께 올릴 때 용량을 계산합니다.
시리즈 안내
- 이전 글: 한국어를 지원하는 오픈 모델과 토크나이저 비용
- 다음 글: 비전과 멀티모달: 이미지 이해, OCR, VLM
참고 자료
- 표의 모든 값은 2026-08-12에 해당 모델의 Hugging Face 페이지에서 직접 읽었습니다. 페이지에 없던 항목은 명시되어 있지 않음으로 적었습니다.
SWivid/F5-TTS의 지원 언어와 기능은 페이지에 명시되어 있지 않아 이 글에 적지 않았습니다.- 라이선스 전문을 직접 읽고, 상업적 사용은 법무 검토를 거치세요.
현재 단락 (1/63)
모델 정보는 2026-08-12에 Hugging Face 페이지에서 직접 확인했습니다. 모델 카드와 라이선스는 바뀔 수 있으니 사용 전 원본을 다시 확인하세요.