Gemini-TTS

Colab 노트북 사용해 보기 GitHub에서 노트북 보기

Gemini-TTS는 자연스러움을 넘어 텍스트 기반 프롬프트를 사용하여 생성된 오디오를 세부적으로 제어할 수 있도록 지원하는 최신 버전의 Text-to-Speech 기술입니다. Gemini-TTS를 사용하면 짧은 스니펫부터 긴 형식의 내러티브까지 단일 또는 다중 화자 음성을 합성하여 스타일, 억양, 속도, 어조, 감정 표현까지 정확하게 표현할 수 있으며, 이 모든 것은 자연어 프롬프트를 통해 조정 가능합니다.

콘솔에서 이 모델을 살펴보려면 Model Garden의 Gemini-TTS 모델 카드 (Media Studio 탭을 사용하여 액세스 가능)를 참조하세요.

Vertex AI (Vertex AI Studio)에서 Gemini-TTS 사용해 보기

Gemini-TTS 기능은 다음에서 지원됩니다.

  • gemini-2.5-flash-tts: Gemini 2.5 Flash TTS는 비용 효율적인 일상 TTS 애플리케이션에 적합합니다.

  • gemini-2.5-pro-tts: Gemini 2.5 Pro TTS는 제어 가능한 음성 생성 (TTS)과 최첨단 품질의 복잡한 프롬프트에 적합합니다.

모델 최적화 목표 입력 형식 출력 형식 단일 화자 멀티 스피커
Gemini 2.5 Flash TTS 비용 효율적인 일상적인 애플리케이션을 위한 짧은 지연 시간, 제어 가능한 단일 및 다중 화자 Text-to-Speech 오디오 생성 텍스트 오디오 ✔️ ✔️
Gemini 2.5 Pro TTS 팟캐스트 생성, 오디오북, 고객 지원 등 구조화된 워크플로를 위한 높은 제어력 텍스트 오디오 ✔️ ✔️

추가 제어 및 기능은 다음과 같습니다.

  1. 자연스러운 대화: 뛰어난 품질의 음성 상호작용, 더욱 적절한 표현력, 운율(리듬 패턴)이 매우 짧은 지연 시간으로 제공되므로 유연하게 대화할 수 있습니다.

  2. 스타일 제어: 자연어 프롬프트를 사용하여 특정 억양을 채택하고 속삭임을 비롯한 다양한 어조와 표현을 생성하도록 조정하여 대화 내에서 전달 방식을 조정할 수 있습니다.

  3. 동적 성능: 이 모델은 시, 뉴스, 흥미로운 스토리텔링을 표현력 있게 읽어 텍스트에 생기를 불어넣을 수 있습니다. 또한 요청 시 특정 감정으로 연기하고 억양을 낼 수 있습니다.

  4. 향상된 속도 및 발음 제어: 전달 속도를 제어하면 특정 단어를 비롯한 발음의 정확성을 높일 수 있습니다.

예시

model: "gemini-2.5-pro-tts"
prompt: "You are having a casual conversation with a friend. Say the following in a friendly and amused way."
text: "hahah I did NOT expect that. Can you believe it!."
speaker: "Callirhoe"

model: "gemini-2.5-flash-tts"
prompt: "Say the following in a curious way"
text: "OK, so... tell me about this [uhm] AI thing.",
speaker: "Orus"

model: "gemini-2.5-flash-tts"
prompt: "Say the following"
text: "[extremely fast] Availability and terms may vary. Check our website or your local store for complete details and restrictions."
speaker: "Kore"

이러한 음성을 프로그래매틱 방식으로 사용하는 방법에 대한 자세한 내용은 Gemini-TTS 사용 섹션을 참고하세요.

음성 옵션

Gemini-TTS는 기존 Chirp 3: HD 음성과 유사한 다양한 음성 옵션을 제공하며, 각각 고유한 특성이 있습니다.

