SSML 태그 완벽 가이드: 텍스트 음성 변환에서 멈춤, 발음, 속도 조절하기
- 게시일
음성 합성 마크업 언어(SSML)는 텍스트를 태그로 감싸 텍스트 음성 변환 모델에 멈춤 위치, 단어 발음 방법, 강조할 구절 등을 지시하는 XML 기반 마크업 언어입니다.
이러한 제어 계층은 이미 듣고 있는 많은 AI 음성의 기반입니다. 확인 번호를 다시 읽어 주는 대화형 음성 응답(IVR) 시스템과 AI 오디오북 내레이터가 챕터 끝에서 멈추는 기능은 모두 이러한 방식에 의존합니다. AI 생성 음성을 맞춤 설정해 본 적이 있다면 SSML을 접했을 가능성이 높습니다.
SSML은 20년 이상 TTS 기술의 일부였으며, 지금도 많은 제공업체가 TTS를 제공하는 핵심 방식입니다. 이 가이드에서는 SSML의 정의와 ElevenLabs 모델 라인업에서의 정확한 적용 범위, 그리고 Eleven v3 및 오디오 태그 시스템과 Eleven v4가 자연스러운 텍스트 음성 변환을 제공하기 위해 사용하는 개선된 오디오 태그 시스템을 설명합니다.
오디오 태그와 함께 Eleven v4를 직접 확인하세요
Eleven v4 살펴보기요약
- SSML은 W3C 기반 마크업 언어로, 합성 음성의 멈춤, 강조, 발음, 속도를 제어하는 데 사용됩니다.
- Eleven v3와 Eleven v4를 제외한 ElevenLabs 모델은 최대 3초의 멈춤을 위한 SSML <break> 태그를 지원합니다.
- Eleven Flash v2와 Eleven Turbo v2는 맞춤형 영어 발음을 위한 <phoneme> 태그를 지원합니다.
- Eleven v3와 Eleven v4는 SSML을 전혀 지원하지 않습니다. 대신 오디오 태그를 사용해 [whispering], [sighs] 같은 대괄호 형식의 자연어 지시로 합성 음성의 흐름을 제어합니다.
- WebSocket API는 enable_ssml_parsing 매개변수로 SSML 파싱을 제어하며, 추가 지연을 피하기 위해 SSML 태그를 완전한 메시지로 전송합니다.
- <prosody>, <say-as>, <sub>, <lang>, <voice>, <audio> 같은 태그는 ElevenLabs 모델에서 지원하지 않지만, 각각 음성 설정, 텍스트 정규화, 발음 사전, 다국어 모델, 별도의 음성 및 음향 효과로 대체할 수 있습니다.
SSML이란 무엇인가요?
SSML은 합성 엔진이 텍스트를 어떻게 말해야 하는지 지시를 덧붙일 수 있는 마크업 언어입니다. 월드 와이드 웹 컨소시엄(W3C)은 일반 텍스트 음성 변환 모델의 한계를 넘어 확장할 수 있도록 이를 표준으로 개발했습니다. SSML은 일반 텍스트 해석 모델에 의존하는 대신, 구절을 어떻게 발음해야 하는지 명시적이고 기계가 읽을 수 있는 지침을 제공합니다.
SSML은 특정 제공업체에만 국한된 독자적인 마크업이 아닙니다. Amazon Polly와 Microsoft Azure Speech는 모두 <break>, <emphasis> 등의 SSML 태그를 주요 제어 방식으로 사용합니다. 대부분의 클라우드 텍스트 음성 변환 플랫폼은 어떤 형태로든 이 표준을 지원합니다. SSML은 생성형 음성 모델이 등장하기 훨씬 전부터 음성에 주석을 추가하는 기본 방식이었습니다.
SSML은 여전히 기본 표준으로 남아 있으며, 최신 생성형 음성 기술과 함께 새로운 모델별 제어 기능도 발전하고 있습니다. SSML의 이러한 공급업체 중립적 사양을 통해 제공업체는 공통 핵심 태그를 구현할 수 있습니다. 이후 각 제공업체는 해당 핵심 태그 위에 자체 확장 기능과 제한 사항을 추가할 수 있습니다.

