본문으로 건너뛰기
김신건의 로그

[Voice AI] TTS 모델: ElevenLabs, Cartesia, Edge TTS, 한국어

· 수정 · 📖 약 2분 · 583자/단어 #tts #voice-synthesis #neural-tts #voice-cloning #korean #tacotron #vits
TTS, Text-to-Speech, neural TTS, ElevenLabs, Cartesia Sonic, Edge TTS, OpenAI TTS, Naver Clova Voice, Typecast, voice cloning, vocoder, Tacotron, VITS, StyleTTS, WaveNet

정의

TTS (Text-to-Speech) = 텍스트 → 음성 합성. 2026 시점 사람과 구분 어려운 자연도 + < 200ms first audio + voice cloning 표준.

뉴럴 TTS 아키텍처 진화

flowchart LR
    WN["WaveNet (2016)\nAutoregressive,\n느림"]
    Tac["Tacotron2 (2018)\nSeq2Seq + WaveNet\n실용적"]
    FS["FastSpeech2 (2020)\nNon-AR, parallel\n빠름"]
    VITS["VITS (2021)\nEnd-to-End\nAcoustic+Vocoder 통합"]
    Style["StyleTTS2 (2023)\nStyle transfer\n자연도 높음"]
    Flow["F5-TTS / E2 TTS (2024)\nFlow Matching\n빠른 클로닝"]

    WN --> Tac --> FS --> VITS --> Style
    VITS --> Flow
모델방식특징
WaveNet (DeepMind 2016)autoregressive 샘플 생성최초 신경망 보코더, 매우 느림
Tacotron2 (Google 2018)seq2seq + Griffin-Lim/WaveNettext → mel-spectrogram
FastSpeech2 (MS 2020)non-autoregressive, parallel빠름, 자연도 중간
VITS (2021)end-to-end (acoustic + vocoder)자연도 높음, 빠름
HiFi-GAN (2020)GAN 보코더고속, 고품질 mel → waveform
StyleTTS2 (2023)style diffusion + SLM사람 수준 자연도
F5-TTS / E2 TTS (2024)flow matching빠른 클로닝, 경량

뉴럴 TTS 파이프라인

flowchart LR
    Text["텍스트"] --> Norm["Text Normalization\n(숫자, 약어, 발음 사전)"]
    Norm --> Front["G2P\n(grapheme to phoneme)"]
    Front --> Acoustic["Acoustic Model\n(mel-spectrogram 예측)"]
    Acoustic --> Vocoder["Vocoder\n(mel to waveform)"]
    Vocoder --> Audio["음성 wav / pcm"]

2026 시점 상용 TTS 는 거의 모두 end-to-end (acoustic + vocoder 통합). VITS / StyleTTS2 계열.

주요 모델 매트릭스 (2026)

모델종류한국어TTFB클로닝강점
ElevenLabs v3API우수200-400ms수초 샘플자연도 1위, 다국어, 감정 제어
Cartesia Sonic-2API보통< 90ms가능최저 latency, 실시간 voice agent
OpenAI TTS-1-HD / GPT-4o TTSAPI우수300-500ms제한GPT 통합
Google Cloud TTS (Studio voices)API우수300ms제한안정성
Azure Speech TTSAPI우수200-400msCustom Neural Voiceenterprise
Microsoft Edge TTS무료 (비공식 API)우수보통X비용 0
Naver CLOVA VoiceAPI최우수200-400ms가능한국어 1위
TypecastAPI우수적당강력한국 voice cloning
Coqui XTTS-v2OSS우수self-host수초 샘플자체 호스팅 + 클로닝
F5-TTS (2024)OSS보통self-host가능flow matching, 빠름
StyleTTS 2OSS영어self-host가능사람 수준 자연도

TTFB (Time-to-First-Byte) 비교

TTS TTFB (첫 오디오까지, ms)
Cartesia 가 최저. 실시간 voice agent 에 필수 < 200ms.