이름 성별 데모
Achernar 여성
Achird 남성
Algenib 남성
Algieba 남성
Alnilam 남성
Aoede 여성
Autonoe 여성
Callirrhoe 여성
카론 남성
Despina 여성
엔켈라두스 남성
Erinome 여성
Fenrir 남성
Gacrux 여성
이아페투스 남성
Kore 여성
Laomedeia 여성
Leda 여성
Orus 남성
Pulcherrima 여성
Puck 남성
Rasalgethi 남성
Sadachbia 남성
Sadaltager 남성
Schedar 남성
Sulafat 여성
Umbriel 남성
Vindemiatrix 여성
Zephyr 여성
Zubenelgenubi 남성

지원 언어

Gemini-TTS는 다음 언어를 지원합니다.

언어 BCP-47 코드 출시 준비
아랍어(이집트) ar-EG GA
네덜란드어(네덜란드) nl-NL GA
영어(인도) en-IN GA
영어(미국) en-US GA
프랑스어(프랑스) fr-FR GA
독일어(독일) de-DE GA
힌디어(인도) hi-IN GA
인도네시아어(인도네시아) id-ID GA
이탈리아어(이탈리아) it-IT GA
일본어(일본) ja-JP GA
한국어(대한민국) ko-KR GA
마라티어(인도) mr-IN GA
폴란드어(폴란드) pl-PL GA
포르투갈어(브라질) pt-BR GA
루마니아어(루마니아) ro-RO GA
러시아어(러시아) ru-RU GA
스페인어(스페인) es-ES GA
타밀어(인도) ta-IN GA
텔루구어(인도) te-IN GA
태국어(태국) th-TH GA
터키어(터키) tr-TR GA
우크라이나어(우크라이나) uk-UA GA
베트남어(베트남) vi-VN GA
아프리칸스어(남아프리카 공화국) af-ZA 미리보기
알바니아어(알바니아) sq-AL 미리보기
암하라어(에티오피아) am-ET 미리보기
아랍어 (전 세계) ar-001 미리보기
아르메니아어(아르메니아) hy-AM 미리보기
아제르바이잔어(아제르바이잔) az-AZ 미리보기
벵골어(방글라데시) bn-bd 미리보기
바스크어(스페인) eu-ES 미리보기
벨라루스어(벨라루스) be-BY 미리보기
불가리아어(불가리아) bg-BG 미리보기
버마어(미얀마) my-MM 미리보기
카탈로니아어(스페인) ca-ES 미리보기
세부아노어(필리핀) ceb-PH 미리보기
중국어 (북경어, 중국) cmn-cn 미리보기
중국어, 북경어 (대만) cmn-tw 미리보기
크로아티아어(크로아티아) hr-HR 미리보기
체코어(체코) cs-CZ 미리보기
덴마크어(덴마크) da-DK 미리보기
영어(호주) en-AU 미리보기
영어(영국) en-GB 미리보기
에스토니아어(에스토니아) et-EE 미리보기
필리핀어(필리핀) fil-PH 미리보기
핀란드어(핀란드) fi-FI 미리보기
프랑스어(캐나다) fr-CA 미리보기
갈리시아어(스페인) gl-ES 미리보기
조지아어(조지아) ka-GE 미리보기
그리스어(그리스) el-GR 미리보기
구자라트어(인도) gu-IN 미리보기
아이티 크리올어 (아이티) ht-HT 미리보기
히브리어(이스라엘) he-IL 미리보기
헝가리어(헝가리) hu-HU 미리보기
아이슬란드어(아이슬란드) is-IS 미리보기
자바어 (Java) jv-JV 미리보기
칸나다어(인도) kn-IN 미리보기
콘칸어 (인도) kok-in 미리보기
라오스어(라오스) lo-LA 미리보기
라틴어 (바티칸 시국) la-VA 미리보기
라트비아어(라트비아) lv-LV 미리보기
리투아니아어(리투아니아) lt-IT 미리보기
룩셈부르크어(룩셈부르크) lb-LU 미리보기
마케도니아어(북마케도니아) mk-MK 미리보기
마이틸리어(인도) mai-IN 미리보기
마다가스카르어 (마다가스카르) mg-MG 미리보기
말레이어(말레이시아) ms-MY 미리보기
말라얄람어(인도) ml-IN 미리보기
몽골어(몽골) mn-MN 미리보기
네팔어(네팔) ne-NP 미리보기
노르웨이어(보크말)(노르웨이) nb-NO 미리보기
노르웨이어(뉘노르스크)(노르웨이) nn-NO 미리보기
오리야어(인도) or-IN 미리보기
파슈토어 (아프가니스탄) ps-AF 미리보기
페르시아어(이란) fa-IR 미리보기
포르투갈어(포르투갈) pt-PT 미리보기
펀자브어(인도) pa-IN 미리보기
세르비아어(세르비아) sr-RS 미리보기
신디어(인도) sd-IN 미리보기
싱할라어(스리랑카) si-LK 미리보기
슬로바키아어(슬로바키아) sk-SK 미리보기
슬로베니아어(슬로베니아) sl-SI 미리보기
스페인어(라틴 아메리카) es-419 미리보기
스페인어(멕시코) es-MX 미리보기
스와힐리어(케냐) sw-KE 미리보기
스웨덴어(스웨덴) sv-SE 미리보기
우르두어(파키스탄) ur-PK 미리보기