억양을 개선하는 일반적인 SSML 태그와 기능
SSML 구현에는 합성 음성을 제어하려는 대부분의 사용자가 찾게 되는 핵심 태그 세트가 공통으로 포함됩니다.
일반적인 SSML 태그는 다음과 같습니다.
- <speak>: 전체 구절을 감싸는 루트 태그입니다. 대부분의 구현에서는 포함된 콘텐츠를 SSML로 인식하기 위해 이 태그가 필요합니다.
- <break>: 지정한 시간만큼 멈춤을 삽입합니다. 절이나 문장 사이에 자연스러운 흐름을 만들거나 글의 긴장감을 높일 때 유용합니다.
- <phoneme>: IPA 또는 CMU Arpabet 같은 음성 알파벳을 사용해 단어의 정확한 발음을 지정합니다. 두문자어, 이름, 기술 용어에 유용합니다.
- <emphasis>: 화자가 의미의 무게를 자연스럽게 높이거나 낮추는 방식처럼 단어나 구절을 강조합니다.
이 네 가지 태그는 이를 읽는 TTS 모델에 따라 다르게 동작합니다. 일부 제공업체는 운율이나 말하기 속도를 위한 추가 태그를 지원합니다. 두 제공업체 모두 SSML 지원을 표방하더라도 전체 태그 세트의 지원 범위가 다르므로, 한 TTS 제공업체용으로 작성한 스크립트는 다른 제공업체에서 동일하게 동작하지 않습니다.
가장 큰 차이는 특정 텍스트 음성 변환 모델이 실제로 어떤 태그를 처리하는지이며, 바로 이 지점에서 ElevenLabs의 구현 방식이 구체화됩니다.