스트리밍 TTS 파이프라인

sequenceDiagram
    participant LLM
    participant TTS as TTS API
    participant Player as Audio Player

    LLM->>TTS: "안녕하세요 ..."
    Note over TTS: 문장 단위 청킹
    TTS-->>Player: chunk 1 (첫 문장 오디오 시작)
    LLM->>TTS: "오늘 날씨가 ..."
    TTS-->>Player: chunk 2
    LLM->>TTS: "좋네요."
    TTS-->>Player: chunk 3
    Player->>Player: 연속 재생 (seamless)
# ElevenLabs 스트리밍 예시
from elevenlabs.client import ElevenLabs
from elevenlabs import stream

client = ElevenLabs(api_key="your-api-key")

audio_stream = client.generate(
    text="안녕하세요. 음성 합성 스트리밍 테스트입니다.",
    voice="Rachel",
    model="eleven_multilingual_v2",
    stream=True,
)
stream(audio_stream)  # 재생까지 처리
# Cartesia 스트리밍
import cartesia

client = cartesia.Cartesia(api_key="your-api-key")

for chunk in client.tts.bytes(
    model_id="sonic-2",
    transcript="Hello, this is a streaming TTS test.",
    voice={"id": "your-voice-id"},
    output_format={"container": "raw", "encoding": "pcm_s16le", "sample_rate": 16000},
    stream=True,
):
    audio_player.write(chunk)

Edge TTS (Microsoft 비공식 API)

import edge_tts
import asyncio

async def main():
    communicate = edge_tts.Communicate(
        text="안녕하세요. 음성 합성 테스트입니다.",
        voice="ko-KR-SunHiNeural"
    )
    await communicate.save("output.mp3")

# 스트리밍
async def stream_tts(text):
    communicate = edge_tts.Communicate(text, voice="ko-KR-InJoonNeural")
    async for chunk in communicate.stream():
        if chunk["type"] == "audio":
            yield chunk["data"]

# 한국어 음성 목록 확인
voices = await edge_tts.list_voices()
korean = [v for v in voices if v["Locale"].startswith("ko-KR")]
한국어 Edge TTS 음성성별특성
ko-KR-SunHiNeural여성자연스러운 뉴스 톤
ko-KR-InJoonNeural남성차분한 성우 톤
ko-KR-HyunsuNeural남성젊은 톤 (멀티링구얼)
ko-KR-BongJinNeural남성낭독 스타일

IMPORTANT

Edge TTS 는 비공식. Microsoft Edge 브라우저의 read-aloud 기능을 외부 사용. 상용 서비스 사용은 위험. PoC, 개인 프로젝트 에 적합.

SSML / Prosody 제어

<!-- SSML 예시 -->
<speak>
  <s>안녕하세요.</s>
  <break time="500ms"/>
  <prosody rate="slow" pitch="+2st">
    천천히 높은 음으로 말합니다.
  </prosody>
  <say-as interpret-as="characters">AI</say-as>
  <phoneme alphabet="ipa" ph="ˈmɒkɪŋ">mocking</phoneme>
</speak>
SSML 태그역할
<prosody rate/pitch/volume>속도, 음높이, 음량
<break>침묵 삽입
<say-as interpret-as>숫자/날짜/문자 읽기 방식
<phoneme>IPA 발음 직접 지정
<emphasis>강조

한국어 TTS 선택

flowchart TD
    Q{"환경 / 우선순위"}
    Q -->|"상용 + 한국어 자연도 최고"| CLOVA["CLOVA Voice"]
    Q -->|"상용 + 클로닝 + 한국어"| Typecast
    Q -->|"상용 + 다국어 + 자연도"| Eleven["ElevenLabs v3"]
    Q -->|"상용 + 최저 latency"| Cartesia
    Q -->|"무료 + PoC"| EdgeTTS["Edge TTS"]
    Q -->|"자체 호스팅 + 클로닝"| XTTS["Coqui XTTS-v2 / F5-TTS"]