사용 가능한 리전

Gemini-TTS 모델은 다음 Google Cloud 리전에서 각각 사용할 수 있습니다.

Google Cloud 리전 출시 준비
global GA

지원되는 출력 형식

기본 응답 형식은 LINEAR16입니다. 지원되는 기타 형식은 다음과 같습니다.

API 메서드 형식
batch ALAW, MULAW, MP3, OGG_OPUS, PCM
streaming 지원되지 않음

Gemini-TTS 사용

Gemini-TTS 모델을 사용하여 단일 화자 및 다중 화자 음성을 합성하는 방법을 알아봅니다.

시작하기 전에

Text-to-Speech를 사용하려면 다음 단계에 따라Google Cloud 콘솔에서 API를 사용 설정해야 합니다.

  1. 프로젝트에서 Text-to-Speech 사용 설정하기
  2. Text-to-Speech에 결제가 사용 설정되었는지 확인하기
  3. 개발 환경에 인증을 설정합니다.

Google Cloud 프로젝트 설정

  1. Google Cloud 콘솔에 로그인

  2. 프로젝트 선택기 페이지로 이동

    기존 프로젝트를 선택하거나 새 프로젝트를 만들 수 있습니다. 프로젝트 만들기에 대한 자세한 내용은 Google Cloud 문서를 참고하세요.

  3. 새 프로젝트를 만들면 결제 계정을 연결하라는 메시지가 표시됩니다. 기존 프로젝트를 사용하는 경우 결제를 사용 설정해야 합니다.

    프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. 프로젝트를 선택하고 결제 계정에 연결하면 Text-to-Speech API를 사용 설정할 수 있습니다. 페이지 상단의 제품 및 리소스 검색 표시줄로 이동하여 'speech'를 입력합니다. 결과 목록에서 Cloud Text-to-Speech API를 선택합니다.

  5. API를 프로젝트에 연결하지 않고 Text-to-Speech를 사용해 보려면 이 API 사용해 보기 옵션을 선택합니다. 프로젝트에서 사용할 Text-to-Speech API를 사용 설정하려면 사용 설정을 클릭합니다.

  6. 개발 환경에 인증을 설정합니다. 자세한 내용은 Text-to-Speech 인증 설정을 참고하세요.

동기 단일 화자 합성 수행

Python

# google-cloud-texttospeech minimum version 2.29.0 is required.