ElevenLabs에서 SSML 사용하기
ElevenLabs의 SSML 지원은 완전히 동일하지 않습니다. 오디오 생성에 선택하는 모델에 따라 달라집니다. <break> 태그는 가장 폭넓게 지원되는 요소이며, <phoneme>은 더 제한된 모델에서 사용할 수 있습니다.
Multilingual v2 같은 이전 ElevenLabs TTS 모델은 최대 3초의 멈춤을 위한 <break> 태그를 지원합니다. 예를 들어 AI 에이전트가 "잠시만요, 생각해 볼게요"라고 말한 뒤 <break time="2.0s" />를 사용해 들리는 멈춤을 만들고 "좋아요, 어떻게 도와드릴지 알겠어요"라고 이어갈 수 있습니다. 이는 더 자연스러운 대화 스타일을 구현하는 데 도움이 되므로 많은 워크플로에서 가장 흔히 사용되는 태그입니다.
SSML 태그를 사용할 때는 한 번에 소수만 사용하는 것이 좋습니다. 하나의 문장이나 단락에 많은 태그를 사용하면 모델의 속도가 예기치 않게 바뀌거나 여러 오디오 아티팩트가 발생할 수 있습니다. 음성마다 멈춤을 처리하는 방식도 다르며, 특히 "uh"나 "um" 같은 필러 표현이 포함된 샘플로 학습된 음성은 더욱 그렇습니다.
ElevenLabs에서의 SSML 활용
ElevenLabs Flash v2 및 Turbo v2 모델은 한 단계 더 나아가 영어에 한해 맞춤 발음을 위한 <phoneme> 태그도 지원합니다. 따라서 음소 태그는 모델이 이름, 두문자어, 기술 용어 또는 기타 비즈니스 관련 표현을 발음하는 방식을 수정하는 데 유용합니다. 스크립트가 이 두 모델 중 하나에서 실행되는 경우에 적용됩니다.
반대로 Eleven v3와 Eleven v4는 이 방식에서 완전히 벗어납니다. 이들은 전달 방식 제어에 오디오 태그를 사용합니다. 또한 Eleven v4는 슬래시로 감싼 IPA 기호를 텍스트 내에서 직접 읽을 수 있는 네이티브 인라인 IPA 지원을 도입했습니다. 아래에서 break 태그와 전달 방식 제어를 대체하는 기능을 살펴보겠습니다.
발음 사전과 텍스트 정규화를 포함한 ElevenLabs 텍스트 음성 변환 제어 기능의 전체 내용은 모범 사례 가이드에서 확인하세요.
ElevenLabs SSML 코드 예시
아래 예시는 스크립트와 API 호출에서 SSML을 사용하는 방법을 보여 줍니다. <break>는 Eleven v4와 Eleven v3를 제외한 모든 모델에서 작동하며, <phoneme>은 Flash v2와 Turbo v2에서만 작동한다는 점을 기억하세요(영어 전용).
멈춤을 추가하기 위한 음성 제어 SSML 구현
텍스트와 태그를 <speak> 블록으로 감싸고, 속성 값의 따옴표를 유지하세요.
멈춤 및 ElevenAPI를 통한 SSML 음소 태그에 대해 자세히 알아보세요.
<phoneme>으로 발음 수정하기
IPA 또는 CMU Arpabet을 사용해 단어가 정확히 어떻게 들려야 하는지 표기하세요. 여기서는 "Siobhan"이라는 이름에 IPA를 적용하고, "Madison"은 CMU Arpabet으로 표기합니다.
Python에서 SSML로 음성 생성하기
이 호출은 break 태그가 포함된 스크립트를 해당 태그를 지원하는 모델로 전송합니다.
JavaScript에서 SSML로 음성 생성하기
아래는 JavaScript로 작성한 SSML 음성 생성의 유사한 예시입니다.
SSML과 WebSocket API
표준 HTTP 요청 대신 ElevenLabs WebSocket API로 오디오를 스트리밍하려면 SSML 파싱을 명시적으로 활성화해야 합니다. 기본적으로 비활성화되어 있으며 enable_ssml_parsing 매개변수로 제어할 수 있습니다.
최상의 결과를 위해 각 SSML 태그를 여러 스트리밍 청크로 나누지 말고 완결된 하나의 메시지로 전송하는 것을 권장합니다. 파서가 동작하기 전에 전체 태그가 필요하므로, 메시지 중간에서 태그를 분할하면 지연 시간이 늘어납니다.
음소 기반 발음 사전을 업로드하면 enable_ssml_parsing 매개변수를 별도로 설정하지 않아도 요청에 대한 SSML 파싱이 자동으로 활성화됩니다. WebSocket API에서 제공되는 전체 매개변수 세부 정보와 메시지 형식은 실시간 오디오 생성 문서 가이드에서 확인하세요.
아래 예시는 연결 URL에서 SSML 파싱을 활성화하고, 전체 break 태그를 하나의 메시지 안에 전송합니다.

