Gemini-TTS

Vertex AI Studio에서 Gemini-TTS 사용해 보기 Colab에서 사용해 보기 GitHub에서 노트북 보기

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

사용 가능한 모델

Gemini-TTS에는 다음과 같은 사용 가능한 모델이 포함됩니다.

Gemini 2.5 Flash TTS

모델 ID gemini-2.5-flash-tts
최적화 목표 비용 효율적인 일상 애플리케이션을 위한 짧은 지연 시간, 제어 가능한 단일 화자 및 다중 화자 Text-to-Speech 오디오 생성
입력 및 출력 모달리티
  • 입력: 텍스트
  • 출력: 오디오
화자 번호 지원 단일, 다중 화자
지원되는 출력 오디오 형식* LINEAR16(기본값), ALAW, MULAW, MP3, OGG_OPUS, PCM
리전 지원 global
음성 옵션 음성 옵션을 참조하세요.
사용 가능한 언어 사용 가능한 언어를 참조하세요.
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 2.5 Pro TTS

모델 ID gemini-2.5-pro-tts
최적화 목표 팟캐스트 생성, 오디오북, 고객 지원 등 정형 워크플로를 위한 높은 제어력
입력 및 출력 모달리티
  • 입력: 텍스트
  • 출력: 오디오
화자 번호 지원 단일, 다중 화자
지원되는 출력 오디오 형식* LINEAR16(기본값), ALAW, MULAW, MP3, OGG_OPUS, PCM
리전 지원 global
음성 옵션 음성 옵션을 참조하세요.
사용 가능한 언어 사용 가능한 언어를 참조하세요.
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: "Callirrhoe"
            

* batch 전용입니다. streaming는 지원되지 않습니다.

추가 제어

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

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

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

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

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

애플리케이션에서 이러한 음성을 사용하는 방법에 대한 자세한 내용은 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 미리보기
자바어(자바) jv-JV 미리보기
칸나다어(인도) kn-IN 미리보기
콘칸어(인도) kok-IN 미리보기
라오스어(라오스) lo-LA 미리보기
라틴어(바티칸 시국) la-VA 미리보기
라트비아어(라트비아) lv-LV 미리보기
리투아니아어(리투아니아) lt-LT 미리보기
룩셈부르크어(룩셈부르크) 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 사용

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

Media Studio에서 음성 합성 수행

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

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

    Media Studio

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

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

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

    1. 모델: 사용하려는 TTS(텍스트 음성 변환) 모델을 선택합니다(예: Gemini 2.5 Pro TTS). 사용 가능한 모델에 대한 자세한 내용은 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년대 라디오 뉴스 앵커처럼 말해 줘'가 '옛날 방식으로 말해 줘'보다 낫습니다.

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