import os
from google.cloud import texttospeech

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def synthesize(prompt: str, text: str, output_filepath: str = "output.mp3"):
    """Synthesizes speech from the input text and saves it to an MP3 file.

    Args:
        prompt: Styling instructions on how to synthesize the content in
          the text field.
        text: The text to synthesize.
        output_filepath: The path to save the generated audio file.
          Defaults to "output.mp3".
    """
    client = texttospeech.TextToSpeechClient()

    synthesis_input = texttospeech.SynthesisInput(text=text, prompt=prompt)

    # Select the voice you want to use.
    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        name="Charon",  # Example voice, adjust as needed
        model_name="gemini-2.5-pro-tts"
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.MP3
    )

    # Perform the text-to-speech request on the text input with the selected
    # voice parameters and audio file type.
    response = client.synthesize_speech(
        input=synthesis_input, voice=voice, audio_config=audio_config
    )

    # The response's audio_content is binary.
    with open(output_filepath, "wb") as out:
        out.write(response.audio_content)
        print(f"Audio content written to file: {output_filepath}")

CURL

# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts.
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: $PROJECT_ID" \
  -H "Content-Type: application/json" \
-d '{
  "input": {
    "prompt": "Say the following in a curious way",
    "text": "OK, so... tell me about this [uhm] AI thing."
  },
  "voice": {
    "languageCode": "en-us",
    "name": "Kore",
    "model_name": "gemini-2.5-flash-tts"
  },
  "audioConfig": {
    "audioEncoding": "LINEAR16"
  }
}' \
  "https://texttospeech.googleapis.com/v1/text:synthesize" \
  | jq -r '.audioContent' | base64 -d | ffplay - -autoexit

자유 형식 텍스트 입력으로 동기 다중 화자 합성 실행

Python

# google-cloud-texttospeech minimum version 2.31.0 is required.

import os
from google.cloud import texttospeech

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def synthesize_multispeaker_freeform(
    prompt: str,
    text: str,
    output_filepath: str = "output_non_turn_based.wav",
):
    """Synthesizes speech from non-turn-based input and saves it to a WAV file.

    Args:
        prompt: Styling instructions on how to synthesize the content in the
          text field.
        text: The text to synthesize, containing speaker aliases to indicate
          different speakers. Example: "Sam: Hi Bob!\nBob: Hi Sam!"
        output_filepath: The path to save the generated audio file. Defaults to
          "output_non_turn_based.wav".
    """
    client = texttospeech.TextToSpeechClient()

    synthesis_input = texttospeech.SynthesisInput(text=text, prompt=prompt)

    multi_speaker_voice_config = texttospeech.MultiSpeakerVoiceConfig(
        speaker_voice_configs=[
            texttospeech.MultispeakerPrebuiltVoice(
                speaker_alias="Speaker1",
                speaker_id="Kore",
            ),
            texttospeech.MultispeakerPrebuiltVoice(
                speaker_alias="Speaker2",
                speaker_id="Charon",
            ),
        ]
    )

    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        model_name="gemini-2.5-pro-tts",
        multi_speaker_voice_config=multi_speaker_voice_config,
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.LINEAR16,
        sample_rate_hertz=24000,
    )

    response = client.synthesize_speech(
        input=synthesis_input, voice=voice, audio_config=audio_config
    )

    with open(output_filepath, "wb") as out:
        out.write(response.audio_content)
        print(f"Audio content written to file: {output_filepath}")

CURL

# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
# google-cloud-texttospeech minimum version 2.31.0 is required.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: $PROJECT_ID" \
  -H "Content-Type: application/json" \