ElevenLabs에서 지원하지 않는 SSML 태그와 대체 방법
오디오 태그 시스템으로 전환하면서 ElevenLabs 텍스트 음성 변환 모델은 오디오 출력에 대해 더 높은 유연성과 세밀한 제어 기능을 제공합니다. 오디오 태그는 완전히 자연어로 작성되므로 스크립트에 매우 쉽게 추가할 수 있습니다.
이전 ElevenLabs 모델을 사용한다면 어떤 SSML 태그가 지원되는지 알아두면 유용합니다. 더 적합한 대안이 다양하게 제공되므로, 이전 ElevenLabs 모델은 이제 <break>와 <phoneme>만 처리하며 다른 SSML 태그는 다른 방법으로 지원됩니다.
W3C 사양에서 알 수 있는 다른 SSML 태그는 마크업으로 읽히지 않으므로 각각 다른 접근 방식이 필요합니다. ElevenLabs에서 다른 SSML 태그를 대체하는 방법은 다음과 같습니다.
SSML 태그
기능
대체 방법
<prosody>
음높이, 말하기 속도, 볼륨 설정
속도 및 안정성 음성 설정. Eleven v3와 Eleven v4에서는 [slowly], [rushed] 같은 전달 방식 오디오 태그
<emphasis>
단어 또는 구절 강조
강조를 위한 대문자 또는 문장 부호. Eleven v3와 Eleven v4에서는 [shouts] 같은 태그
<say-as>
숫자, 날짜, 두문자어 읽는 방식 제어
텍스트 정규화, 값을 단어로 풀어 쓰기 또는 발음 사전 규칙
<sub>
작성된 단어의 발음 형태 대체
발음 사전 별칭 규칙
<lang>
구절의 언어 전환
대상 언어로 구절을 작성한 다국어 모델
<voice>
스크립트 중간에 화자 전환
음성별 별도 생성 또는 Eleven v3와 Eleven v4의 다중 화자 대화
<audio>
녹음된 오디오 파일 또는 사운드 삽입
Eleven v3 및 v4의 음향 효과 오디오 태그, ElevenLabs 음향 효과 도구 또는 생성 후 오디오 믹싱
운율: SSML로 음높이, 말하기 속도, 볼륨 제어
SSML의 <prosody> 태그는 텍스트 구간의 음높이, 말하기 속도, 볼륨을 조정합니다. 이전 ElevenLabs 모델에서는 속도 음성 설정으로 속도를, 안정성 설정으로 표현력을 제어하며, 두 설정 모두 특정 구절이 아닌 전체 생성 결과에 적용됩니다.
스크립트 내에서 속도를 변경하려면 텍스트를 별도 생성으로 나누거나 문장 사이에 <break> 태그를 추가하세요. Eleven v3와 v4에서는 위 표의 [slowly], [rushed], [whispers] 같은 오디오 태그를 문장 안에 직접 배치하세요.
발음: SSML의 <phoneme>, <say-as>, <sub>
ElevenLabs는 TTS 출력의 발음을 제어할 수 있는 세 가지 방법을 제공합니다.
주요 방법은 다음과 같습니다.
- 위 예시처럼 Flash v2 또는 Turbo v2에서 일회성 수정에는 <phoneme>을 사용하세요.
- 여러 스크립트에서 반복되는 용어에는 발음 사전을 사용하세요. 사전에는 음소 규칙과 <sub>처럼 작동하는 별칭 규칙을 저장할 수 있습니다. 예를 들어 "UN"을 "United Nations"로 매핑할 수 있습니다.
- 숫자, 날짜, 통화, 전화번호처럼 <say-as>가 처리하는 항목에는 작성된 값을 음성 단어로 변환하는 텍스트 정규화를 사용하세요. 확인 번호처럼 반드시 한 가지 방식으로 정확하게 읽어야 하는 값은 스크립트에서 풀어 쓰거나 숫자 사이를 띄어 쓰세요.
언어 및 로케일
SSML의 <lang> 태그는 구절이 다른 언어에 속함을 표시합니다. ElevenLabs TTS 모델은 이 태그를 읽지 않습니다. 대신 다국어 모델을 선택하고 해당 구절을 발화하려는 언어로 작성하세요.
Flash v2와 Turbo v2는 영어 전용이므로 언어가 섞인 스크립트에는 Multilingual v2, Flash v2.5, Eleven v3 또는 Eleven v4 같은 다국어 모델이 필요합니다. Eleven v4와 v3는 [French accent] 같은 억양 태그와 IPA 전사를 70개 이상의 언어에서 지원합니다.
오디오와 음향 효과
SSML의 <audio> 태그는 음성 응답 안에서 녹음된 클립을 재생합니다. ElevenLabs는 자연어 프롬프트로 새로운 음향 효과를 생성할 수 있으므로 이 SSML 태그를 지원하지 않습니다.
음성 자체에 사운드를 추가하려면 [applause] 또는 [door slamming] 같은 음향 효과 태그를 작성하면 됩니다. Eleven v4와 Eleven v3가 이를 구현하는 모습을 확인해 보세요. 더 길거나 세밀한 사운드 디자인이 필요하다면 음향 효과 생성을 별도로 수행하고 편집기나 제작 워크플로에서 음성 트랙과 믹싱하세요.
ElevenLabs SSML 모범 사례
이전 ElevenLabs TTS 모델 중 하나를 사용한다면 SSML 태그는 여전히 부분적으로 지원됩니다. 언제든 Eleven v4로 전환하여 오디오 태그를 최대한 활용할 수 있으며, 그러면 SSML 태그의 정확한 문구를 다시 찾아볼 필요가 없습니다.
ElevenLabs에서 SSML을 사용할 때 시작에 도움이 될 몇 가지 팁을 소개합니다.
- 사용 중인 모델 확인: <break>는 Eleven v3를 제외한 모든 모델에서 작동하며, <phoneme>은 Flash v2와 Turbo v2에서만 작동합니다. 오디오 태그는 Eleven v4와 Eleven v3 같은 최신 모델에서만 작동합니다.
- break는 필요한 만큼만 사용: 여러 개를 연속으로 쌓지 말고 자연스러운 경계마다 하나씩 배치하세요.
- SSML 태그는 올바르게 작성: 예를 들어 <break time="2.0s" />처럼 속성 값 주위의 따옴표를 유지하고, 연 모든 태그를 닫으세요.
- 태그를 한 번에 스트리밍: 각 SSML 태그를 하나의 WebSocket 메시지 안에 전송하세요.
- 배포할 음성으로 테스트: 음성마다 멈춤을 처리하는 방식이 다르므로 전체 스크립트를 실행하기 전에 짧은 생성 결과를 들어 보세요. ElevenLabs의 보이스 라이브러리에는 총 17,500개 이상의 음성이 있습니다.
이러한 SSML 모범 사례 외에도 자주 등장하는 용어에는 발음 사전을 사용하는 것이 좋습니다. 일회성 수정에는 <phoneme> 이 가장 좋은 선택입니다.

