Gemini TTS API에서 음성 속도

2025. 7. 27.

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 속성에는 두 가지 종류의 값을 사용할 수 있습니다.

  1. 미리 정의된 키워드 값:
    • x-slow: 매우 느리게
    • slow: 느리게
    • medium: 보통 속도 (기본값)
    • fast: 빠르게
    • x-fast: 매우 빠르게
  2. 백분율(%) 값:
    • 기본 속도(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="..."> 태그를 사용하시면 됩니다. 이를 통해 전체 텍스트 또는 특정 부분의 속도를 자유자재로 제어하여 훨씬 더 풍부하고 자연스러운 음성을 생성할 수 있습니다.

댓글