-d '{
  "input": {
    "prompt": "Say the following as a conversation between friends.",
    "text": "Sam: Hi Bob, how are you?\\nBob: I am doing well, and you?"
  },
  "voice": {
    "languageCode": "en-us",
    "modelName": "gemini-2.5-flash-tts",
    "multiSpeakerVoiceConfig": {
      "speakerVoiceConfigs": [
        {
          "speakerAlias": "Sam",
          "speakerId": "Kore"
        },
        {
          "speakerAlias": "Bob",
          "speakerId": "Charon"
        }
      ]
    }
  },
  "audioConfig": {
    "audioEncoding": "LINEAR16",
    "sampleRateHertz": 24000
  }
}' \
  "https://texttospeech.googleapis.com/v1/text:synthesize" \
  | jq -r '.audioContent' | base64 -d | ffplay - -autoexit

구조화된 텍스트 입력으로 동기 다중 화자 합성 실행

구조화된 텍스트 입력이 포함된 다중 화자를 사용하면 사람과 유사한 방식으로 텍스트를 지능적으로 표현할 수 있습니다. 예를 들어 이러한 종류의 입력은 주소와 날짜에 유용합니다. 자유 형식 텍스트 입력은 텍스트를 작성된 그대로 말합니다.

Python

# google-cloud-texttospeech minimum version 2.31.0 is required.

import os
from google.cloud import texttospeech

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")

def synthesize_multispeaker_structured(
    prompt: str,
    turns: list[texttospeech.MultiSpeakerMarkup.Turn],
    output_filepath: str = "output_turn_based.wav",
):
    """Synthesizes speech from turn-based input and saves it to a WAV file.

    Args:
        prompt: Styling instructions on how to synthesize the content in the
          text field.
        turns: A list of texttospeech.MultiSpeakerMarkup.Turn objects representing
          the dialogue turns.
        output_filepath: The path to save the generated audio file. Defaults to
          "output_turn_based.wav".
    """
    client = texttospeech.TextToSpeechClient()

    synthesis_input = texttospeech.SynthesisInput(
        multi_speaker_markup=texttospeech.MultiSpeakerMarkup(turns=turns),
        prompt=prompt,
    )

    multi_speaker_voice_config = texttospeech.MultiSpeakerVoiceConfig(
        speaker_voice_configs=[
            texttospeech.MultispeakerPrebuiltVoice(
                speaker_alias="Speaker1",
                speaker_id="Kore",
            ),
            texttospeech.MultispeakerPrebuiltVoice(
                speaker_alias="Speaker2",
                speaker_id="Charon",
            ),
        ]
    )

    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        model_name="gemini-2.5-pro-tts",
        multi_speaker_voice_config=multi_speaker_voice_config,
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.LINEAR16,
        sample_rate_hertz=24000,
    )

    response = client.synthesize_speech(
        input=synthesis_input, voice=voice, audio_config=audio_config
    )

    with open(output_filepath, "wb") as out:
        out.write(response.audio_content)
        print(f"Audio content written to file: {output_filepath}")

CURL

# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts.
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
# google-cloud-texttospeech minimum version 2.31.0 is required.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "x-goog-user-project: $PROJECT_ID" \
  -H "Content-Type: application/json" \
-d '{
  "input": {
    "prompt": "Say the following as a conversation between friends.",
    "multiSpeakerMarkup": {
      "turns": [
        {
          "speaker": "Sam",
          "text": "Hi Bob, how are you?"
        },
        {
          "speaker": "Bob",
          "text": "I am doing well, and you?"
        }
      ]
    }
  },
  "voice": {
    "languageCode": "en-us",
    "modelName": "gemini-2.5-flash-tts",
    "multiSpeakerVoiceConfig": {
      "speakerVoiceConfigs": [
        {
          "speakerAlias": "Sam",
          "speakerId": "Kore"
        },
        {
          "speakerAlias": "Bob",
          "speakerId": "Charon"
        }
      ]
    }
  },
  "audioConfig": {
    "audioEncoding": "LINEAR16",
    "sampleRateHertz": 24000
  }
}' \
  "https://texttospeech.googleapis.com/v1/text:synthesize" \
  | jq -r '.audioContent' | base64 -d | ffplay - -autoexit