SSML의 주요 활용 사례는 무엇인가요?
음성 합성 마크업 언어는 주로 TTS 엔진이 오디오 클립을 생성하는 방식을 제어하거나 미세 조정하는 데 사용됩니다. 멈춤을 삽입하거나 특정 단어의 발음을 다듬고, AI 생성 음성에 운율의 감각을 부여하는 데 유용한 도구입니다.
이 표준이 유용하게 활용되는 SSML 사용 사례는 다음과 같습니다.
- 대화형 음성 응답(IVR) 시스템: IVR 시스템이 프롬프트와 메뉴 사이에 멈추거나 숫자를 명확히 읽어야 할 때 유용합니다.
- 대화형 에이전트: 응답 전에 짧은 멈춤을 추가하여 상호작용이 자연스럽게 들리도록 합니다.
- 오디오북 및 장문 내레이션: 챕터 끝과 장면 사이에서 멈춰 장면 전후를 명확하게 구분합니다.
- 이러닝 및 교육: 제품명, 기술 용어, 두문자어, 비즈니스 특화 용어의 발음을 수정합니다.
- 알림 및 경고: 날짜, 시간, 참조 코드를 읽는 방식을 제어합니다.
SSML은 다양한 활용 사례를 제공하지만, 오디오 태그를 사용하면 복잡한 SSML 태그를 외워 스크립트에 삽입하지 않고도 이 모든 작업을 수행할 수 있습니다. Eleven v4와 Eleven v3는 SSML의 번거로움 없이 AI 생성 음성 출력을 완벽히 제어할 수 있도록 오디오 태그 시스템을 만들었습니다.
Eleven v4가 SSML 대신 오디오 태그를 사용하는 이유
Eleven v4는 전달 방식을 제어하고 발음을 다듬는 별도의 메커니즘으로 오디오 태그를 사용합니다. 스크립트 텍스트에 직접 작성된 인라인 대괄호 지시를 읽어, 자연어로 원하는 출력을 만들 수 있습니다. 이러한 오디오 태그는 다음을 포함한 다양한 지시를 지원합니다.
- [sad], [excited] 같은 감정 또는 기분
- [whispers], [rushed] 같은 전달 방식과 속도
- [sighs], [laughs] 같은 인간적인 반응
- [French accent] 같은 억양과 캐릭터 음성
- [applause], [door shutting]을 포함한 음향 효과
이 설계는 모델이 대화의 맥락을 읽는 방식에 기반합니다. Eleven v4 아키텍처는 이전 모델보다 맥락을 더 깊이 읽어 별도의 매개변수나 설정 없이도 감정적 신호, 음색 변화, 화자 전환, 문맥 단서를 따를 수 있습니다.
SSML은 텍스트의 고정된 지점에서 구체적인 지시를 제공하므로 전달 방식이 경직되고 부자연스럽게 느껴질 수 있습니다. 기본 모델의 품질이 높아도 AI 텍스트가 기계적으로 들리는 주요 원인 중 하나가 SSML입니다.
[whisper] 같은 신호는 주변 모든 요소의 운율에 따라 형성되어, 주변 문장 전체에 적용되는 해석 지침을 Eleven v4에 제공합니다.
대부분의 SSML 요소에는 직접적인 v4 대안이 있습니다.
SSML 태그
기능
Eleven v4 대안
<break time="1s">
멈춤 삽입
[pause], 줄임표 또는 줄바꿈
<prosody rate="slow">
말하기 속도 낮추기
[drawn out] 또는 [slowly]
<prosody rate="fast">
말하기 속도 높이기
[rushed]
<emphasis>
특정 단어 강조
[shouts] 또는 단어 대문자 표기
<prosody pitch="high">
음높이 높이기
[excited] 같은 감정 태그
<prosody pitch="low">
음높이 낮추기
[sorrowful] 같은 감정 태그
발음도 같은 대체 패턴을 따릅니다. Eleven v4는 90개 이상의 언어에서 전사를 지원하는 네이티브 IPA 기능을 포함합니다. 텍스트에 슬래시로 감싼 전사를 직접 추가하면 필요한 XML 태그 없이 팀에서 발음을 제어할 수 있습니다.
ElevenCreative에서 자연스러운 음성 시작하기
오디오 태그는 성우가 텍스트에서 직접 읽어 낼 멈춤, 감정, 속도, 음성 스타일을 스크립트에 부여합니다. Eleven v4는 ElevenLabs 음성 모델을 이미지 및 비디오 모델과 결합하여 이러한 표현력을 전체 제작 워크플로로 확장하므로, 하나의 작업 공간에서 스크립트를 완성된 오디오나 비디오로 만들 수 있습니다.
오디오 태그가 완성된 오디오로 구현되는 방식을 Eleven v4에서 확인하거나 무료 계정 만들기를 통해 지금 직접 작성한 스크립트에서 SSML과 오디오 태그를 실험해 보세요.
자주 묻는 질문
Jack Limebear는 Growth 팀에서 블로그와 인사이트 페이지의 콘텐츠 작가이자 전략가로 활동하고 있습니다. ElevenLabs에 합류하기 전에는 빠르게 성장하는 SaaS 스타트업부터 포춘 500대 기업까지 다양한 조직에서 10년 넘게 콘텐츠 전략을 이끌었습니다. 케임브리지 대학교에서 영문학 석사 학위를 취득했습니다.