Voice Cloning

flowchart LR
    Sample["3-10초 음성 샘플"] --> Encoder["Speaker Encoder\n(d-vector, x-vector)"]
    Encoder --> Embed["Speaker Embedding (256-dim)"]
    Text["텍스트"] --> TTS["TTS 모델"]
    Embed --> TTS
    TTS --> Output["클로닝된 음성"]
도구샘플 길이품질
ElevenLabs Instant Voice1분최고
ElevenLabs Professional Voice30분+정밀 (스튜디오 녹음)
XTTS-v26초좋음 (OSS)
F5-TTS10초빠름
Cartesia Voice Cloning수분상업용

CAUTION

허락 없는 voice cloning 은 법적 / 윤리적 문제. 공인 / 유명인 음성 무단 사용 금지. 생성 음성에 워터마크 권장.

발음 교정 사전 (lexicon)

<!-- SSML lexicon 참조 -->
<lexicon uri="https://example.com/lex.pls"/>

<!-- lex.pls -->
<lexicon xmlns="http://www.w3.org/2005/01/pronunciation-lexicon">
  <lexeme>
    <grapheme>Karatsuba</grapheme>
    <phoneme>karatsˈuːba</phoneme>
  </lexeme>
  <lexeme>
    <grapheme>네이버</grapheme>
    <phoneme>ne.i.beo</phoneme>
  </lexeme>
</lexicon>

브랜드명, 인명, 기술 용어를 정확히 발음. 자세한 SSML 은 tts-streaming-ssml.

평가 지표

지표의미
MOS (Mean Opinion Score)1-5, 인간 평가 (4.0+ = 자연스러움)
CMOS비교 MOS
CER합성된 음성을 STT 로 다시 전사 → 정확도
TTFB첫 오디오까지
RTF (Real-Time Factor)처리 시간 / 음성 시간 (< 1 = 실시간 가능)

흔한 함정

WARNING

  1. TTFB 만 보고 선택 = 자연도 떨어지면 사용자 외면. TTFB + MOS 둘 다 확인.
  2. 숫자 발음 = “100” → “100” 또는 “백” 모델마다 다름. SSML <say-as> 명시.
  3. 긴 문장 한 번에 = 첫 오디오 지연. 문장 단위 청킹 후 스트리밍.
  4. 클로닝 음질 = 샘플 노이즈에 민감. 조용한 환경 + 16kHz+ 녹음.
  5. Edge TTS 상용 사용 = 비공식 API, 언제든 차단 가능. 상용 서비스는 공식 API.

관련 위키

이 글의 용어 (4개)
[Voice AI] 음성 에이전트 아키텍처: Cascading / Streaming / S2S + Latency Budgetai
정의 실시간 음성 AI 의 3가지 패턴. 각자 지연 vs 유연성 vs 비용 트레이드오프. 3 패턴 비교 | | Cascading | Streaming | S2S | |---|--…
[Voice AI] Speech-to-Speech: OpenAI Realtime, Gemini Live, Moshivoice
정의 S2S (Speech-to-Speech) = STT → LLM → TTS 직렬 파이프라인 우회, 오디오 → 오디오 직접 처리. 톤/감정 보존 + < 300ms latency…
[Voice AI] STT 모델: Whisper, Deepgram, AssemblyAI, CLOVAvoice
정의 STT (Speech-to-Text) / ASR (Automatic Speech Recognition) = 음성 → 텍스트 변환. 2026 시점 전사 정확도 인간 수준, 실…
[Voice AI] TTS 스트리밍 + SSML: TTFB, sentence aggregation, 청킹voice
정의 TTS 스트리밍 = 텍스트 일부만 받아도 즉시 합성 + 오디오 청크 단위 전송. TTFB (Time-to-First-Audio) 최소화 = 대화 자연스러움의 핵심. TTFB…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기