미디어 스튜디오에서 음성 합성 수행

Google Google Cloud 콘솔의 미디어 스튜디오를 사용하여 텍스트 음성 변환 모델을 실험할 수 있습니다. 이를 통해 합성된 오디오를 빠르게 생성하고, 듣고, 다양한 스타일 지침과 파라미터를 실험할 수 있는 사용자 인터페이스가 제공됩니다.

  1. Google Google Cloud 콘솔에서 Vertex AI Studio > Media Studio 페이지로 이동합니다.

    Media Studio

  2. 미디어 드롭다운에서 음성을 선택합니다.

  3. 텍스트 필드에 음성으로 합성할 텍스트를 입력합니다.

  4. 설정 창에서 다음 설정을 구성합니다.

    1. 모델: 사용하려는 텍스트 음성 변환(TTS) 모델(예: Gemini 2.5 Pro TTS)을 선택합니다. 사용 가능한 모델에 대한 자세한 내용은 텍스트 음성 변환 모델을 참고하세요.
    2. 스타일 지침: 선택사항: 선택한 말하기 스타일, 어조, 감정 전달을 설명하는 텍스트 프롬프트를 입력합니다. 이를 통해 기본 내레이션 이상의 모델 성능을 유도할 수 있습니다. 예: "다큐멘터리에 어울리는 차분하고 전문적인 어조로 내레이션을 해 줘."
    3. 언어: 입력 텍스트의 언어와 지역을 선택합니다. 모델이 선택한 언어와 억양으로 음성을 생성합니다. 예를 들어 영어 (미국)입니다.
    4. 음성: 내레이션에 사용할 사전 정의된 음성을 선택합니다. 목록에는 선택한 모델 및 언어에 사용할 수 있는 음성(예: Acherner(여성))이 포함됩니다.
  5. (선택사항) 고급 옵션 섹션을 펼쳐 기술 오디오 설정을 구성합니다.

    1. 오디오 인코딩: 출력 오디오 파일의 인코딩을 선택합니다. LINEAR16는 고품질 오디오 처리에 적합한 무손실 비압축 형식입니다. MULAW는 압축 오디오 출력에도 사용할 수 있습니다.
    2. 오디오 샘플링 레이트: 샘플링 레이트 (Hz)를 선택합니다. 오디오 품질을 결정합니다. 44,100Hz와 같은 값이 높을수록 CD 품질에 해당하는 고음질 오디오를 나타냅니다.
    3. 속도: 슬라이더를 움직이거나 값을 입력하여 말하기 속도를 조정합니다. 1 미만의 값은 음성 속도를 늦추고 1 초과의 값은 음성 속도를 높입니다. 기본값은 1입니다.
    4. 볼륨 게인 (dB): 출력 오디오의 볼륨을 데시벨 (dB) 단위로 조정합니다. 양수 값은 볼륨을 늘리고 음수 값은 볼륨을 줄입니다. 기본값은 0입니다.
  6. 텍스트 상자 오른쪽에 있는 전송 아이콘을 클릭하여 오디오를 생성합니다.

  7. 생성된 오디오가 미디어 플레이어에 표시됩니다. 재생 버튼을 클릭하여 출력을 듣습니다. 계속해서 설정을 조정하고 필요에 따라 새 버전을 생성할 수 있습니다.

프롬프트 작성 팁

텍스트에서 몰입되고 자연스러운 오디오를 만들려면 음성 언어의 뉘앙스를 이해하고 이를 스크립트 형식으로 변환해야 합니다. 다음 팁은 선택한 어조를 잘 살리고 진정성 있게 들리는 스크립트를 작성하는 데 도움이 됩니다.

음성 제어의 세 가지 레버

