Gemini TTS API에서 음성 속도를 조절하는 방법을 자세히 알려드리겠습니다.
이전의 '침묵 구간 설정'과 마찬가지로, 속도 조절 역시 API의 config 파라미터가 아닌 **SSML(Speech Synthesis Markup Language)**을 사용하여 텍스트 내에서 직접 제어합니다. 속도 조절에는 <prosody> 태그와 그 안의 rate 속성을 사용합니다.
핵심: <prosody> 태그와 rate 속성
<prosody> 태그는 텍스트의 운율(음높이, 속도, 음량 등)을 조절하는 데 사용됩니다. 속도를 제어하려면 rate 속성을 사용합니다.
Generated xml
<speak>
이 부분은 기본 속도입니다.
<prosody rate="fast">이 부분은 빠르게 말합니다.</prosody>
<prosody rate="80%">이 부분은 20% 느리게 말합니다.</prosody>
</speak>
rate 속성에는 두 가지 종류의 값을 사용할 수 있습니다.
- 미리 정의된 키워드 값:
- x-slow: 매우 느리게
- slow: 느리게
- medium: 보통 속도 (기본값)
- fast: 빠르게
- x-fast: 매우 빠르게
- 백분율(%) 값:
- 기본 속도(100%)를 기준으로 상대적인 속도를 지정합니다.
- rate="80%": 기본 속도보다 20% 느리게
- rate="100%": 기본 속도
- rate="150%": 기본 속도보다 50% 빠르게
- 백분율 값을 사용하면 키워드보다 더 세밀하게 속도를 조절할 수 있어 매우 유용합니다.
코드 적용 예제
예제 1: 전체 텍스트의 속도를 느리게 조절하기
Generated python
import os
import google.generativeai as genai
from google.generativeai.types import content_types as types
# API 키 설정
# genai.configure(api_key="YOUR_API_KEY")
# TTS 클라이언트 초기화
client = genai.GenerativeModel("models/gemini-2.5-flash-preview-tts")
# <prosody> 태그로 전체 텍스트를 감싸고 rate 속성을 'slow' 또는 백분율로 지정
ssml_text_slow = (
"<speak>"
'<prosody rate="85%">' # 전체 텍스트를 기본 속도보다 15% 느리게 설정
"대도 는 만물의 근원적인 이치인 도의 광대하고 온전한 상태를 의미합니다. "
"범혜 에서 범 은 물이 흘러 넘치다, 두루 미치다, 떠다니다는 뜻이고, 혜 는 어조사입니다. "
"도가 세상 모든 곳에 빠짐없이 두루 미치고 존재함을 비유합니다."
"</prosody>"
"</speak>"
)
response = client.generate_content(
contents=ssml_text_slow,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
language_code="ko-KR",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='chabun',
)
)
),
)
)
# 생성된 오디오를 파일로 저장
with open("output_slow_speed.mp3", "wb") as f:
f.write(response.audio_content)
print("느린 속도의 오디오 파일 'output_slow_speed.mp3'가 생성되었습니다.")
<prosody> 태그는 감싼 부분에만 영향을 주므로, 문장 내 특정 단어나 구절의 속도를 동적으로 바꿀 수 있습니다.
import os
import google.generativeai as genai
from google.generativeai.types import content_types as types
# API 키 설정 및 클라이언트 초기화 ...
# 특정 부분의 속도를 다르게 설정하는 SSML
ssml_text_mixed_speed = (
"<speak>"
"이 부분은 일반적인 속도로 말합니다."
'<break time="500ms"/>'
'<prosody rate="x-fast">' # 이 부분만 매우 빠르게
"하지만 이 부분은 랩처럼 아주 빠르게 말해야 합니다!"
"</prosody>'
'<break time="500ms"/>'
"그리고 다시 일반 속도로 돌아와서,"
'<break time="500ms"/>'
'<prosody rate="70%">' # 이 부분은 천천히 강조하며
"이 부분은 아주 천천히, 그리고 신중하게 말합니다."
"</prosody>'
"</speak>"
)
response = client.generate_content(
contents=ssml_text_mixed_speed,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
language_code="ko-KR",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='chabun',
)
)
),
)
)
with open("output_mixed_speed.mp3", "wb") as f:
f.write(response.audio_content)
print("혼합 속도의 오디오 파일 'output_mixed_speed.mp3'가 생성되었습니다.")
요약 및 핵심 포인트
| rate 값 | 설명 | 사용 예 |
| x-slow, slow | 기본 속도보다 느리게 재생합니다. | 차분한 설명, 시 낭송, 강조 |
| medium | 기본 속도로 재생합니다. (지정하지 않을 시 기본값) | 일반적인 대화 |
| fast, x-fast | 기본 속도보다 빠르게 재생합니다. | 긴급한 알림, 법률 고지 등 |
| N% (예: 80%) | 기본 속도(100%) 대비 N%의 속도로 재생합니다. | 미세한 속도 조절이 필요할 때 |
결론적으로, Gemini TTS의 음성 속도를 조절하고 싶을 때는 SSML의 <prosody rate="..."> 태그를 사용하시면 됩니다. 이를 통해 전체 텍스트 또는 특정 부분의 속도를 자유자재로 제어하여 훨씬 더 풍부하고 자연스러운 음성을 생성할 수 있습니다.
'AI의 활용 가이드 > AI 코딩' 카테고리의 다른 글
| Windows에서 Python 3.7과 3.9 버전을 함께 사용하기 (0) | 2025.08.21 |
|---|---|
| 구글 드라이브와 Cloudflare로 내 블로그에 '끊김 없는' 오디오 플레이어 만들기 (무료) (0) | 2025.08.02 |
| (AI 코딩) AI와 함께하는 크로스 플랫폼 JSON 웹소켓 프로토콜 구현 (0) | 2025.06.16 |
| (AI 코딩) Cursor IDE와 AI 로 크로스 플랫폼 웹소켓 통신 구현하기 (0) | 2025.06.16 |
| (AI 코딩) Cursor IDE: AI 네이티브 개발 환경에서 코딩 생산성 극대화하기 (0) | 2025.06.16 |
댓글