가장 예측 가능하고 미묘한 결과를 얻으려면 다음 세 가지 구성요소가 모두 원하는 출력과 일치해야 합니다.

스타일 프롬프트 전반적인 감정적 어조와 전달의 주요 동인입니다. 프롬프트는 전체 음성 세그먼트의 컨텍스트를 설정합니다.

  • 예: You are an AI assistant speaking in a friendly and helpful tone.

  • 예: Narrate this in the calm, authoritative tone of a nature documentary narrator.

텍스트 콘텐츠 합성할 단어의 의미입니다. 스타일 프롬프트와 감정적으로 일치하는 연상적인 문구를 사용하면 중립적인 텍스트보다 훨씬 더 신뢰할 수 있는 결과를 얻을 수 있습니다.

  • 좋은 예: 겁에 질린 어조를 나타내는 프롬프트는 I think someone is in the house.와 같은 텍스트와 함께 사용할 때 가장 효과적입니다.

  • 효과가 떨어지는 예: 겁에 질린 어조를 요구하는 프롬프트에 The meeting is at 4 PM.와 같은 텍스트를 사용하면 모호한 결과가 생성됩니다.

마크업 태그 [sigh]와 같은 괄호로 묶인 태그는 전반적인 어조를 설정하는 데 사용하기보다는 특정 현지화된 작업이나 스타일 수정사항을 삽입하는 데 사용하는 것이 좋습니다. 스타일 프롬프트 및 텍스트 콘텐츠와 함께 작동합니다.

마크업 태그 가이드

Google의 연구에 따르면 괄호로 묶인 마크업 태그는 세 가지 모드 중 하나로 작동합니다. 태그의 모드를 이해하는 것은 태그를 효과적으로 사용하는 데 중요합니다.

모드 1: 비언어적 소리

마크업이 들을 수 있는 음성이 아닌 발화 (예: 한숨, 웃음)로 대체됩니다. 태그 자체는 말하지 않습니다. 이러한 기능은 현실적이고 인간과 유사한 망설임과 반응을 추가하는 데 유용합니다.

태그 동작 안정성 안내
[sigh] 한숨 소리를 삽입합니다. 높음 한숨의 감정적 품질은 프롬프트의 영향을 받습니다.
[laughing] 웃음을 삽입합니다. 높음 최상의 결과를 얻으려면 구체적인 프롬프트를 사용하세요. 예를 들어 일반적인 프롬프트는 충격적인 웃음을 유발할 수 있지만 '재미있는 웃음으로 반응해'는 재미있는 웃음을 유발합니다.
[uhm] 망설임 소리를 삽입합니다. 높음 더 자연스러운 대화형 느낌을 만드는 데 유용합니다.

모드 2: 스타일 수정자

마크업은 음성으로 출력되지 않지만 후속 음성의 전달을 수정합니다. 수정의 범위와 기간은 다를 수 있습니다.

태그 동작 안정성 안내
[sarcasm] 다음 문구에 비꼬는 어조를 부여합니다. 높음 이 태그는 강력한 수정자입니다. 추상적인 개념이 모델의 제공을 성공적으로 이끌 수 있음을 보여줍니다.
[robotic] 후속 음성이 로봇처럼 들립니다. 높음 효과는 전체 문구에 적용될 수 있습니다. 지원 스타일 프롬프트 (예: '로봇처럼 말해줘')를 사용하는 것이 좋습니다.
[shouting] 후속 음성의 볼륨을 높입니다. 높음 스타일이 일치하는 프롬프트 (예: '다음 부분을 외쳐') 및 소리를 지르는 것을 암시하는 텍스트
[whispering] 후속 음성의 볼륨을 줄입니다. 높음 스타일 프롬프트도 명시적인 경우 (예: '이 부분을 최대한 조용히 속삭여 줘').
[extremely fast] 후속 음성의 속도를 높입니다. 높음 면책 조항이나 빠른 속도의 대화에 적합합니다. 프롬프트 지원이 최소한으로 필요합니다.

모드 3: 발음된 마크업 (형용사)

마크업 태그 자체는 단어로 말해지며 전체 문장의 어조에도 영향을 미칩니다. 이 동작은 일반적으로 감정 형용사에 적용됩니다.

경고: 태그 자체가 음성으로 제공되므로 이 모드는 대부분의 사용 사례에서 원치 않는 부작용일 수 있습니다. 대신 스타일 프롬프트를 사용하여 이러한 감정적 톤을 설정하는 것이 좋습니다.

태그 동작 안정성 안내
[scared] '무서워'라는 단어가 말해지고 문장이 무서운 어조를 취합니다. 높음 성능은 텍스트 콘텐츠에 크게 좌우됩니다. '창문 깨지는 소리가 들렸어'라고 말하면 정말로 무서운 결과가 나옵니다. 중립적인 문구를 사용하면 '으스스'하지만 덜 사실적인 결과가 생성됩니다.
[curious] '궁금해'라는 단어가 말해지고 문장이 궁금한 어조를 취합니다. 높음 태그의 의도를 뒷받침하는 질문형 문구를 사용하세요.
[bored] '지루해'라는 단어가 말해지고 문장이 지루한 단조로운 어조로 전달됩니다. 높음 일상적이거나 반복적인 텍스트와 함께 사용하면 효과가 극대화됩니다.

모드 4: 속도 조절 및 일시중지

이러한 태그는 생성된 오디오에 무음을 삽입하여 리듬, 타이밍, 페이스를 세부적으로 제어할 수 있습니다. 표준 구두점 (쉼표, 마침표, 세미콜론)도 자연스러운 일시중지를 만들지만 이러한 태그는 더 명시적인 제어를 제공합니다.

태그 동작 안정성 안내
[short pause] 쉼표와 유사한 짧은 일시중지 (~250ms)를 삽입합니다. 높음 명확성을 높이기 위해 절이나 목록 항목을 구분하는 데 사용합니다.
[medium pause] 문장 끊김과 유사한 표준 일시중지 (~500ms)를 삽입합니다. 높음 명확한 문장이나 생각을 구분하는 데 효과적입니다.
[long pause] 극적인 효과를 위해 상당한 일시중지를 삽입합니다 (~1000ms 이상). 높음 극적인 타이밍에 사용합니다. 예: '답변은... [long pause] ...아니요.' 부자연스럽게 들릴 수 있으므로 과도하게 사용하지 마세요.

신뢰할 수 있는 결과를 위한 핵심 전략

  • 세 가지 레버 모두 정렬 예측 가능성을 극대화하려면 스타일 프롬프트, 텍스트 콘텐츠, 마크업 태그가 모두 의미상 일관되고 동일한 목표를 향해 작동하는지 확인하세요.

  • 감성적인 텍스트 사용 프롬프트와 태그에만 의존하지 마세요. 모델이 사용할 수 있는 풍부하고 설명적인 텍스트를 제공하세요. 이는 특히 비꼬는 감정, 두려움, 흥분과 같은 미묘한 감정에 중요합니다.

  • 구체적이고 자세한 프롬프트 작성 스타일 프롬프트가 구체적일수록 결과가 더 신뢰할 수 있습니다. '재미있는 웃음으로 반응해'가 [laughing]보다 낫습니다. '1940년대 라디오 뉴스 앵커처럼 말해 줘'가 '옛날 방식으로 말해 줘'보다 좋습니다.

  • 새 태그 테스트 및 확인 새 태그 또는 테스트되지 않은 태그의 동작은 항상 예측할 수 있는 것은 아닙니다. 스타일 수정자라고 생각하는 태그가 음성으로 표현될 수 있습니다. 프로덕션에 배포하기 전에 항상 새 태그 또는 프롬프트 조합을 테스트하여 동작을 확인하세요.